iproute: refactor printing of interface

For JSON and colorization, make common code a function.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: David Ahern <dsahern@gmail.com>
This commit is contained in:
Stephen Hemminger 2018-02-07 09:10:17 -08:00 committed by David Ahern
parent f48e14880a
commit 1506d8d3f8
1 changed files with 11 additions and 5 deletions

View File

@ -382,6 +382,14 @@ static void print_rt_pref(FILE *fp, unsigned int pref)
} }
} }
static void print_rta_if(FILE *fp, const struct rtattr *rta,
const char *prefix)
{
const char *ifname = ll_index_to_name(rta_getattr_u32(rta));
fprintf(fp, "%s %s ", prefix, ifname);
}
static void print_cache_flags(FILE *fp, __u32 flags) static void print_cache_flags(FILE *fp, __u32 flags)
{ {
flags &= ~0xFFFF; flags &= ~0xFFFF;
@ -710,7 +718,7 @@ int print_route(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
print_rta_via(fp, tb[RTA_VIA]); print_rta_via(fp, tb[RTA_VIA]);
if (tb[RTA_OIF] && filter.oifmask != -1) if (tb[RTA_OIF] && filter.oifmask != -1)
fprintf(fp, "dev %s ", ll_index_to_name(rta_getattr_u32(tb[RTA_OIF]))); print_rta_if(fp, tb[RTA_OIF], "dev");
if (table && (table != RT_TABLE_MAIN || show_details > 0) && !filter.tb) if (table && (table != RT_TABLE_MAIN || show_details > 0) && !filter.tb)
fprintf(fp, "table %s ", rtnl_rttable_n2a(table, b1, sizeof(b1))); fprintf(fp, "table %s ", rtnl_rttable_n2a(table, b1, sizeof(b1)));
@ -767,10 +775,8 @@ int print_route(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
if (tb[RTA_METRICS]) if (tb[RTA_METRICS])
print_rta_metrics(fp, tb[RTA_METRICS]); print_rta_metrics(fp, tb[RTA_METRICS]);
if (tb[RTA_IIF] && filter.iifmask != -1) { if (tb[RTA_IIF] && filter.iifmask != -1)
fprintf(fp, "iif %s ", print_rta_if(fp, tb[RTA_IIF], "iif");
ll_index_to_name(rta_getattr_u32(tb[RTA_IIF])));
}
if (tb[RTA_MULTIPATH]) if (tb[RTA_MULTIPATH])
print_rta_multipath(fp, r, tb[RTA_MULTIPATH]); print_rta_multipath(fp, r, tb[RTA_MULTIPATH]);