]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
route: ignore RTAX_HOPLIMIT of value -1
authorPhil Sutter <phil@nwl.cc>
Wed, 2 Dec 2015 12:50:22 +0000 (13:50 +0100)
committerStephen Hemminger <shemming@brocade.com>
Thu, 10 Dec 2015 16:45:11 +0000 (08:45 -0800)
Older kernels use -1 internally as indicator to use the sysctl default,
but they still export the setting. Newer kernels use 0 to indicate that
(which is why the conversion from -1 to 0 was done here), but they also
stopped exporting the value. Since the meaning of -1 is clear, treat it
equally like default on newer kernels (which is to not print anything).

Signed-off-by: Phil Sutter <phil@nwl.cc>
ip/iproute.c

index aed1038e515b68f2309ea5a0f4c6c796d4a08312..c42ea0b9ecb8e103297f3ca2da276f77415aaf66 100644 (file)
@@ -577,24 +577,23 @@ int print_route(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
                        if (mxrta[i] == NULL)
                                continue;
 
-                       if (i < sizeof(mx_names)/sizeof(char*) && mx_names[i])
-                               fprintf(fp, " %s", mx_names[i]);
-                       else
-                               fprintf(fp, " metric %d", i);
-
                        if (mxlock & (1<<i))
                                fprintf(fp, " lock");
                        if (i != RTAX_CC_ALGO)
                                val = rta_getattr_u32(mxrta[i]);
 
+                       if (i == RTAX_HOPLIMIT && (int)val == -1)
+                               continue;
+
+                       if (i < sizeof(mx_names)/sizeof(char*) && mx_names[i])
+                               fprintf(fp, " %s", mx_names[i]);
+                       else
+                               fprintf(fp, " metric %d", i);
+
                        switch (i) {
                        case RTAX_FEATURES:
                                print_rtax_features(fp, val);
                                break;
-                       case RTAX_HOPLIMIT:
-                               if ((int)val == -1)
-                                       val = 0;
-                               /* fall through */
                        default:
                                fprintf(fp, " %u", val);
                                break;