0003-remove-kernel-headers-include-musl-fix.patch 2.83 KB
Remove kernel header includes causing issues with musl

Include the kernel headers from netfilter causes a conflict with the
<netinet/in.h> way of defining the IPPROTO_* constants, resulting in
the following build failure:

In file included from /home/peko/autobuild/instance-0/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/netdb.h:9:0,
                 from /home/peko/autobuild/instance-0/output/build/norm-1.5r6/protolib/include/protoAddress.h:13,
                 from /home/peko/autobuild/instance-0/output/build/norm-1.5r6/protolib/include/protoDetour.h:5,
                 from ../protolib/src/linux/linuxDetour.cpp:3:
/home/peko/autobuild/instance-0/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/linux/in.h:28:3: error: expected identifier before numeric constant
   IPPROTO_IP = 0,  /* Dummy protocol for TCP  */
   ^
/home/peko/autobuild/instance-0/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/linux/in.h:28:3: error: expected '}' before numeric constant
/home/peko/autobuild/instance-0/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/linux/in.h:28:3: error: expected unqualified-id before numeric constant
In file included from /home/peko/autobuild/instance-0/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/linux/netfilter.h:7:0,
                 from /home/peko/autobuild/instance-0/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/linux/netfilter_ipv4.h:8,
                 from ../protolib/src/linux/linuxDetour.cpp:10:
/home/peko/autobuild/instance-0/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/linux/in.h:79:1: error: expected declaration before '}' token
 };
 ^

Since from musl's developers perspective including kernel headers is
seen as being unsafe, we simply duplicate the necessary netfilter
definitions (there are just a few) instead of including some kernel
headers.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

Index: b/protolib/src/linux/linuxDetour.cpp
===================================================================
--- a/protolib/src/linux/linuxDetour.cpp
+++ b/protolib/src/linux/linuxDetour.cpp
@@ -7,15 +7,18 @@
 #include <stdlib.h>  // for atoi(), getenv()
 #include <stdio.h>
 #include <unistd.h>  // for close()
-#include <linux/netfilter_ipv4.h>  // for NF_IP_LOCAL_OUT, etc
-#include <linux/netfilter_ipv6.h>  // for NF_IP6_LOCAL_OUT, etc
-#include <linux/netfilter.h>  // for NF_ACCEPT, etc
 #include <libnetfilter_queue/libnetfilter_queue.h>
 
 #include <fcntl.h>  // for fcntl(), etc
 #include <linux/if_ether.h>  // for ETH_P_IP
 #include <net/if_arp.h>   // for ARPHRD_ETHER
 
+/* From netfilter kernel headers */
+#define NF_IP_LOCAL_OUT		3
+
+#define NF_DROP 		0
+#define NF_ACCEPT 		1
+
 /** NOTES: 
  *
  * 1) This newer implementation of LinuxDetour uses netfilter_queue