// SPDX-License-Identifier: GPL-2.0 /* Copyright (c) 2024 Isovalent */ #include #include #include "bpf_misc.h" const volatile long foo = 42; long bar; long bart = 96; SEC("tc/ingress") __description("rodata/strtol: write rejected") __failure __msg("write into map forbidden") int tcx1(struct __sk_buff *skb) { char buff[] = { '8', '4', '\0' }; bpf_strtol(buff, sizeof(buff), 0, (long *)&foo); return TCX_PASS; } SEC("tc/ingress") __description("bss/strtol: write accepted") __success int tcx2(struct __sk_buff *skb) { char buff[] = { '8', '4', '\0' }; bpf_strtol(buff, sizeof(buff), 0, &bar); return TCX_PASS; } SEC("tc/ingress") __description("data/strtol: write accepted") __success int tcx3(struct __sk_buff *skb) { char buff[] = { '8', '4', '\0' }; bpf_strtol(buff, sizeof(buff), 0, &bart); return TCX_PASS; } SEC("tc/ingress") __description("rodata/mtu: write rejected") __failure __msg("write into map forbidden") int tcx4(struct __sk_buff *skb) { bpf_check_mtu(skb, skb->ifindex, (__u32 *)&foo, 0, 0); return TCX_PASS; } SEC("tc/ingress") __description("bss/mtu: write accepted") __success int tcx5(struct __sk_buff *skb) { bpf_check_mtu(skb, skb->ifindex, (__u32 *)&bar, 0, 0); return TCX_PASS; } SEC("tc/ingress") __description("data/mtu: write accepted") __success int tcx6(struct __sk_buff *skb) { bpf_check_mtu(skb, skb->ifindex, (__u32 *)&bart, 0, 0); return TCX_PASS; } char LICENSE[] SEC("license") = "GPL";