1 // SPDX-License-Identifier: GPL-2.0-only
2 /* Copyright (c) 2020 Facebook */
5 #include <bpf/bpf_helpers.h>
8 #define MAX_STACK (512 - 3 * 32 + 8)
11 static __attribute__ ((noinline
))
12 int f0(int var
, struct __sk_buff
*skb
)
17 __attribute__ ((noinline
))
18 int f1(struct __sk_buff
*skb
)
20 volatile char buf
[MAX_STACK
] = {};
22 return f0(0, skb
) + skb
->len
;
25 int f3(int, struct __sk_buff
*skb
, int);
27 __attribute__ ((noinline
))
28 int f2(int val
, struct __sk_buff
*skb
)
30 return f1(skb
) + f3(val
, skb
, 1);
33 __attribute__ ((noinline
))
34 int f3(int val
, struct __sk_buff
*skb
, int var
)
36 volatile char buf
[MAX_STACK
] = {};
38 return skb
->ifindex
* val
* var
;
41 SEC("classifier/test")
42 int test_cls(struct __sk_buff
*skb
)
44 return f0(1, skb
) + f1(skb
) + f2(2, skb
) + f3(3, skb
, 4);