diff options
-rw-r--r-- | include/linux-private/linux/if_bridge.h | 1 | ||||
-rw-r--r-- | lib/route/mdb.c | 5 |
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; |