1 // SPDX-License-Identifier: GPL-2.0-only
4 #include <bpf/bpf_helpers.h>
17 __uint(type, BPF_MAP_TYPE_ARRAY);
18 __uint(max_entries, 1);
20 __type(value, struct S);
27 static int global_data_x = 100;
28 static int volatile global_data_y = 500;
30 __noinline int foo(const struct S *s)
33 return bpf_get_prandom_u32() < s->x;
38 __noinline int bar(int *x)
41 *x &= bpf_get_prandom_u32();
45 __noinline int baz(volatile int *x)
48 *x &= bpf_get_prandom_u32();
53 __noinline int qux(enum E *e)
61 __noinline int quux(int (*arr)[10])
69 __noinline int quuz(int **p)
77 SEC("cgroup_skb/ingress")
79 int global_func9(struct __sk_buff *skb)
84 const struct S s = {.x = skb->len };
91 const struct S *s = bpf_map_lookup_elem(&map, &key);
97 const struct C c = {.x = skb->len, .y = skb->family };
99 result |= foo((const struct S *)&c);
112 result |= baz(&global_data_y);
124 result |= quux(&array);
133 return result ? 1 : 0;