]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: fix build with libbpf < 0.7
authorLuca Boccassi <luca.boccassi@gmail.com>
Wed, 6 Aug 2025 11:58:20 +0000 (12:58 +0100)
committerLuca Boccassi <luca.boccassi@gmail.com>
Wed, 6 Aug 2025 12:33:21 +0000 (13:33 +0100)
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

meson.build
src/network/bpf/sysctl-monitor/meson.build
src/network/meson.build
src/network/networkd-manager.c
src/network/networkd-manager.h
src/network/networkd-sysctl.c
src/network/networkd-sysctl.h

index c416bb4b605a204e06f3fa0a558d5ec62e0a90ed..f3d0a4b51534e5115f6f30d7bbecf1efce54e009 100644 (file)
@@ -1958,6 +1958,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   = files('tools/check-version-history.py')
index 2cd385736a620bc683ae9fe4d7ca72e7f0ad0fc7..8b0de886743f18561277643a33205ef73a7ff5c2 100644 (file)
@@ -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
 
index c6a323c929bcb855a2d8ade69b2759c5234aa9d4..78a0e72b3a17cfbeeaa1ada101250b5b103ec7ca 100644 (file)
@@ -140,7 +140,7 @@ networkctl_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
         systemd_networkd_extract_sources += sysctl_monitor_skel_h
 endif
 
index e7acf6d126cf8b6a5c6ac1eabef1e0b2eda524bc..ef61a90fcb3ddc97d9844607790b3a4cd0714d1b 100644 (file)
@@ -646,7 +646,7 @@ int manager_new(Manager **ret, bool test_mode) {
                 .dhcp_server_persist_leases = DHCP_SERVER_PERSIST_LEASES_YES,
                 .serialization_fd = -EBADF,
                 .ip_forwarding = { -1, -1, },
-#if HAVE_VMLINUX_H
+#if ENABLE_SYSCTL_BPF
                 .cgroup_fd = -EBADF,
 #endif
         };
index d0897e76ad09c6b86d6f8fdbadaa97be59f24490..ad3d815b0c8a86e020ef607db5b144d358cc15e7 100644 (file)
@@ -117,7 +117,7 @@ typedef 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;
@@ -148,7 +148,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;
index 4f9b6522d7792e5099f1351e11b41b24d6362a88..6433a77a5e635206971a6307548d3631bf01bcfb 100644 (file)
@@ -26,7 +26,7 @@
 #include "string-util.h"
 #include "sysctl-util.h"
 
-#if HAVE_VMLINUX_H
+#if ENABLE_SYSCTL_BPF
 
 #include "bpf-link.h"
 #include "bpf/sysctl-monitor/sysctl-monitor-skel.h"
index dac7a72324f63812d1f8d96c466ac6b8b4bcd28f..5cf8636312f4e90facc2c2da03f928391a51a231 100644 (file)
@@ -22,7 +22,7 @@ typedef enum IPReversePathFilter {
         _IP_REVERSE_PATH_FILTER_INVALID = -EINVAL,
 } IPReversePathFilter;
 
-#if HAVE_VMLINUX_H
+#if ENABLE_SYSCTL_BPF
 int manager_install_sysctl_monitor(Manager *manager);
 void manager_remove_sysctl_monitor(Manager *manager);
 int link_clear_sysctl_shadows(Link *link);