From: Stephen Hemminger <stephen@networkplumber.org>
To: netdev@vger.kernel.org
Cc: Stephen Hemminger <stephen@networkplumber.org>
Subject: [PATCH iproute2] fix print_0xhex on 32 bit
Date: Mon, 10 Dec 2018 14:27:01 -0800 [thread overview]
Message-ID: <20181210222701.7672-1-stephen@networkplumber.org> (raw)
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.
Reported-by: Hans Dedecker <dedeckeh@gmail.com>
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(-)
diff --git a/bridge/link.c b/bridge/link.c
index 3290c16f0951..32317e53b036 100644
--- 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]);
diff --git a/ip/ipaddress.c b/ip/ipaddress.c
index 21985a5ee6f3..016662e910e9 100644
--- a/ip/ipaddress.c
+++ b/ip/ipaddress.c
@@ -129,7 +129,7 @@ static void print_operstate(FILE *f, __u8 state)
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),
diff --git a/ip/iplink_bridge.c b/ip/iplink_bridge.c
index 0ba6be3f47da..fbf8a79bfbbb 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -524,7 +524,7 @@ static void bridge_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
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]) {
diff --git a/ip/iplink_bridge_slave.c b/ip/iplink_bridge_slave.c
index 8b4f93f265be..85e6b424315f 100644
--- a/ip/iplink_bridge_slave.c
+++ b/ip/iplink_bridge_slave.c
@@ -168,11 +168,11 @@ static void bridge_slave_print_opt(struct link_util *lu, FILE *f,
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])
@@ -267,7 +267,7 @@ static void bridge_slave_print_opt(struct link_util *lu, FILE *f,
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);
diff --git a/ip/iplink_geneve.c b/ip/iplink_geneve.c
index c417842b2a5b..f1a12f454ab7 100644
--- a/ip/iplink_geneve.c
+++ b/ip/iplink_geneve.c
@@ -282,7 +282,7 @@ static void geneve_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
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");
}
@@ -292,8 +292,7 @@ static void geneve_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
if (label)
print_0xhex(PRINT_ANY,
- "label",
- "flowlabel %#x ",
+ "label", "flowlabel %#llx ",
ntohl(label));
}
diff --git a/ip/iplink_vxlan.c b/ip/iplink_vxlan.c
index 7fc0e2b4eb06..62e769430c5d 100644
--- a/ip/iplink_vxlan.c
+++ b/ip/iplink_vxlan.c
@@ -522,7 +522,7 @@ static void vxlan_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
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_util *lu, FILE *f, struct rtattr *tb[])
__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]) {
diff --git a/ip/ipntable.c b/ip/ipntable.c
index 5b61dd5cb001..50fc949f1fcc 100644
--- a/ip/ipntable.c
+++ b/ip/ipntable.c
@@ -360,7 +360,7 @@ static void print_ndtconfig(const struct ndt_config *ndtc)
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);
diff --git a/ip/iproute.c b/ip/iproute.c
index b039f35b0ccd..fa6a84b59a5c 100644
--- a/ip/iproute.c
+++ b/ip/iproute.c
@@ -346,7 +346,7 @@ static void print_rtax_features(FILE *fp, unsigned int features)
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, const struct rta_cacheinfo *ci)
}
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(struct nlmsghdr *n, void *arg)
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);
diff --git a/ip/iproute_lwtunnel.c b/ip/iproute_lwtunnel.c
index 85ab13cb3174..aee18ac558b5 100644
--- a/ip/iproute_lwtunnel.c
+++ b/ip/iproute_lwtunnel.c
@@ -115,7 +115,7 @@ static void print_srh(FILE *fp, struct ipv6_sr_hdr *srh)
tlv = (struct sr6_tlv_hmac *)((char *)srh + offset);
print_0xhex(PRINT_ANY, "hmac",
- "hmac 0x%X ", ntohl(tlv->hmackeyid));
+ "hmac %llX ", ntohl(tlv->hmackeyid));
}
}
diff --git a/ip/iprule.c b/ip/iprule.c
index a85a43904e6e..0f8fc6d99136 100644
--- a/ip/iprule.c
+++ b/ip/iprule.c
@@ -263,10 +263,10 @@ int print_rule(struct nlmsghdr *n, void *arg)
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);
}
}
diff --git a/ip/iptuntap.c b/ip/iptuntap.c
index 528055a0bf46..03238c3f6518 100644
--- 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);
}
diff --git a/ip/link_gre.c b/ip/link_gre.c
index 1ee7ee13ab6c..d754fa9a3425 100644
--- a/ip/link_gre.c
+++ b/ip/link_gre.c
@@ -463,7 +463,7 @@ static void gre_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
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_util *lu, FILE *f, struct rtattr *tb[])
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_util *lu, FILE *f, struct rtattr *tb[])
__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,
diff --git a/ip/link_gre6.c b/ip/link_gre6.c
index 20f930596027..6c4671e5a820 100644
--- a/ip/link_gre6.c
+++ b/ip/link_gre6.c
@@ -576,7 +576,7 @@ static void gre_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
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_util *lu, FILE *f, struct rtattr *tb[])
__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,
diff --git a/ip/link_ip6tnl.c b/ip/link_ip6tnl.c
index cfe2c5aa3724..711988a150a5 100644
--- a/ip/link_ip6tnl.c
+++ b/ip/link_ip6tnl.c
@@ -457,7 +457,7 @@ static void ip6tunnel_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb
if (fwmark) {
print_0xhex(PRINT_ANY,
- "fwmark", "fwmark 0x%x ", fwmark);
+ "fwmark", "fwmark %#llx ", fwmark);
}
}
diff --git a/ip/link_iptnl.c b/ip/link_iptnl.c
index 7ec1594d0716..d4a56de40061 100644
--- a/ip/link_iptnl.c
+++ b/ip/link_iptnl.c
@@ -418,7 +418,7 @@ static void iptunnel_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[
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 link_util *lu, FILE *f, struct rtattr *tb[
if (fwmark) {
print_0xhex(PRINT_ANY,
- "fwmark", "fwmark 0x%x ", fwmark);
+ "fwmark", "fwmark %#llx ", fwmark);
}
}
diff --git a/ip/link_vti.c b/ip/link_vti.c
index 3fff4417de11..b974c62b2754 100644
--- a/ip/link_vti.c
+++ b/ip/link_vti.c
@@ -208,7 +208,7 @@ static void vti_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
if (fwmark) {
print_0xhex(PRINT_ANY,
- "fwmark", "fwmark 0x%x ", fwmark);
+ "fwmark", "fwmark %#llx ", fwmark);
}
}
}
diff --git a/ip/link_vti6.c b/ip/link_vti6.c
index f5a267a81d9d..f13c08583103 100644
--- a/ip/link_vti6.c
+++ b/ip/link_vti6.c
@@ -210,7 +210,7 @@ static void vti6_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
if (fwmark) {
print_0xhex(PRINT_ANY,
- "fwmark", "fwmark 0x%x ", fwmark);
+ "fwmark", "fwmark %#llx ", fwmark);
}
}
}
diff --git a/tc/m_ife.c b/tc/m_ife.c
index 20e9c73d9a0e..2bf9f2047b46 100644
--- a/tc/m_ife.c
+++ b/tc/m_ife.c
@@ -247,7 +247,7 @@ static int print_ife(struct action_util *au, FILE *f, struct rtattr *arg)
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)
diff --git a/tc/q_htb.c b/tc/q_htb.c
index 5fb11d28c5c3..520522266e00 100644
--- a/tc/q_htb.c
+++ b/tc/q_htb.c
@@ -332,7 +332,7 @@ static int htb_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt)
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/tc/q_taprio.c b/tc/q_taprio.c
index 562dacb874f0..8f6b263a4141 100644
--- a/tc/q_taprio.c
+++ b/tc/q_taprio.c
@@ -328,7 +328,7 @@ static int print_sched_list(FILE *f, struct rtattr *list)
open_json_object(NULL);
print_uint(PRINT_ANY, "index", "\tindex %u", index);
print_string(PRINT_ANY, "cmd", " cmd %s", entry_cmd_to_str(command));
- print_0xhex(PRINT_ANY, "gatemask", " gatemask %#x", gatemask);
+ print_0xhex(PRINT_ANY, "gatemask", " gatemask %#llx", gatemask);
print_uint(PRINT_ANY, "interval", " interval %u", interval);
close_json_object();
--
2.19.2
next reply other threads:[~2018-12-10 22:27 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-10 22:27 Stephen Hemminger [this message]
2018-12-11 9:05 ` [PATCH iproute2] fix print_0xhex on 32 bit Hans Dedecker
2018-12-19 20:00 ` Serhey Popovych
2018-12-19 22:02 ` Stephen Hemminger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181210222701.7672-1-stephen@networkplumber.org \
--to=stephen@networkplumber.org \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.