* [B.A.T.M.A.N.] [PATCHv2 maint] batman-adv: Fix batadv_compare_tt function
@ 2015-08-06 8:38 Def
2015-08-06 15:22 ` Linus Lüssing
0 siblings, 1 reply; 2+ messages in thread
From: Def @ 2015-08-06 8:38 UTC (permalink / raw)
To: b.a.t.m.a.n
Into the tt hash table implementation, batadv_compare_tt is used
to compare two tt entries and deciding if they are the same
object.
batadv_compare_tt compare only mac addr.
On a batman network, each node using vlans declare the bat0 mac
addr on each vlan.
In case of adding a new tt entry, sharing the same hash of
another entry. If these two entries have the same MAC addr but
a different vid. The insert fail because the two different
object are considered identical.
batadv_compare_tt must check vid.
Signed-off-by: Def <def@laposte.net>
---
translation-table.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/translation-table.c b/translation-table.c
index d73b103..d16433a 100644
--- a/translation-table.c
+++ b/translation-table.c
@@ -45,13 +45,16 @@ static void batadv_tt_global_del(struct batadv_priv *bat_priv,
unsigned short vid, const char *message,
bool roaming);
-/* returns 1 if they are the same mac addr */
+/* returns 1 if they are the same mac addr and vid */
static int batadv_compare_tt(const struct hlist_node *node, const void *data2)
{
const void *data1 = container_of(node, struct batadv_tt_common_entry,
hash_entry);
- return batadv_compare_eth(data1, data2);
+ struct batadv_tt_common_entry* tt1 = data1;
+ struct batadv_tt_common_entry* tt2 = data2;
+
+ return (tt1->vid == tt2->vid) && batadv_compare_eth(data1, data2);
}
/**
--
1.7.10.4
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2015-08-06 15:22 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-08-06 8:38 [B.A.T.M.A.N.] [PATCHv2 maint] batman-adv: Fix batadv_compare_tt function Def
2015-08-06 15:22 ` Linus Lüssing
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox