bpf, flow_dissector: Introduce BPF_FLOW_DISSECTOR_CONTINUE retcode for bpf progs
authorShmulik Ladkani <shmulik.ladkani@gmail.com>
Sun, 21 Aug 2022 11:35:17 +0000 (14:35 +0300)
committerDaniel Borkmann <daniel@iogearbox.net>
Tue, 23 Aug 2022 20:47:55 +0000 (22:47 +0200)
commit91350fe152930c0d61a362af68272526490efea5
treec22bbbb2f28198da8019dd4bd27170aa29981845
parent0ba985024ae7db226776725d9aa436b5c1c9fca2
bpf, flow_dissector: Introduce BPF_FLOW_DISSECTOR_CONTINUE retcode for bpf progs

Currently, attaching BPF_PROG_TYPE_FLOW_DISSECTOR programs completely
replaces the flow-dissector logic with custom dissection logic. This
forces implementors to write programs that handle dissection for any
flows expected in the namespace.

It makes sense for flow-dissector BPF programs to just augment the
dissector with custom logic (e.g. dissecting certain flows or custom
protocols), while enjoying the broad capabilities of the standard
dissector for any other traffic.

Introduce BPF_FLOW_DISSECTOR_CONTINUE retcode. Flow-dissector BPF
programs may return this to indicate no dissection was made, and
fallback to the standard dissector is requested.

Signed-off-by: Shmulik Ladkani <shmulik.ladkani@gmail.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Reviewed-by: Stanislav Fomichev <sdf@google.com>
Acked-by: John Fastabend <john.fastabend@gmail.com>
Link: https://lore.kernel.org/bpf/20220821113519.116765-3-shmulik.ladkani@gmail.com
include/uapi/linux/bpf.h
net/core/flow_dissector.c
tools/include/uapi/linux/bpf.h