13daf8e70SStanislav Fomichev // SPDX-License-Identifier: GPL-2.0
23daf8e70SStanislav Fomichev 
33daf8e70SStanislav Fomichev #include <linux/bpf.h>
43e689141SToke Høiland-Jørgensen #include <bpf/bpf_helpers.h>
53daf8e70SStanislav Fomichev 
63daf8e70SStanislav Fomichev char _license[] SEC("license") = "GPL";
73daf8e70SStanislav Fomichev 
8*3d1d6239SAndrii Nakryiko SEC("tc")
process(struct __sk_buff * skb)93daf8e70SStanislav Fomichev int process(struct __sk_buff *skb)
103daf8e70SStanislav Fomichev {
113daf8e70SStanislav Fomichev 	#pragma clang loop unroll(full)
123daf8e70SStanislav Fomichev 	for (int i = 0; i < 5; i++) {
133daf8e70SStanislav Fomichev 		if (skb->cb[i] != i + 1)
143daf8e70SStanislav Fomichev 			return 1;
153daf8e70SStanislav Fomichev 		skb->cb[i]++;
163daf8e70SStanislav Fomichev 	}
173daf8e70SStanislav Fomichev 	skb->priority++;
1895fbda1eSStanislav Fomichev 	skb->tstamp++;
196de6c1f8SNikita V. Shirokov 	skb->mark++;
203daf8e70SStanislav Fomichev 
21a06bf42fSStanislav Fomichev 	if (skb->wire_len != 100)
22a06bf42fSStanislav Fomichev 		return 1;
23a06bf42fSStanislav Fomichev 	if (skb->gso_segs != 8)
24a06bf42fSStanislav Fomichev 		return 1;
2562511ceaSWillem de Bruijn 	if (skb->gso_size != 10)
2662511ceaSWillem de Bruijn 		return 1;
27b238290bSNeil Spring 	if (skb->ingress_ifindex != 11)
28b238290bSNeil Spring 		return 1;
29b238290bSNeil Spring 	if (skb->ifindex != 1)
30b238290bSNeil Spring 		return 1;
313384c7c7SVadim Fedorenko 	if (skb->hwtstamp != 11)
323384c7c7SVadim Fedorenko 		return 1;
33a06bf42fSStanislav Fomichev 
343daf8e70SStanislav Fomichev 	return 0;
353daf8e70SStanislav Fomichev }
36