]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - net/bridge/br_mdb.c
Merge branch 'for-linus' of git://git.kernel.dk/linux-block
[karo-tx-linux.git] / net / bridge / br_mdb.c
index 9cf5d2b28c7683aee7d66ab849e6a41e5fba2d79..acc9f4cc18f77a3598b2190e2f38f3acb8a03e36 100644 (file)
@@ -84,9 +84,11 @@ static int br_mdb_fill_info(struct sk_buff *skb, struct netlink_callback *cb,
                                        struct br_mdb_entry e;
                                        e.ifindex = port->dev->ifindex;
                                        e.state = p->state;
-                                       e.addr.u.ip4 = p->addr.u.ip4;
+                                       if (p->addr.proto == htons(ETH_P_IP))
+                                               e.addr.u.ip4 = p->addr.u.ip4;
 #if IS_ENABLED(CONFIG_IPV6)
-                                       e.addr.u.ip6 = p->addr.u.ip6;
+                                       if (p->addr.proto == htons(ETH_P_IPV6))
+                                               e.addr.u.ip6 = p->addr.u.ip6;
 #endif
                                        e.addr.proto = p->addr.proto;
                                        if (nla_put(skb, MDBA_MDB_ENTRY_INFO, sizeof(e), &e)) {
@@ -482,3 +484,10 @@ void br_mdb_init(void)
        rtnl_register(PF_BRIDGE, RTM_NEWMDB, br_mdb_add, NULL, NULL);
        rtnl_register(PF_BRIDGE, RTM_DELMDB, br_mdb_del, NULL, NULL);
 }
+
+void br_mdb_uninit(void)
+{
+       rtnl_unregister(PF_BRIDGE, RTM_GETMDB);
+       rtnl_unregister(PF_BRIDGE, RTM_NEWMDB);
+       rtnl_unregister(PF_BRIDGE, RTM_DELMDB);
+}