diff options
author | Vlad Yasevich <vyasevic@redhat.com> | 2012-12-18 06:54:08 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-12-19 15:50:06 -0500 |
commit | 09d7cf7d931c627b227decd080f4528d003ddbe6 (patch) | |
tree | fb189e8c30586209c6cc254b4530515c8495c3ec /net | |
parent | 63233159fd4e596568f5f168ecb0879b61631d47 (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.c | 6 |
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)) { |