FILE
bench_sockmap_prog.c
File preview with syntax highlighting.
linux-6.19.14/tools/testing/selftests/bpf/progs/bench_sockmap_prog.c
1// SPDX-License-Identifier: GPL-2.0 2#include <linux/bpf.h> 3#include <bpf/bpf_helpers.h> 4#include <bpf/bpf_endian.h> 5 6long process_byte = 0; 7int verdict_dir = 0; 8int dropped = 0; 9int pkt_size = 0; 10struct { 11 __uint(type, BPF_MAP_TYPE_SOCKMAP); 12 __uint(max_entries, 20); 13 __type(key, int); 14 __type(value, int); 15} sock_map_rx SEC(".maps"); 16 17struct { 18 __uint(type, BPF_MAP_TYPE_SOCKMAP); 19 __uint(max_entries, 20); 20 __type(key, int); 21 __type(value, int); 22} sock_map_tx SEC(".maps"); 23 24SEC("sk_skb/stream_parser") 25int prog_skb_parser(struct __sk_buff *skb) 26{ 27 return pkt_size; 28} 29 30SEC("sk_skb/stream_verdict") 31int prog_skb_verdict(struct __sk_buff *skb) 32{ 33 int one = 1; 34 int ret = bpf_sk_redirect_map(skb, &sock_map_rx, one, verdict_dir); 35 36 if (ret == SK_DROP) 37 dropped++; 38 __sync_fetch_and_add(&process_byte, skb->len); 39 return ret; 40} 41 42SEC("sk_skb/stream_verdict") 43int prog_skb_pass(struct __sk_buff *skb) 44{ 45 __sync_fetch_and_add(&process_byte, skb->len); 46 return SK_PASS; 47} 48 49SEC("sk_msg") 50int prog_skmsg_verdict(struct sk_msg_md *msg) 51{ 52 int one = 1; 53 54 __sync_fetch_and_add(&process_byte, msg->size); 55 return bpf_msg_redirect_map(msg, &sock_map_tx, one, verdict_dir); 56} 57 58SEC("sk_msg") 59int prog_skmsg_pass(struct sk_msg_md *msg) 60{ 61 __sync_fetch_and_add(&process_byte, msg->size); 62 return SK_PASS; 63} 64 65char _license[] SEC("license") = "GPL";
~/
Read-only file preview.