Commit ab09a6d0 authored by Mike Rapoport's avatar Mike Rapoport Committed by David S. Miller

vxlan: don't bypass encapsulation for multi- and broadcasts

The multicast and broadcast packets may have RTCF_LOCAL set in rt_flags
and therefore will be sent out bypassing encapsulation. This breaks
delivery of packets sent to the vxlan multicast group.
Disabling encapsulation bypass for multicasts and broadcasts fixes the
issue.
Signed-off-by: default avatarMike Rapoport <mike.rapoport@ravellosystems.com>
Tested-by: default avatarCong Wang <xiyou.wangcong@gmail.com>
Acked-by: default avatarSridhar Samudrala <sri@us.ibm.com>
Tested-by: default avatarSridhar Samudrala <sri@us.ibm.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 4731d011
...@@ -1014,7 +1014,8 @@ static netdev_tx_t vxlan_xmit_one(struct sk_buff *skb, struct net_device *dev, ...@@ -1014,7 +1014,8 @@ static netdev_tx_t vxlan_xmit_one(struct sk_buff *skb, struct net_device *dev,
} }
/* Bypass encapsulation if the destination is local */ /* Bypass encapsulation if the destination is local */
if (rt->rt_flags & RTCF_LOCAL) { if (rt->rt_flags & RTCF_LOCAL &&
!(rt->rt_flags & (RTCF_BROADCAST | RTCF_MULTICAST))) {
struct vxlan_dev *dst_vxlan; struct vxlan_dev *dst_vxlan;
ip_rt_put(rt); ip_rt_put(rt);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment