]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
ip/tunnel: Simplify and unify tos printing
authorSerhey Popovych <serhe.popovych@gmail.com>
Thu, 18 Jan 2018 14:04:30 +0000 (16:04 +0200)
committerStephen Hemminger <stephen@networkplumber.org>
Fri, 19 Jan 2018 00:34:40 +0000 (16:34 -0800)
For ip tunnels tos can be 0 when not configured, 1 when
inherited from encapsulated packet and rest specifying
diffserv (rfc2474) or tos (rfc1349) bits. It is stored
in packet tos/diffserv field and returned in tos
netlink attribute to userspace.

Simplify and unify tos printing by using print_0xhex()
and print_string() instead of fprintf() to output values.

Signed-off-by: Serhey Popovych <serhe.popovych@gmail.com>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
ip/iplink_geneve.c
ip/iplink_vxlan.c
ip/link_gre.c
ip/link_iptnl.c

index 5a0afd4ec094c00a717a9fa2a54fe1c61c958dbb..2d0a0411c4bbf896d0eee718f57aa9de73294d16 100644 (file)
@@ -228,7 +228,7 @@ static void geneve_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
 {
        __u32 vni;
        __u8 ttl = 0;
-       __u8 tos;
+       __u8 tos = 0;
 
        if (!tb)
                return;
@@ -270,20 +270,13 @@ static void geneve_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
        else
                print_string(PRINT_FP, NULL, "ttl %s ", "inherit");
 
-       if (tb[IFLA_GENEVE_TOS] &&
-           (tos = rta_getattr_u8(tb[IFLA_GENEVE_TOS]))) {
-               if (is_json_context()) {
-                       print_0xhex(PRINT_JSON, "tos", "%#x", tos);
-               } else {
-                       if (tos == 1) {
-                               print_string(PRINT_FP,
-                                            "tos",
-                                            "tos %s ",
-                                            "inherit");
-                       } else {
-                               fprintf(f, "tos %#x ", tos);
-                       }
-               }
+       if (tb[IFLA_GENEVE_TOS])
+               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);
+               else
+                       print_string(PRINT_FP, NULL, "tos %s ", "inherit");
        }
 
        if (tb[IFLA_GENEVE_LABEL]) {
index b9c335d3e189ece189600d8fba94a9920ca445a4..88b5662573ce04e24ca3bb33ff4c5ad3bb01108f 100644 (file)
@@ -395,7 +395,7 @@ static void vxlan_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
 {
        __u32 vni;
        __u8 ttl = 0;
-       __u8 tos;
+       __u8 tos = 0;
        __u32 maxaddr;
 
        if (!tb)
@@ -515,16 +515,13 @@ static void vxlan_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
        if (tb[IFLA_VXLAN_L3MISS] && rta_getattr_u8(tb[IFLA_VXLAN_L3MISS]))
                print_bool(PRINT_ANY, "l3miss", "l3miss ", true);
 
-       if (tb[IFLA_VXLAN_TOS] &&
-           (tos = rta_getattr_u8(tb[IFLA_VXLAN_TOS]))) {
-               if (is_json_context()) {
-                       print_0xhex(PRINT_JSON, "tos", "%#x", tos);
-               } else {
-                       if (tos == 1)
-                               fprintf(f, "tos %s ", "inherit");
-                       else
-                               fprintf(f, "tos %#x ", tos);
-               }
+       if (tb[IFLA_VXLAN_TOS])
+               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);
+               else
+                       print_string(PRINT_FP, NULL, "tos %s ", "inherit");
        }
 
        if (tb[IFLA_VXLAN_TTL])
index 1cf7f4e883d387a1df564e9a61a2933d8b58c415..490d7db8d62e47a62934d9e6581f57ef0c96f857 100644 (file)
@@ -362,6 +362,7 @@ static void gre_print_direct_opt(FILE *f, struct rtattr *tb[])
        unsigned int iflags = 0;
        unsigned int oflags = 0;
        __u8 ttl = 0;
+       __u8 tos = 0;
 
        if (tb[IFLA_GRE_REMOTE]) {
                unsigned int addr = rta_getattr_u32(tb[IFLA_GRE_REMOTE]);
@@ -397,21 +398,13 @@ static void gre_print_direct_opt(FILE *f, struct rtattr *tb[])
        else
                print_string(PRINT_FP, NULL, "ttl %s ", "inherit");
 
-       if (tb[IFLA_GRE_TOS] && rta_getattr_u8(tb[IFLA_GRE_TOS])) {
-               int tos = rta_getattr_u8(tb[IFLA_GRE_TOS]);
-
-               if (is_json_context()) {
-                       SPRINT_BUF(b1);
-
-                       snprintf(b1, sizeof(b1), "0x%x", tos);
-                       print_string(PRINT_JSON, "tos", NULL, b1);
-               } else {
-                       fputs("tos ", f);
-                       if (tos == 1)
-                               fputs("inherit ", f);
-                       else
-                               fprintf(f, "0x%x ", tos);
-               }
+       if (tb[IFLA_GRE_TOS])
+               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);
+               else
+                       print_string(PRINT_FP, NULL, "tos %s ", "inherit");
        }
 
        if (tb[IFLA_GRE_PMTUDISC]) {
index 93e1a1bcd43593a99ae8491422bbae357f0ecaac..7fda580f15236ebf4e4f933776dbdd5b9cfa3af5 100644 (file)
@@ -366,6 +366,7 @@ static void iptunnel_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[
        const char *remote = "any";
        __u16 prefixlen, type;
        __u8 ttl = 0;
+       __u8 tos = 0;
 
        if (!tb)
                return;
@@ -424,20 +425,13 @@ static void iptunnel_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[
        else
                print_string(PRINT_FP, NULL, "ttl %s ", "inherit");
 
-       if (tb[IFLA_IPTUN_TOS]) {
-               int tos = rta_getattr_u8(tb[IFLA_IPTUN_TOS]);
-
-               if (tos) {
-                       if (is_json_context()) {
-                               print_0xhex(PRINT_JSON, "tos", "%#x", tos);
-                       } else {
-                               fputs("tos ", f);
-                               if (tos == 1)
-                                       fputs("inherit ", f);
-                               else
-                                       fprintf(f, "0x%x ", tos);
-                       }
-               }
+       if (tb[IFLA_IPTUN_TOS])
+               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);
+               else
+                       print_string(PRINT_FP, NULL, "tos %s ", "inherit");
        }
 
        if (tb[IFLA_IPTUN_PMTUDISC] && rta_getattr_u8(tb[IFLA_IPTUN_PMTUDISC]))