Message ID | 1470693281-39358-1-git-send-email-pshelar@ovn.org |
---|---|
State | Accepted |
Headers | show |
On Mon, Aug 8, 2016 at 2:54 PM, Pravin B Shelar <pshelar@ovn.org> wrote: > Upstream commit: > commit bbec7802c6948c8626b71a4fe31283cb4691c358 > Author: pravin shelar <pshelar@ovn.org> > Date: Fri Aug 5 17:45:37 2016 -0700 > > net: vxlan: lwt: Fix vxlan local traffic. > > vxlan driver has bypass for local vxlan traffic, but that > depends on information about all VNIs on local system in > vxlan driver. This is not available in case of LWT. > Therefore following patch disable encap bypass for LWT > vxlan traffic. > > Fixes: ee122c79d42 ("vxlan: Flow based tunneling"). > Reported-by: Jakub Libosvar <jlibosva@redhat.com> > Signed-off-by: Pravin B Shelar <pshelar@ovn.org> > Acked-by: Jiri Benc <jbenc@redhat.com> > Signed-off-by: David S. Miller <davem@davemloft.net> > > Signed-off-by: Pravin B Shelar <pshelar@ovn.org> Acked-by: Jesse Gross <jesse@kernel.org>
diff --git a/datapath/linux/compat/vxlan.c b/datapath/linux/compat/vxlan.c index 75b811b..8ea8d4d 100644 --- a/datapath/linux/compat/vxlan.c +++ b/datapath/linux/compat/vxlan.c @@ -1113,7 +1113,7 @@ static void vxlan_xmit_one(struct sk_buff *skb, struct net_device *dev, } /* Bypass encapsulation if the destination is local */ - if (rt->rt_flags & RTCF_LOCAL && + if (!info && rt->rt_flags & RTCF_LOCAL && !(rt->rt_flags & (RTCF_BROADCAST | RTCF_MULTICAST))) { struct vxlan_dev *dst_vxlan; @@ -1173,7 +1173,7 @@ static void vxlan_xmit_one(struct sk_buff *skb, struct net_device *dev, /* Bypass encapsulation if the destination is local */ rt6i_flags = ((struct rt6_info *)ndst)->rt6i_flags; - if (rt6i_flags & RTF_LOCAL && + if (!info && rt6i_flags & RTF_LOCAL && !(rt6i_flags & (RTCF_BROADCAST | RTCF_MULTICAST))) { struct vxlan_dev *dst_vxlan;