bpf: add End.DT6 action to bpf_lwt_seg6_action helper
authorMathieu Xhonneux <m.xhonneux@gmail.com>
Thu, 26 Jul 2018 02:10:40 +0000 (02:10 +0000)
committerDaniel Borkmann <daniel@iogearbox.net>
Tue, 31 Jul 2018 07:22:48 +0000 (09:22 +0200)
commit486cdf21583e5b1fad488a3e4f0a5242a31c0ffa
tree937b2025eb9d704b9e517ecbbc2fc3705e1863e4
parent1ce6a9fc154935d9db771173ecde03fa9b42df4a
bpf: add End.DT6 action to bpf_lwt_seg6_action helper

The seg6local LWT provides the End.DT6 action, which allows to
decapsulate an outer IPv6 header containing a Segment Routing Header
(SRH), full specification is available here:

https://tools.ietf.org/html/draft-filsfils-spring-srv6-network-programming-05

This patch adds this action now to the seg6local BPF
interface. Since it is not mandatory that the inner IPv6 header also
contains a SRH, seg6_bpf_srh_state has been extended with a pointer to
a possible SRH of the outermost IPv6 header. This helps assessing if the
validation must be triggered or not, and avoids some calls to
ipv6_find_hdr.

v3: s/1/true, s/0/false for boolean values
v2: - changed true/false -> 1/0
    - preempt_enable no longer called in first conditional block

Signed-off-by: Mathieu Xhonneux <m.xhonneux@gmail.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
include/net/seg6_local.h
net/core/filter.c
net/ipv6/seg6_local.c