aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorVlad Yasevich <vyasevic@redhat.com>2012-12-18 06:54:08 -0500
committerDavid S. Miller <davem@davemloft.net>2012-12-19 15:50:06 -0500
commit09d7cf7d931c627b227decd080f4528d003ddbe6 (patch)
treefb189e8c30586209c6cc254b4530515c8495c3ec /net
parent63233159fd4e596568f5f168ecb0879b61631d47 (diff)
bridge: Correctly encode addresses when dumping mdb entries
When dumping mdb table, set the addresses the kernel returns based on the address protocol type. Signed-off-by: Vlad Yasevich <vyasevic@redhat.com> Acked-by: Cong Wang <amwang@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r--net/bridge/br_mdb.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/net/bridge/br_mdb.c b/net/bridge/br_mdb.c
index 3e05cc32da50..acc9f4cc18f7 100644
--- a/net/bridge/br_mdb.c
+++ b/net/bridge/br_mdb.c
@@ -84,9 +84,11 @@ static int br_mdb_fill_info(struct sk_buff *skb, struct netlink_callback *cb,
84 struct br_mdb_entry e; 84 struct br_mdb_entry e;
85 e.ifindex = port->dev->ifindex; 85 e.ifindex = port->dev->ifindex;
86 e.state = p->state; 86 e.state = p->state;
87 e.addr.u.ip4 = p->addr.u.ip4; 87 if (p->addr.proto == htons(ETH_P_IP))
88 e.addr.u.ip4 = p->addr.u.ip4;
88#if IS_ENABLED(CONFIG_IPV6) 89#if IS_ENABLED(CONFIG_IPV6)
89 e.addr.u.ip6 = p->addr.u.ip6; 90 if (p->addr.proto == htons(ETH_P_IPV6))
91 e.addr.u.ip6 = p->addr.u.ip6;
90#endif 92#endif
91 e.addr.proto = p->addr.proto; 93 e.addr.proto = p->addr.proto;
92 if (nla_put(skb, MDBA_MDB_ENTRY_INFO, sizeof(e), &e)) { 94 if (nla_put(skb, MDBA_MDB_ENTRY_INFO, sizeof(e), &e)) {