aboutsummaryrefslogtreecommitdiffstats
path: root/net/batman-adv/bridge_loop_avoidance.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/batman-adv/bridge_loop_avoidance.c')
-rw-r--r--net/batman-adv/bridge_loop_avoidance.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/net/batman-adv/bridge_loop_avoidance.c b/net/batman-adv/bridge_loop_avoidance.c
index 49c35a60195a..c49cf24ab33d 100644
--- a/net/batman-adv/bridge_loop_avoidance.c
+++ b/net/batman-adv/bridge_loop_avoidance.c
@@ -354,7 +354,7 @@ out:
354 */ 354 */
355static struct batadv_backbone_gw * 355static struct batadv_backbone_gw *
356batadv_bla_get_backbone_gw(struct batadv_priv *bat_priv, uint8_t *orig, 356batadv_bla_get_backbone_gw(struct batadv_priv *bat_priv, uint8_t *orig,
357 short vid) 357 short vid, bool own_backbone)
358{ 358{
359 struct batadv_backbone_gw *entry; 359 struct batadv_backbone_gw *entry;
360 struct batadv_orig_node *orig_node; 360 struct batadv_orig_node *orig_node;
@@ -401,6 +401,10 @@ batadv_bla_get_backbone_gw(struct batadv_priv *bat_priv, uint8_t *orig,
401 "became a backbone gateway"); 401 "became a backbone gateway");
402 batadv_orig_node_free_ref(orig_node); 402 batadv_orig_node_free_ref(orig_node);
403 } 403 }
404
405 if (own_backbone)
406 batadv_bla_send_announce(bat_priv, entry);
407
404 return entry; 408 return entry;
405} 409}
406 410
@@ -416,7 +420,7 @@ batadv_bla_update_own_backbone_gw(struct batadv_priv *bat_priv,
416 420
417 backbone_gw = batadv_bla_get_backbone_gw(bat_priv, 421 backbone_gw = batadv_bla_get_backbone_gw(bat_priv,
418 primary_if->net_dev->dev_addr, 422 primary_if->net_dev->dev_addr,
419 vid); 423 vid, true);
420 if (unlikely(!backbone_gw)) 424 if (unlikely(!backbone_gw))
421 return; 425 return;
422 426
@@ -624,7 +628,8 @@ static int batadv_handle_announce(struct batadv_priv *bat_priv,
624 if (memcmp(an_addr, batadv_announce_mac, 4) != 0) 628 if (memcmp(an_addr, batadv_announce_mac, 4) != 0)
625 return 0; 629 return 0;
626 630
627 backbone_gw = batadv_bla_get_backbone_gw(bat_priv, backbone_addr, vid); 631 backbone_gw = batadv_bla_get_backbone_gw(bat_priv, backbone_addr, vid,
632 false);
628 633
629 if (unlikely(!backbone_gw)) 634 if (unlikely(!backbone_gw))
630 return 1; 635 return 1;
@@ -722,7 +727,8 @@ static int batadv_handle_claim(struct batadv_priv *bat_priv,
722 727
723 /* register the gateway if not yet available, and add the claim. */ 728 /* register the gateway if not yet available, and add the claim. */
724 729
725 backbone_gw = batadv_bla_get_backbone_gw(bat_priv, backbone_addr, vid); 730 backbone_gw = batadv_bla_get_backbone_gw(bat_priv, backbone_addr, vid,
731 false);
726 732
727 if (unlikely(!backbone_gw)) 733 if (unlikely(!backbone_gw))
728 return 1; 734 return 1;