vxlan: use appropriate family on L3 miss
When sending a L3 miss, the family is set to AF_INET even for IPv6. This causes userland (eg "ip monitor") to be confused. Ensure we send the appropriate family in this case. For L2 miss, keep using AF_INET. Signed-off-by: Vincent Bernat <vincent@bernat.im> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
8b57fd1ec1
commit
8f48ba71ed
|
@ -276,9 +276,9 @@ static int vxlan_fdb_info(struct sk_buff *skb, struct vxlan_dev *vxlan,
|
||||||
send_eth = send_ip = true;
|
send_eth = send_ip = true;
|
||||||
|
|
||||||
if (type == RTM_GETNEIGH) {
|
if (type == RTM_GETNEIGH) {
|
||||||
ndm->ndm_family = AF_INET;
|
|
||||||
send_ip = !vxlan_addr_any(&rdst->remote_ip);
|
send_ip = !vxlan_addr_any(&rdst->remote_ip);
|
||||||
send_eth = !is_zero_ether_addr(fdb->eth_addr);
|
send_eth = !is_zero_ether_addr(fdb->eth_addr);
|
||||||
|
ndm->ndm_family = send_ip ? rdst->remote_ip.sa.sa_family : AF_INET;
|
||||||
} else
|
} else
|
||||||
ndm->ndm_family = AF_BRIDGE;
|
ndm->ndm_family = AF_BRIDGE;
|
||||||
ndm->ndm_state = fdb->state;
|
ndm->ndm_state = fdb->state;
|
||||||
|
|
Loading…
Reference in New Issue