[6/7] batman-adv: bugfix for dat optimization patch

Message ID 1456381853-29832-1-git-send-email-apape@phoenixcontact.com (mailing list archive)
State Superseded, archived
Delegated to: Marek Lindner
Headers

Commit Message

Andreas Pape Feb. 25, 2016, 6:30 a.m. UTC
  Make sure that claiming of devices due to dat handling is only done
for non-local mac addresses. As dat is handled after the normal bla
code this should not break the roaming client scenario for dat.

Signed-off-by: Andreas Pape <apape@phoenixcontact.com>
---
 net/batman-adv/bridge_loop_avoidance.c |   18 ++++++++++++------
 1 files changed, 12 insertions(+), 6 deletions(-)

--
1.7.0.4



..................................................................
PHOENIX CONTACT ELECTRONICS GmbH

Sitz der Gesellschaft / registered office of the company: 31812 Bad Pyrmont
USt-Id-Nr.: DE811742156
Amtsgericht Hannover HRB 100528 / district court Hannover HRB 100528
Geschäftsführer / Executive Board: Roland Bent, Dr. Martin Heubeck
  

Patch

diff --git a/net/batman-adv/bridge_loop_avoidance.c b/net/batman-adv/bridge_loop_avoidance.c
index 9e53fba..6311ca2 100644
--- a/net/batman-adv/bridge_loop_avoidance.c
+++ b/net/batman-adv/bridge_loop_avoidance.c
@@ -1956,13 +1956,19 @@  bool batadv_bla_handle_local_claim(struct batadv_priv *bat_priv, uint8_t *addr,
 				primary_if->net_dev->dev_addr))
 			ret = false;
 	} else {
-		/* If there is no claim, claim the device */
-		batadv_dbg(BATADV_DBG_BLA, bat_priv,
-				"Handle claim locally for currently not claimed mac %pM.\n",
-				search_claim.addr);
+		/* If there is no claim, claim the device
+		 * but only if this isn't a mac address
+		 * out of the local tt
+		 */
+		if (!batadv_is_my_client(bat_priv, addr, vid)) {
+			batadv_dbg(BATADV_DBG_BLA, bat_priv,
+				   "bla_handle_local_claim(): Handle claim "
+				   "locally for currently not claimed mac %pM.\n",
+				   search_claim.addr);

-		batadv_handle_claim(bat_priv, primary_if,
-				primary_if->net_dev->dev_addr, addr, vid);
+			batadv_handle_claim(bat_priv, primary_if,
+					primary_if->net_dev->dev_addr, addr, vid);
+		}
 	}

 out: