This series introduces ICMP error handling for UDP tunnels and encapsulations and related selftests. We need to handle ICMP errors to support PMTU discovery and route redirection -- this support is entirely missing right now:
- patch 1/11 adds a socket lookup for UDP tunnels that use, by design, the same destination port on both endpoints -- i.e. VxLAN and GENEVE - patches 2/11 to 7/11 are specific to VxLAN and GENEVE - patches 8/11 and 9/11 add infrastructure for lookup of encapsulations where sent packets cannot be matched via receiving socket lookup, i.e. FoU and GUE - patches 10/11 and 11/11 are specific to FoU and GUE Stefano Brivio (11): udp: Handle ICMP errors for tunnels with same destination port on both endpoints vxlan: ICMP error lookup handler vxlan: Allow configuration of DF behaviour selftests: pmtu: Introduce tests for IPv4/IPv6 over VxLAN over IPv6 geneve: ICMP error lookup handler geneve: Allow configuration of DF behaviour selftests: pmtu: Introduce tests for IPv4/IPv6 over GENEVE over IPv6 net: Convert protocol error handlers from void to int udp: Support for error handlers of tunnels with arbitrary destination port fou, fou6: ICMP error handlers for FoU and GUE selftests: pmtu: Introduce FoU and GUE PMTU exceptions tests drivers/net/geneve.c | 104 ++++++++- drivers/net/vxlan.c | 58 +++++ include/linux/udp.h | 1 + include/net/icmp.h | 2 +- include/net/ip6_tunnel.h | 2 + include/net/ip_tunnels.h | 1 + include/net/protocol.h | 9 +- include/net/sctp/sctp.h | 2 +- include/net/tcp.h | 2 +- include/net/udp.h | 2 +- include/net/udp_tunnel.h | 3 + include/net/vxlan.h | 1 + include/uapi/linux/if_link.h | 18 ++ net/dccp/ipv4.c | 13 +- net/dccp/ipv6.c | 13 +- net/ipv4/fou.c | 68 ++++++ net/ipv4/gre_demux.c | 9 +- net/ipv4/icmp.c | 6 +- net/ipv4/ip_gre.c | 48 ++-- net/ipv4/ipip.c | 14 +- net/ipv4/protocol.c | 1 + net/ipv4/tcp_ipv4.c | 22 +- net/ipv4/tunnel4.c | 18 +- net/ipv4/udp.c | 119 ++++++++-- net/ipv4/udp_impl.h | 2 +- net/ipv4/udp_tunnel.c | 1 + net/ipv4/udplite.c | 4 +- net/ipv4/xfrm4_protocol.c | 18 +- net/ipv6/fou6.c | 74 +++++++ net/ipv6/icmp.c | 4 +- net/ipv6/ip6_gre.c | 18 +- net/ipv6/tcp_ipv6.c | 13 +- net/ipv6/tunnel6.c | 12 +- net/ipv6/udp.c | 141 ++++++++++-- net/ipv6/udp_impl.h | 4 +- net/ipv6/udplite.c | 5 +- net/ipv6/xfrm6_protocol.c | 18 +- net/sctp/input.c | 5 +- net/sctp/ipv6.c | 7 +- tools/testing/selftests/net/pmtu.sh | 326 ++++++++++++++++++++++++++-- 40 files changed, 1025 insertions(+), 163 deletions(-) -- 2.19.1