This patchset adds support for the SRv6 End.DT4 behavior. The SRv6 End.DT4 is used to implement multi-tenant IPv4 L3VPN. It decapsulates the received packets and performs IPv4 routing lookup in the routing table of the tenant. The SRv6 End.DT4 Linux implementation leverages a VRF device. SRv6 End.DT4 is defined in the SRv6 Network Programming [1]. - Patch 1/4 is needed to solve a pre-existing issue with tunneled packets when a sniffer is attached; - Patch 2/4 introduces two callbacks used for customizing the creation/destruction of a SRv6 behavior; - Patch 3/4 is the core patch that adds support for the SRv6 End.DT4 behavior; - Patch 4/4 adds the selftest for SRv6 End.DT4. I would like to thank David Ahern for his support during the development of this patch set. Comments, suggestions and improvements are very welcome! Thanks, Andrea Mayer [1] https://tools.ietf.org/html/draft-ietf-spring-srv6-network-programming Andrea Mayer (4): vrf: push mac header for tunneled packets when sniffer is attached seg6: add callbacks for customizing the creation/destruction of a behavior seg6: add support for the SRv6 End.DT4 behavior add selftest for the SRv6 End.DT4 behavior drivers/net/vrf.c | 78 ++- net/ipv6/seg6_local.c | 261 ++++++++++ .../selftests/net/srv6_end_dt4_l3vpn_test.sh | 490 ++++++++++++++++++ 3 files changed, 823 insertions(+), 6 deletions(-) create mode 100755 tools/testing/selftests/net/srv6_end_dt4_l3vpn_test.sh -- 2.20.1