Skip to content

Commit 041c1dc

Browse files
vvfedorenkoborkmann
authored andcommitted
selftests/bpf: Validate CHECKSUM_COMPLETE option
Adjust skb program test to run with checksum validation. Signed-off-by: Vadim Fedorenko <[email protected]> Signed-off-by: Daniel Borkmann <[email protected]> Link: https://lore.kernel.org/bpf/[email protected]
1 parent a3cfe84 commit 041c1dc

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

tools/testing/selftests/bpf/prog_tests/test_skb_pkt_end.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ static int sanity_run(struct bpf_program *prog)
1111
.data_in = &pkt_v4,
1212
.data_size_in = sizeof(pkt_v4),
1313
.repeat = 1,
14+
.flags = BPF_F_TEST_SKB_CHECKSUM_COMPLETE,
1415
);
1516

1617
prog_fd = bpf_program__fd(prog);

tools/testing/selftests/bpf/progs/skb_pkt_end.c

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ int main_prog(struct __sk_buff *skb)
3333
struct iphdr *ip = NULL;
3434
struct tcphdr *tcp;
3535
__u8 proto = 0;
36+
int urg_ptr;
37+
u32 offset;
3638

3739
if (!(ip = get_iphdr(skb)))
3840
goto out;
@@ -48,7 +50,14 @@ int main_prog(struct __sk_buff *skb)
4850
if (!tcp)
4951
goto out;
5052

51-
return tcp->urg_ptr;
53+
urg_ptr = tcp->urg_ptr;
54+
55+
/* Checksum validation part */
56+
proto++;
57+
offset = sizeof(struct ethhdr) + offsetof(struct iphdr, protocol);
58+
bpf_skb_store_bytes(skb, offset, &proto, sizeof(proto), BPF_F_RECOMPUTE_CSUM);
59+
60+
return urg_ptr;
5261
out:
5362
return -1;
5463
}

0 commit comments

Comments
 (0)