[prev in list] [next in list] [prev in thread] [next in thread] 

List:       netfilter
Subject:    Re: iptables build error when using musl-libc and kernel 3.18.x targeting ARM
From:       Jason Sipula <alupis1 () gmail ! com>
Date:       2015-02-06 20:03:21
Message-ID: CAJCcFsiHFE8+u3PGjTgTTmai3BO691BP9cWUcX=Q4s8D2p26RQ () mail ! gmail ! com
[Download RAW message or body]

Just an update...

I was able to get iptables building successfully when using musl-libc
when using this patch from Sabotage-Linux:

https://github.com/sabotage-linux/sabotage/blob/master/KEEP/iptables-1.4.14-musl-fixes.patch

Here's the patch in text in-case they break the link in the future:

--- iptables-1.4.12.1.o/extensions/libip6t_ipv6header.c
+++ iptables-1.4.12.1/extensions/libip6t_ipv6header.c
@@ -10,6 +10,9 @@
 #include <netdb.h>
 #include <xtables.h>
 #include <linux/netfilter_ipv6/ip6t_ipv6header.h>
+#ifndef IPPROTO_HOPOPTS
+# define IPPROTO_HOPOPTS 0
+#endif

 enum {
  O_HEADER = 0,
--- iptables-1.4.12.1.o/extensions/libxt_TCPOPTSTRIP.c
+++ iptables-1.4.12.1/extensions/libxt_TCPOPTSTRIP.c
@@ -12,6 +12,21 @@
 #ifndef TCPOPT_MD5SIG
 # define TCPOPT_MD5SIG 19
 #endif
+#ifndef TCPOPT_MAXSEG
+# define TCPOPT_MAXSEG 2
+#endif
+#ifndef TCPOPT_WINDOW
+# define TCPOPT_WINDOW 3
+#endif
+#ifndef TCPOPT_SACK_PERMITTED
+# define TCPOPT_SACK_PERMITTED 4
+#endif
+#ifndef TCPOPT_SACK
+# define TCPOPT_SACK 5
+#endif
+#ifndef TCPOPT_TIMESTAMP
+# define TCPOPT_TIMESTAMP 8
+#endif

 enum {
  O_STRIP_OPTION = 0,
--- iptables-1.4.12.1.o/include/libiptc/ipt_kernel_headers.h
+++ iptables-1.4.12.1/include/libiptc/ipt_kernel_headers.h
@@ -5,7 +5,6 @@

 #include <limits.h>

-#if defined(__GLIBC__) && __GLIBC__ == 2
 #include <netinet/ip.h>
 #include <netinet/in.h>
 #include <netinet/ip_icmp.h>
@@ -13,15 +12,4 @@
 #include <netinet/udp.h>
 #include <net/if.h>
 #include <sys/types.h>
-#else /* libc5 */
-#include <sys/socket.h>
-#include <linux/ip.h>
-#include <linux/in.h>
-#include <linux/if.h>
-#include <linux/icmp.h>
-#include <linux/tcp.h>
-#include <linux/udp.h>
-#include <linux/types.h>
-#include <linux/in6.h>
-#endif
 #endif
--- iptables-1.4.12.1.o/include/linux/netfilter_ipv4/ip_tables.h
+++ iptables-1.4.12.1/include/linux/netfilter_ipv4/ip_tables.h
@@ -16,6 +16,7 @@
 #define _IPTABLES_H

 #include <linux/types.h>
+#include <sys/types.h>

 #include <linux/netfilter_ipv4.h>

--- iptables-1.4.12.1.o/iptables/ip6tables-restore.c
+++ iptables-1.4.12.1/iptables/ip6tables-restore.c
@@ -9,7 +9,7 @@
  */

 #include <getopt.h>
-#include <sys/errno.h>
+#include <errno.h>
 #include <stdbool.h>
 #include <string.h>
 #include <stdio.h>
--- iptables-1.4.12.1.o/iptables/ip6tables-save.c
+++ iptables-1.4.12.1/iptables/ip6tables-save.c
@@ -6,7 +6,7 @@
  * This code is distributed under the terms of GNU GPL v2
  */
 #include <getopt.h>
-#include <sys/errno.h>
+#include <errno.h>
 #include <stdio.h>
 #include <fcntl.h>
 #include <stdlib.h>
--- iptables-1.4.12.1.o/iptables/iptables-restore.c
+++ iptables-1.4.12.1/iptables/iptables-restore.c
@@ -6,7 +6,7 @@
  */

 #include <getopt.h>
-#include <sys/errno.h>
+#include <errno.h>
 #include <stdbool.h>
 #include <string.h>
 #include <stdio.h>
--- iptables-1.4.12.1.o/iptables/iptables-save.c
+++ iptables-1.4.12.1/iptables/iptables-save.c
@@ -6,7 +6,7 @@
  *
  */
 #include <getopt.h>
-#include <sys/errno.h>
+#include <errno.h>
 #include <stdio.h>
 #include <fcntl.h>
 #include <stdlib.h>
--- iptables-1.4.12.1.o/iptables/iptables-xml.c
+++ iptables-1.4.12.1/iptables/iptables-xml.c
@@ -7,7 +7,7 @@
  */

 #include <getopt.h>
-#include <sys/errno.h>
+#include <errno.h>
 #include <string.h>
 #include <stdio.h>
 #include <stdlib.h>


On Mon, Feb 2, 2015 at 12:50 AM, Jason Sipula <alupis1@gmail.com> wrote:
> I'm trying to compile iptables targeting an ARM, but running into
> quite a bit of compilation trouble.
>
> I'm using linux kernel 3.18.x, which perhaps is some of my problems (too new).
>
> I've downloaded a new config.guess and config.sub so that iptables
> recognizes musl-libc.
>
> ./configure completes normally
>
> My configure opts are:
>
> --build="x86_64-cross-linux-gnu"
> --host="arm-linux-musleabihf"
> --prefix=/usr
> --sbin=/sbin
> --with-xtlibdir=/lib/xtables
> --enable-libipq
> --with-ksource="${TOOLS}/arm-linux-musleabihf"
>
> Issues come up when running make pretty much right away. I was trying
> with the latest official release of iptables version 1.4.21, but I get
> the same compilation problem using the latest nightly build
> iptables-20150202 as well.
>
> I might be able to work around some of the unknown type errors (shown
> below) by just patching in a custom include to typedef map them (ex:
> typedef u_int16_t uint16_t;), but there's a lot of other issues and
> I'm not sure that path would be the correct one to head down.
>
> ~~~
>
> Since my config.log is very long, here is a link:
> http://pastebin.com/raw.php?i=qMfqvbux
>
> Below is the start of 'make' and it's errors.
>
> Both are from the nightly build 20150202, however things look the same
> to me when using the official 1.4.21 release.
>
> ~~~
>
> Iptables Configuration:
>   IPv4 support: yes
>   IPv6 support: yes
>   Devel support: yes
>   IPQ support: yes
>   Large file support: yes
>   BPF utils support: no
>   nfsynproxy util support: no
>   nftables support: yes
>
> Build parameters:
>   Put plugins into executable (static): no
>   Support plugins via dlopen (shared): yes
>   Installation prefix (--prefix): /usr
>   Xtables extension directory: /lib/xtables
>   Pkg-config directory: /usr/lib/pkgconfig
>   Kernel source directory: /root/LiLi/target/cross-tools/arm-linux-musleabihf
>   Host: arm-unknown-linux-musleabihf
>   GCC binary: /root/LiLi/target/cross-tools/bin/arm-linux-musleabihf-gcc
>
> Iptables modules that will not be built:  connlabel
> make[1]: Entering directory '/root/LiLi/target/sources/iptables-20150202'
> make  all-recursive
> make[2]: Entering directory '/root/LiLi/target/sources/iptables-20150202'
> Making all in libiptc
> make[3]: Entering directory
> '/root/LiLi/target/sources/iptables-20150202/libiptc'
> /bin/sh ../libtool --tag=CC   --mode=compile
> /root/LiLi/target/cross-tools/bin/arm-linux-musleabihf-gcc
> -DHAVE_CONFIG_H -I. -I..  -D_LARGEFILE_SOURCE=1 -D_LARGE_FILES
> -D_FILE_OFFSET_BITS=64 -D_REENTRANT  -DXTABLES_LIBDIR=\"/lib/xtables\"
> -DXTABLES_INTERNAL -I../include -I../include
> -I/root/LiLi/target/cross-tools/arm-linux-musleabihf/include/uapi
> -I/root/LiLi/target/cross-tools/arm-linux-musleabihf/include  -Wall
> -Waggregate-return -Wmissing-declarations  -Wmissing-prototypes
> -Wredundant-decls -Wshadow -Wstrict-prototypes  -Winline -pipe -g -O2
> -MT libip4tc.lo -MD -MP -MF .deps/libip4tc.Tpo -c -o libip4tc.lo
> libip4tc.c
> libtool: compile:
> /root/LiLi/target/cross-tools/bin/arm-linux-musleabihf-gcc
> -DHAVE_CONFIG_H -I. -I.. -D_LARGEFILE_SOURCE=1 -D_LARGE_FILES
> -D_FILE_OFFSET_BITS=64 -D_REENTRANT -DXTABLES_LIBDIR=\"/lib/xtables\"
> -DXTABLES_INTERNAL -I../include -I../include
> -I/root/LiLi/target/cross-tools/arm-linux-musleabihf/include/uapi
> -I/root/LiLi/target/cross-tools/arm-linux-musleabihf/include -Wall
> -Waggregate-return -Wmissing-declarations -Wmissing-prototypes
> -Wredundant-decls -Wshadow -Wstrict-prototypes -Winline -pipe -g -O2
> -MT libip4tc.lo -MD -MP -MF .deps/libip4tc.Tpo -c libip4tc.c  -fPIC
> -DPIC -o .libs/libip4tc.o
> In file included from ../include/libiptc/libiptc.h:12:0,
>                  from libip4tc.c:29:
> ../include/linux/netfilter_ipv4/ip_tables.h:76:2: error: unknown type
> name 'u_int16_t'
>   u_int16_t proto;
>   ^
> ../include/linux/netfilter_ipv4/ip_tables.h:79:2: error: unknown type
> name 'u_int8_t'
>   u_int8_t flags;
>   ^
> ../include/linux/netfilter_ipv4/ip_tables.h:81:2: error: unknown type
> name 'u_int8_t'
>   u_int8_t invflags;
>   ^
> ../include/linux/netfilter_ipv4/ip_tables.h:109:2: error: unknown type
> name 'u_int16_t'
>   u_int16_t target_offset;
>   ^
> ../include/linux/netfilter_ipv4/ip_tables.h:111:2: error: unknown type
> name 'u_int16_t'
>   u_int16_t next_offset;
>   ^
> ../include/linux/netfilter_ipv4/ip_tables.h:144:2: error: unknown type
> name 'u_int8_t'
>   u_int8_t type;    /* type to match */
>   ^
> ../include/linux/netfilter_ipv4/ip_tables.h:145:2: error: unknown type
> name 'u_int8_t'
>   u_int8_t code[2];   /* range of code */
>   ^
> ../include/linux/netfilter_ipv4/ip_tables.h:146:2: error: unknown type
> name 'u_int8_t'
>   u_int8_t invflags;   /* Inverse flags */
>   ^
> In file included from ../include/xtables.h:15:0,
>                  from libiptc.c:37,
>                  from libip4tc.c:113:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/netinet/in.h:14:8:
> error: redefinition of 'struct in_addr'
>  struct in_addr { in_addr_t s_addr; };
>         ^
> In file included from ../include/libiptc/ipt_kernel_headers.h:19:0,
>                  from ../include/libiptc/libiptc.h:6,
>                  from libip4tc.c:29:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/linux/in.h:79:8:
> note: originally defined here
>  struct in_addr {
>         ^
> In file included from ../include/xtables.h:15:0,
>                  from libiptc.c:37,
>                  from libip4tc.c:113:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/netinet/in.h:16:8:
> error: redefinition of 'struct sockaddr_in'
>  struct sockaddr_in
>         ^
> In file included from ../include/libiptc/ipt_kernel_headers.h:19:0,
>                  from ../include/libiptc/libiptc.h:6,
>                  from libip4tc.c:29:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/linux/in.h:217:8:
> note: originally defined here
>  struct sockaddr_in {
>         ^
> In file included from ../include/xtables.h:15:0,
>                  from libiptc.c:37,
>                  from libip4tc.c:113:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/netinet/in.h:24:8:
> error: redefinition of 'struct in6_addr'
>  struct in6_addr
>         ^
> In file included from ../include/libiptc/ipt_kernel_headers.h:25:0,
>                  from ../include/libiptc/libiptc.h:6,
>                  from libip4tc.c:29:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/linux/in6.h:32:8:
> note: originally defined here
>  struct in6_addr {
>         ^
> In file included from ../include/xtables.h:15:0,
>                  from libiptc.c:37,
>                  from libip4tc.c:113:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/netinet/in.h:36:8:
> error: redefinition of 'struct sockaddr_in6'
>  struct sockaddr_in6
>         ^
> In file included from ../include/libiptc/ipt_kernel_headers.h:25:0,
>                  from ../include/libiptc/libiptc.h:6,
>                  from libip4tc.c:29:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/linux/in6.h:49:8:
> note: originally defined here
>  struct sockaddr_in6 {
>         ^
> In file included from ../include/xtables.h:15:0,
>                  from libiptc.c:37,
>                  from libip4tc.c:113:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/netinet/in.h:45:8:
> error: redefinition of 'struct ipv6_mreq'
>  struct ipv6_mreq
>         ^
> In file included from ../include/libiptc/ipt_kernel_headers.h:25:0,
>                  from ../include/libiptc/libiptc.h:6,
>                  from libip4tc.c:29:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/linux/in6.h:59:8:
> note: originally defined here
>  struct ipv6_mreq {
>         ^
> In file included from ../include/xtables.h:15:0,
>                  from libiptc.c:37,
>                  from libip4tc.c:113:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/netinet/in.h:247:8:
> error: redefinition of 'struct ip_mreq'
>  struct ip_mreq
>         ^
> In file included from ../include/libiptc/ipt_kernel_headers.h:19:0,
>                  from ../include/libiptc/libiptc.h:6,
>                  from libip4tc.c:29:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/linux/in.h:157:8:
> note: originally defined here
>  struct ip_mreq  {
>         ^
> In file included from ../include/xtables.h:15:0,
>                  from libiptc.c:37,
>                  from libip4tc.c:113:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/netinet/in.h:253:8:
> error: redefinition of 'struct ip_mreqn'
>  struct ip_mreqn
>         ^
> In file included from ../include/libiptc/ipt_kernel_headers.h:19:0,
>                  from ../include/libiptc/libiptc.h:6,
>                  from libip4tc.c:29:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/linux/in.h:162:8:
> note: originally defined here
>  struct ip_mreqn {
>         ^
> In file included from ../include/xtables.h:15:0,
>                  from libiptc.c:37,
>                  from libip4tc.c:113:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/netinet/in.h:260:8:
> error: redefinition of 'struct ip_mreq_source'
>  struct ip_mreq_source {
>         ^
> In file included from ../include/libiptc/ipt_kernel_headers.h:19:0,
>                  from ../include/libiptc/libiptc.h:6,
>                  from libip4tc.c:29:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/linux/in.h:168:8:
> note: originally defined here
>  struct ip_mreq_source {
>         ^
> In file included from ../include/xtables.h:15:0,
>                  from libiptc.c:37,
>                  from libip4tc.c:113:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/netinet/in.h:266:8:
> error: redefinition of 'struct ip_msfilter'
>  struct ip_msfilter {
>         ^
> In file included from ../include/libiptc/ipt_kernel_headers.h:19:0,
>                  from ../include/libiptc/libiptc.h:6,
>                  from libip4tc.c:29:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/linux/in.h:174:8:
> note: originally defined here
>  struct ip_msfilter {
>         ^
> In file included from ../include/xtables.h:15:0,
>                  from libiptc.c:37,
>                  from libip4tc.c:113:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/netinet/in.h:277:8:
> error: redefinition of 'struct group_req'
>  struct group_req {
>         ^
> In file included from ../include/libiptc/ipt_kernel_headers.h:19:0,
>                  from ../include/libiptc/libiptc.h:6,
>                  from libip4tc.c:29:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/linux/in.h:186:8:
> note: originally defined here
>  struct group_req {
>         ^
> In file included from ../include/xtables.h:15:0,
>                  from libiptc.c:37,
>                  from libip4tc.c:113:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/netinet/in.h:282:8:
> error: redefinition of 'struct group_source_req'
>  struct group_source_req {
>         ^
> In file included from ../include/libiptc/ipt_kernel_headers.h:19:0,
>                  from ../include/libiptc/libiptc.h:6,
>                  from libip4tc.c:29:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/linux/in.h:191:8:
> note: originally defined here
>  struct group_source_req {
>         ^
> In file included from ../include/xtables.h:15:0,
>                  from libiptc.c:37,
>                  from libip4tc.c:113:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/netinet/in.h:288:8:
> error: redefinition of 'struct group_filter'
>  struct group_filter {
>         ^
> In file included from ../include/libiptc/ipt_kernel_headers.h:19:0,
>                  from ../include/libiptc/libiptc.h:6,
>                  from libip4tc.c:29:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/linux/in.h:197:8:
> note: originally defined here
>  struct group_filter {
>         ^
> In file included from ../include/xtables.h:15:0,
>                  from libiptc.c:37,
>                  from libip4tc.c:113:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/netinet/in.h:299:8:
> error: redefinition of 'struct in_pktinfo'
>  struct in_pktinfo
>         ^
> In file included from ../include/libiptc/ipt_kernel_headers.h:19:0,
>                  from ../include/libiptc/libiptc.h:6,
>                  from libip4tc.c:29:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/linux/in.h:209:8:
> note: originally defined here
>  struct in_pktinfo {
>         ^
> In file included from ../include/xtables.h:16:0,
>                  from libiptc.c:37,
>                  from libip4tc.c:113:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/net/if.h:65:8:
> error: redefinition of 'struct ifmap'
>  struct ifmap {
>         ^
> In file included from ../include/libiptc/ipt_kernel_headers.h:20:0,
>                  from ../include/libiptc/libiptc.h:6,
>                  from libip4tc.c:29:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/linux/if.h:169:8:
> note: originally defined here
>  struct ifmap {
>         ^
> In file included from ../include/xtables.h:16:0,
>                  from libiptc.c:37,
>                  from libip4tc.c:113:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/net/if.h:77:8:
> error: redefinition of 'struct ifreq'
>  struct ifreq {
>         ^
> In file included from ../include/libiptc/ipt_kernel_headers.h:20:0,
>                  from ../include/libiptc/libiptc.h:6,
>                  from libip4tc.c:29:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/linux/if.h:203:8:
> note: originally defined here
>  struct ifreq {
>         ^
> In file included from ../include/xtables.h:16:0,
>                  from libiptc.c:37,
>                  from libip4tc.c:113:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/net/if.h:117:8:
> error: redefinition of 'struct ifconf'
>  struct ifconf {
>         ^
> In file included from ../include/libiptc/ipt_kernel_headers.h:20:0,
>                  from ../include/libiptc/libiptc.h:6,
>                  from libip4tc.c:29:
> /root/LiLi/target/cross-tools/arm-linux-musleabihf/include/linux/if.h:252:8:
> note: originally defined here
>  struct ifconf  {
>         ^
> Makefile:401: recipe for target 'libip4tc.lo' failed
> make[3]: *** [libip4tc.lo] Error 1
> make[3]: Leaving directory '/root/LiLi/target/sources/iptables-20150202/libiptc'
> Makefile:365: recipe for target 'all-recursive' failed
> make[2]: *** [all-recursive] Error 1
> make[2]: Leaving directory '/root/LiLi/target/sources/iptables-20150202'
> Makefile:292: recipe for target 'all' failed
> make[1]: *** [all] Error 2
> make[1]: Leaving directory '/root/LiLi/target/sources/iptables-20150202'
> Makefile:9: recipe for target 'system' failed
> make: *** [system] Error 2
--
To unsubscribe from this list: send the line "unsubscribe netfilter" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic