mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 20:51:44 +00:00
selftests/bpf: Validate CHECKSUM_COMPLETE option
Adjust skb program test to run with checksum validation. Signed-off-by: Vadim Fedorenko <vadfed@meta.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Link: https://lore.kernel.org/bpf/20240606145851.229116-2-vadfed@meta.com
This commit is contained in:
parent
a3cfe84cca
commit
041c1dc988
@ -11,6 +11,7 @@ static int sanity_run(struct bpf_program *prog)
|
||||
.data_in = &pkt_v4,
|
||||
.data_size_in = sizeof(pkt_v4),
|
||||
.repeat = 1,
|
||||
.flags = BPF_F_TEST_SKB_CHECKSUM_COMPLETE,
|
||||
);
|
||||
|
||||
prog_fd = bpf_program__fd(prog);
|
||||
|
@ -33,6 +33,8 @@ int main_prog(struct __sk_buff *skb)
|
||||
struct iphdr *ip = NULL;
|
||||
struct tcphdr *tcp;
|
||||
__u8 proto = 0;
|
||||
int urg_ptr;
|
||||
u32 offset;
|
||||
|
||||
if (!(ip = get_iphdr(skb)))
|
||||
goto out;
|
||||
@ -48,7 +50,14 @@ int main_prog(struct __sk_buff *skb)
|
||||
if (!tcp)
|
||||
goto out;
|
||||
|
||||
return tcp->urg_ptr;
|
||||
urg_ptr = tcp->urg_ptr;
|
||||
|
||||
/* Checksum validation part */
|
||||
proto++;
|
||||
offset = sizeof(struct ethhdr) + offsetof(struct iphdr, protocol);
|
||||
bpf_skb_store_bytes(skb, offset, &proto, sizeof(proto), BPF_F_RECOMPUTE_CSUM);
|
||||
|
||||
return urg_ptr;
|
||||
out:
|
||||
return -1;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user