samples/bpf/tcp_tos_reflect_kern.c

Source file repositories/reference/linux-study-clean/samples/bpf/tcp_tos_reflect_kern.c

File Facts

System
Linux kernel
Corpus path
samples/bpf/tcp_tos_reflect_kern.c
Extension
.c
Size
1833 bytes
Lines
81
Domain
Support Tooling And Documentation
Bucket
samples
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

if (!rv) {
			if (skops->family == AF_INET) {
				hdr = (struct iphdr *) header;
				tos = hdr->tos;
				if (tos != 0)
					bpf_setsockopt(skops, SOL_IP, IP_TOS,
						       &tos, sizeof(tos));
			} else {
				hdr6 = (struct ipv6hdr *) header;
				tos = ((hdr6->priority) << 4 |
				       (hdr6->flow_lbl[0]) >>  4);
				if (tos)
					bpf_setsockopt(skops, SOL_IPV6,
						       IPV6_TCLASS,
						       &tos, sizeof(tos));
			}
			rv = 0;
		}
		break;
	default:
		rv = -1;
	}
#ifdef DEBUG
	bpf_printk("Returning %d\n", rv);
#endif
	skops->reply = rv;
	return 1;
}
char _license[] SEC("license") = "GPL";

Annotation

Implementation Notes