aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2014-10-19 23:04:17 +0000
committerFelix Fietkau <nbd@openwrt.org>2014-10-19 23:04:17 +0000
commit5ef89f1ec5d3053c571fee1a8d6313cdb817ef1a (patch)
treee4fe1af72af32b927ab8c86f0b9b88faee0468a5
parent6c2a0175536fd5837e6e002e8ae0e1fdab28d7d2 (diff)
downloadupstream-5ef89f1ec5d3053c571fee1a8d6313cdb817ef1a.tar.gz
upstream-5ef89f1ec5d3053c571fee1a8d6313cdb817ef1a.tar.bz2
upstream-5ef89f1ec5d3053c571fee1a8d6313cdb817ef1a.zip
iproute2: fix musl build
Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 42981
-rw-r--r--package/network/utils/iproute2/Makefile3
-rw-r--r--package/network/utils/iproute2/patches/010-type_fixes.patch396
2 files changed, 399 insertions, 0 deletions
diff --git a/package/network/utils/iproute2/Makefile b/package/network/utils/iproute2/Makefile
index e2f4b0218a..0b9134e0c9 100644
--- a/package/network/utils/iproute2/Makefile
+++ b/package/network/utils/iproute2/Makefile
@@ -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
index 0000000000..e0055fce71
--- /dev/null
+++ b/package/network/utils/iproute2/patches/010-type_fixes.patch
@@ -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>