All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH iproute2-next] ipneigh: add support to print brief output of neigh cache in tabular format
@ 2021-07-25 15:39 Gokul Sivakumar
  2021-07-26 21:09 ` David Ahern
  0 siblings, 1 reply; 3+ messages in thread
From: Gokul Sivakumar @ 2021-07-25 15:39 UTC (permalink / raw)
  To: netdev; +Cc: Gokul Sivakumar

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
bridge0          172.16.12.100                           b0:fc:36:2f:07:43
bridge0          172.16.12.174                           8c:16:45:2f:bc:1c
bridge0          172.16.12.250                           04:d9:f5:c1:0c:74
bridge0          fe80::267b:9f70:745e:d54d               b0:fc:36:2f:07:43
bridge0          fd16:a115:6a62:0:8744:efa1:9933:2c4c    8c:16:45:2f:bc:1c
bridge0          fe80::6d9:f5ff:fec1:c74                 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>
---
 ip/ipneigh.c  | 50 +++++++++++++++++++++++++++++++++++++++++++++++++-
 man/man8/ip.8 |  2 +-
 2 files changed, 50 insertions(+), 2 deletions(-)

diff --git a/ip/ipneigh.c b/ip/ipneigh.c
index 2d6b7f58..91c157f9 100644
--- a/ip/ipneigh.c
+++ b/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 (!filter.index && r->ndm_ifindex) {
+		print_color_string(PRINT_ANY, COLOR_IFNAME,
+				   "dev", "%-16s ",
+				   ll_index_to_name(r->ndm_ifindex));
+	}
+
+	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", "%-40s", dst);
+	}
+
+	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;
 }
diff --git a/man/man8/ip.8 b/man/man8/ip.8
index c9f7671e..3f572889 100644
--- a/man/man8/ip.8
+++ b/man/man8/ip.8
@@ -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"
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH iproute2-next] ipneigh: add support to print brief output of neigh cache in tabular format
  2021-07-25 15:39 [PATCH iproute2-next] ipneigh: add support to print brief output of neigh cache in tabular format Gokul Sivakumar
@ 2021-07-26 21:09 ` David Ahern
  2021-07-27 16:33   ` Gokul Sivakumar
  0 siblings, 1 reply; 3+ messages in thread
From: David Ahern @ 2021-07-26 21:09 UTC (permalink / raw)
  To: Gokul Sivakumar, netdev

On 7/25/21 9:39 AM, Gokul Sivakumar wrote:
> 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
> bridge0          172.16.12.100                           b0:fc:36:2f:07:43
> bridge0          172.16.12.174                           8c:16:45:2f:bc:1c
> bridge0          172.16.12.250                           04:d9:f5:c1:0c:74
> bridge0          fe80::267b:9f70:745e:d54d               b0:fc:36:2f:07:43
> bridge0          fd16:a115:6a62:0:8744:efa1:9933:2c4c    8c:16:45:2f:bc:1c
> bridge0          fe80::6d9:f5ff:fec1:c74                 04:d9:f5:c1:0c:74

I am guessing you put the device first to be consistent with the output
for the other 2 commands.

In this case I think the network address should be first then device and
lladdr which is consistent with existing output just removing 'dev'
keyword and flags.



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH iproute2-next] ipneigh: add support to print brief output of neigh cache in tabular format
  2021-07-26 21:09 ` David Ahern
@ 2021-07-27 16:33   ` Gokul Sivakumar
  0 siblings, 0 replies; 3+ messages in thread
From: Gokul Sivakumar @ 2021-07-27 16:33 UTC (permalink / raw)
  To: David Ahern, netdev

On Mon, 2021-07-26 at 15:09 -0600, David Ahern wrote:
> On 7/25/21 9:39 AM, Gokul Sivakumar wrote:
> > 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
> > bridge0          172.16.12.100                           b0:fc:36:2f:07:43
> > bridge0          172.16.12.174                           8c:16:45:2f:bc:1c
> > bridge0          172.16.12.250                           04:d9:f5:c1:0c:74
> > bridge0          fe80::267b:9f70:745e:d54d               b0:fc:36:2f:07:43
> > bridge0          fd16:a115:6a62:0:8744:efa1:9933:2c4c    8c:16:45:2f:bc:1c
> > bridge0          fe80::6d9:f5ff:fec1:c74                 04:d9:f5:c1:0c:74
> 
> I am guessing you put the device first to be consistent with the output
> for the other 2 commands.

Yes, that was my initial thought.

> In this case I think the network address should be first then device and
> lladdr which is consistent with existing output just removing 'dev'
> keyword and flags.

I understand, will send an updated v2 patch now to print the brief output with 
columns in the order that you are suggesting.

Thanks.


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-07-27 16:33 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-25 15:39 [PATCH iproute2-next] ipneigh: add support to print brief output of neigh cache in tabular format Gokul Sivakumar
2021-07-26 21:09 ` David Ahern
2021-07-27 16:33   ` Gokul Sivakumar

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.