1 #include <uapi/linux/bpf.h>
2 #include <uapi/linux/if_ether.h>
3 #include <uapi/linux/if_packet.h>
4 #include <uapi/linux/ip.h>
5 #include "bpf_helpers.h"
7 struct bpf_map_def
SEC("maps") my_map
= {
8 .type
= BPF_MAP_TYPE_ARRAY
,
9 .key_size
= sizeof(u32
),
10 .value_size
= sizeof(long),
15 int bpf_prog1(struct __sk_buff
*skb
)
17 int index
= load_byte(skb
, ETH_HLEN
+ offsetof(struct iphdr
, protocol
));
20 if (skb
->pkt_type
!= PACKET_OUTGOING
)
23 value
= bpf_map_lookup_elem(&my_map
, &index
);
25 __sync_fetch_and_add(value
, skb
->len
);
29 char _license
[] SEC("license") = "GPL";