fix print_0xhex on 32 bit
Subsystems (2)
PATCH 1/1 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.
--- 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(-)
bridge/link.c +1 -1
@@ -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]);
ip/ipaddress.c +1 -1
@@ -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),
ip/iplink_bridge.c +1 -1
@@ -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 ]) {
ip/iplink_bridge_slave.c +3 -3
@@ -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);
ip/iplink_geneve.c +2 -3
@@ -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)); }
ip/iplink_vxlan.c +3 -5
@@ -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 ]) {
ip/ipntable.c +1 -1
@@ -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);
ip/iproute.c +4 -4
@@ -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);
ip/iproute_lwtunnel.c +1 -1
@@ -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)); } }
ip/iprule.c +3 -3
@@ -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); } }
ip/iptuntap.c +1 -1
@@ -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 ); }
ip/link_gre.c +3 -3
@@ -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,
ip/link_gre6.c +2 -2
@@ -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,
ip/link_ip6tnl.c +1 -1
@@ -457,7 +457,7 @@ static void ip6tunnel_print_opt(struct link_util *lu, FILE *f, struct rtattr *tbif (fwmark) {print_0xhex (PRINT_ANY , -"fwmark" ,"fwmark 0x%x " , fwmark); +"fwmark" ,"fwmark %#llx " , fwmark); } }
ip/link_iptnl.c +2 -2
@@ -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); } }
ip/link_vti.c +1 -1
@@ -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); } } }
ip/link_vti6.c +1 -1
@@ -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); } } }
tc/m_ife.c +1 -1
@@ -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)
tc/q_htb.c +1 -1
@@ -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) {
tc/q_taprio.c +1 -1
@@ -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 ();
Signature · 1 line
2.19.2
Quoted 8 lines · Stephen Hemminger
The argument to
print_0xhexis 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 <[email protected]>Signed-off-by Stephen Hemminger <[email protected]>
Quoted 386 lines
--- 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(-)bridge/link.c +1
-1@@ -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]);ip/ipaddress.c +1
-1@@ -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),ip/iplink_bridge.c +1
-1@@ -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 ]) {ip/iplink_bridge_slave.c +3
-3@@ -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);ip/iplink_geneve.c +2
-3@@ -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)); }ip/iplink_vxlan.c +3
-5@@ -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 ]) {ip/ipntable.c +1
-1@@ -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);ip/iproute.c +4
-4@@ -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);ip/iproute_lwtunnel.c +1
-1@@ -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)); } }ip/iprule.c +3
-3@@ -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); } }ip/iptuntap.c +1
-1@@ -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 ); }ip/link_gre.c +3
-3@@ -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,ip/link_gre6.c +2
-2@@ -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,ip/link_ip6tnl.c +1
-1@@ -457,7 +457,7 @@ static void ip6tunnel_print_opt(struct link_util *lu, FILE *f, struct rtattr *tbif (fwmark) {print_0xhex (PRINT_ANY , -"fwmark" ,"fwmark 0x%x " , fwmark); +"fwmark" ,"fwmark %#llx " , fwmark); } }ip/link_iptnl.c +2
-2@@ -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); } }ip/link_vti.c +1
-1@@ -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); } } }ip/link_vti6.c +1
-1@@ -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); } } }tc/m_ife.c +1
-1@@ -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)tc/q_htb.c +1
-1@@ -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) {tc/q_taprio.c +1
-2@@ -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
Quoted 4 lines · Stephen Hemminger
The argument to
print_0xhexis 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.
Sorry it is too late and change is merged as commit 90c5c969f0b9 ("fix print_0xhex on 32 bit") but I want to ask following:
$ printf '0x%llx != %#llx\n' 0 0 0x0 != 0
So we potentially can get "tos 0" vs "tos 0x0" previously. Is that expected and will not cause any compatibility problems?
It is clear that 0 is always zero, but some code may rely on 0x form even for zero. What do you think?
Thanks.
Quoted 13 lines · On Wed, 19 Dec 2018 22:00:38 +0200 Serhey Popovych <[email protected]>…
Quoted 4 lines · Stephen Hemminger
The argument to
print_0xhexis 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.Sorry it is too late and change is merged as commit
90c5c969f0b9("fixprint_0xhexon 32 bit") but I want to ask following:$ printf '0x%llx != %#llx\n' 0 0 0x0 != 0
Quoted 9 lines
So we potentially can get "tos 0" vs "tos
0x0" previously. Is that expected and will not cause any compatibility problems?It is clear that 0 is always zero, but some code may rely on 0x form even for zero. What do you think?
Thanks.
Hmm. that is a surprise. we can change back if it matters.
Was just trying to be consistent. Since most code that scraps is going to use strtoul(str, NULL, 16) it shouldn't matter.