2 #include <bpf/bpf_helpers.h>
3 #include <bpf/bpf_endian.h>
7 __uint(type, BPF_MAP_TYPE_SOCKMAP);
8 __uint(max_entries, 20);
11 } sock_map_rx SEC(".maps");
14 __uint(type, BPF_MAP_TYPE_SOCKMAP);
15 __uint(max_entries, 20);
18 } sock_map_tx SEC(".maps");
21 __uint(type, BPF_MAP_TYPE_SOCKMAP);
22 __uint(max_entries, 20);
25 } sock_map_msg SEC(".maps");
28 __uint(type, BPF_MAP_TYPE_ARRAY);
29 __uint(max_entries, 20);
32 } sock_map_break SEC(".maps");
35 int bpf_prog2(struct __sk_buff *skb)
37 void *data_end = (void *)(long) skb->data_end;
38 void *data = (void *)(long) skb->data;
39 __u32 lport = skb->local_port;
40 __u32 rport = skb->remote_port;
47 if (data + 8 > data_end)
63 return bpf_sk_redirect_map(skb, &sock_map_rx, sk, 0);
64 return bpf_sk_redirect_map(skb, &sock_map_tx, sk, 0);
67 char _license[] SEC("license") = "GPL";