No need for custom SPRINT_BUF() and snprintf() 0x%x value to this buffer: we can use print_0xhex() instead of print_string().
In link_iptnl.c use s2 instead of s1 buffer and remove s1. While there adjust fwmark option print order in iptnl and ip6tnl to get it match each other. Signed-off-by: Serhey Popovych <serhe.popov...@gmail.com> --- ip/link_gre.c | 5 ++--- ip/link_gre6.c | 9 ++++----- ip/link_ip6tnl.c | 18 ++++++++---------- ip/link_iptnl.c | 22 ++++++++++------------ ip/link_vti.c | 14 ++++---------- ip/link_vti6.c | 13 ++++--------- 6 files changed, 32 insertions(+), 49 deletions(-) diff --git a/ip/link_gre.c b/ip/link_gre.c index 11a131f..2ae2194 100644 --- a/ip/link_gre.c +++ b/ip/link_gre.c @@ -442,9 +442,8 @@ static void gre_print_direct_opt(FILE *f, struct rtattr *tb[]) __u32 fwmark = rta_getattr_u32(tb[IFLA_GRE_FWMARK]); if (fwmark) { - snprintf(s2, sizeof(s2), "0x%x", fwmark); - - print_string(PRINT_ANY, "fwmark", "fwmark %s ", s2); + print_0xhex(PRINT_ANY, + "fwmark", "fwmark 0x%x ", fwmark); } } } diff --git a/ip/link_gre6.c b/ip/link_gre6.c index 9b08656..9576354 100644 --- a/ip/link_gre6.c +++ b/ip/link_gre6.c @@ -496,18 +496,17 @@ static void gre_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[]) if (oflags & GRE_CSUM) print_bool(PRINT_ANY, "ocsum", "ocsum ", true); - if (flags & IP6_TNL_F_USE_ORIG_FWMARK) + if (flags & IP6_TNL_F_USE_ORIG_FWMARK) { print_bool(PRINT_ANY, "ip6_tnl_f_use_orig_fwmark", "fwmark inherit ", true); - else if (tb[IFLA_GRE_FWMARK]) { + } else if (tb[IFLA_GRE_FWMARK]) { __u32 fwmark = rta_getattr_u32(tb[IFLA_GRE_FWMARK]); if (fwmark) { - snprintf(s2, sizeof(s2), "0x%x", fwmark); - - print_string(PRINT_ANY, "fwmark", "fwmark %s ", s2); + print_0xhex(PRINT_ANY, + "fwmark", "fwmark 0x%x ", fwmark); } } diff --git a/ip/link_ip6tnl.c b/ip/link_ip6tnl.c index bd06e46..9594c3e 100644 --- a/ip/link_ip6tnl.c +++ b/ip/link_ip6tnl.c @@ -437,6 +437,12 @@ static void ip6tunnel_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb if (flags & IP6_TNL_F_MIP6_DEV) print_bool(PRINT_ANY, "ip6_tnl_f_mip6_dev", "mip6 ", true); + if (flags & IP6_TNL_F_ALLOW_LOCAL_REMOTE) + print_bool(PRINT_ANY, + "ip6_tnl_f_allow_local_remote", + "allow-localremote ", + true); + if (flags & IP6_TNL_F_USE_ORIG_FWMARK) { print_bool(PRINT_ANY, "ip6_tnl_f_use_orig_fwmark", @@ -446,19 +452,11 @@ static void ip6tunnel_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb __u32 fwmark = rta_getattr_u32(tb[IFLA_IPTUN_FWMARK]); if (fwmark) { - SPRINT_BUF(b1); - - snprintf(b1, sizeof(b1), "0x%x", fwmark); - print_string(PRINT_ANY, "fwmark", "fwmark %s ", b1); + print_0xhex(PRINT_ANY, + "fwmark", "fwmark 0x%x ", fwmark); } } - if (flags & IP6_TNL_F_ALLOW_LOCAL_REMOTE) - print_bool(PRINT_ANY, - "ip6_tnl_f_allow_local_remote", - "allow-localremote ", - true); - if (tb[IFLA_IPTUN_ENCAP_TYPE] && rta_getattr_u16(tb[IFLA_IPTUN_ENCAP_TYPE]) != TUNNEL_ENCAP_NONE) { __u16 type = rta_getattr_u16(tb[IFLA_IPTUN_ENCAP_TYPE]); diff --git a/ip/link_iptnl.c b/ip/link_iptnl.c index fd08bd9..fcb0795 100644 --- a/ip/link_iptnl.c +++ b/ip/link_iptnl.c @@ -360,7 +360,6 @@ get_failed: static void iptunnel_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[]) { - char s1[1024]; char s2[64]; const char *local = "any"; const char *remote = "any"; @@ -454,7 +453,7 @@ static void iptunnel_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[ const char *prefix = inet_ntop(AF_INET6, RTA_DATA(tb[IFLA_IPTUN_6RD_PREFIX]), - s1, sizeof(s1)); + s2, sizeof(s2)); if (is_json_context()) { print_string(PRINT_JSON, "prefix", NULL, prefix); @@ -481,6 +480,15 @@ static void iptunnel_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[ } } + if (tb[IFLA_IPTUN_FWMARK]) { + __u32 fwmark = rta_getattr_u32(tb[IFLA_IPTUN_FWMARK]); + + if (fwmark) { + print_0xhex(PRINT_ANY, + "fwmark", "fwmark 0x%x ", fwmark); + } + } + if (tb[IFLA_IPTUN_ENCAP_TYPE] && (type = rta_getattr_u16(tb[IFLA_IPTUN_ENCAP_TYPE])) != TUNNEL_ENCAP_NONE) { __u16 flags = rta_getattr_u16(tb[IFLA_IPTUN_ENCAP_FLAGS]); @@ -544,16 +552,6 @@ static void iptunnel_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[ fputs("noencap-remcsum ", f); } } - - if (tb[IFLA_IPTUN_FWMARK]) { - __u32 fwmark = rta_getattr_u32(tb[IFLA_IPTUN_FWMARK]); - - if (fwmark) { - snprintf(s2, sizeof(s2), "0x%x", fwmark); - - print_string(PRINT_ANY, "fwmark", "fwmark %s ", s2); - } - } } static void iptunnel_print_help(struct link_util *lu, int argc, char **argv, diff --git a/ip/link_vti.c b/ip/link_vti.c index 7ae2e3c..eebf542 100644 --- a/ip/link_vti.c +++ b/ip/link_vti.c @@ -168,6 +168,7 @@ static void vti_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[]) const char *local = "any"; const char *remote = "any"; __u32 key; + __u32 fwmark; unsigned int link; char s2[IFNAMSIZ]; @@ -208,16 +209,9 @@ static void vti_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[]) (key = rta_getattr_u32(tb[IFLA_VTI_OKEY]))) print_0xhex(PRINT_ANY, "okey", "okey %#x ", ntohl(key)); - if (tb[IFLA_VTI_FWMARK]) { - __u32 fwmark = rta_getattr_u32(tb[IFLA_VTI_FWMARK]); - - if (fwmark) { - SPRINT_BUF(b1); - - snprintf(b1, sizeof(b1), "0x%x", fwmark); - print_string(PRINT_ANY, "fwmark", "fwmark %s ", s2); - } - } + if (tb[IFLA_VTI_FWMARK] && + (fwmark = rta_getattr_u32(tb[IFLA_VTI_FWMARK]))) + print_0xhex(PRINT_ANY, "fwmark", "fwmark 0x%x ", fwmark); } static void vti_print_help(struct link_util *lu, int argc, char **argv, diff --git a/ip/link_vti6.c b/ip/link_vti6.c index f7c40d3..29a7062 100644 --- a/ip/link_vti6.c +++ b/ip/link_vti6.c @@ -168,6 +168,7 @@ static void vti6_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[]) const char *remote = "any"; struct in6_addr saddr; struct in6_addr daddr; + __u32 fwmark; unsigned int link; char s2[64]; @@ -207,15 +208,9 @@ static void vti6_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[]) print_string(PRINT_ANY, "okey", "okey %s ", s2); } - if (tb[IFLA_VTI_FWMARK]) { - __u32 fwmark = rta_getattr_u32(tb[IFLA_VTI_FWMARK]); - - if (fwmark) { - snprintf(s2, sizeof(s2), "0x%x", fwmark); - - print_string(PRINT_ANY, "fwmark", "fwmark %s ", s2); - } - } + if (tb[IFLA_VTI_FWMARK] && + (fwmark = rta_getattr_u32(tb[IFLA_VTI_FWMARK]))) + print_0xhex(PRINT_ANY, "fwmark", "fwmark 0x%x ", fwmark); } struct link_util vti6_link_util = { -- 1.7.10.4