Blame view

buildroot/buildroot-2016.08.1/package/babeld/0001-kernel_netlink.c-don-t-include-linux-if_bridge.h.patch 3.29 KB
6b13f685e   김민수   BSP 최초 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
  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