From 752bd726686d5a6e41269ad1ff108478eab7f1a8 Mon Sep 17 00:00:00 2001 From: Deng Qingfang Date: Tue, 22 Jan 2019 19:55:21 +0800 Subject: [PATCH] iproute2: update to 4.20.0 Update to the latest version of iproute2; see https://lwn.net/Articles/776174/ for a full overview of the changes in 4.20. Remove upstream patch 001-fix-print_0xhex-on-32-bit.patch and 002-tc-fix-xtables-incorrect-usage-of-LDFLAGS.patch Introduce a patch to include for XATTR_SIZE_MAX in tc Signed-off-by: Deng Qingfang --- package/network/utils/iproute2/Makefile | 6 +- .../001-fix-print_0xhex-on-32-bit.patch | 343 ------------------ .../001-tc-fix-undefined-XATTR_SIZE_MAX.patch | 10 + ...x-xtables-incorrect-usage-of-LDFLAGS.patch | 35 -- .../patches/140-keep_libmnl_optional.patch | 8 +- .../utils/iproute2/patches/170-ip_tiny.patch | 4 +- .../patches/190-link-libelf-to-tc-only.patch | 4 +- 7 files changed, 21 insertions(+), 389 deletions(-) delete mode 100644 package/network/utils/iproute2/patches/001-fix-print_0xhex-on-32-bit.patch create mode 100644 package/network/utils/iproute2/patches/001-tc-fix-undefined-XATTR_SIZE_MAX.patch delete mode 100644 package/network/utils/iproute2/patches/002-tc-fix-xtables-incorrect-usage-of-LDFLAGS.patch diff --git a/package/network/utils/iproute2/Makefile b/package/network/utils/iproute2/Makefile index c647331918..ec9664004d 100644 --- a/package/network/utils/iproute2/Makefile +++ b/package/network/utils/iproute2/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=iproute2 -PKG_VERSION:=4.19.0 -PKG_RELEASE:=8 +PKG_VERSION:=4.20.0 +PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=@KERNEL/linux/utils/net/iproute2 -PKG_HASH:=d9ec5ca1f47d8a85416fa26e7dc1cbf5d067640eb60e90bdc1c7e5bdc6a29984 +PKG_HASH:=c8adaa6a40f888476b23acb283cfa30c0dd55f07b5aa20663ed5ba2ef1f6fda8 PKG_BUILD_PARALLEL:=1 PKG_BUILD_DEPENDS:=iptables PKG_LICENSE:=GPL-2.0 diff --git a/package/network/utils/iproute2/patches/001-fix-print_0xhex-on-32-bit.patch b/package/network/utils/iproute2/patches/001-fix-print_0xhex-on-32-bit.patch deleted file mode 100644 index 25994b4173..0000000000 --- a/package/network/utils/iproute2/patches/001-fix-print_0xhex-on-32-bit.patch +++ /dev/null @@ -1,343 +0,0 @@ -From 90c5c969f0b9a2fbb0016b955fecc359aa884220 Mon Sep 17 00:00:00 2001 -From: Stephen Hemminger -Date: Mon, 10 Dec 2018 14:20:32 -0800 -Subject: [PATCH] fix print_0xhex on 32 bit - -The argument to print_0xhex is converted to unsigned long long -so the format string give for normal printout has to be some -variant of %llx. Otherwise, bogus values will be printed on -32 bit platforms. - -Signed-off-by: Stephen Hemminger ---- - bridge/link.c | 2 +- - ip/ipaddress.c | 2 +- - ip/iplink_bridge.c | 2 +- - ip/iplink_bridge_slave.c | 6 +++--- - ip/iplink_geneve.c | 5 ++--- - ip/iplink_vxlan.c | 8 +++----- - ip/ipntable.c | 2 +- - ip/iproute.c | 8 ++++---- - ip/iproute_lwtunnel.c | 2 +- - ip/iprule.c | 6 +++--- - ip/iptuntap.c | 2 +- - ip/link_gre.c | 6 +++--- - ip/link_gre6.c | 4 ++-- - ip/link_ip6tnl.c | 2 +- - ip/link_iptnl.c | 4 ++-- - ip/link_vti.c | 2 +- - ip/link_vti6.c | 2 +- - tc/m_ife.c | 2 +- - tc/q_htb.c | 2 +- - tc/q_taprio.c | 2 +- - 20 files changed, 34 insertions(+), 37 deletions(-) - ---- a/bridge/link.c -+++ b/bridge/link.c -@@ -90,7 +90,7 @@ static void print_hwmode(__u16 mode) - { - if (mode >= ARRAY_SIZE(hw_mode)) - print_0xhex(PRINT_ANY, "hwmode", -- "hwmode %#hx ", mode); -+ "hwmode %#llx ", mode); - else - print_string(PRINT_ANY, "hwmode", - "hwmode %s ", hw_mode[mode]); ---- a/ip/ipaddress.c -+++ b/ip/ipaddress.c -@@ -129,7 +129,7 @@ static void print_operstate(FILE *f, __u - if (is_json_context()) - print_uint(PRINT_JSON, "operstate_index", NULL, state); - else -- print_0xhex(PRINT_FP, NULL, "state %#x", state); -+ print_0xhex(PRINT_FP, NULL, "state %#llx", state); - } else if (brief) { - print_color_string(PRINT_ANY, - oper_state_color(state), ---- a/ip/iplink_bridge.c -+++ b/ip/iplink_bridge.c -@@ -524,7 +524,7 @@ static void bridge_print_opt(struct link - if (tb[IFLA_BR_GROUP_FWD_MASK]) - print_0xhex(PRINT_ANY, - "group_fwd_mask", -- "group_fwd_mask %#x ", -+ "group_fwd_mask %#llx ", - rta_getattr_u16(tb[IFLA_BR_GROUP_FWD_MASK])); - - if (tb[IFLA_BR_GROUP_ADDR]) { ---- a/ip/iplink_bridge_slave.c -+++ b/ip/iplink_bridge_slave.c -@@ -167,11 +167,11 @@ static void bridge_slave_print_opt(struc - rta_getattr_u8(tb[IFLA_BRPORT_UNICAST_FLOOD])); - - if (tb[IFLA_BRPORT_ID]) -- print_0xhex(PRINT_ANY, "id", "port_id 0x%x ", -+ print_0xhex(PRINT_ANY, "id", "port_id %#llx ", - rta_getattr_u16(tb[IFLA_BRPORT_ID])); - - if (tb[IFLA_BRPORT_NO]) -- print_0xhex(PRINT_ANY, "no", "port_no 0x%x ", -+ print_0xhex(PRINT_ANY, "no", "port_no %#llx ", - rta_getattr_u16(tb[IFLA_BRPORT_NO])); - - if (tb[IFLA_BRPORT_DESIGNATED_PORT]) -@@ -266,7 +266,7 @@ static void bridge_slave_print_opt(struc - - fwd_mask = rta_getattr_u16(tb[IFLA_BRPORT_GROUP_FWD_MASK]); - print_0xhex(PRINT_ANY, "group_fwd_mask", -- "group_fwd_mask 0x%x ", fwd_mask); -+ "group_fwd_mask %#llx ", fwd_mask); - _bitmask2str(fwd_mask, convbuf, sizeof(convbuf), fwd_mask_tbl); - print_string(PRINT_ANY, "group_fwd_mask_str", - "group_fwd_mask_str %s ", convbuf); ---- a/ip/iplink_geneve.c -+++ b/ip/iplink_geneve.c -@@ -276,7 +276,7 @@ static void geneve_print_opt(struct link - tos = rta_getattr_u8(tb[IFLA_GENEVE_TOS]); - if (tos) { - if (is_json_context() || tos != 1) -- print_0xhex(PRINT_ANY, "tos", "tos 0x%x ", tos); -+ print_0xhex(PRINT_ANY, "tos", "tos %#llx ", tos); - else - print_string(PRINT_FP, NULL, "tos %s ", "inherit"); - } -@@ -286,8 +286,7 @@ static void geneve_print_opt(struct link - - if (label) - print_0xhex(PRINT_ANY, -- "label", -- "flowlabel %#x ", -+ "label", "flowlabel %#llx ", - ntohl(label)); - } - ---- a/ip/iplink_vxlan.c -+++ b/ip/iplink_vxlan.c -@@ -522,7 +522,7 @@ static void vxlan_print_opt(struct link_ - tos = rta_getattr_u8(tb[IFLA_VXLAN_TOS]); - if (tos) { - if (is_json_context() || tos != 1) -- print_0xhex(PRINT_ANY, "tos", "tos 0x%x ", tos); -+ print_0xhex(PRINT_ANY, "tos", "tos %#llx ", tos); - else - print_string(PRINT_FP, NULL, "tos %s ", "inherit"); - } -@@ -542,10 +542,8 @@ static void vxlan_print_opt(struct link_ - __u32 label = rta_getattr_u32(tb[IFLA_VXLAN_LABEL]); - - if (label) -- print_0xhex(PRINT_ANY, -- "label", -- "flowlabel %#x ", -- ntohl(label)); -+ print_0xhex(PRINT_ANY, "label", -+ "flowlabel %#llx ", ntohl(label)); - } - - if (tb[IFLA_VXLAN_AGEING]) { ---- a/ip/ipntable.c -+++ b/ip/ipntable.c -@@ -360,7 +360,7 @@ static void print_ndtconfig(const struct - print_uint(PRINT_ANY, "hash_rnd", - " hash_rnd %u ", ndtc->ndtc_hash_rnd); - print_0xhex(PRINT_ANY, "hash_mask", -- "hash_mask %08x ", ndtc->ndtc_hash_mask); -+ "hash_mask %08llx ", ndtc->ndtc_hash_mask); - - print_uint(PRINT_ANY, "hash_chain_gc", - "hash_chain_gc %u ", ndtc->ndtc_hash_chain_gc); ---- a/ip/iproute.c -+++ b/ip/iproute.c -@@ -346,7 +346,7 @@ static void print_rtax_features(FILE *fp - - if (features) - print_0xhex(PRINT_ANY, -- "features", "0x%x ", of); -+ "features", "%#llx ", of); - } - - static void print_rt_flags(FILE *fp, unsigned int flags) -@@ -483,10 +483,10 @@ static void print_rta_cacheinfo(FILE *fp - } - if (ci->rta_id) - print_0xhex(PRINT_ANY, "ipid", -- "ipid 0x%04x ", ci->rta_id); -+ "ipid 0x%04llx ", ci->rta_id); - if (ci->rta_ts || ci->rta_tsage) { - print_0xhex(PRINT_ANY, "ts", -- "ts 0x%x", ci->rta_ts); -+ "ts 0x%llx", ci->rta_ts); - print_uint(PRINT_ANY, "tsage", - "tsage %usec ", ci->rta_tsage); - } -@@ -885,7 +885,7 @@ int print_route(const struct sockaddr_nl - print_uint(PRINT_JSON, "mark", NULL, mark); - else if (mark >= 16) - print_0xhex(PRINT_FP, NULL, -- "mark 0x%x ", mark); -+ "mark 0x%llx ", mark); - else - print_uint(PRINT_FP, NULL, - "mark %u ", mark); ---- a/ip/iproute_lwtunnel.c -+++ b/ip/iproute_lwtunnel.c -@@ -115,7 +115,7 @@ static void print_srh(FILE *fp, struct i - - tlv = (struct sr6_tlv_hmac *)((char *)srh + offset); - print_0xhex(PRINT_ANY, "hmac", -- "hmac 0x%X ", ntohl(tlv->hmackeyid)); -+ "hmac %llX ", ntohl(tlv->hmackeyid)); - } - } - ---- a/ip/iprule.c -+++ b/ip/iprule.c -@@ -263,10 +263,10 @@ int print_rule(const struct sockaddr_nl - - if (tb[FRA_FWMASK] && - (mask = rta_getattr_u32(tb[FRA_FWMASK])) != 0xFFFFFFFF) { -- print_0xhex(PRINT_ANY, "fwmark", "fwmark 0x%x", mark); -- print_0xhex(PRINT_ANY, "fwmask", "/0x%x ", mask); -+ print_0xhex(PRINT_ANY, "fwmark", "fwmark %#llx", mark); -+ print_0xhex(PRINT_ANY, "fwmask", "/%#llx ", mask); - } else { -- print_0xhex(PRINT_ANY, "fwmark", "fwmark 0x%x ", mark); -+ print_0xhex(PRINT_ANY, "fwmark", "fwmark %#llx ", mark); - } - } - ---- a/ip/iptuntap.c -+++ b/ip/iptuntap.c -@@ -254,7 +254,7 @@ static void print_flags(long flags) - flags &= ~(IFF_TUN | IFF_TAP | IFF_NO_PI | IFF_ONE_QUEUE | - IFF_VNET_HDR | IFF_PERSIST | IFF_NOFILTER); - if (flags) -- print_0xhex(PRINT_ANY, NULL, "%#x", flags); -+ print_0xhex(PRINT_ANY, NULL, "%#llx", flags); - - close_json_array(PRINT_JSON, NULL); - } ---- a/ip/link_gre.c -+++ b/ip/link_gre.c -@@ -463,7 +463,7 @@ static void gre_print_opt(struct link_ut - tos = rta_getattr_u8(tb[IFLA_GRE_TOS]); - if (tos) { - if (is_json_context() || tos != 1) -- print_0xhex(PRINT_ANY, "tos", "tos 0x%x ", tos); -+ print_0xhex(PRINT_ANY, "tos", "tos %#llx ", tos); - else - print_string(PRINT_FP, NULL, "tos %s ", "inherit"); - } -@@ -508,7 +508,7 @@ static void gre_print_opt(struct link_ut - - if (fwmark) { - print_0xhex(PRINT_ANY, -- "fwmark", "fwmark 0x%x ", fwmark); -+ "fwmark", "fwmark %#llx ", fwmark); - } - } - -@@ -541,7 +541,7 @@ static void gre_print_opt(struct link_ut - __u16 erspan_hwid = rta_getattr_u16(tb[IFLA_GRE_ERSPAN_HWID]); - - print_0xhex(PRINT_ANY, -- "erspan_hwid", "erspan_hwid 0x%x ", erspan_hwid); -+ "erspan_hwid", "erspan_hwid %#llx ", erspan_hwid); - } - - tnl_print_encap(tb, ---- a/ip/link_gre6.c -+++ b/ip/link_gre6.c -@@ -576,7 +576,7 @@ static void gre_print_opt(struct link_ut - - if (fwmark) { - print_0xhex(PRINT_ANY, -- "fwmark", "fwmark 0x%x ", fwmark); -+ "fwmark", "fwmark %#llx ", fwmark); - } - } - -@@ -609,7 +609,7 @@ static void gre_print_opt(struct link_ut - __u16 erspan_hwid = rta_getattr_u16(tb[IFLA_GRE_ERSPAN_HWID]); - - print_0xhex(PRINT_ANY, -- "erspan_hwid", "erspan_hwid 0x%x ", erspan_hwid); -+ "erspan_hwid", "erspan_hwid %#llx ", erspan_hwid); - } - - tnl_print_encap(tb, ---- a/ip/link_ip6tnl.c -+++ b/ip/link_ip6tnl.c -@@ -457,7 +457,7 @@ static void ip6tunnel_print_opt(struct l - - if (fwmark) { - print_0xhex(PRINT_ANY, -- "fwmark", "fwmark 0x%x ", fwmark); -+ "fwmark", "fwmark %#llx ", fwmark); - } - } - ---- a/ip/link_iptnl.c -+++ b/ip/link_iptnl.c -@@ -418,7 +418,7 @@ static void iptunnel_print_opt(struct li - tos = rta_getattr_u8(tb[IFLA_IPTUN_TOS]); - if (tos) { - if (is_json_context() || tos != 1) -- print_0xhex(PRINT_ANY, "tos", "tos 0x%x ", tos); -+ print_0xhex(PRINT_ANY, "tos", "tos %#llx ", tos); - else - print_string(PRINT_FP, NULL, "tos %s ", "inherit"); - } -@@ -476,7 +476,7 @@ static void iptunnel_print_opt(struct li - - if (fwmark) { - print_0xhex(PRINT_ANY, -- "fwmark", "fwmark 0x%x ", fwmark); -+ "fwmark", "fwmark %#llx ", fwmark); - } - } - ---- a/ip/link_vti.c -+++ b/ip/link_vti.c -@@ -208,7 +208,7 @@ static void vti_print_opt(struct link_ut - - if (fwmark) { - print_0xhex(PRINT_ANY, -- "fwmark", "fwmark 0x%x ", fwmark); -+ "fwmark", "fwmark %#llx ", fwmark); - } - } - } ---- a/ip/link_vti6.c -+++ b/ip/link_vti6.c -@@ -210,7 +210,7 @@ static void vti6_print_opt(struct link_u - - if (fwmark) { - print_0xhex(PRINT_ANY, -- "fwmark", "fwmark 0x%x ", fwmark); -+ "fwmark", "fwmark %#llx ", fwmark); - } - } - } ---- a/tc/m_ife.c -+++ b/tc/m_ife.c -@@ -247,7 +247,7 @@ static int print_ife(struct action_util - if (tb[TCA_IFE_TYPE]) { - ife_type = rta_getattr_u16(tb[TCA_IFE_TYPE]); - has_optional = 1; -- print_0xhex(PRINT_ANY, "type", "type 0x%X ", ife_type); -+ print_0xhex(PRINT_ANY, "type", "type %#llX ", ife_type); - } - - if (has_optional) ---- a/tc/q_htb.c -+++ b/tc/q_htb.c -@@ -332,7 +332,7 @@ static int htb_print_opt(struct qdisc_ut - if (RTA_PAYLOAD(tb[TCA_HTB_INIT]) < sizeof(*gopt)) return -1; - - print_int(PRINT_ANY, "r2q", "r2q %d", gopt->rate2quantum); -- print_0xhex(PRINT_ANY, "default", " default %x", gopt->defcls); -+ print_0xhex(PRINT_ANY, "default", " default %#llx", gopt->defcls); - print_uint(PRINT_ANY, "direct_packets_stat", - " direct_packets_stat %u", gopt->direct_pkts); - if (show_details) { diff --git a/package/network/utils/iproute2/patches/001-tc-fix-undefined-XATTR_SIZE_MAX.patch b/package/network/utils/iproute2/patches/001-tc-fix-undefined-XATTR_SIZE_MAX.patch new file mode 100644 index 0000000000..6f28a2822d --- /dev/null +++ b/package/network/utils/iproute2/patches/001-tc-fix-undefined-XATTR_SIZE_MAX.patch @@ -0,0 +1,10 @@ +--- a/tc/f_flower.c ++++ b/tc/f_flower.c +@@ -17,6 +17,7 @@ + #include + #include + #include ++#include + #include + #include + diff --git a/package/network/utils/iproute2/patches/002-tc-fix-xtables-incorrect-usage-of-LDFLAGS.patch b/package/network/utils/iproute2/patches/002-tc-fix-xtables-incorrect-usage-of-LDFLAGS.patch deleted file mode 100644 index d5981360a9..0000000000 --- a/package/network/utils/iproute2/patches/002-tc-fix-xtables-incorrect-usage-of-LDFLAGS.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 6ddb36c3a9686df1cca2f4d06518395f1eb9d5cc Mon Sep 17 00:00:00 2001 -From: Syrone Wong -Date: Wed, 12 Dec 2018 19:35:08 +0800 -Subject: [PATCH] tc: fix xtables incorrect usage of LDFLAGS - -The incorrect setting of LDFLAGS causes error below: - -> em_ipt.o: In function `em_ipt_print_epot': -> em_ipt.c:(.text.em_ipt_print_epot+0x2e): undefined reference to -> `xtables_init_all' - -em_ipt.c gets involved when TC_CONFIG_XT=y, which requires xtables, -while tc/Makefile doesn't pass flags correctly. It adds '-lxtables' -to LDFLAGS instead of LDLIBS. - -Fixes: dd296215 ("tc: add em_ipt ematch for calling xtables matches from tc matching context") - -Signed-off-by: Syrone Wong -Acked-by: Eyal Birger -Signed-off-by: Stephen Hemminger ---- - tc/Makefile | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/tc/Makefile -+++ b/tc/Makefile -@@ -170,7 +170,7 @@ em_ipset.o: CFLAGS += $$($(PKG_CONFIG) x - em_ipt.o: CFLAGS += $$($(PKG_CONFIG) xtables --cflags) - - ifeq ($(TC_CONFIG_XT),y) -- LDFLAGS += $$($(PKG_CONFIG) xtables --libs) -+ LDLIBS += $$($(PKG_CONFIG) xtables --libs) - endif - - %.yacc.c: %.y diff --git a/package/network/utils/iproute2/patches/140-keep_libmnl_optional.patch b/package/network/utils/iproute2/patches/140-keep_libmnl_optional.patch index 697a6471a7..505f0221e3 100644 --- a/package/network/utils/iproute2/patches/140-keep_libmnl_optional.patch +++ b/package/network/utils/iproute2/patches/140-keep_libmnl_optional.patch @@ -1,11 +1,11 @@ --- a/configure +++ b/configure -@@ -281,7 +281,7 @@ check_selinux() +@@ -254,7 +254,7 @@ check_selinux() check_mnl() { -- if ${PKG_CONFIG} libmnl --exists -+ if [ "${HAVE_MNL}" = "y" ] && ${PKG_CONFIG} libmnl --exists - then +- if ${PKG_CONFIG} libmnl --exists; then ++ if [ "${HAVE_MNL}" = "y" ] && ${PKG_CONFIG} libmnl --exists; then echo "HAVE_MNL:=y" >>$CONFIG echo "yes" + diff --git a/package/network/utils/iproute2/patches/170-ip_tiny.patch b/package/network/utils/iproute2/patches/170-ip_tiny.patch index dc0547a256..91240b6d2f 100644 --- a/package/network/utils/iproute2/patches/170-ip_tiny.patch +++ b/package/network/utils/iproute2/patches/170-ip_tiny.patch @@ -89,7 +89,7 @@ { "help", do_help }, --- a/lib/utils.c +++ b/lib/utils.c -@@ -1012,6 +1012,7 @@ const char *rt_addr_n2a_r(int af, int le +@@ -1000,6 +1000,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); @@ -97,7 +97,7 @@ case AF_IPX: return ipx_ntop(af, addr, buf, buflen); case AF_DECnet: -@@ -1021,6 +1022,7 @@ const char *rt_addr_n2a_r(int af, int le +@@ -1009,6 +1010,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/190-link-libelf-to-tc-only.patch b/package/network/utils/iproute2/patches/190-link-libelf-to-tc-only.patch index 1c44616253..31aacffba8 100644 --- a/package/network/utils/iproute2/patches/190-link-libelf-to-tc-only.patch +++ b/package/network/utils/iproute2/patches/190-link-libelf-to-tc-only.patch @@ -1,6 +1,6 @@ --- a/configure +++ b/configure -@@ -257,8 +257,9 @@ check_elf() +@@ -231,8 +231,9 @@ check_elf() echo "HAVE_ELF:=y" >>$CONFIG echo "yes" @@ -47,7 +47,7 @@ + rm -f $(NLOBJ) $(UTILOBJ) $(ELFOBJ) $(ADDLIB) libnetlink.a libutil.a libutil-elf.a --- a/tc/Makefile +++ b/tc/Makefile -@@ -132,8 +132,8 @@ MODDESTDIR := $(DESTDIR)$(LIBDIR)/tc +@@ -133,8 +133,8 @@ MODDESTDIR := $(DESTDIR)$(LIBDIR)/tc all: tc $(TCSO) -- 2.25.1