Re: [PATCH net-next v7 1/2] net: UDP tunnel encapsulation module for tunnelling different protocols like MPLS,IP,NSH etc.
From: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
Date: 2020-02-17 05:20:18
quoted
quoted
diff --git a/include/net/ipv6.h b/include/net/ipv6.h index cec1a54..1bf8065 100644 --- a/include/net/ipv6.h +++ b/include/net/ipv6.h@@ -1027,6 +1027,12 @@ struct dst_entry *ip6_dst_lookup_flow(struct net *net, const struct sock *sk, st struct dst_entry *ip6_sk_dst_lookup_flow(struct sock *sk, struct flowi6 *fl6, const struct in6_addr *final_dst, bool connected); +struct dst_entry *ip6_dst_lookup_tunnel(struct sk_buff *skb, + struct net_device *dev, + struct net *net, struct socket *sock, + struct in6_addr *saddr, + const struct ip_tunnel_info *info, + u8 protocol, bool use_cache); struct dst_entry *ip6_blackhole_route(struct net *net, struct dst_entry *orig_dst);diff --git a/include/net/route.h b/include/net/route.h index a9c60fc..81750ae 100644 --- a/include/net/route.h +++ b/include/net/route.h@@ -128,6 +128,12 @@ static inline struct rtable *__ip_route_output_key(struct net *net, struct rtable *ip_route_output_flow(struct net *, struct flowi4 *flp, const struct sock *sk); +struct rtable *ip_route_output_tunnel(struct sk_buff *skb, + struct net_device *dev, + struct net *net, __be32 *saddr, + const struct ip_tunnel_info *info, + u8 protocol, bool use_cache); + struct dst_entry *ipv4_blackhole_route(struct net *net, struct dst_entry *dst_orig);Ah, I now see where the difference between net/ipv4/route.c and net/ipv6/ip6_output.c come from. It follows from existing locations of ip6_sk_dst_lookup_flow and ip_route_output_flow. Looking for the ipv6 analog of ip_route_output_flow, I see that, e.g., ipvlan uses ip6_route_output from net/ipv6/route.c without a NULL sk. But ping calls ip6_sk_dst_lookup_flow. It might be a better fit behind ip6_route_output_flags, but it's probably moot, really.Actually i considered both the files but i felt this function should naturally sit with ip6_sk_dst_lookup_flow. If you dont have strong objection i would like to keep the function in ip6_output.c
Yes, sounds good, thanks. The difference stood out to me in an initial git show --stat, but on closer reading both choices can be argued for.