summaryrefslogtreecommitdiffstats
path: root/kernel/relay.c
diff options
context:
space:
mode:
authorAntonio Quartulli <antonio@open-mesh.com>2014-05-08 17:13:15 +0200
committerAntonio Quartulli <antonio@meshcoding.com>2014-07-21 09:49:30 +0200
commit35df3b298fc8779f7edf4b0228c683f7e98edcd5 (patch)
treea0cf3bc6f4e0a372cf66235bf1ba79c28002fedd /kernel/relay.c
parentd46b6bfa7628030a93e05f7087b7c638a85b4a35 (diff)
downloadop-kernel-dev-35df3b298fc8779f7edf4b0228c683f7e98edcd5.zip
op-kernel-dev-35df3b298fc8779f7edf4b0228c683f7e98edcd5.tar.gz
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>
Diffstat (limited to 'kernel/relay.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud