+14
−0
+1
−1
samples/bpf/sockex1_kern.c
0 → 100644
+25
−0
samples/bpf/sockex1_user.c
0 → 100644
+49
−0
Loading
Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more
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 <ast@plumgrid.com>
Signed-off-by:
David S. Miller <davem@davemloft.net>