ipv6: implement dataplane support for rthdr type 4 (Segment Routing Header)
authorDavid Lebrun <david.lebrun@uclouvain.be>
Tue, 8 Nov 2016 13:57:39 +0000 (14:57 +0100)
committerDavid S. Miller <davem@davemloft.net>
Thu, 10 Nov 2016 01:40:06 +0000 (20:40 -0500)
commit1ababeba4a21f3dba3da3523c670b207fb2feb62
tree68b978385926bfcbc7bee8ecf106ee81945db02b
parentdc0b2c9cb47a2176e1f341bfdc770745d24e072c
ipv6: implement dataplane support for rthdr type 4 (Segment Routing Header)

Implement minimal support for processing of SR-enabled packets
as described in
https://tools.ietf.org/html/draft-ietf-6man-segment-routing-header-02.

This patch implements the following operations:
- Intermediate segment endpoint: incrementation of active segment and rerouting.
- Egress for SR-encapsulated packets: decapsulation of outer IPv6 header + SRH
  and routing of inner packet.
- Cleanup flag support for SR-inlined packets: removal of SRH if we are the
  penultimate segment endpoint.

A per-interface sysctl seg6_enabled is provided, to accept/deny SR-enabled
packets. Default is deny.

This patch does not provide support for HMAC-signed packets.

Signed-off-by: David Lebrun <david.lebrun@uclouvain.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/ipv6.h
include/linux/seg6.h [new file with mode: 0644]
include/net/seg6.h [new file with mode: 0644]
include/uapi/linux/ipv6.h
include/uapi/linux/seg6.h [new file with mode: 0644]
net/ipv6/addrconf.c
net/ipv6/exthdrs.c