From 66802401ac76552eceee6520e58c28818bd3f937 Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Wed, 6 Aug 2025 12:58:20 +0100 Subject: [PATCH] network: fix build with libbpf < 0.7 bpf_loop() and bpf_strncmp(), used by sysctl-monitor, were introduced in libbpf 0.7, so skip the module if using an older version Follow-up for 6d9ef22acdeac4b429efb75164341233955484af (cherry picked from commit 7108a882b34789be203cc6a9a3f7722f1929f21f) --- meson.build | 2 ++ src/network/bpf/sysctl_monitor/meson.build | 2 +- src/network/meson.build | 2 +- src/network/networkd-manager.c | 2 +- src/network/networkd-manager.h | 4 ++-- src/network/networkd-sysctl.c | 2 +- src/network/networkd-sysctl.h | 2 +- 7 files changed, 9 insertions(+), 7 deletions(-) diff --git a/meson.build b/meson.build index a4730f05707..a764b4f5cba 100644 --- a/meson.build +++ b/meson.build @@ -2038,6 +2038,8 @@ endif conf.set10('HAVE_VMLINUX_H', use_provided_vmlinux_h or use_generated_vmlinux_h) +conf.set10('ENABLE_SYSCTL_BPF', conf.get('HAVE_VMLINUX_H') == 1 and libbpf.version().version_compare('>= 0.7')) + ##################################################################### check_version_history_py = find_program('tools/check-version-history.py') diff --git a/src/network/bpf/sysctl_monitor/meson.build b/src/network/bpf/sysctl_monitor/meson.build index 6bddeb40d60..8667e4adf1a 100644 --- a/src/network/bpf/sysctl_monitor/meson.build +++ b/src/network/bpf/sysctl_monitor/meson.build @@ -1,6 +1,6 @@ # SPDX-License-Identifier: LGPL-2.1-or-later -if conf.get('HAVE_VMLINUX_H') != 1 +if conf.get('ENABLE_SYSCTL_BPF') != 1 subdir_done() endif diff --git a/src/network/meson.build b/src/network/meson.build index 8247759903b..216dd803f87 100644 --- a/src/network/meson.build +++ b/src/network/meson.build @@ -143,7 +143,7 @@ network_generator_sources = files( networkd_network_gperf_gperf = files('networkd-network-gperf.gperf') networkd_netdev_gperf_gperf = files('netdev/netdev-gperf.gperf') -if conf.get('HAVE_VMLINUX_H') == 1 +if conf.get('ENABLE_SYSCTL_BPF') == 1 sources += sysctl_monitor_skel_h endif diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c index 9290255ad06..a7aa2224794 100644 --- a/src/network/networkd-manager.c +++ b/src/network/networkd-manager.c @@ -653,7 +653,7 @@ int manager_new(Manager **ret, bool test_mode) { .dhcp_server_persist_leases = true, .serialization_fd = -EBADF, .ip_forwarding = { -1, -1, }, -#if HAVE_VMLINUX_H +#if ENABLE_SYSCTL_BPF .cgroup_fd = -EBADF, #endif }; diff --git a/src/network/networkd-manager.h b/src/network/networkd-manager.h index faa33571516..a34efaeae06 100644 --- a/src/network/networkd-manager.h +++ b/src/network/networkd-manager.h @@ -133,7 +133,7 @@ struct Manager { /* sysctl */ int ip_forwarding[2]; -#if HAVE_VMLINUX_H +#if ENABLE_SYSCTL_BPF Hashmap *sysctl_shadow; sd_event_source *sysctl_event_source; struct ring_buffer *sysctl_buffer; @@ -164,7 +164,7 @@ int manager_set_timezone(Manager *m, const char *timezone); int manager_reload(Manager *m, sd_bus_message *message); static inline Hashmap** manager_get_sysctl_shadow(Manager *manager) { -#if HAVE_VMLINUX_H +#if ENABLE_SYSCTL_BPF return &ASSERT_PTR(manager)->sysctl_shadow; #else return NULL; diff --git a/src/network/networkd-sysctl.c b/src/network/networkd-sysctl.c index 10a35bc44bc..72d32c0187f 100644 --- a/src/network/networkd-sysctl.c +++ b/src/network/networkd-sysctl.c @@ -23,7 +23,7 @@ #include "string-table.h" #include "sysctl-util.h" -#if HAVE_VMLINUX_H +#if ENABLE_SYSCTL_BPF #include "bpf-link.h" diff --git a/src/network/networkd-sysctl.h b/src/network/networkd-sysctl.h index ea1d2bc897d..408d61cc0e7 100644 --- a/src/network/networkd-sysctl.h +++ b/src/network/networkd-sysctl.h @@ -27,7 +27,7 @@ typedef enum IPReversePathFilter { _IP_REVERSE_PATH_FILTER_INVALID = -EINVAL, } IPReversePathFilter; -#if HAVE_VMLINUX_H +#if ENABLE_SYSCTL_BPF int sysctl_add_monitor(Manager *manager); void sysctl_remove_monitor(Manager *manager); int sysctl_clear_link_shadows(Link *link); -- 2.47.3