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: Mike Rapoport <[email protected]>
Tested-by: Cong Wang <[email protected]>
Acked-by: Sridhar Samudrala <[email protected]>
Tested-by: Sridhar Samudrala <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
}
/* 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;
ip_rt_put(rt);