From: Alexei Starovoitov Date: Mon, 1 Dec 2014 23:06:38 +0000 (-0800) Subject: samples: bpf: trivial eBPF program in C X-Git-Tag: omap-for-v3.20/drop-legacy-3517~122^2~93^2~1 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a80857822b0c2ed608c93504bd3687b78f20c619;p=pandora-kernel.git samples: bpf: trivial eBPF program in C this example does the same task as previous socket example in assembler, but this one does it in C. eBPF program in kernel does: /* assume that packet is IPv4, load one byte of IP->proto */ int index = load_byte(skb, ETH_HLEN + offsetof(struct iphdr, protocol)); long *value; value = bpf_map_lookup_elem(&my_map, &index); if (value) __sync_fetch_and_add(value, 1); Corresponding user space reads map[tcp], map[udp], map[icmp] and prints protocol stats every second Signed-off-by: Alexei Starovoitov Signed-off-by: David S. Miller --- Reading git-diff-tree failed