iproute2: fix musl build
authorFelix Fietkau <nbd@openwrt.org>
Sun, 19 Oct 2014 23:04:17 +0000 (23:04 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Sun, 19 Oct 2014 23:04:17 +0000 (23:04 +0000)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 42981

package/network/utils/iproute2/Makefile
package/network/utils/iproute2/patches/010-type_fixes.patch [new file with mode: 0644]

index e2f4b0218a151a3ab08710c6275ccc9881893554..0b9134e0c9d2b6dea1cf9aa88ce19aad61acf2f4 100644 (file)
@@ -81,6 +81,9 @@ ifdef CONFIG_USE_EGLIBC
     TARGET_CFLAGS += -DHAVE_SETNS
   endif
 endif
+ifdef CONFIG_USE_MUSL
+  TARGET_CFLAGS += -DHAVE_SETNS
+endif
 
 TARGET_CFLAGS += -ffunction-sections -fdata-sections
 
diff --git a/package/network/utils/iproute2/patches/010-type_fixes.patch b/package/network/utils/iproute2/patches/010-type_fixes.patch
new file mode 100644 (file)
index 0000000..e0055fc
--- /dev/null
@@ -0,0 +1,396 @@
+--- a/include/iptables_common.h
++++ b/include/iptables_common.h
+@@ -2,6 +2,8 @@
+ #define _IPTABLES_COMMON_H
+ /* Shared definitions between ipv4 and ipv6. */
++#include <stdint.h>
++
+ enum exittype {
+       OTHER_PROBLEM = 1,
+       PARAMETER_PROBLEM,
+@@ -43,9 +45,9 @@ extern char *lib_dir;
+   extern void init_extensions(void);
+ #endif
+-#define __be32        u_int32_t
+-#define __le32        u_int32_t
+-#define __be16        u_int16_t
+-#define __le16        u_int16_t
++#define __be32        uint32_t
++#define __le32        uint32_t
++#define __be16        uint16_t
++#define __le16        uint16_t
+ #endif /*_IPTABLES_COMMON_H*/
+--- a/include/netinet/tcp.h
++++ /dev/null
+@@ -1,231 +0,0 @@
+-/*
+- * Copyright (c) 1982, 1986, 1993
+- *    The Regents of the University of California.  All rights reserved.
+- *
+- * Redistribution and use in source and binary forms, with or without
+- * modification, are permitted provided that the following conditions
+- * are met:
+- * 1. Redistributions of source code must retain the above copyright
+- *    notice, this list of conditions and the following disclaimer.
+- * 2. Redistributions in binary form must reproduce the above copyright
+- *    notice, this list of conditions and the following disclaimer in the
+- *    documentation and/or other materials provided with the distribution.
+- * 4. Neither the name of the University nor the names of its contributors
+- *    may be used to endorse or promote products derived from this software
+- *    without specific prior written permission.
+- *
+- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+- * SUCH DAMAGE.
+- *
+- *    @(#)tcp.h       8.1 (Berkeley) 6/10/93
+- */
+-
+-#ifndef _NETINET_TCP_H
+-#define _NETINET_TCP_H        1
+-
+-#include <features.h>
+-
+-/*
+- * User-settable options (used with setsockopt).
+- */
+-#define       TCP_NODELAY      1      /* Don't delay send to coalesce packets  */
+-#define       TCP_MAXSEG       2      /* Set maximum segment size  */
+-#define TCP_CORK       3      /* Control sending of partial frames  */
+-#define TCP_KEEPIDLE   4      /* Start keeplives after this period */
+-#define TCP_KEEPINTVL  5      /* Interval between keepalives */
+-#define TCP_KEEPCNT    6      /* Number of keepalives before death */
+-#define TCP_SYNCNT     7      /* Number of SYN retransmits */
+-#define TCP_LINGER2    8      /* Life time of orphaned FIN-WAIT-2 state */
+-#define TCP_DEFER_ACCEPT 9    /* Wake up listener only when data arrive */
+-#define TCP_WINDOW_CLAMP 10   /* Bound advertised window */
+-#define TCP_INFO       11     /* Information about this connection. */
+-#define       TCP_QUICKACK     12     /* Bock/reenable quick ACKs.  */
+-#define TCP_CONGESTION         13     /* Congestion control algorithm.  */
+-
+-#ifdef __USE_MISC
+-# include <sys/types.h>
+-
+-# ifdef __FAVOR_BSD
+-typedef       u_int32_t tcp_seq;
+-/*
+- * TCP header.
+- * Per RFC 793, September, 1981.
+- */
+-struct tcphdr
+-  {
+-    u_int16_t th_sport;               /* source port */
+-    u_int16_t th_dport;               /* destination port */
+-    tcp_seq th_seq;           /* sequence number */
+-    tcp_seq th_ack;           /* acknowledgement number */
+-#  if __BYTE_ORDER == __LITTLE_ENDIAN
+-    u_int8_t th_x2:4;         /* (unused) */
+-    u_int8_t th_off:4;                /* data offset */
+-#  endif
+-#  if __BYTE_ORDER == __BIG_ENDIAN
+-    u_int8_t th_off:4;                /* data offset */
+-    u_int8_t th_x2:4;         /* (unused) */
+-#  endif
+-    u_int8_t th_flags;
+-#  define TH_FIN      0x01
+-#  define TH_SYN      0x02
+-#  define TH_RST      0x04
+-#  define TH_PUSH     0x08
+-#  define TH_ACK      0x10
+-#  define TH_URG      0x20
+-    u_int16_t th_win;         /* window */
+-    u_int16_t th_sum;         /* checksum */
+-    u_int16_t th_urp;         /* urgent pointer */
+-};
+-
+-# else /* !__FAVOR_BSD */
+-struct tcphdr
+-  {
+-    u_int16_t source;
+-    u_int16_t dest;
+-    u_int32_t seq;
+-    u_int32_t ack_seq;
+-#  if __BYTE_ORDER == __LITTLE_ENDIAN
+-    u_int16_t res1:4;
+-    u_int16_t doff:4;
+-    u_int16_t fin:1;
+-    u_int16_t syn:1;
+-    u_int16_t rst:1;
+-    u_int16_t psh:1;
+-    u_int16_t ack:1;
+-    u_int16_t urg:1;
+-    u_int16_t res2:2;
+-#  elif __BYTE_ORDER == __BIG_ENDIAN
+-    u_int16_t doff:4;
+-    u_int16_t res1:4;
+-    u_int16_t res2:2;
+-    u_int16_t urg:1;
+-    u_int16_t ack:1;
+-    u_int16_t psh:1;
+-    u_int16_t rst:1;
+-    u_int16_t syn:1;
+-    u_int16_t fin:1;
+-#  else
+-#   error "Adjust your <bits/endian.h> defines"
+-#  endif
+-    u_int16_t window;
+-    u_int16_t check;
+-    u_int16_t urg_ptr;
+-};
+-# endif /* __FAVOR_BSD */
+-
+-enum
+-{
+-  TCP_ESTABLISHED = 1,
+-  TCP_SYN_SENT,
+-  TCP_SYN_RECV,
+-  TCP_FIN_WAIT1,
+-  TCP_FIN_WAIT2,
+-  TCP_TIME_WAIT,
+-  TCP_CLOSE,
+-  TCP_CLOSE_WAIT,
+-  TCP_LAST_ACK,
+-  TCP_LISTEN,
+-  TCP_CLOSING   /* now a valid state */
+-};
+-
+-# define TCPOPT_EOL           0
+-# define TCPOPT_NOP           1
+-# define TCPOPT_MAXSEG                2
+-# define TCPOLEN_MAXSEG               4
+-# define TCPOPT_WINDOW                3
+-# define TCPOLEN_WINDOW               3
+-# define TCPOPT_SACK_PERMITTED        4               /* Experimental */
+-# define TCPOLEN_SACK_PERMITTED       2
+-# define TCPOPT_SACK          5               /* Experimental */
+-# define TCPOPT_TIMESTAMP     8
+-# define TCPOLEN_TIMESTAMP    10
+-# define TCPOLEN_TSTAMP_APPA  (TCPOLEN_TIMESTAMP+2) /* appendix A */
+-
+-# define TCPOPT_TSTAMP_HDR    \
+-    (TCPOPT_NOP<<24|TCPOPT_NOP<<16|TCPOPT_TIMESTAMP<<8|TCPOLEN_TIMESTAMP)
+-
+-/*
+- * Default maximum segment size for TCP.
+- * With an IP MSS of 576, this is 536,
+- * but 512 is probably more convenient.
+- * This should be defined as MIN(512, IP_MSS - sizeof (struct tcpiphdr)).
+- */
+-# define TCP_MSS      512
+-
+-# define TCP_MAXWIN   65535   /* largest value for (unscaled) window */
+-
+-# define TCP_MAX_WINSHIFT     14      /* maximum window shift */
+-
+-# define SOL_TCP              6       /* TCP level */
+-
+-
+-# define TCPI_OPT_TIMESTAMPS  1
+-# define TCPI_OPT_SACK                2
+-# define TCPI_OPT_WSCALE      4
+-# define TCPI_OPT_ECN         8
+-# define TCPI_OPT_ECN_SEEN    16
+-
+-/* Values for tcpi_state.  */
+-enum tcp_ca_state
+-{
+-  TCP_CA_Open = 0,
+-  TCP_CA_Disorder = 1,
+-  TCP_CA_CWR = 2,
+-  TCP_CA_Recovery = 3,
+-  TCP_CA_Loss = 4
+-};
+-
+-struct tcp_info
+-{
+-  u_int8_t    tcpi_state;
+-  u_int8_t    tcpi_ca_state;
+-  u_int8_t    tcpi_retransmits;
+-  u_int8_t    tcpi_probes;
+-  u_int8_t    tcpi_backoff;
+-  u_int8_t    tcpi_options;
+-  u_int8_t    tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4;
+-
+-  u_int32_t   tcpi_rto;
+-  u_int32_t   tcpi_ato;
+-  u_int32_t   tcpi_snd_mss;
+-  u_int32_t   tcpi_rcv_mss;
+-
+-  u_int32_t   tcpi_unacked;
+-  u_int32_t   tcpi_sacked;
+-  u_int32_t   tcpi_lost;
+-  u_int32_t   tcpi_retrans;
+-  u_int32_t   tcpi_fackets;
+-
+-  /* Times. */
+-  u_int32_t   tcpi_last_data_sent;
+-  u_int32_t   tcpi_last_ack_sent;     /* Not remembered, sorry.  */
+-  u_int32_t   tcpi_last_data_recv;
+-  u_int32_t   tcpi_last_ack_recv;
+-
+-  /* Metrics. */
+-  u_int32_t   tcpi_pmtu;
+-  u_int32_t   tcpi_rcv_ssthresh;
+-  u_int32_t   tcpi_rtt;
+-  u_int32_t   tcpi_rttvar;
+-  u_int32_t   tcpi_snd_ssthresh;
+-  u_int32_t   tcpi_snd_cwnd;
+-  u_int32_t   tcpi_advmss;
+-  u_int32_t   tcpi_reordering;
+-  u_int32_t   tcpi_rcv_rtt;
+-  u_int32_t   tcpi_rcv_space;
+-  u_int32_t   tcpi_total_retrans;
+-
+-};
+-
+-#endif /* Misc.  */
+-
+-#endif /* netinet/tcp.h */
+--- a/include/iptables.h
++++ b/include/iptables.h
+@@ -20,7 +20,7 @@ struct ipt_get_revision
+ {
+       char name[IPT_FUNCTION_MAXNAMELEN-1];
+-      u_int8_t revision;
++      uint8_t revision;
+ };
+ #endif /* IPT_SO_GET_REVISION_MATCH   Old kernel source */
+@@ -39,7 +39,7 @@ struct iptables_match
+       ipt_chainlabel name;
+       /* Revision of match (0 by default). */
+-      u_int8_t revision;
++      uint8_t revision;
+       const char *version;
+@@ -92,7 +92,7 @@ struct iptables_target
+       ipt_chainlabel name;
+       /* Revision of target (0 by default). */
+-      u_int8_t revision;
++      uint8_t revision;
+       const char *version;
+@@ -153,7 +153,7 @@ extern char *mask_to_dotted(const struct
+ extern void parse_hostnetworkmask(const char *name, struct in_addr **addrpp,
+                       struct in_addr *maskp, unsigned int *naddrs);
+-extern u_int16_t parse_protocol(const char *s);
++extern uint16_t parse_protocol(const char *s);
+ extern int do_command(int argc, char *argv[], char **table,
+                     iptc_handle_t *handle);
+--- a/lib/dnet_ntop.c
++++ b/lib/dnet_ntop.c
+@@ -1,24 +1,25 @@
+ #include <errno.h>
+ #include <string.h>
++#include <stdint.h>
+ #include <sys/types.h>
+ #include <netinet/in.h>
+ #include "utils.h"
+-static __inline__ u_int16_t dn_ntohs(u_int16_t addr)
++static __inline__ uint16_t dn_ntohs(uint16_t addr)
+ {
+       union {
+-              u_int8_t byte[2];
+-              u_int16_t word;
++              uint8_t byte[2];
++              uint16_t word;
+       } u;
+       u.word = addr;
+-      return ((u_int16_t)u.byte[0]) | (((u_int16_t)u.byte[1]) << 8);
++      return ((uint16_t)u.byte[0]) | (((uint16_t)u.byte[1]) << 8);
+ }
+-static __inline__ int do_digit(char *str, u_int16_t *addr, u_int16_t scale, size_t *pos, size_t len, int *started)
++static __inline__ int do_digit(char *str, uint16_t *addr, uint16_t scale, size_t *pos, size_t len, int *started)
+ {
+-      u_int16_t tmp = *addr / scale;
++      uint16_t tmp = *addr / scale;
+       if (*pos == len)
+               return 1;
+@@ -36,7 +37,7 @@ static __inline__ int do_digit(char *str
+ static const char *dnet_ntop1(const struct dn_naddr *dna, char *str, size_t len)
+ {
+-      u_int16_t addr, area;
++      uint16_t addr, area;
+       size_t pos = 0;
+       int started = 0;
+--- a/lib/dnet_pton.c
++++ b/lib/dnet_pton.c
+@@ -1,23 +1,24 @@
+ #include <errno.h>
+ #include <string.h>
++#include <stdint.h>
+ #include <sys/types.h>
+ #include <netinet/in.h>
+ #include "utils.h"
+-static __inline__ u_int16_t dn_htons(u_int16_t addr)
++static __inline__ uint16_t dn_htons(uint16_t addr)
+ {
+         union {
+-                u_int8_t byte[2];
+-                u_int16_t word;
++                uint8_t byte[2];
++                uint16_t word;
+         } u;
+         u.word = addr;
+-        return ((u_int16_t)u.byte[0]) | (((u_int16_t)u.byte[1]) << 8);
++        return ((uint16_t)u.byte[0]) | (((uint16_t)u.byte[1]) << 8);
+ }
+-static int dnet_num(const char *src, u_int16_t * dst)
++static int dnet_num(const char *src, uint16_t * dst)
+ {
+       int rv = 0;
+       int tmp;
+@@ -38,9 +39,9 @@ static int dnet_num(const char *src, u_i
+ static int dnet_pton1(const char *src, struct dn_naddr *dna)
+ {
+-      u_int16_t addr;
+-      u_int16_t area = 0;
+-      u_int16_t node = 0;
++      uint16_t addr;
++      uint16_t area = 0;
++      uint16_t node = 0;
+       int pos;
+       pos = dnet_num(src, &area);
+--- a/include/libiptc/ipt_kernel_headers.h
++++ b/include/libiptc/ipt_kernel_headers.h
+@@ -5,7 +5,7 @@
+ #include <limits.h>
+-#if defined(__GLIBC__) && __GLIBC__ == 2
++#if 1
+ #include <netinet/ip.h>
+ #include <netinet/in.h>
+ #include <netinet/ip_icmp.h>