diff options
author | Yi-Hung Wei <yihung.wei@gmail.com> | 2020-04-29 14:25:50 -0700 |
---|---|---|
committer | William Tu <u9012063@gmail.com> | 2020-04-30 11:32:49 -0700 |
commit | 5519e384f6a17f564fef4c5eb39e471e16c77235 (patch) | |
tree | d9abcd6057caf39ec9cb92267215d4d47ef91dc2 /datapath | |
parent | 2fcd7c077c006cbefeb5fda18818ae6d94c600b1 (diff) | |
download | openvswitch-5519e384f6a17f564fef4c5eb39e471e16c77235.tar.gz |
compat: Fix ipv6_dst_lookup build error
The geneve/vxlan compat code base invokes ipv6_dst_lookup() which is
recently replaced by ipv6_dst_lookup_flow() in the stable kernel tree.
This causes travis build failure:
* https://travis-ci.org/github/openvswitch/ovs/builds/681084038
This patch updates the backport logic to invoke the right function.
Related patch in
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
b9f3e457098e ("net: ipv6_stub: use ip6_dst_lookup_flow instead of
ip6_dst_lookup")
Signed-off-by: Yi-Hung Wei <yihung.wei@gmail.com>
Signed-off-by: William Tu <u9012063@gmail.com>
Diffstat (limited to 'datapath')
-rw-r--r-- | datapath/linux/compat/geneve.c | 11 | ||||
-rw-r--r-- | datapath/linux/compat/vxlan.c | 14 |
2 files changed, 15 insertions, 10 deletions
diff --git a/datapath/linux/compat/geneve.c b/datapath/linux/compat/geneve.c index 1551a3721..7bfc6d882 100644 --- a/datapath/linux/compat/geneve.c +++ b/datapath/linux/compat/geneve.c @@ -962,15 +962,18 @@ static struct dst_entry *geneve_get_v6_dst(struct sk_buff *skb, return dst; } -#ifdef HAVE_IPV6_DST_LOOKUP_NET +#if defined(HAVE_IPV6_DST_LOOKUP_FLOW_NET) + if (ipv6_stub->ipv6_dst_lookup_flow(geneve->net, gs6->sock->sk, &dst, + fl6)) { +#elif defined(HAVE_IPV6_DST_LOOKUP_FLOW) + if (ipv6_stub->ipv6_dst_lookup_flow(gs6->sock->sk, &dst, fl6)) { +#elif defined(HAVE_IPV6_DST_LOOKUP_NET) if (ipv6_stub->ipv6_dst_lookup(geneve->net, gs6->sock->sk, &dst, fl6)) { -#else -#ifdef HAVE_IPV6_STUB +#elif defined(HAVE_IPV6_STUB) if (ipv6_stub->ipv6_dst_lookup(gs6->sock->sk, &dst, fl6)) { #else if (ip6_dst_lookup(gs6->sock->sk, &dst, fl6)) { #endif -#endif netdev_dbg(dev, "no route to %pI6\n", &fl6->daddr); return ERR_PTR(-ENETUNREACH); } diff --git a/datapath/linux/compat/vxlan.c b/datapath/linux/compat/vxlan.c index f8f667e97..b334870b7 100644 --- a/datapath/linux/compat/vxlan.c +++ b/datapath/linux/compat/vxlan.c @@ -990,18 +990,20 @@ static struct dst_entry *vxlan6_get_route(struct vxlan_dev *vxlan, fl6.fl6_dport = dport; fl6.fl6_sport = sport; -#ifdef HAVE_IPV6_DST_LOOKUP_NET - err = ipv6_stub->ipv6_dst_lookup(vxlan->net, - sock6->sock->sk, +#if defined(HAVE_IPV6_DST_LOOKUP_FLOW_NET) + err = ipv6_stub->ipv6_dst_lookup_flow(vxlan->net, sock6->sock->sk, + &ndst, &fl6); +#elif defined(HAVE_IPV6_DST_LOOKUP_FLOW) + err = ipv6_stub->ipv6_dst_lookup_flow(sock6->sock->sk, &ndst, &fl6); +#elif defined(HAVE_IPV6_DST_LOOKUP_NET) + err = ipv6_stub->ipv6_dst_lookup(vxlan->net, sock6->sock->sk, &ndst, &fl6); -#else -#ifdef HAVE_IPV6_STUB +#elif defined(HAVE_IPV6_STUB) err = ipv6_stub->ipv6_dst_lookup(vxlan->vn6_sock->sock->sk, &ndst, &fl6); #else err = ip6_dst_lookup(vxlan->vn6_sock->sock->sk, &ndst, &fl6); #endif -#endif if (err < 0) return ERR_PTR(err); |