public inbox for b.a.t.m.a.n@lists.open-mesh.org
 help / color / mirror / Atom feed
* [B.A.T.M.A.N.] [PATCH 1/2] batman-adv: send announcement when backbone gw is registered
@ 2012-09-08 16:02 Simon Wunderlich
  2012-09-08 16:02 ` [B.A.T.M.A.N.] [PATCH 2/2] batman-adv: allow bla traffic only after first worker period Simon Wunderlich
  2012-09-13 11:10 ` [B.A.T.M.A.N.] [PATCH 1/2] batman-adv: send announcement when backbone gw is registered Marek Lindner
  0 siblings, 2 replies; 6+ messages in thread
From: Simon Wunderlich @ 2012-09-08 16:02 UTC (permalink / raw)
  To: b.a.t.m.a.n; +Cc: Simon Wunderlich

To avoid loops in the startup phase until the first announcement is
sent, send an announcement immediately as soon as a backbone gw is
added.

This may happen due to various reasons, e.g. a packet passes the rx
or tx path.

Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de>
---
 bridge_loop_avoidance.c |   14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/bridge_loop_avoidance.c b/bridge_loop_avoidance.c
index 0921509..c522bdf 100644
--- a/bridge_loop_avoidance.c
+++ b/bridge_loop_avoidance.c
@@ -362,7 +362,7 @@ out:
  */
 static struct batadv_backbone_gw *
 batadv_bla_get_backbone_gw(struct batadv_priv *bat_priv, uint8_t *orig,
-			   short vid)
+			   short vid, bool own_backbone)
 {
 	struct batadv_backbone_gw *entry;
 	struct batadv_orig_node *orig_node;
@@ -409,6 +409,10 @@ batadv_bla_get_backbone_gw(struct batadv_priv *bat_priv, uint8_t *orig,
 					  "became a backbone gateway");
 		batadv_orig_node_free_ref(orig_node);
 	}
+
+	if (own_backbone)
+		batadv_bla_send_announce(bat_priv, entry);
+
 	return entry;
 }
 
@@ -424,7 +428,7 @@ batadv_bla_update_own_backbone_gw(struct batadv_priv *bat_priv,
 
 	backbone_gw = batadv_bla_get_backbone_gw(bat_priv,
 						 primary_if->net_dev->dev_addr,
-						 vid);
+						 vid, true);
 	if (unlikely(!backbone_gw))
 		return;
 
@@ -632,7 +636,8 @@ static int batadv_handle_announce(struct batadv_priv *bat_priv,
 	if (memcmp(an_addr, batadv_announce_mac, 4) != 0)
 		return 0;
 
-	backbone_gw = batadv_bla_get_backbone_gw(bat_priv, backbone_addr, vid);
+	backbone_gw = batadv_bla_get_backbone_gw(bat_priv, backbone_addr, vid,
+						 false);
 
 	if (unlikely(!backbone_gw))
 		return 1;
@@ -730,7 +735,8 @@ static int batadv_handle_claim(struct batadv_priv *bat_priv,
 
 	/* register the gateway if not yet available, and add the claim. */
 
-	backbone_gw = batadv_bla_get_backbone_gw(bat_priv, backbone_addr, vid);
+	backbone_gw = batadv_bla_get_backbone_gw(bat_priv, backbone_addr, vid,
+						 false);
 
 	if (unlikely(!backbone_gw))
 		return 1;
-- 
1.7.10


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2012-09-13 11:13 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-08 16:02 [B.A.T.M.A.N.] [PATCH 1/2] batman-adv: send announcement when backbone gw is registered Simon Wunderlich
2012-09-08 16:02 ` [B.A.T.M.A.N.] [PATCH 2/2] batman-adv: allow bla traffic only after first worker period Simon Wunderlich
2012-09-09 12:51   ` Marek Lindner
2012-09-09 20:27     ` [B.A.T.M.A.N.] [PATCHv2 " Simon Wunderlich
2012-09-13 11:13       ` Marek Lindner
2012-09-13 11:10 ` [B.A.T.M.A.N.] [PATCH 1/2] batman-adv: send announcement when backbone gw is registered Marek Lindner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox