]> Pileus Git - ~andy/linux/blobdiff - net/bridge/br_mdb.c
bridge: Correctly encode addresses when dumping mdb entries
[~andy/linux] / net / bridge / br_mdb.c
index 3e05cc32da500378c87d34e5ab0a2fab979b5832..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)) {