linux/net/batman-adv
Antonio Quartulli 35df3b298f batman-adv: fix TT VLAN inconsistency on VLAN re-add
When a VLAN interface (on top of batX) is removed and
re-added within a short timeframe TT does not have enough
time to properly cleanup. This creates an internal TT state
mismatch as the newly created softif_vlan will be
initialized from scratch with a TT client count of zero
(even if TT entries for this VLAN still exist). The
resulting TT messages are bogus due to the counter / tt
client listing mismatch, thus creating inconsistencies on
every node in the network

To fix this issue destroy_vlan() has to not free the VLAN
object immediately but it has to be kept alive until all the
TT entries for this VLAN have been removed. destroy_vlan()
still removes the sysfs folder so that the user has the
feeling that everything went fine.

If the same VLAN is re-added before the old object is free'd,
then the latter is resurrected and re-used.

Implement such behaviour by increasing the reference counter
of a softif_vlan object every time a new local TT entry for
such VLAN is created and remove the object from the list
only when all the TT entries have been destroyed.

Signed-off-by: Antonio Quartulli <antonio@open-mesh.com>
Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
2014-07-21 09:49:30 +02:00
..
Kconfig batman-adv: Multicast Listener Announcements via Translation Table 2014-03-22 09:18:56 +01:00
Makefile batman-adv: Multicast Listener Announcements via Translation Table 2014-03-22 09:18:56 +01:00
bat_algo.h batman-adv: update copyright years for 2014 2014-01-12 14:41:19 +01:00
bat_iv_ogm.c batman-adv: fix neigh_ifinfo imbalance 2014-05-10 10:58:42 +02:00
bitarray.c batman-adv: update copyright years for 2014 2014-01-12 14:41:19 +01:00
bitarray.h batman-adv: update copyright years for 2014 2014-01-12 14:41:19 +01:00
bridge_loop_avoidance.c batman-adv: drop QinQ claim frames in bridge loop avoidance 2014-07-21 09:05:31 +02:00
bridge_loop_avoidance.h batman-adv: update copyright years for 2014 2014-01-12 14:41:19 +01:00
debugfs.c batman-adv: remove semi-colon after macro definition 2014-05-18 15:04:00 +02:00
debugfs.h batman-adv: update copyright years for 2014 2014-01-12 14:41:19 +01:00
distributed-arp-table.c net: add __pskb_copy_fclone and pskb_copy_for_clone 2014-06-11 15:38:02 -07:00
distributed-arp-table.h batman-adv: improve DAT documentation 2014-03-22 09:18:59 +01:00
fragmentation.c batman-adv: fix reference counting imbalance while sending fragment 2014-05-15 20:03:17 +02:00
fragmentation.h batman-adv: update copyright years for 2014 2014-01-12 14:41:19 +01:00
gateway_client.c batman-adv: increase orig refcount when storing ref in gw_node 2014-05-15 20:03:17 +02:00
gateway_client.h batman-adv: update copyright years for 2014 2014-01-12 14:41:19 +01:00
gateway_common.c batman-adv: update copyright years for 2014 2014-01-12 14:41:19 +01:00
gateway_common.h batman-adv: update copyright years for 2014 2014-01-12 14:41:19 +01:00
hard-interface.c batman: fix a bogus warning from batadv_is_on_batman_iface() 2014-05-22 17:23:00 -04:00
hard-interface.h batman-adv: update copyright years for 2014 2014-01-12 14:41:19 +01:00
hash.c batman-adv: update copyright years for 2014 2014-01-12 14:41:19 +01:00
hash.h batman-adv: update copyright years for 2014 2014-01-12 14:41:19 +01:00
icmp_socket.c batman-adv: prefer ether_addr_copy to memcpy 2014-03-22 08:50:26 +01:00
icmp_socket.h batman-adv: update copyright years for 2014 2014-01-12 14:41:19 +01:00
main.c batman-adv: Send multicast packets to nodes with a WANT_ALL flag 2014-03-22 09:18:58 +01:00
main.h batman-adv: Start new development cycle 2014-05-18 15:04:00 +02:00
multicast.c batman-adv: fix NULL pointer dereferences 2014-05-31 10:07:14 +02:00
multicast.h batman-adv: Modified forwarding behaviour for multicast packets 2014-03-22 09:18:57 +01:00
network-coding.c net: add __pskb_copy_fclone and pskb_copy_for_clone 2014-06-11 15:38:02 -07:00
network-coding.h batman-adv: update copyright years for 2014 2014-01-12 14:41:19 +01:00
originator.c batman-adv: fix indirect hard_iface NULL dereference 2014-05-15 20:03:16 +02:00
originator.h batman-adv: avoid potential race condition when adding a new neighbour 2014-02-17 17:17:01 +01:00
packet.h batman-adv: improve the TT flags documentation 2014-03-22 09:18:59 +01:00
routing.c batman-adv: prefer ether_addr_copy to memcpy 2014-03-22 08:50:26 +01:00
routing.h batman-adv: update copyright years for 2014 2014-01-12 14:41:19 +01:00
send.c batman-adv: Send multicast packets to nodes with a WANT_ALL flag 2014-03-22 09:18:58 +01:00
send.h batman-adv: Modified forwarding behaviour for multicast packets 2014-03-22 09:18:57 +01:00
soft-interface.c batman-adv: fix TT VLAN inconsistency on VLAN re-add 2014-07-21 09:49:30 +02:00
soft-interface.h batman-adv: update copyright years for 2014 2014-01-12 14:41:19 +01:00
sysfs.c batman-adv: remove semi-colon after macro definition 2014-05-18 15:04:00 +02:00
sysfs.h batman-adv: update copyright years for 2014 2014-01-12 14:41:19 +01:00
translation-table.c batman-adv: fix TT VLAN inconsistency on VLAN re-add 2014-07-21 09:49:30 +02:00
translation-table.h batman-adv: Modified forwarding behaviour for multicast packets 2014-03-22 09:18:57 +01:00
types.h batman-adv: fix TT VLAN inconsistency on VLAN re-add 2014-07-21 09:49:30 +02:00