Extend changes_pkt_data tests with test cases freplacing the main program that does not have subprograms. Try four combinations when both main program and replacement do and do not change packet data. Signed-off-by: Eduard Zingerman <eddyz87@gmail.com> Link: https://lore.kernel.org/r/20241212070711.427443-2-eddyz87@gmail.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
39 lines
603 B
C
39 lines
603 B
C
// SPDX-License-Identifier: GPL-2.0
|
|
|
|
#include <linux/bpf.h>
|
|
#include <bpf/bpf_helpers.h>
|
|
|
|
__noinline
|
|
long changes_pkt_data(struct __sk_buff *sk)
|
|
{
|
|
return bpf_skb_pull_data(sk, 0);
|
|
}
|
|
|
|
__noinline __weak
|
|
long does_not_change_pkt_data(struct __sk_buff *sk)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
SEC("?tc")
|
|
int main_with_subprogs(struct __sk_buff *sk)
|
|
{
|
|
changes_pkt_data(sk);
|
|
does_not_change_pkt_data(sk);
|
|
return 0;
|
|
}
|
|
|
|
SEC("?tc")
|
|
int main_changes(struct __sk_buff *sk)
|
|
{
|
|
bpf_skb_pull_data(sk, 0);
|
|
return 0;
|
|
}
|
|
|
|
SEC("?tc")
|
|
int main_does_not_change(struct __sk_buff *sk)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
char _license[] SEC("license") = "GPL";
|