diff options
author | Antonio Quartulli <ordex@autistici.org> | 2013-04-03 19:10:26 +0200 |
---|---|---|
committer | Antonio Quartulli <ordex@autistici.org> | 2013-04-17 22:31:22 +0200 |
commit | fe8a93b95145c66adf196eea4a919dfe0b7c57db (patch) | |
tree | e7251d3c966129aaba6366ca35a74a3d8b4f014a /net/batman-adv/main.c | |
parent | 361cd29cf9363505c2a35bbf9a034a22feebfb07 (diff) |
batman-adv: make is_my_mac() check for the current mesh only
On a multi-mesh node (a node running more than one batman-adv
virtual interface) batadv_is_my_mac() has to check MAC
addresses of hard interfaces belonging to the current mesh
only.
Signed-off-by: Antonio Quartulli <ordex@autistici.org>
Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
Diffstat (limited to 'net/batman-adv/main.c')
-rw-r--r-- | net/batman-adv/main.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/net/batman-adv/main.c b/net/batman-adv/main.c index 0488d70c8c3..fa563e497c4 100644 --- a/net/batman-adv/main.c +++ b/net/batman-adv/main.c @@ -169,7 +169,7 @@ void batadv_mesh_free(struct net_device *soft_iface) atomic_set(&bat_priv->mesh_state, BATADV_MESH_INACTIVE); } -int batadv_is_my_mac(const uint8_t *addr) +int batadv_is_my_mac(struct batadv_priv *bat_priv, const uint8_t *addr) { const struct batadv_hard_iface *hard_iface; @@ -178,6 +178,9 @@ int batadv_is_my_mac(const uint8_t *addr) if (hard_iface->if_status != BATADV_IF_ACTIVE) continue; + if (hard_iface->soft_iface != bat_priv->soft_iface) + continue; + if (batadv_compare_eth(hard_iface->net_dev->dev_addr, addr)) { rcu_read_unlock(); return 1; |