mirror of
https://git.kernel.org/pub/scm/network/iproute2/iproute2.git
synced 2024-11-16 06:25:35 +08:00
ipneigh: add support to print brief output of neigh cache in tabular format
Make use of the already available brief flag and print the basic details of the IPv4 or IPv6 neighbour cache in a tabular format for better readability when the brief output is expected. $ ip -br neigh 172.16.12.100 bridge0 b0:fc:36:2f:07:43 172.16.12.174 bridge0 8c:16:45:2f:bc:1c 172.16.12.250 bridge0 04:d9:f5:c1:0c:74 fe80::267b:9f70:745e:d54d bridge0 b0:fc:36:2f:07:43 fd16:a115:6a62:0:8744:efa1:9933:2c4c bridge0 8c:16:45:2f:bc:1c fe80::6d9:f5ff:fec1:c74 bridge0 04:d9:f5:c1:0c:74 And add "ip neigh show" to the list of ip sub commands mentioned in the man page that support the brief output in tabular format. Signed-off-by: Gokul Sivakumar <gokulkumar792@gmail.com> Signed-off-by: David Ahern <dsahern@kernel.org>
This commit is contained in:
parent
169f36a0c9
commit
508ad89c82
50
ip/ipneigh.c
50
ip/ipneigh.c
@ -251,6 +251,51 @@ static void print_neigh_state(unsigned int nud)
|
||||
close_json_array(PRINT_JSON, NULL);
|
||||
}
|
||||
|
||||
static int print_neigh_brief(FILE *fp, struct ndmsg *r, struct rtattr *tb[])
|
||||
{
|
||||
if (tb[NDA_DST]) {
|
||||
const char *dst;
|
||||
int family = r->ndm_family;
|
||||
|
||||
if (family == AF_BRIDGE) {
|
||||
if (RTA_PAYLOAD(tb[NDA_DST]) == sizeof(struct in6_addr))
|
||||
family = AF_INET6;
|
||||
else
|
||||
family = AF_INET;
|
||||
}
|
||||
|
||||
dst = format_host_rta(family, tb[NDA_DST]);
|
||||
print_color_string(PRINT_ANY, ifa_family_color(family),
|
||||
"dst", "%-39s ", dst);
|
||||
}
|
||||
|
||||
if (!filter.index && r->ndm_ifindex) {
|
||||
print_color_string(PRINT_ANY, COLOR_IFNAME,
|
||||
"dev", "%-16s ",
|
||||
ll_index_to_name(r->ndm_ifindex));
|
||||
}
|
||||
|
||||
if (tb[NDA_LLADDR]) {
|
||||
const char *lladdr;
|
||||
|
||||
SPRINT_BUF(b1);
|
||||
|
||||
lladdr = ll_addr_n2a(RTA_DATA(tb[NDA_LLADDR]),
|
||||
RTA_PAYLOAD(tb[NDA_LLADDR]),
|
||||
ll_index_to_type(r->ndm_ifindex),
|
||||
b1, sizeof(b1));
|
||||
|
||||
print_color_string(PRINT_ANY, COLOR_MAC,
|
||||
"lladdr", "%s", lladdr);
|
||||
}
|
||||
|
||||
print_string(PRINT_FP, NULL, "%s", "\n");
|
||||
close_json_object();
|
||||
fflush(fp);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int print_neigh(struct nlmsghdr *n, void *arg)
|
||||
{
|
||||
FILE *fp = (FILE *)arg;
|
||||
@ -337,6 +382,9 @@ int print_neigh(struct nlmsghdr *n, void *arg)
|
||||
else if (n->nlmsg_type == RTM_GETNEIGH)
|
||||
print_null(PRINT_ANY, "miss", "%s ", "miss");
|
||||
|
||||
if (brief)
|
||||
return print_neigh_brief(fp, r, tb);
|
||||
|
||||
if (tb[NDA_DST]) {
|
||||
const char *dst;
|
||||
int family = r->ndm_family;
|
||||
@ -412,7 +460,7 @@ int print_neigh(struct nlmsghdr *n, void *arg)
|
||||
|
||||
print_string(PRINT_FP, NULL, "\n", "");
|
||||
close_json_object();
|
||||
fflush(stdout);
|
||||
fflush(fp);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -227,7 +227,7 @@ print human readable rates in IEC units (e.g. 1Ki = 1024).
|
||||
.BR "\-br" , " \-brief"
|
||||
Print only basic information in a tabular format for better
|
||||
readability. This option is currently only supported by
|
||||
.BR "ip addr show " and " ip link show " commands.
|
||||
.BR "ip addr show ", " ip link show " & " ip neigh show " commands.
|
||||
|
||||
.TP
|
||||
.BR "\-j", " \-json"
|
||||
|
Loading…
Reference in New Issue
Block a user