bpf: allow programs to write to certain skb fields
authorAlexei Starovoitov <ast@plumgrid.com>
Thu, 4 Jun 2015 17:11:54 +0000 (10:11 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sun, 7 Jun 2015 09:01:33 +0000 (02:01 -0700)
commitd691f9e8d4405c334aa10d556e73c8bf44cb0e01
tree295b1d647364407c42990d916358a72381f4d534
parent3431205e03977aaf32bce6d4b16fb8244b510056
bpf: allow programs to write to certain skb fields

allow programs read/write skb->mark, tc_index fields and
((struct qdisc_skb_cb *)cb)->data.

mark and tc_index are generically useful in TC.
cb[0]-cb[4] are primarily used to pass arguments from one
program to another called via bpf_tail_call() which can
be seen in sockex3_kern.c example.

All fields of 'struct __sk_buff' are readable to socket and tc_cls_act progs.
mark, tc_index are writeable from tc_cls_act only.
cb[0]-cb[4] are writeable by both sockets and tc_cls_act.

Add verifier tests and improve sample code.

Signed-off-by: Alexei Starovoitov <ast@plumgrid.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/bpf.h
include/uapi/linux/bpf.h
kernel/bpf/verifier.c
net/core/filter.c
samples/bpf/sockex3_kern.c
samples/bpf/test_verifier.c