summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/linux-private/linux/if_bridge.h1
-rw-r--r--lib/route/mdb.c5
2 files changed, 6 insertions, 0 deletions
diff --git a/include/linux-private/linux/if_bridge.h b/include/linux-private/linux/if_bridge.h
index bdfecf9..e206aa8 100644
--- a/include/linux-private/linux/if_bridge.h
+++ b/include/linux-private/linux/if_bridge.h
@@ -243,6 +243,7 @@ struct br_mdb_entry {
union {
__be32 ip4;
struct in6_addr ip6;
+ unsigned char mac_addr[ETH_ALEN];
} u;
__be16 proto;
} addr;
diff --git a/lib/route/mdb.c b/lib/route/mdb.c
index 43be05c..894a0bb 100644
--- a/lib/route/mdb.c
+++ b/lib/route/mdb.c
@@ -232,7 +232,12 @@ static int mdb_msg_parser(struct nl_cache_ops *ops, struct sockaddr_nl *who,
entry->addr = nl_addr_build(AF_INET6,
&e->addr.u.ip6,
sizeof(e->addr.u.ip6));
+ } else {
+ entry->addr = nl_addr_build(AF_LLC,
+ e->addr.u.mac_addr,
+ sizeof(e->addr.u.mac_addr));
}
+
if (!entry->addr)
goto errout;