Broadly, for the conntrack and ip_fragment backport in the OVS tree, we have until now depended on a macro to include the entire backport based on kernel version. Any kernel that the backport is compiled against from version v3.10 up to v4.3 ends up using the backported version of all functions, rather than making use of the upstream functions as much as possible.
This approach is a little different from what the remainder of the OVS backport code does, where upstream code is used as much as possible. Particularly with future kernels, it is better for us to rely on the upstream functionality rather than always backporting the version in the tree. In future we anticipate different combinations of this functionality being backported into distribution kernels, which makes these version checks less reliable for finding the actual functionality available in the host kernel. This series removes all of the existing version checks in the conntrack/fragment backport code in favour of checks for individual functions. I propose backporting these to branch-2.5 as well, to make it more likely that the v2.5 release will continue to work with updated distribution kernels as they are released (or at least, less work to fix it later). Joe Stringer (13): compat: Detect and use inet_frag_queue->last_in. compat: Detect and use inet_frag_queue->list_evictor. compat: Detect and use inet_frags->frags_work. compat: Detect and use inet_frags->lock. compat: Detect and use struct nf_conntrack_zone. compat: Detect and use nf_ipv6_ops->fragment. compat: Detect and use nf_connlabels_get(). compat: Detect and use __skb_dst_copy(). compat: Detect and use inet_getpeer_v4(). compat: Detect and use upstream ip_fragment(). compat: Detect and use nf_ct_frag6_gather(). datapath: Re-designate OVS_FRAGMENT_BACKPORT. travis: Update kernel matrix. .travis.yml | 16 ++-- acinclude.m4 | 30 +++++- datapath/compat.h | 5 + .../linux/compat/include/linux/netfilter_ipv6.h | 6 +- datapath/linux/compat/include/net/dst.h | 2 +- datapath/linux/compat/include/net/inet_frag.h | 10 +- datapath/linux/compat/include/net/inetpeer.h | 3 +- datapath/linux/compat/include/net/ip.h | 18 ++-- datapath/linux/compat/include/net/ip6_route.h | 13 +-- .../include/net/netfilter/ipv6/nf_defrag_ipv6.h | 14 ++- .../include/net/netfilter/nf_conntrack_expect.h | 4 +- .../include/net/netfilter/nf_conntrack_labels.h | 4 +- .../include/net/netfilter/nf_conntrack_zones.h | 4 +- datapath/linux/compat/inet_fragment.c | 104 ++++++++++----------- datapath/linux/compat/ip6_output.c | 2 +- datapath/linux/compat/ip_fragment.c | 8 +- datapath/linux/compat/nf_conntrack_core.c | 4 +- datapath/linux/compat/nf_conntrack_reasm.c | 8 +- 18 files changed, 151 insertions(+), 104 deletions(-) -- 2.1.4 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev