diff options
| author | David S. Miller <[email protected]> | 2023-10-16 09:57:52 +0100 |
|---|---|---|
| committer | David S. Miller <[email protected]> | 2023-10-16 09:57:52 +0100 |
| commit | d8118b945f03dbfcda72c273fa9b0548f73c8ce9 (patch) | |
| tree | 7a3fa61ef9e07cd1954083288aaf84131dbd1e39 /include | |
| parent | 3c4fe89878feb57bea6ad9f14997298fddf8dc10 (diff) | |
| parent | 6f19b2c136d98a84d79030b53e23d405edfdc783 (diff) | |
Merge branch 'udp-tunnel-route-lookups'
Beniamino Galvani says:
====================
net: consolidate IPv4 route lookup for UDP tunnels
At the moment different UDP tunnels rely on different functions for
IPv4 route lookup, and those functions all implement the same
logic. Only bareudp uses the generic ip_route_output_tunnel(), while
geneve and vxlan basically duplicate it slightly differently.
This series first extends the generic lookup function so that it is
suitable for all UDP tunnel implementations. Then, bareudp, geneve and
vxlan are adapted to use them.
This results in code with less duplication and hopefully better
maintainability.
After this series is merged, IPv6 will be converted in a similar way.
Changelog:
v2
- fix compilation with IPv6 disabled
====================
Signed-off-by: David S. Miller <[email protected]>
Diffstat (limited to 'include')
| -rw-r--r-- | include/net/route.h | 6 | ||||
| -rw-r--r-- | include/net/udp_tunnel.h | 8 |
2 files changed, 8 insertions, 6 deletions
diff --git a/include/net/route.h b/include/net/route.h index 5c248a8e3d0e..980ab474eabd 100644 --- a/include/net/route.h +++ b/include/net/route.h @@ -136,12 +136,6 @@ 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); diff --git a/include/net/udp_tunnel.h b/include/net/udp_tunnel.h index 21ba0a25f936..4d0578fab01a 100644 --- a/include/net/udp_tunnel.h +++ b/include/net/udp_tunnel.h @@ -162,6 +162,14 @@ int udp_tunnel6_xmit_skb(struct dst_entry *dst, struct sock *sk, void udp_tunnel_sock_release(struct socket *sock); +struct rtable *udp_tunnel_dst_lookup(struct sk_buff *skb, + struct net_device *dev, + struct net *net, int oif, + __be32 *saddr, + const struct ip_tunnel_key *key, + __be16 sport, __be16 dport, u8 tos, + struct dst_cache *dst_cache); + struct metadata_dst *udp_tun_rx_dst(struct sk_buff *skb, unsigned short family, __be16 flags, __be64 tunnel_id, int md_size); |