Bug #452
openbla: missing rehash on update of primary_if address
0%
Description
Got an report for @Simon Wunderlich 's commit 23721387c409 ("batman-adv: add basic bridge loop avoidance code"):
When the primary interface (and with it the own originator address) changes, batadv_bla_update_orig_address() rewrites the orig field of all own backbone gateway entries in place. But the orig address is part of the backbone gateway hash key (batadv_choose_backbone_gw
hashes orig and vid), so the updated entry remains in the bucket derived from the old address.
Lookups for the new address compute a different bucket and no longer find the entry: the next claim processed for the own backbone creates a duplicate backbone gateway under the new address. From then on the own claims are split across two objects for the same originator and VLAN. Both objects announce their (diverging) claim CRC, so remote backbone gateways see the CRC for the own originator flapping between two values and keep requesting and rebuilding the claim table - a
permanent resync loop during which broadcast traffic is repeatedly dropped. The stale object never expires because the periodic worker keeps refreshing every backbone gateway matching the (updated) own address.
The report and the patch has to be reviewed and integrated (with adjustments)
Files
No data to display