linuxOS_AP05/buildroot/package/babeld/0001-kernel_netlink.c-don-t-include-linux-if_bridge.h.patch
2025-06-02 13:59:07 +08:00

79 lines
3.3 KiB
Diff
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

From 723bbfd8bdb76012a3da937c7499cf3c0b111dd5 Mon Sep 17 00:00:00 2001
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date: Sat, 20 Aug 2016 11:13:56 +0200
Subject: [PATCH] kernel_netlink.c: don't include <linux/if_bridge.h>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Including <linux/if_bridge.h> causes the inclusion of <linux/in6.h>,
which defines 'struct in6_addr', also defined in <netinet/in.h>, causing
a build failure with the musl C library:
In file included from /home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/if_bridge.h:18:0,
from kernel_netlink.c:42,
from kernel.c:31:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/in6.h:32:8: error: redefinition of struct in6_addr
struct in6_addr {
^
In file included from kernel_netlink.c:33:0,
from kernel.c:31:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/netinet/in.h:23:8: note: originally defined here
struct in6_addr {
^
In file included from /home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/if_bridge.h:18:0,
from kernel_netlink.c:42,
from kernel.c:31:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/in6.h:49:8: error: redefinition of struct sockaddr_in6
struct sockaddr_in6 {
^
In file included from kernel_netlink.c:33:0,
from kernel.c:31:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/netinet/in.h:34:8: note: originally defined here
struct sockaddr_in6 {
^
In file included from /home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/if_bridge.h:18:0,
from kernel_netlink.c:42,
from kernel.c:31:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/in6.h:59:8: error: redefinition of struct ipv6_mreq
struct ipv6_mreq {
^
In file included from kernel_netlink.c:33:0,
from kernel.c:31:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/netinet/in.h:42:8: note: originally defined here
struct ipv6_mreq {
^
In order to address this, this patch removes the <linux/if_bridge.h>
inclusion, and instead defines BRCTL_GET_BRIDGES to the appropriate
value if it's not provided by the C library.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
kernel_netlink.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/kernel_netlink.c b/kernel_netlink.c
index 4eadc39..1a5b3dd 100644
--- a/kernel_netlink.c
+++ b/kernel_netlink.c
@@ -39,10 +39,14 @@ THE SOFTWARE.
#include <sys/socket.h>
#include <linux/netlink.h>
#include <linux/rtnetlink.h>
-#include <linux/if_bridge.h>
#include <linux/fib_rules.h>
#include <net/if_arp.h>
+/* From <linux/if_bridge.h> */
+#ifndef BRCTL_GET_BRIDGES
+#define BRCTL_GET_BRIDGES 1
+#endif
+
#if(__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ <= 5)
#define RTA_TABLE 15
#endif
--
2.7.4