diff options
Diffstat (limited to 'samples/bpf/sockex1_kern.c')
| -rw-r--r-- | samples/bpf/sockex1_kern.c | 8 | 
1 files changed, 6 insertions, 2 deletions
| diff --git a/samples/bpf/sockex1_kern.c b/samples/bpf/sockex1_kern.c index 066892662915..ed18e9a4909c 100644 --- a/samples/bpf/sockex1_kern.c +++ b/samples/bpf/sockex1_kern.c @@ -1,5 +1,6 @@  #include <uapi/linux/bpf.h>  #include <uapi/linux/if_ether.h> +#include <uapi/linux/if_packet.h>  #include <uapi/linux/ip.h>  #include "bpf_helpers.h" @@ -11,14 +12,17 @@ struct bpf_map_def SEC("maps") my_map = {  };  SEC("socket1") -int bpf_prog1(struct sk_buff *skb) +int bpf_prog1(struct __sk_buff *skb)  {  	int index = load_byte(skb, ETH_HLEN + offsetof(struct iphdr, protocol));  	long *value; +	if (skb->pkt_type != PACKET_OUTGOING) +		return 0; +  	value = bpf_map_lookup_elem(&my_map, &index);  	if (value) -		__sync_fetch_and_add(value, 1); +		__sync_fetch_and_add(value, skb->len);  	return 0;  } |