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: set TT_CLIENT_NEW flag before invoking hash_add()
@ 2012-01-06 20:31 Antonio Quartulli
  2012-01-06 20:31 ` [B.A.T.M.A.N.] [PATCH 2/2] batman-adv: move debug print into tt_local_set_pending Antonio Quartulli
  2012-01-08 19:51 ` [B.A.T.M.A.N.] [PATCH 1/2] batman-adv: set TT_CLIENT_NEW flag before invoking hash_add() Marek Lindner
  0 siblings, 2 replies; 4+ messages in thread
From: Antonio Quartulli @ 2012-01-06 20:31 UTC (permalink / raw)
  To: b.a.t.m.a.n

In case of a new tt_local_entry, the TT_CLIENT_NEW flag has to be set before
adding such entry to the hash table. Otherwise, a concurrent a tt_query_reply
forging operation could select such entry (as it is already in the hash table)
even if it should not.

Signed-off-by: Antonio Quartulli <ordex@autistici.org>
---
 translation-table.c |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/translation-table.c b/translation-table.c
index 7ea4c42..b493ab4 100644
--- a/translation-table.c
+++ b/translation-table.c
@@ -210,6 +210,11 @@ void tt_local_add(struct net_device *soft_iface, const uint8_t *addr,
 	if (compare_eth(addr, soft_iface->dev_addr))
 		tt_local_entry->common.flags |= TT_CLIENT_NOPURGE;
 
+	/* The local entry has to be marked as NEW to avoid to send it in
+	 * a full table response going out before the next ttvn increment
+	 * (consistency check) */
+	tt_local_entry->common.flags |= TT_CLIENT_NEW;
+
 	hash_added = hash_add(bat_priv->tt_local_hash, compare_tt, choose_orig,
 			 &tt_local_entry->common,
 			 &tt_local_entry->common.hash_entry);
@@ -222,11 +227,6 @@ void tt_local_add(struct net_device *soft_iface, const uint8_t *addr,
 
 	tt_local_event(bat_priv, addr, tt_local_entry->common.flags);
 
-	/* The local entry has to be marked as NEW to avoid to send it in
-	 * a full table response going out before the next ttvn increment
-	 * (consistency check) */
-	tt_local_entry->common.flags |= TT_CLIENT_NEW;
-
 	/* remove address from global hash if present */
 	tt_global_entry = tt_global_hash_find(bat_priv, addr);
 
-- 
1.7.3.4


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

* [B.A.T.M.A.N.] [PATCH 2/2] batman-adv: move debug print into tt_local_set_pending
  2012-01-06 20:31 [B.A.T.M.A.N.] [PATCH 1/2] batman-adv: set TT_CLIENT_NEW flag before invoking hash_add() Antonio Quartulli
@ 2012-01-06 20:31 ` Antonio Quartulli
  2012-01-08 19:58   ` Marek Lindner
  2012-01-08 19:51 ` [B.A.T.M.A.N.] [PATCH 1/2] batman-adv: set TT_CLIENT_NEW flag before invoking hash_add() Marek Lindner
  1 sibling, 1 reply; 4+ messages in thread
From: Antonio Quartulli @ 2012-01-06 20:31 UTC (permalink / raw)
  To: b.a.t.m.a.n

Each tt_local_set_pending is always followed by a bat_dbg invocation. This patch
moves the latter into the function body in order to avoid to rewrite it all the
times.

Signed-off-by: Antonio Quartulli <ordex@autistici.org>
---
 translation-table.c |   15 ++++++---------
 1 files changed, 6 insertions(+), 9 deletions(-)

diff --git a/translation-table.c b/translation-table.c
index b493ab4..d105cbd 100644
--- a/translation-table.c
+++ b/translation-table.c
@@ -355,7 +355,7 @@ out:
 
 static void tt_local_set_pending(struct bat_priv *bat_priv,
 				 struct tt_local_entry *tt_local_entry,
-				 uint16_t flags)
+				 uint16_t flags, const char *message)
 {
 	tt_local_event(bat_priv, tt_local_entry->common.addr,
 		       tt_local_entry->common.flags | flags);
@@ -364,6 +364,9 @@ static void tt_local_set_pending(struct bat_priv *bat_priv,
 	 * to be kept in the table in order to send it in a full table
 	 * response issued before the net ttvn increment (consistency check) */
 	tt_local_entry->common.flags |= TT_CLIENT_PENDING;
+
+	bat_dbg(DBG_TT, bat_priv, "Local tt entry (%pM) pending to be removed: "
+		"%s\n", tt_local_entry->common.addr, message);
 }
 
 void tt_local_remove(struct bat_priv *bat_priv, const uint8_t *addr,
@@ -376,10 +379,7 @@ void tt_local_remove(struct bat_priv *bat_priv, const uint8_t *addr,
 		goto out;
 
 	tt_local_set_pending(bat_priv, tt_local_entry, TT_CLIENT_DEL |
-			     (roaming ? TT_CLIENT_ROAM : NO_FLAGS));
-
-	bat_dbg(DBG_TT, bat_priv, "Local tt entry (%pM) pending to be removed: "
-		"%s\n", tt_local_entry->common.addr, message);
+			     (roaming ? TT_CLIENT_ROAM : NO_FLAGS), message);
 out:
 	if (tt_local_entry)
 		tt_local_entry_free_ref(tt_local_entry);
@@ -417,10 +417,7 @@ static void tt_local_purge(struct bat_priv *bat_priv)
 				continue;
 
 			tt_local_set_pending(bat_priv, tt_local_entry,
-					     TT_CLIENT_DEL);
-			bat_dbg(DBG_TT, bat_priv, "Local tt entry (%pM) "
-				"pending to be removed: timed out\n",
-				tt_local_entry->common.addr);
+					     TT_CLIENT_DEL, "timed out");
 		}
 		spin_unlock_bh(list_lock);
 	}
-- 
1.7.3.4


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

* Re: [B.A.T.M.A.N.] [PATCH 1/2] batman-adv: set TT_CLIENT_NEW flag before invoking hash_add()
  2012-01-06 20:31 [B.A.T.M.A.N.] [PATCH 1/2] batman-adv: set TT_CLIENT_NEW flag before invoking hash_add() Antonio Quartulli
  2012-01-06 20:31 ` [B.A.T.M.A.N.] [PATCH 2/2] batman-adv: move debug print into tt_local_set_pending Antonio Quartulli
@ 2012-01-08 19:51 ` Marek Lindner
  1 sibling, 0 replies; 4+ messages in thread
From: Marek Lindner @ 2012-01-08 19:51 UTC (permalink / raw)
  To: The list for a Better Approach To Mobile Ad-hoc Networking

On Saturday, January 07, 2012 04:31:33 Antonio Quartulli wrote:
> In case of a new tt_local_entry, the TT_CLIENT_NEW flag has to be set
> before adding such entry to the hash table. Otherwise, a concurrent a
> tt_query_reply forging operation could select such entry (as it is already
> in the hash table) even if it should not.

Applied in revision 5c5fa22.

Thanks,
Marek

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

* Re: [B.A.T.M.A.N.] [PATCH 2/2] batman-adv: move debug print into tt_local_set_pending
  2012-01-06 20:31 ` [B.A.T.M.A.N.] [PATCH 2/2] batman-adv: move debug print into tt_local_set_pending Antonio Quartulli
@ 2012-01-08 19:58   ` Marek Lindner
  0 siblings, 0 replies; 4+ messages in thread
From: Marek Lindner @ 2012-01-08 19:58 UTC (permalink / raw)
  To: The list for a Better Approach To Mobile Ad-hoc Networking

On Saturday, January 07, 2012 04:31:34 Antonio Quartulli wrote:
> Each tt_local_set_pending is always followed by a bat_dbg invocation. This
> patch moves the latter into the function body in order to avoid to rewrite
> it all the times.

Applied in revision 4ead48d.

Thanks,
Marek

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

end of thread, other threads:[~2012-01-08 19:58 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-01-06 20:31 [B.A.T.M.A.N.] [PATCH 1/2] batman-adv: set TT_CLIENT_NEW flag before invoking hash_add() Antonio Quartulli
2012-01-06 20:31 ` [B.A.T.M.A.N.] [PATCH 2/2] batman-adv: move debug print into tt_local_set_pending Antonio Quartulli
2012-01-08 19:58   ` Marek Lindner
2012-01-08 19:51 ` [B.A.T.M.A.N.] [PATCH 1/2] batman-adv: set TT_CLIENT_NEW flag before invoking hash_add() Marek Lindner

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