Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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

authored by

Vadim Fedorenko and committed by
Daniel Borkmann
041c1dc9 a3cfe84c

+11 -1
+1
tools/testing/selftests/bpf/prog_tests/test_skb_pkt_end.c
··· 11 11 .data_in = &pkt_v4, 12 12 .data_size_in = sizeof(pkt_v4), 13 13 .repeat = 1, 14 + .flags = BPF_F_TEST_SKB_CHECKSUM_COMPLETE, 14 15 ); 15 16 16 17 prog_fd = bpf_program__fd(prog);
+10 -1
tools/testing/selftests/bpf/progs/skb_pkt_end.c
··· 33 33 struct iphdr *ip = NULL; 34 34 struct tcphdr *tcp; 35 35 __u8 proto = 0; 36 + int urg_ptr; 37 + u32 offset; 36 38 37 39 if (!(ip = get_iphdr(skb))) 38 40 goto out; ··· 50 48 if (!tcp) 51 49 goto out; 52 50 53 - return tcp->urg_ptr; 51 + urg_ptr = tcp->urg_ptr; 52 + 53 + /* Checksum validation part */ 54 + proto++; 55 + offset = sizeof(struct ethhdr) + offsetof(struct iphdr, protocol); 56 + bpf_skb_store_bytes(skb, offset, &proto, sizeof(proto), BPF_F_RECOMPUTE_CSUM); 57 + 58 + return urg_ptr; 54 59 out: 55 60 return -1; 56 61 }