[prev in list] [next in list] [prev in thread] [next in thread] 

List:       netbsd-tech-net
Subject:    netstat -r output vs. "ARP table" entries
From:       Ignatios Souvatzis <is () jocelyn ! rhein ! de>
Date:       1999-09-09 19:33:11
[Download RAW message or body]

Hi,

as you will know, with the 4.4BSD changes to the ARP table, namely
incorporating it in the general routing table, netstat -r started to 
show the ARP entries, too. (I guess that it also will show Neighbour Cache
entries for IPv6...)

On big Ethernet segments, this can be nasty if you forget to |less or 
|grep -v UHL.

I looked at the code, and found that a relatively small patch (see below)
will allow to switch to the <= 4.3 behaviour by adding the -L flag. Works
fine for me. Any objections?

Regards,
	Ignatios



Index: main.c
===================================================================
RCS file: /cvsroot/basesrc/usr.bin/netstat/main.c,v
retrieving revision 1.23
diff -u -r1.23 main.c
--- main.c	1999/07/01 18:40:36	1.23
+++ main.c	1999/09/09 19:28:21
@@ -304,7 +304,8 @@
 	af = AF_UNSPEC;
 	pcbaddr = 0;
 
-	while ((ch = getopt(argc, argv, "Aabdf:ghI:liM:mN:nP:p:rstuvw:")) != -1)
+	while ((ch = getopt(argc, argv, "Aabdf:ghI:LliM:mN:nP:p:rstuvw:"))
+		!= -1)
 		switch(ch) {
 		case 'A':
 			Aflag = 1;
@@ -347,6 +348,9 @@
 			break;
 		case 'i':
 			iflag = 1;
+			break;
+		case 'L':
+			Lflag = 1;
 			break;
 		case 'l':
 			lflag = 1;
Index: netstat.h
===================================================================
RCS file: /cvsroot/basesrc/usr.bin/netstat/netstat.h,v
retrieving revision 1.14
diff -u -r1.14 netstat.h
--- netstat.h	1999/07/01 18:40:36	1.14
+++ netstat.h	1999/09/09 19:28:22
@@ -45,6 +45,7 @@
 int	gflag;		/* show group (multicast) routing or stats */
 #endif
 int	iflag;		/* show interfaces */
+int	Lflag;		/* don't show LLINFO entries */
 int	lflag;		/* show routing table with use and ref */
 int	mflag;		/* show memory stats */
 int	nflag;		/* show addresses numerically */
Index: route.c
===================================================================
RCS file: /cvsroot/basesrc/usr.bin/netstat/route.c,v
retrieving revision 1.38
diff -u -r1.38 route.c
--- route.c	1999/07/01 18:40:36	1.38
+++ route.c	1999/09/09 19:28:23
@@ -368,6 +368,8 @@
 	static int old_af;
 	int af = 0, interesting = RTF_UP | RTF_GATEWAY | RTF_HOST;
 
+	if (Lflag && (rtm->rtm_flags & RTF_LLINFO))
+		return;
 #ifdef notdef
 	/* for the moment, netmasks are skipped over */
 	if (!banner_printed) {
@@ -558,6 +560,9 @@
 	static struct ifnet ifnet, *lastif;
 	union sockaddr_union addr_un, mask_un;
 	struct sockaddr *addr, *mask;
+
+	if (Lflag && (rt->rt_flags & RTF_LLINFO))
+		return;
 
 	memset(&addr_un, 0, sizeof(addr_un));
 	memset(&mask_un, 0, sizeof(mask_un));


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic