]> 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)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 3 Sep 2025 10:10:48 +0000 (12:10 +0200)
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
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 a4730f05707bb1bbecfd6975e6f0949f7bf3009f..a764b4f5cba1a575ad63a5458950280d1dca4ff7 100644 (file)
@@ -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')
index 6bddeb40d60b4dbaaa46b9a62c42ca56aa0cbeb1..8667e4adf1ac0f1fdf1c54b25ecd359e635fdc1d 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 8247759903b85d663548a73d5cf749dadde48edf..216dd803f87657990c80372f519357649e1f505e 100644 (file)
@@ -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
 
index 9290255ad06af9c3914a81f5a3a4439ca1ebebfa..a7aa2224794e1d99c8ca9644e54089550bd760df 100644 (file)
@@ -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
         };
index faa335715169db1793a0eb73a2b577f36fc27e11..a34efaeae067dc301ea240f17ef686f0951f7f02 100644 (file)
@@ -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;
index 10a35bc44bc886f405c9505fb9ed14ad5884061c..72d32c0187ff6aa3e0a188aadce90a4cfed8546d 100644 (file)
@@ -23,7 +23,7 @@
 #include "string-table.h"
 #include "sysctl-util.h"
 
-#if HAVE_VMLINUX_H
+#if ENABLE_SYSCTL_BPF
 
 #include "bpf-link.h"
 
index ea1d2bc897d72af6d041689cfd6e8d3537e46752..408d61cc0e7aec86d3eae92af16fa816de7969ca 100644 (file)
@@ -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);