#include "linux/bpf.h" #include "bpf_helpers.h" struct bpf_map_def SEC("maps") lru_hash = { .type = BPF_MAP_TYPE_LRU_HASH, .key_size = sizeof(__u32), .value_size = sizeof(__u32), .max_entries = 10, }; struct bpf_map_def SEC("maps") hash = { .type = BPF_MAP_TYPE_HASH, .key_size = sizeof(__u32), .value_size = sizeof(__u32), .max_entries = 10, }; struct bpf_map_def SEC("maps") big_hash = { .type = BPF_MAP_TYPE_HASH, .key_size = sizeof(__u32), .value_size = sizeof(__u32), .max_entries = 100000, }; struct bpf_map_def SEC("maps") array = { .type = BPF_MAP_TYPE_ARRAY, .key_size = sizeof(__u32), .value_size = sizeof(__u32), .max_entries = 5, }; struct bpf_map_def SEC("maps") big_array = { .type = BPF_MAP_TYPE_ARRAY, .key_size = sizeof(__u32), .value_size = sizeof(__u32), .max_entries = 100000, }; struct bpf_map_def SEC("maps") prog_array = { .type = BPF_MAP_TYPE_PROG_ARRAY, .key_size = sizeof(__u32), .value_size = sizeof(__u32), .max_entries = 10, }; struct bpf_map_def SEC("maps") dev_map = { .type = BPF_MAP_TYPE_DEVMAP, .key_size = sizeof(__u32), .value_size = sizeof(int), .max_entries = 10, }; struct bpf_map_def SEC("maps") per_cpu_hash = { .type = BPF_MAP_TYPE_PERCPU_HASH, .key_size = sizeof(__u32), .value_size = sizeof(__u32), .max_entries = 10, }; struct bpf_map_def SEC("maps") per_cpu_lru = { .type = BPF_MAP_TYPE_LRU_PERCPU_HASH, .key_size = sizeof(__u32), .value_size = sizeof(__u32), .max_entries = 10, }; struct bpf_map_def SEC("maps") per_cpu_array = { .type = BPF_MAP_TYPE_PERCPU_ARRAY, .key_size = sizeof(__u32), .value_size = sizeof(__u32), .max_entries = 10, }; struct bpf_map_def SEC("maps") pc_hash_big = { .type = BPF_MAP_TYPE_PERCPU_HASH, .key_size = sizeof(__u32), .value_size = sizeof(__u32), .max_entries = 10000, }; struct bpf_map_def SEC("maps") pc_array_big = { .type = BPF_MAP_TYPE_PERCPU_ARRAY, .key_size = sizeof(__u32), .value_size = sizeof(__u32), .max_entries = 1000, }; struct bpf_map_def SEC("maps") perf_event = { .type = BPF_MAP_TYPE_PERF_EVENT_ARRAY, .key_size = sizeof(int), .value_size = sizeof(__u32), }; SEC("xdp_test") int rxdp_test(struct xdp_md *ctx) { return XDP_PASS; } SEC("xdp_drop") int rxdp_drop(struct xdp_md *ctx) { return XDP_DROP; } SEC("xdp_perf") int rxdp_perf(struct xdp_md *ctx) { __u32 client = 0; __u64 flags = BPF_F_CURRENT_CPU; __u16 sample_size = sizeof(__u32); flags |= (__u64)sample_size << 32; bpf_perf_event_output(ctx, &perf_event, flags, &client, sizeof(client)); return XDP_PASS; } char _license[] SEC("license") = "GPL";