| #include "../../include/bpf_api.h" |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| struct bpf_elf_map __section_maps map_sh = { |
| .type = BPF_MAP_TYPE_ARRAY, |
| .size_key = sizeof(uint32_t), |
| .size_value = sizeof(uint32_t), |
| .pinning = PIN_OBJECT_NS, |
| .max_elem = 1, |
| }; |
| |
| __section("egress") |
| int emain(struct __sk_buff *skb) |
| { |
| int key = 0, *val; |
| |
| val = map_lookup_elem(&map_sh, &key); |
| if (val) |
| lock_xadd(val, 1); |
| |
| return BPF_H_DEFAULT; |
| } |
| |
| __section("ingress") |
| int imain(struct __sk_buff *skb) |
| { |
| int key = 0, *val; |
| |
| val = map_lookup_elem(&map_sh, &key); |
| if (val) |
| printt("map val: %d\n", *val); |
| |
| return BPF_H_DEFAULT; |
| } |
| |
| BPF_LICENSE("GPL"); |