[ovs-dev] [PATCH v4 10/28] datapath: compat: Update udp_sock_create

Jesse Gross jesse at kernel.org
Fri Jul 8 02:20:55 UTC 2016


On Thu, Jul 7, 2016 at 7:17 PM, pravin shelar <pshelar at ovn.org> wrote:
> On Thu, Jul 7, 2016 at 7:16 PM, Jesse Gross <jesse at kernel.org> wrote:
>> On Thu, Jul 7, 2016 at 7:13 PM, Jesse Gross <jesse at kernel.org> wrote:
>>> On Thu, Jul 7, 2016 at 5:23 PM, Pravin B Shelar <pshelar at ovn.org> wrote:
>>>> diff --git a/datapath/linux/compat/include/linux/udp.h b/datapath/linux/compat/include/linux/udp.h
>>>> new file mode 100644
>>>> index 0000000..31ae022
>>>> --- /dev/null
>>>> +++ b/datapath/linux/compat/include/linux/udp.h
>>>> @@ -0,0 +1,33 @@
>>>> +#ifndef __LINUX_UDP_WRAPPER_H
>>>> +#define __LINUX_UDP_WRAPPER_H  1
>>>> +
>>>> +#include_next <linux/udp.h>
>>>> +#include <linux/ipv6.h>
>>>> +
>>>> +#ifndef HAVE_NO_CHECK6_TX
>>>> +static inline void udp_set_no_check6_tx(struct sock *sk, bool val)
>>>> +{
>>>> +#ifdef HAVE_SK_NO_CHECK_TX
>>>> +       sk->sk_no_check_tx = val;
>>>> +#else
>>>> +       /* since netwroking stack is not checking for zero UDP checksum
>>>> +        * check it in OVS module. */
>>>> +       #define OVS_CHECK_UDP_TUNNEL_ZERO_CSUM
>>>> +#endif
>>>> +}
>>>> +
>>>> +static inline void udp_set_no_check6_rx(struct sock *sk, bool val)
>>>> +{
>>>> +#ifdef HAVE_SK_NO_CHECK_TX
>>>> +       sk->sk_no_check_rx = val;
>>>> +#endif
>>>> +}
>>>> +#endif
>>>
>>> I guess it probably makes more sense to #define
>>> OVS_CHECK_UDP_TUNNEL_ZERO_CSUM in udp_set_no_check6_rx() since it is
>>> receive side issue, though functionally it doesn't make a difference.
>>>
>>>> diff --git a/datapath/linux/compat/vxlan.c b/datapath/linux/compat/vxlan.c
>>>> index d45125d..3776990 100644
>>>> --- a/datapath/linux/compat/vxlan.c
>>>> +++ b/datapath/linux/compat/vxlan.c
>>>> @@ -850,6 +850,13 @@ static void vxlan_rcv(struct vxlan_sock *vs, struct sk_buff *skb,
>>>>                 oip6 = ipv6_hdr(skb);
>>>>                 saddr.sin6.sin6_addr = oip6->saddr;
>>>>                 saddr.sa.sa_family = AF_INET6;
>>>> +#ifdef OVS_CHECK_UDP_TUNNEL_ZERO_CSUM
>>>> +               if (!udp_hdr(skb)->check &&
>>>> +                   !(vs->flags & VXLAN_F_UDP_ZERO_CSUM6_RX)) {
>>>> +                       udp6_csum_zero_error(skb);
>>>> +                       goto drop;
>>>> +               }
>>>> +#endif
>>>>  #endif
>>>
>>> Do we need a version of this for Geneve as well?
>>
>> OK - I see that it actually came in later in the big resync patch.
>
> Yes, Geneve does not support ipv6 tunnels at this point.

In that case (with the minor adjustment noted above):
Acked-by: Jesse Gross <jesse at kernel.org>



More information about the dev mailing list