Message ID | 20170310153024.30894-1-vincent@bernat.im |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
From: Vincent Bernat <vincent@bernat.im> Date: Fri, 10 Mar 2017 16:30:24 +0100 > 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> Applied, thank you.
diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c index e375560cc74e..168257aa8ace 100644 --- a/drivers/net/vxlan.c +++ b/drivers/net/vxlan.c @@ -276,9 +276,9 @@ static int vxlan_fdb_info(struct sk_buff *skb, struct vxlan_dev *vxlan, send_eth = send_ip = true; if (type == RTM_GETNEIGH) { - ndm->ndm_family = AF_INET; send_ip = !vxlan_addr_any(&rdst->remote_ip); send_eth = !is_zero_ether_addr(fdb->eth_addr); + ndm->ndm_family = send_ip ? rdst->remote_ip.sa.sa_family : AF_INET; } else ndm->ndm_family = AF_BRIDGE; ndm->ndm_state = fdb->state;
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> --- drivers/net/vxlan.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)