I sent out a patch that I believe should fix this:
http://openvswitch.org/pipermail/dev/2016-March/068150.html

However, I don't have this exact kernel running anywhere so I only
tested that it doesn't break other kernels. Would one of you mind
trying it out? As long as it builds cleanly, I'm reasonably confident
that it should be OK.

On Mon, Mar 21, 2016 at 5:56 AM, Russell Bryant <russ...@ovn.org> wrote:
> I believe this is caused by backports done for this bug:
>
> https://bugs.launchpad.net/nova/+bug/1463911
>
> --
> Russell Bryant
>
> On Mon, Mar 21, 2016 at 5:16 AM, Russell Bryant <russ...@ovn.org> wrote:
>>
>> FWIW, this issue has broken OpenStack CI with OVN.  It was also reported
>> here:
>>
>> http://openvswitch.org/pipermail/dev/2016-March/067987.html
>>
>> On Thu, Mar 17, 2016 at 9:27 AM, Ben Pfaff <b...@ovn.org> wrote:
>>>
>>> Hi Zoltán.  It looks like this is really a build problem against a
>>> particular kernel instead of anything to do with Debian packaging.  I'm
>>> concerned that the kernel developers might skip over it because it
>>> sounds packaging-specific, so I'm following up with an updated subject
>>> line.
>>>
>>> On Thu, Mar 17, 2016 at 04:03:54PM +0000, Zoltán Balogh wrote:
>>> > Hi,
>>> >
>>> > Recently, I upgraded to Linux kernel version 3.13.0-83-generic from
>>> > version 3.13.0-79-generic. Then I rebuilt the debian packages and tried to
>>> > install them. Installing the datapath-dkms package failed.
>>> >
>>> > make -C /lib/modules/3.13.0-83-generic/build
>>> > M=/var/lib/dkms/openvswitch/2.5.0.dpdk2.2/build/datapath/linux modules
>>> > make[1]: Entering directory `/usr/src/linux-headers-3.13.0-83-generic'
>>> >   CC [M]
>>> > /var/lib/dkms/openvswitch/2.5.0.dpdk2.2/build/datapath/linux/actions.o
>>> > /var/lib/dkms/openvswitch/2.5.0.dpdk2.2/build/datapath/linux/actions.c:
>>> > In function 'ovs_fragment':
>>> >
>>> > /var/lib/dkms/openvswitch/2.5.0.dpdk2.2/build/datapath/linux/actions.c:730:3:
>>> > warning: passing argument 1 of 'v6ops->fragment' from incompatible pointer
>>> > type [enabled by default]
>>> >    v6ops->fragment(skb->sk, skb, ovs_vport_output);
>>> >    ^
>>> >
>>> > /var/lib/dkms/openvswitch/2.5.0.dpdk2.2/build/datapath/linux/actions.c:730:3:
>>> > note: expected 'struct sk_buff *' but argument is of type 'struct sock *'
>>> >
>>> > /var/lib/dkms/openvswitch/2.5.0.dpdk2.2/build/datapath/linux/actions.c:730:3:
>>> > warning: passing argument 2 of 'v6ops->fragment' from incompatible pointer
>>> > type [enabled by default]
>>> >
>>> > /var/lib/dkms/openvswitch/2.5.0.dpdk2.2/build/datapath/linux/actions.c:730:3:
>>> > note: expected 'int (*)(struct sk_buff *)' but argument is of type 'struct
>>> > sk_buff *'
>>> >
>>> > /var/lib/dkms/openvswitch/2.5.0.dpdk2.2/build/datapath/linux/actions.c:730:3:
>>> > error: too many arguments to function 'v6ops->fragment'
>>> > make[2]: ***
>>> > [/var/lib/dkms/openvswitch/2.5.0.dpdk2.2/build/datapath/linux/actions.o]
>>> > Error 1
>>> > make[1]: ***
>>> > [_module_/var/lib/dkms/openvswitch/2.5.0.dpdk2.2/build/datapath/linux] 
>>> > Error
>>> > 2
>>> > make[1]: Leaving directory `/usr/src/linux-headers-3.13.0-83-generic'
>>> > make: *** [default] Error 2
>>> > make: Leaving directory
>>> > `/var/lib/dkms/openvswitch/2.5.0.dpdk2.2/build/datapath/linux'
>>> >
>>> > I compared the include/linux/netfilter_ipv6.h files of  the two kernel
>>> > sources:
>>> >
>>> > diff
>>> > /usr/src/linux-headers-3.13.0-83-generic/include/linux/netfilter_ipv6.h
>>> > /usr/src/linux-headers-3.13.0-79-generic/include/linux/netfilter_ipv6.h
>>> > 28d27
>>> > <       int (*fragment)(struct sk_buff *skb, int (*output)(struct
>>> > sk_buff *));
>>> >
>>> > It seems the new struct member fragment was introduced in nf_ipv6_ops
>>> > in version 3.13.0-83-general:
>>> >
>>> > /*
>>> >  * Hook functions for ipv6 to allow xt_* modules to be built-in even
>>> >  * if IPv6 is a module.
>>> >  */
>>> > struct nf_ipv6_ops {
>>> >       int (*chk_addr)(struct net *net, const struct in6_addr *addr,
>>> >                       const struct net_device *dev, int strict);
>>> >       int (*fragment)(struct sk_buff *skb, int (*output)(struct sk_buff
>>> > *));
>>> > };
>>> >
>>> > While the ovs code defines fragment with three arguments in
>>> > netfilter_ipv6.h and ip6_route.h:
>>> >
>>> > #ifndef HAVE_NF_IPV6_OPS_FRAGMENT
>>> > /* Try to minimise changes required to the actions.c code for calling
>>> > IPv6
>>> >  * fragmentation. We can keep the fragment() API mostly the same,
>>> > except that
>>> >  * the callback parameter needs to be in the form that older kernels
>>> > accept.
>>> >  * We don't backport the other ipv6_ops as they're currently unused by
>>> > OVS. */
>>> > struct ovs_nf_ipv6_ops {
>>> >       int (*fragment)(struct sock *sk, struct sk_buff *skb,
>>> >                       int (*output)(OVS_VPORT_OUTPUT_PARAMS));
>>> > };
>>> > #define nf_ipv6_ops ovs_nf_ipv6_ops
>>> >
>>> > #if defined(OVS_FRAGMENT_BACKPORT)
>>> > static struct ovs_nf_ipv6_ops ovs_ipv6_ops = {
>>> >       .fragment = ip6_fragment,
>>> > };
>>> >
>>> > static inline struct ovs_nf_ipv6_ops *ovs_nf_get_ipv6_ops(void)
>>> > {
>>> >       return &ovs_ipv6_ops;
>>> > }
>>> > #else /* !OVS_FRAGMENT_BACKPORT */
>>> > static inline const struct ovs_nf_ipv6_ops *ovs_nf_get_ipv6_ops(void)
>>> > {
>>> >       return NULL;
>>> > }
>>> > #endif
>>> > #define nf_get_ipv6_ops ovs_nf_get_ipv6_ops
>>> >
>>> > ---
>>> >
>>> > #ifndef HAVE_NF_IPV6_OPS_FRAGMENT
>>> > #ifdef OVS_FRAGMENT_BACKPORT
>>> > int rpl_ip6_fragment(struct sock *sk, struct sk_buff *skb,
>>> >                    int (*output)(OVS_VPORT_OUTPUT_PARAMS));
>>> > #else
>>> > static inline int rpl_ip6_fragment(struct sock *sk, struct sk_buff
>>> > *skb,
>>> >                                  int (*output)(struct sk_buff *))
>>> > {
>>> >       kfree_skb(skb);
>>> >       return -ENOTSUPP;
>>> > }
>>> > #endif /* OVS_FRAGMENT_BACKPORT */
>>> > #define ip6_fragment rpl_ip6_fragment
>>> > #endif /* HAVE_NF_IPV6_OPS_FRAGMENT */
>>> >
>>> > Best regards,
>>> > Zoltán
>>> >
>>> > _______________________________________________
>>> > discuss mailing list
>>> > discuss@openvswitch.org
>>> > http://openvswitch.org/mailman/listinfo/discuss
>>> _______________________________________________
>>> discuss mailing list
>>> discuss@openvswitch.org
>>> http://openvswitch.org/mailman/listinfo/discuss
>>
>>
>>
>>
>> --
>> Russell Bryant
>
>
>
>
> --
> Russell Bryant
_______________________________________________
discuss mailing list
discuss@openvswitch.org
http://openvswitch.org/mailman/listinfo/discuss

Reply via email to