aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2020-02-25 08:12:13 -0500
committerStephen Hemminger <stephen@networkplumber.org>2020-02-28 13:42:59 -0800
commit320c5c6e0951f8ac7a06659d83abcec6c486df7d (patch)
tree54b19017f384e6016ef90ffb49d85893180271b9
parent2c7056ac26412fe99443a283f0c1261cb81ccea2 (diff)
downloadiproute2-320c5c6e0951f8ac7a06659d83abcec6c486df7d.tar.gz
ip route: Do not imply pref and ttl-propagate are per nexthop
Currently `ip -6 route show` gives us this output: sharpd@eva ~/i/ip (master)> ip -6 route show ::1 dev lo proto kernel metric 256 pref medium 4:5::6:7 nhid 18 proto static metric 20 nexthop via fe80::99 dev enp39s0 weight 1 nexthop via fe80::44 dev enp39s0 weight 1 pref medium Displaying `pref medium` as the last bit of output implies that the RTA_PREF is a per nexthop value, when it is infact a per route piece of data. Change the output to display RTA_PREF and RTA_TTL_PROPAGATE before the RTA_MULTIPATH data is shown: sharpd@eva ~/i/ip (master)> ./ip -6 route show ::1 dev lo proto kernel metric 256 pref medium 4:5::6:7 nhid 18 proto static metric 20 pref medium nexthop via fe80::99 dev enp39s0 weight 1 nexthop via fe80::44 dev enp39s0 weight 1 Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com> Reviewed-by: Andrea Claudi <aclaudi@redhat.com> Acked-by: Roopa Prabhu <roopa@cumulusnetworks.com> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
-rw-r--r--ip/iproute.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/ip/iproute.c b/ip/iproute.c
index 93b805c90..07c451694 100644
--- a/ip/iproute.c
+++ b/ip/iproute.c
@@ -933,9 +933,6 @@ int print_route(struct nlmsghdr *n, void *arg)
if (tb[RTA_IIF] && filter.iifmask != -1)
print_rta_if(fp, tb[RTA_IIF], "iif");
- if (tb[RTA_MULTIPATH])
- print_rta_multipath(fp, r, tb[RTA_MULTIPATH]);
-
if (tb[RTA_PREF])
print_rt_pref(fp, rta_getattr_u8(tb[RTA_PREF]));
@@ -951,6 +948,14 @@ int print_route(struct nlmsghdr *n, void *arg)
propagate ? "enabled" : "disabled");
}
+ if (tb[RTA_MULTIPATH])
+ print_rta_multipath(fp, r, tb[RTA_MULTIPATH]);
+
+ /* If you are adding new route RTA_XXXX then place it above
+ * the RTA_MULTIPATH else it will appear that the last nexthop
+ * in the ECMP has new attributes
+ */
+
print_string(PRINT_FP, NULL, "\n", NULL);
close_json_object();
fflush(fp);