• Alexei Starovoitov's avatar
    samples: bpf: trivial eBPF program in C · a8085782
    Alexei Starovoitov authored
    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: default avatarAlexei Starovoitov <ast@plumgrid.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a8085782
sockex1_kern.c 553 Bytes