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