From c6871e2de4f3805fe77248570bab7907ae26b759 Mon Sep 17 00:00:00 2001 From: yuelg Date: Tue, 18 Feb 2025 16:01:56 +0800 Subject: [PATCH] adapt for oe22.03 lts, error is unknown when load bpf Signed-off-by: yuelg --- pkg/bpf/c/restricted-network.bpf.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/pkg/bpf/c/restricted-network.bpf.c b/pkg/bpf/c/restricted-network.bpf.c index ad0c0b9..cca3531 100644 --- a/pkg/bpf/c/restricted-network.bpf.c +++ b/pkg/bpf/c/restricted-network.bpf.c @@ -134,9 +134,11 @@ static inline int get_net_perm(struct network_safeguard_config *c, struct sockad int allow_uid = -EPERM; int allow_gid = -EPERM; - unsigned short family = BPF_CORE_READ(address, sa_family); - bool is_ipv6 = (family == AF_INET6); - bool is_ipv4 = (family == AF_INET); + struct sockaddr a; + bpf_probe_read_kernel(&a, sizeof(struct sockaddr), address); + + bool is_ipv6 = (a.sa_family == AF_INET6); + bool is_ipv4 = (a.sa_family == AF_INET); if (!(is_ipv4 || is_ipv6)) return 0; @@ -145,9 +147,9 @@ static inline int get_net_perm(struct network_safeguard_config *c, struct sockad struct sockaddr_in6 *inet_addr6; if (is_ipv6) { - inet_addr6 = (struct sockaddr_in6 *)address; + inet_addr6 = (struct sockaddr_in6 *)&a; } else { - inet_addr4 = (struct sockaddr_in *)address; + inet_addr4 = (struct sockaddr_in *)&a; } if ((is_ipv6 && is_destination_port_zero_v6(inet_addr6)) || -- Gitee