소스 검색

iproute2: backport upstream patch to 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. Backport the patch as otherwise, bogus values
will be printed on 32 bit platforms.

Signed-off-by: Hans Dedecker <[email protected]>
Hans Dedecker 6 년 전
부모
커밋
1ff98ddff7
1개의 변경된 파일343개의 추가작업 그리고 0개의 파일을 삭제
  1. 343 0
      package/network/utils/iproute2/patches/001-fix-print_0xhex-on-32-bit.patch

+ 343 - 0
package/network/utils/iproute2/patches/001-fix-print_0xhex-on-32-bit.patch

@@ -0,0 +1,343 @@
+From 90c5c969f0b9a2fbb0016b955fecc359aa884220 Mon Sep 17 00:00:00 2001
+From: Stephen Hemminger <[email protected]>
+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 <[email protected]>
+---
+ 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) {