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 <linux/limits.h> for XATTR_SIZE_MAX in tc Signed-off-by: Deng Qingfang <dengqf6@mail2.sysu.edu.cn>master
parent
fe7d965ea9
commit
752bd72668
@ -1,343 +0,0 @@ |
||||
From 90c5c969f0b9a2fbb0016b955fecc359aa884220 Mon Sep 17 00:00:00 2001
|
||||
From: Stephen Hemminger <stephen@networkplumber.org>
|
||||
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 <stephen@networkplumber.org>
|
||||
---
|
||||
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) {
|
@ -0,0 +1,10 @@ |
||||
--- a/tc/f_flower.c
|
||||
+++ b/tc/f_flower.c
|
||||
@@ -17,6 +17,7 @@
|
||||
#include <linux/if_arp.h>
|
||||
#include <linux/if_ether.h>
|
||||
#include <linux/ip.h>
|
||||
+#include <linux/limits.h>
|
||||
#include <linux/tc_act/tc_vlan.h>
|
||||
#include <linux/mpls.h>
|
||||
|
@ -1,35 +0,0 @@ |
||||
From 6ddb36c3a9686df1cca2f4d06518395f1eb9d5cc Mon Sep 17 00:00:00 2001
|
||||
From: Syrone Wong <wong.syrone@gmail.com>
|
||||
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 <wong.syrone@gmail.com>
|
||||
Acked-by: Eyal Birger <eyal.birger@gmail.com>
|
||||
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
|
||||
---
|
||||
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
|
@ -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"
|
||||
|
||||
|
Loading…
Reference in new issue