iproute2: bump to 4.11
authorKevin Darbyshire-Bryant <kevin@darbyshire-bryant.me.uk>
Mon, 20 Mar 2017 21:53:46 +0000 (21:53 +0000)
committerFelix Fietkau <nbd@nbd.name>
Tue, 30 May 2017 12:00:31 +0000 (14:00 +0200)
Signed-off-by: Kevin Darbyshire-Bryant <kevin@darbyshire-bryant.me.uk>
16 files changed:
package/network/utils/iproute2/Makefile
package/network/utils/iproute2/patches/001-config.patch
package/network/utils/iproute2/patches/006-no_sctp.patch
package/network/utils/iproute2/patches/008-no_netem.patch
package/network/utils/iproute2/patches/010-type_fixes.patch [deleted file]
package/network/utils/iproute2/patches/100-allow_pfifo_fast.patch
package/network/utils/iproute2/patches/110-extra-ccopts.patch
package/network/utils/iproute2/patches/130-missing_include.patch [deleted file]
package/network/utils/iproute2/patches/271-uapi-libc-compat.h-do-not-rely-on-__GLIBC__.patch [new file with mode: 0644]
package/network/utils/iproute2/patches/272-uapi-if_ether.h-prevent-redefinition-of-struct-ethhd.patch [new file with mode: 0644]
package/network/utils/iproute2/patches/300-ip_tiny.patch
package/network/utils/iproute2/patches/900-drop_FAILED_POLICY.patch
package/network/utils/iproute2/patches/910-sanitize_headers_for_musl.patch [deleted file]
package/network/utils/iproute2/patches/911-fix_in_h_include.patch [deleted file]
package/network/utils/iproute2/patches/950-add-cake-to-tc.patch
package/network/utils/iproute2/patches/960-ipmonitor-fix-ip-monitor-can-t-work-when-NET_NS-is-n.patch [deleted file]

index d528594..364c1b2 100644 (file)
@@ -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))
index ece8652..b3208e0 100644 (file)
@@ -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
index 6805468..0f6f269 100644 (file)
@@ -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:
index fce16e0..47ffd99 100644 (file)
@@ -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 (file)
index e0055fc..0000000
+++ /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>
index ce958a9..caf889e 100644 (file)
@@ -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",
index 3cb5a79..b28e19d 100644 (file)
@@ -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 (file)
index 8759a62..0000000
+++ /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 (file)
index 0000000..b0ed599
--- /dev/null
@@ -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 (file)
index 0000000..42e2932
--- /dev/null
@@ -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"
index 290adbe..e1b1da4 100644 (file)
@@ -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
 +#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);
        }
index ff2e0aa..44f198f 100644 (file)
@@ -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 (file)
index ca1125d..0000000
+++ /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 (file)
index 42a7b24..0000000
+++ /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 */
index 8da1711..0705eb1 100644 (file)
@@ -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 (file)
index 52be021..0000000
+++ /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
-