summaryrefslogtreecommitdiff
path: root/samples/bpf/sockex1_user.c
diff options
context:
space:
mode:
authorAlexei Starovoitov <ast@plumgrid.com>2015-03-13 21:57:42 +0300
committerDavid S. Miller <davem@davemloft.net>2015-03-16 05:02:28 +0300
commit9bac3d6d548e5cc925570b263f35b70a00a00ffd (patch)
tree00ae5c37fb877d7c2b4fdf5ee0b8fe4837b1d476 /samples/bpf/sockex1_user.c
parenta498cfe990f569dd3766bfc9bfd2a5ee04468cd2 (diff)
downloadlinux-9bac3d6d548e5cc925570b263f35b70a00a00ffd.tar.xz
bpf: allow extended BPF programs access skb fields
introduce user accessible mirror of in-kernel 'struct sk_buff': struct __sk_buff { __u32 len; __u32 pkt_type; __u32 mark; __u32 queue_mapping; }; bpf programs can do: int bpf_prog(struct __sk_buff *skb) { __u32 var = skb->pkt_type; which will be compiled to bpf assembler as: dst_reg = *(u32 *)(src_reg + 4) // 4 == offsetof(struct __sk_buff, pkt_type) bpf verifier will check validity of access and will convert it to: dst_reg = *(u8 *)(src_reg + offsetof(struct sk_buff, __pkt_type_offset)) dst_reg &= 7 since skb->pkt_type is a bitfield. Signed-off-by: Alexei Starovoitov <ast@plumgrid.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'samples/bpf/sockex1_user.c')
0 files changed, 0 insertions, 0 deletions