diff options
Diffstat (limited to 'package')
16 files changed, 228 insertions, 529 deletions
diff --git a/package/network/utils/iproute2/Makefile b/package/network/utils/iproute2/Makefile index d5285942aa..364c1b22a1 100644 --- a/package/network/utils/iproute2/Makefile +++ b/package/network/utils/iproute2/Makefile @@ -8,13 +8,14 @@ include $(TOPDIR)/rules.mk PKG_NAME:=iproute2 -PKG_VERSION:=4.4.0 -PKG_RELEASE:=10 +PKG_VERSION:=4.11.0 +PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=@KERNEL/linux/utils/net/iproute2 -PKG_HASH:=bc91c367288a19f78ef800cd6840363be1f22da8436fbae88e1a7250490d6514 +PKG_HASH:=72671028bda696d0cb8f48ec8e702581c3a501caeed33eec3a81d7041cbc8026 PKG_BUILD_PARALLEL:=1 +PKG_BUILD_DEPENDS:=iptables PKG_LICENSE:=GPL-2.0 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION) @@ -72,6 +73,12 @@ $(call Package/iproute2/Default) TITLE:=Network statistics utility endef +define Package/devlink +$(call Package/iproute2/Default) + TITLE:=Network devlink utility + DEPENDS:=+libmnl +endef + ifeq ($(BUILD_VARIANT),tiny) IP_CONFIG_TINY:=y endif @@ -86,15 +93,15 @@ define Build/Configure > $(PKG_BUILD_DIR)/include/SNAPSHOT.h endef -TARGET_CFLAGS += -DHAVE_SETNS TARGET_CFLAGS += -ffunction-sections -fdata-sections MAKE_FLAGS += \ - EXTRA_CCOPTS="$(TARGET_CFLAGS) -I../include -I$(STAGING_DIR)/usr/include/libnl-tiny" \ + EXTRA_CCOPTS="-I$(STAGING_DIR)/usr/include/libnl-tiny" \ KERNEL_INCLUDE="$(LINUX_DIR)/include" \ SHARED_LIBS="" \ LDFLAGS="$(TARGET_LDFLAGS) -Wl,--gc-sections" \ IP_CONFIG_TINY=$(IP_CONFIG_TINY) \ + IPT_LIB_DIR=/usr/lib/iptables \ FPIC="$(FPIC)" define Build/Compile @@ -145,6 +152,11 @@ define Package/nstat/install $(INSTALL_BIN) $(PKG_BUILD_DIR)/misc/nstat $(1)/usr/sbin/ endef +define Package/devlink/install + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/devlink/devlink $(1)/usr/sbin/ +endef + $(eval $(call BuildPackage,ip-tiny)) $(eval $(call BuildPackage,ip-full)) $(eval $(call BuildPackage,tc)) @@ -152,3 +164,4 @@ $(eval $(call BuildPackage,genl)) $(eval $(call BuildPackage,ip-bridge)) $(eval $(call BuildPackage,ss)) $(eval $(call BuildPackage,nstat)) +$(eval $(call BuildPackage,devlink)) diff --git a/package/network/utils/iproute2/patches/001-config.patch b/package/network/utils/iproute2/patches/001-config.patch index ece8652994..b3208e063e 100644 --- a/package/network/utils/iproute2/patches/001-config.patch +++ b/package/network/utils/iproute2/patches/001-config.patch @@ -1,7 +1,8 @@ --- /dev/null +++ b/Config -@@ -0,0 +1,4 @@ +@@ -0,0 +1,5 @@ +# Fixed config to disable ATM support even if present on host system ++IP_CONFIG_SETNS:=y +TC_CONFIG_ATM:=n -+TC_CONFIG_ACTION_GACT=y -+TC_CONFIG_ACTION_PROB=y ++TC_CONFIG_XT:=y ++HAVE_MNL:=y diff --git a/package/network/utils/iproute2/patches/006-no_sctp.patch b/package/network/utils/iproute2/patches/006-no_sctp.patch index 6805468d81..0f6f269d40 100644 --- a/package/network/utils/iproute2/patches/006-no_sctp.patch +++ b/package/network/utils/iproute2/patches/006-no_sctp.patch @@ -1,6 +1,6 @@ --- a/ip/ipxfrm.c +++ b/ip/ipxfrm.c -@@ -470,7 +470,6 @@ void xfrm_selector_print(struct xfrm_sel +@@ -465,7 +465,6 @@ void xfrm_selector_print(struct xfrm_sel switch (sel->proto) { case IPPROTO_TCP: case IPPROTO_UDP: @@ -8,7 +8,7 @@ case IPPROTO_DCCP: default: /* XXX */ if (sel->sport_mask) -@@ -1341,7 +1340,6 @@ static int xfrm_selector_upspec_parse(st +@@ -1321,7 +1320,6 @@ static int xfrm_selector_upspec_parse(st switch (sel->proto) { case IPPROTO_TCP: case IPPROTO_UDP: diff --git a/package/network/utils/iproute2/patches/008-no_netem.patch b/package/network/utils/iproute2/patches/008-no_netem.patch index fce16e02df..47ffd9946d 100644 --- a/package/network/utils/iproute2/patches/008-no_netem.patch +++ b/package/network/utils/iproute2/patches/008-no_netem.patch @@ -1,11 +1,11 @@ --- a/Makefile +++ b/Makefile -@@ -41,7 +41,7 @@ WFLAGS += -Wmissing-declarations -Wold-s +@@ -52,7 +52,7 @@ WFLAGS += -Wmissing-declarations -Wold-s CFLAGS := $(WFLAGS) $(CCOPTS) -I../include $(DEFINES) $(CFLAGS) YACCFLAGS = -d -t -v --SUBDIRS=lib ip tc bridge misc netem genl tipc man -+SUBDIRS=lib ip tc bridge misc genl tipc man +-SUBDIRS=lib ip tc bridge misc netem genl tipc devlink man ++SUBDIRS=lib ip tc bridge misc genl tipc devlink man LIBNETLINK=../lib/libnetlink.a ../lib/libutil.a LDLIBS += $(LIBNETLINK) diff --git a/package/network/utils/iproute2/patches/010-type_fixes.patch b/package/network/utils/iproute2/patches/010-type_fixes.patch deleted file mode 100644 index e0055fce71..0000000000 --- a/package/network/utils/iproute2/patches/010-type_fixes.patch +++ /dev/null @@ -1,396 +0,0 @@ ---- 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> diff --git a/package/network/utils/iproute2/patches/100-allow_pfifo_fast.patch b/package/network/utils/iproute2/patches/100-allow_pfifo_fast.patch index ce958a9345..caf889e123 100644 --- a/package/network/utils/iproute2/patches/100-allow_pfifo_fast.patch +++ b/package/network/utils/iproute2/patches/100-allow_pfifo_fast.patch @@ -1,6 +1,6 @@ --- a/tc/q_fifo.c +++ b/tc/q_fifo.c -@@ -98,5 +98,6 @@ struct qdisc_util pfifo_head_drop_qdisc_ +@@ -97,5 +97,6 @@ struct qdisc_util pfifo_head_drop_qdisc_ extern int prio_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt); struct qdisc_util pfifo_fast_qdisc_util = { .id = "pfifo_fast", diff --git a/package/network/utils/iproute2/patches/110-extra-ccopts.patch b/package/network/utils/iproute2/patches/110-extra-ccopts.patch index 3cb5a79400..b28e19de57 100644 --- a/package/network/utils/iproute2/patches/110-extra-ccopts.patch +++ b/package/network/utils/iproute2/patches/110-extra-ccopts.patch @@ -1,6 +1,6 @@ --- a/Makefile +++ b/Makefile -@@ -34,7 +34,7 @@ HOSTCC = gcc +@@ -45,7 +45,7 @@ HOSTCC ?= $(CC) DEFINES += -D_GNU_SOURCE # Turn on transparent support for LFS DEFINES += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE diff --git a/package/network/utils/iproute2/patches/130-missing_include.patch b/package/network/utils/iproute2/patches/130-missing_include.patch deleted file mode 100644 index 8759a62599..0000000000 --- a/package/network/utils/iproute2/patches/130-missing_include.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- a/lib/namespace.c -+++ b/lib/namespace.c -@@ -10,6 +10,7 @@ - #include <fcntl.h> - #include <dirent.h> - #include <limits.h> -+#include <sys/param.h> - - #include "utils.h" - #include "namespace.h" ---- a/lib/rt_names.c -+++ b/lib/rt_names.c -@@ -18,6 +18,7 @@ - #include <sys/time.h> - #include <sys/socket.h> - #include <dirent.h> -+#include <limits.h> - - #include <asm/types.h> - #include <linux/rtnetlink.h> diff --git a/package/network/utils/iproute2/patches/271-uapi-libc-compat.h-do-not-rely-on-__GLIBC__.patch b/package/network/utils/iproute2/patches/271-uapi-libc-compat.h-do-not-rely-on-__GLIBC__.patch new file mode 100644 index 0000000000..b0ed599196 --- /dev/null +++ b/package/network/utils/iproute2/patches/271-uapi-libc-compat.h-do-not-rely-on-__GLIBC__.patch @@ -0,0 +1,107 @@ +From f972afc2509eebcb00d370256c55b112a3b5ffca Mon Sep 17 00:00:00 2001 +From: David Heidelberger <david.heidelberger@ixit.cz> +Date: Mon, 29 Jun 2015 16:50:40 +0200 +Subject: [PATCH 2/3] uapi/libc-compat.h: do not rely on __GLIBC__ + +Musl provides the same structs as glibc, but does not provide a define to +allow its detection. Since the absence of __GLIBC__ also can mean that it +is included from the kernel, change the __GLIBC__ detection to +!__KERNEL__, which should always be true when included from userspace. + +Signed-off-by: John Spencer <maillist-linux@barfooze.de> +Tested-by: David Heidelberger <david.heidelberger@ixit.cz> +Signed-off-by: Jonas Gorski <jogo@openwrt.org> +--- + include/uapi/linux/libc-compat.h | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +--- a/include/linux/libc-compat.h ++++ b/include/linux/libc-compat.h +@@ -48,13 +48,13 @@ + #ifndef _LIBC_COMPAT_H + #define _LIBC_COMPAT_H + +-/* We have included glibc headers... */ +-#if defined(__GLIBC__) ++/* We have included libc headers... */ ++#if !defined(__KERNEL__) + +-/* Coordinate with glibc net/if.h header. */ +-#if defined(_NET_IF_H) && defined(__USE_MISC) ++/* Coordinate with libc net/if.h header. */ ++#if defined(_NET_IF_H) && (!defined(__GLIBC__) || defined(__USE_MISC)) + +-/* GLIBC headers included first so don't define anything ++/* LIBC headers included first so don't define anything + * that would already be defined. */ + + #define __UAPI_DEF_IF_IFCONF 0 +@@ -65,7 +65,11 @@ + #define __UAPI_DEF_IF_NET_DEVICE_FLAGS 0 + /* For the future if glibc adds IFF_LOWER_UP, IFF_DORMANT and IFF_ECHO */ + #ifndef __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO ++#ifdef __GLIBC__ + #define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 1 ++#else ++#define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 0 ++#endif + #endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO */ + + #else /* _NET_IF_H */ +@@ -85,10 +89,10 @@ + + #endif /* _NET_IF_H */ + +-/* Coordinate with glibc netinet/in.h header. */ ++/* Coordinate with libc netinet/in.h header. */ + #if defined(_NETINET_IN_H) + +-/* GLIBC headers included first so don't define anything ++/* LIBC headers included first so don't define anything + * that would already be defined. */ + #define __UAPI_DEF_IN_ADDR 0 + #define __UAPI_DEF_IN_IPPROTO 0 +@@ -102,7 +106,7 @@ + * if the glibc code didn't define them. This guard matches + * the guard in glibc/inet/netinet/in.h which defines the + * additional in6_addr macros e.g. s6_addr16, and s6_addr32. */ +-#if defined(__USE_MISC) || defined (__USE_GNU) ++#if !defined(__GLIBC__) || defined(__USE_MISC) || defined (__USE_GNU) + #define __UAPI_DEF_IN6_ADDR_ALT 0 + #else + #define __UAPI_DEF_IN6_ADDR_ALT 1 +@@ -117,7 +121,7 @@ + #else + + /* Linux headers included first, and we must define everything +- * we need. The expectation is that glibc will check the ++ * we need. The expectation is that the libc will check the + * __UAPI_DEF_* defines and adjust appropriately. */ + #define __UAPI_DEF_IN_ADDR 1 + #define __UAPI_DEF_IN_IPPROTO 1 +@@ -127,7 +131,7 @@ + #define __UAPI_DEF_IN_CLASS 1 + + #define __UAPI_DEF_IN6_ADDR 1 +-/* We unconditionally define the in6_addr macros and glibc must ++/* We unconditionally define the in6_addr macros and the libc must + * coordinate. */ + #define __UAPI_DEF_IN6_ADDR_ALT 1 + #define __UAPI_DEF_SOCKADDR_IN6 1 +@@ -168,7 +172,7 @@ + /* If we did not see any headers from any supported C libraries, + * or we are being included in the kernel, then define everything + * that we need. */ +-#else /* !defined(__GLIBC__) */ ++#else /* defined(__KERNEL__) */ + + /* Definitions for if.h */ + #define __UAPI_DEF_IF_IFCONF 1 +@@ -208,6 +212,6 @@ + /* Definitions for xattr.h */ + #define __UAPI_DEF_XATTR 1 + +-#endif /* __GLIBC__ */ ++#endif /* __KERNEL__ */ + + #endif /* _LIBC_COMPAT_H */ diff --git a/package/network/utils/iproute2/patches/272-uapi-if_ether.h-prevent-redefinition-of-struct-ethhd.patch b/package/network/utils/iproute2/patches/272-uapi-if_ether.h-prevent-redefinition-of-struct-ethhd.patch new file mode 100644 index 0000000000..42e29326b9 --- /dev/null +++ b/package/network/utils/iproute2/patches/272-uapi-if_ether.h-prevent-redefinition-of-struct-ethhd.patch @@ -0,0 +1,79 @@ +From fcbb6fed85ea9ff4feb4f1ebd4f0f235fdaf06b6 Mon Sep 17 00:00:00 2001 +From: David Heidelberger <david.heidelberger@ixit.cz> +Date: Mon, 29 Jun 2015 16:53:03 +0200 +Subject: [PATCH 3/3] uapi/if_ether.h: prevent redefinition of struct ethhdr + +Musl provides its own ethhdr struct definition. Add a guard to prevent +its definition of the appropriate musl header has already been included. + +Signed-off-by: John Spencer <maillist-linux@barfooze.de> +Tested-by: David Heidelberger <david.heidelberger@ixit.cz> +Signed-off-by: Jonas Gorski <jogo@openwrt.org> +--- + include/uapi/linux/if_ether.h | 3 +++ + include/uapi/linux/libc-compat.h | 11 +++++++++++ + 2 files changed, 14 insertions(+) + +--- a/include/linux/if_ether.h ++++ b/include/linux/if_ether.h +@@ -22,6 +22,7 @@ + #define _LINUX_IF_ETHER_H + + #include <linux/types.h> ++#include <linux/libc-compat.h> + + /* + * IEEE 802.3 Ethernet magic constants. The frame sizes omit the preamble +@@ -142,11 +143,13 @@ + * This is an Ethernet frame header. + */ + ++#if __UAPI_DEF_ETHHDR + struct ethhdr { + unsigned char h_dest[ETH_ALEN]; /* destination eth addr */ + unsigned char h_source[ETH_ALEN]; /* source ether addr */ + __be16 h_proto; /* packet type ID field */ + } __attribute__((packed)); ++#endif + + + #endif /* _LINUX_IF_ETHER_H */ +--- a/include/linux/libc-compat.h ++++ b/include/linux/libc-compat.h +@@ -89,6 +89,14 @@ + + #endif /* _NET_IF_H */ + ++/* musl defines the ethhdr struct itself in its netinet/if_ether.h. ++ * Glibc just includes the kernel header and uses a different guard. */ ++#if defined(_NETINET_IF_ETHER_H) ++#define __UAPI_DEF_ETHHDR 0 ++#else ++#define __UAPI_DEF_ETHHDR 1 ++#endif ++ + /* Coordinate with libc netinet/in.h header. */ + #if defined(_NETINET_IN_H) + +@@ -184,6 +192,9 @@ + /* For the future if glibc adds IFF_LOWER_UP, IFF_DORMANT and IFF_ECHO */ + #define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 1 + ++/* Definitions for if_ether.h */ ++#define __UAPI_DEF_ETHHDR 1 ++ + /* Definitions for in.h */ + #define __UAPI_DEF_IN_ADDR 1 + #define __UAPI_DEF_IN_IPPROTO 1 +--- a/ip/iplink_bridge.c ++++ b/ip/iplink_bridge.c +@@ -14,8 +14,8 @@ + #include <string.h> + #include <netinet/in.h> + #include <linux/if_link.h> +-#include <linux/if_bridge.h> + #include <netinet/ether.h> ++#include <linux/if_bridge.h> + #include <net/if.h> + + #include "rt_names.h" diff --git a/package/network/utils/iproute2/patches/300-ip_tiny.patch b/package/network/utils/iproute2/patches/300-ip_tiny.patch index 290adbe5f5..e1b1da4d20 100644 --- a/package/network/utils/iproute2/patches/300-ip_tiny.patch +++ b/package/network/utils/iproute2/patches/300-ip_tiny.patch @@ -1,6 +1,6 @@ --- a/ip/Makefile +++ b/ip/Makefile -@@ -17,6 +17,13 @@ ifeq ($(IP_CONFIG_SETNS),y) +@@ -19,6 +19,13 @@ ifeq ($(IP_CONFIG_SETNS),y) CFLAGS += -DHAVE_SETNS endif @@ -14,7 +14,7 @@ ALLOBJ=$(IPOBJ) $(RTMONOBJ) SCRIPTS=ifcfg rtpr routel routef TARGETS=ip rtmon -@@ -44,7 +51,7 @@ else +@@ -48,7 +55,7 @@ else ip: static-syms.o static-syms.o: static-syms.h @@ -25,7 +25,7 @@ sed -n '/'$$s'[^ ]* =/{s:.* \([^ ]*'$$s'[^ ]*\) .*:extern char \1[] __attribute__((weak)); if (!strcmp(sym, "\1")) return \1;:;p}' $$files ; \ --- a/ip/ip.c +++ b/ip/ip.c -@@ -73,30 +73,42 @@ static const struct cmd { +@@ -74,32 +74,44 @@ static const struct cmd { int (*func)(int argc, char **argv); } cmds[] = { { "address", do_ipaddr }, @@ -46,6 +46,8 @@ { "l2tp", do_ipl2tp }, { "fou", do_ipfou }, +#endif + { "ila", do_ipila }, + { "macsec", do_ipmacsec }, { "tunnel", do_iptunnel }, { "tunl", do_iptunnel }, +#ifndef IPROUTE2_TINY @@ -65,12 +67,12 @@ +#ifndef IPROUTE2_TINY { "netconf", do_ipnetconf }, +#endif + { "vrf", do_ipvrf}, { "help", do_help }, { 0 } - }; --- a/lib/utils.c +++ b/lib/utils.c -@@ -710,6 +710,7 @@ const char *rt_addr_n2a(int af, int len, +@@ -777,6 +777,7 @@ const char *rt_addr_n2a_r(int af, int le return inet_ntop(af, addr, buf, buflen); case AF_MPLS: return mpls_ntop(af, addr, buf, buflen); @@ -78,7 +80,7 @@ case AF_IPX: return ipx_ntop(af, addr, buf, buflen); case AF_DECnet: -@@ -718,6 +719,7 @@ const char *rt_addr_n2a(int af, int len, +@@ -786,6 +787,7 @@ const char *rt_addr_n2a_r(int af, int le memcpy(dna.a_addr, addr, 2); return dnet_ntop(af, &dna, buf, buflen); } diff --git a/package/network/utils/iproute2/patches/900-drop_FAILED_POLICY.patch b/package/network/utils/iproute2/patches/900-drop_FAILED_POLICY.patch index ff2e0aa1ee..44f198f1bf 100644 --- a/package/network/utils/iproute2/patches/900-drop_FAILED_POLICY.patch +++ b/package/network/utils/iproute2/patches/900-drop_FAILED_POLICY.patch @@ -11,7 +11,7 @@ Subject: [PATCH] add support for dropping with FAILED_POLICY --- a/include/linux/fib_rules.h +++ b/include/linux/fib_rules.h -@@ -64,6 +64,10 @@ enum { +@@ -72,6 +72,10 @@ enum { FR_ACT_BLACKHOLE, /* Drop without notification */ FR_ACT_UNREACHABLE, /* Drop with ENETUNREACH */ FR_ACT_PROHIBIT, /* Drop with EACCES */ @@ -24,7 +24,7 @@ Subject: [PATCH] add support for dropping with FAILED_POLICY --- a/include/linux/rtnetlink.h +++ b/include/linux/rtnetlink.h -@@ -210,6 +210,7 @@ enum { +@@ -215,6 +215,7 @@ enum { RTN_THROW, /* Not in this table */ RTN_NAT, /* Translate this address */ RTN_XRESOLVE, /* Use external resolver */ diff --git a/package/network/utils/iproute2/patches/910-sanitize_headers_for_musl.patch b/package/network/utils/iproute2/patches/910-sanitize_headers_for_musl.patch deleted file mode 100644 index ca1125d1d5..0000000000 --- a/package/network/utils/iproute2/patches/910-sanitize_headers_for_musl.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/include/linux/if_bridge.h -+++ b/include/linux/if_bridge.h -@@ -15,7 +15,6 @@ - - #include <linux/types.h> - #include <linux/if_ether.h> --#include <linux/in6.h> - - #define SYSFS_BRIDGE_ATTR "bridge" - #define SYSFS_BRIDGE_FDB "brforward" diff --git a/package/network/utils/iproute2/patches/911-fix_in_h_include.patch b/package/network/utils/iproute2/patches/911-fix_in_h_include.patch deleted file mode 100644 index 42a7b24bbb..0000000000 --- a/package/network/utils/iproute2/patches/911-fix_in_h_include.patch +++ /dev/null @@ -1,30 +0,0 @@ ---- a/include/linux/in.h -+++ b/include/linux/in.h -@@ -15,6 +15,7 @@ - * as published by the Free Software Foundation; either version - * 2 of the License, or (at your option) any later version. - */ -+#ifndef _NETINET_IN_H - #ifndef _LINUX_IN_H - #define _LINUX_IN_H - -@@ -297,3 +298,4 @@ struct sockaddr_in { - - - #endif /* _LINUX_IN_H */ -+#endif /* _NETINET_IN_H */ ---- a/include/linux/in6.h -+++ b/include/linux/in6.h -@@ -18,6 +18,7 @@ - * 2 of the License, or (at your option) any later version. - */ - -+#ifndef _NETINET_IN_H - #ifndef _LINUX_IN6_H - #define _LINUX_IN6_H - -@@ -291,3 +292,4 @@ struct in6_flowlabel_req { - * MRT6_MAX - */ - #endif /* _LINUX_IN6_H */ -+#endif /* _NETINET_IN_H */ diff --git a/package/network/utils/iproute2/patches/950-add-cake-to-tc.patch b/package/network/utils/iproute2/patches/950-add-cake-to-tc.patch index 8da17112be..0705eb12c5 100644 --- a/package/network/utils/iproute2/patches/950-add-cake-to-tc.patch +++ b/package/network/utils/iproute2/patches/950-add-cake-to-tc.patch @@ -1,8 +1,6 @@ -diff --git a/include/linux/pkt_sched.h b/include/linux/pkt_sched.h -index 8d2530d..c55a9a8 100644 --- a/include/linux/pkt_sched.h +++ b/include/linux/pkt_sched.h -@@ -850,4 +850,60 @@ struct tc_pie_xstats { +@@ -863,4 +863,60 @@ struct tc_pie_xstats { __u32 maxq; /* maximum queue size */ __u32 ecn_mark; /* packets marked with ecn*/ }; @@ -63,21 +61,16 @@ index 8d2530d..c55a9a8 100644 +}; + #endif -diff --git a/tc/Makefile b/tc/Makefile -index 56acbaa..d421b8e 100644 --- a/tc/Makefile +++ b/tc/Makefile -@@ -63,6 +63,7 @@ TCMODULES += q_codel.o +@@ -67,6 +67,7 @@ TCMODULES += q_codel.o TCMODULES += q_fq_codel.o TCMODULES += q_fq.o TCMODULES += q_pie.o +TCMODULES += q_cake.o TCMODULES += q_hhf.o + TCMODULES += q_clsact.o TCMODULES += e_bpf.o - -diff --git a/tc/q_cake.c b/tc/q_cake.c -new file mode 100644 -index 0000000..acbe56c --- /dev/null +++ b/tc/q_cake.c @@ -0,0 +1,692 @@ diff --git a/package/network/utils/iproute2/patches/960-ipmonitor-fix-ip-monitor-can-t-work-when-NET_NS-is-n.patch b/package/network/utils/iproute2/patches/960-ipmonitor-fix-ip-monitor-can-t-work-when-NET_NS-is-n.patch deleted file mode 100644 index 52be021e72..0000000000 --- a/package/network/utils/iproute2/patches/960-ipmonitor-fix-ip-monitor-can-t-work-when-NET_NS-is-n.patch +++ /dev/null @@ -1,40 +0,0 @@ -From c44003f7e7254ac972eaa1b22a686471ea4ce2d7 Mon Sep 17 00:00:00 2001 -From: Liping Zhang <liping.zhang@spreadtrum.com> -Date: Tue, 20 Sep 2016 02:09:02 -0700 -Subject: [PATCH] ipmonitor: fix ip monitor can't work when NET_NS is not - enabled - -In ip monitor, netns_map_init will check getnsid is supported or not. -But when /proc/self/ns/net does not exist, we just print out error -messages and exit. So user cannot use ip monitor anymore when -CONFIG_NET_NS is disabled: - # ip monitor - open("/proc/self/ns/net"): No such file or directory - -If open "/proc/self/ns/net" failed, set have_rtnl_getnsid to false. - -Fixes: d652ccbf8195 ("netns: allow to dump and monitor nsid") -Signed-off-by: Liping Zhang <liping.zhang@spreadtrum.com> -Acked-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> ---- - ip/ipnetns.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/ip/ipnetns.c b/ip/ipnetns.c -index af87065..ccc652c 100644 ---- a/ip/ipnetns.c -+++ b/ip/ipnetns.c -@@ -72,8 +72,8 @@ static int ipnetns_have_nsid(void) - if (have_rtnl_getnsid < 0) { - fd = open("/proc/self/ns/net", O_RDONLY); - if (fd < 0) { -- perror("open(\"/proc/self/ns/net\")"); -- exit(1); -+ have_rtnl_getnsid = 0; -+ return 0; - } - - addattr32(&req.n, 1024, NETNSA_FD, fd); --- -2.6.4 - |