tools/testing/selftests/bpf/verifier/ctx_sk_lookup.c

Source file repositories/reference/linux-study-clean/tools/testing/selftests/bpf/verifier/ctx_sk_lookup.c

File Facts

System
Linux kernel
Corpus path
tools/testing/selftests/bpf/verifier/ctx_sk_lookup.c
Extension
.c
Size
19448 bytes
Lines
533
Domain
Support Tooling And Documentation
Bucket
tools
Inferred role
Support Tooling And Documentation: implementation source
Status
source implementation candidate

Why This File Exists

Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.

Dependency Surface

Detected Declarations

Annotated Snippet

{
	"valid 1,2,4,8-byte reads from bpf_sk_lookup",
	.insns = {
		/* 1-byte read from family field */
		BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, family)),
		BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, family) + 1),
		BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, family) + 2),
		BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, family) + 3),
		/* 2-byte read from family field */
		BPF_LDX_MEM(BPF_H, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, family)),
		BPF_LDX_MEM(BPF_H, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, family) + 2),
		/* 4-byte read from family field */
		BPF_LDX_MEM(BPF_W, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, family)),

		/* 1-byte read from protocol field */
		BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, protocol)),
		BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, protocol) + 1),
		BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, protocol) + 2),
		BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, protocol) + 3),
		/* 2-byte read from protocol field */
		BPF_LDX_MEM(BPF_H, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, protocol)),
		BPF_LDX_MEM(BPF_H, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, protocol) + 2),
		/* 4-byte read from protocol field */
		BPF_LDX_MEM(BPF_W, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, protocol)),

		/* 1-byte read from remote_ip4 field */
		BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, remote_ip4)),
		BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, remote_ip4) + 1),
		BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, remote_ip4) + 2),
		BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, remote_ip4) + 3),
		/* 2-byte read from remote_ip4 field */
		BPF_LDX_MEM(BPF_H, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, remote_ip4)),
		BPF_LDX_MEM(BPF_H, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, remote_ip4) + 2),
		/* 4-byte read from remote_ip4 field */
		BPF_LDX_MEM(BPF_W, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, remote_ip4)),

		/* 1-byte read from remote_ip6 field */
		BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, remote_ip6)),
		BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, remote_ip6) + 1),
		BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, remote_ip6) + 2),
		BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, remote_ip6) + 3),
		BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, remote_ip6) + 4),
		BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, remote_ip6) + 5),
		BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, remote_ip6) + 6),
		BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, remote_ip6) + 7),
		BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, remote_ip6) + 8),
		BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, remote_ip6) + 9),
		BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, remote_ip6) + 10),
		BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, remote_ip6) + 11),
		BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, remote_ip6) + 12),
		BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, remote_ip6) + 13),
		BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, remote_ip6) + 14),
		BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
			    offsetof(struct bpf_sk_lookup, remote_ip6) + 15),

Annotation

Implementation Notes