bpf: add bpf_skb_change_tail helper
authorDaniel Borkmann <daniel@iogearbox.net>
Wed, 17 Aug 2016 23:00:39 +0000 (01:00 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 19 Aug 2016 06:38:16 +0000 (23:38 -0700)
commit5293efe62df81908f2e90c9820c7edcc8e61f5e9
tree6e3456c7bd339b1ebcfcebae0de6286635d44f33
parent45c7fffaf72e77baab9fd8ff1655540a1d5bac9f
bpf: add bpf_skb_change_tail helper

This work adds a bpf_skb_change_tail() helper for tc BPF programs. The
basic idea is to expand or shrink the skb in a controlled manner. The
eBPF program can then rewrite the rest via helpers like bpf_skb_store_bytes(),
bpf_lX_csum_replace() and others rather than passing a raw buffer for
writing here.

bpf_skb_change_tail() is really a slow path helper and intended for
replies with f.e. ICMP control messages. Concept is similar to other
helpers like bpf_skb_change_proto() helper to keep the helper without
protocol specifics and let the BPF program mangle the remaining parts.
A flags field has been added and is reserved for now should we extend
the helper in future.

Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/skbuff.h
include/uapi/linux/bpf.h
net/core/filter.c