From owner-freebsd-hackers@FreeBSD.ORG Wed Feb 22 13:53:42 2006 Return-Path: X-Original-To: freebsd-hackers@freebsd.org Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 267C116A423 for ; Wed, 22 Feb 2006 13:53:42 +0000 (GMT) (envelope-from nvass@teledomenet.gr) Received: from matrix.teledomenet.gr (dns1.teledomenet.gr [213.142.128.1]) by mx1.FreeBSD.org (Postfix) with ESMTP id 5640843D45 for ; Wed, 22 Feb 2006 13:53:40 +0000 (GMT) (envelope-from nvass@teledomenet.gr) Received: from iris ([192.168.1.71]) by matrix.teledomenet.gr (8.12.10/8.12.10) with ESMTP id k1MDrduq019512 for ; Wed, 22 Feb 2006 15:53:39 +0200 From: Nikos Vassiliadis Date: Wed, 22 Feb 2006 15:50:17 +0200 User-Agent: KMail/1.8.3 MIME-Version: 1.0 To: freebsd-hackers@freebsd.org Content-Type: Multipart/Mixed; boundary="Boundary-00=_ZwG/D13V8eFC7T4" Message-Id: <200602221550.17842.nvass@teledomenet.gr> Subject: (feature change request) remove link-layer generated routes from netstat -r X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 22 Feb 2006 13:53:42 -0000 --Boundary-00=_ZwG/D13V8eFC7T4 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi, netstat -r prints link-layer generated routes and many times the output becomes somehow obscure. For example: root@brad:0:/usr/home/src/FreeBSD-6/src/usr.bin/netstat# netstat -ranfinet Routing tables Internet: Destination Gateway Flags Refs Use Netif Expire default 10.1.1.244 UGS 0 31016 rl0 10.1.1/24 link#1 UC 0 0 rl0 10.1.1.181 00:0f:1f:fb:02:f5 UHLW 1 0 rl0 10.1.1.182 00:e0:fc:38:d4:40 UHLW 1 0 rl0 10.1.1.183 00:e0:fc:65:07:fd UHLW 1 0 rl0 10.1.1.244 00:50:fc:fe:74:3b UHLW 2 1 rl0 10.1.1.254 00:0c:cf:70:50:06 UHLW 1 0 rl0 127.0.0.1 127.0.0.1 UH 0 1117 lo0 192.168.1 link#5 UC 0 0 fxp0 192.168.1.25 00:05:5d:4d:19:58 UHLW 1 0 fxp0 192.168.1.45 00:11:43:b6:a1:55 UHLW 1 0 fxp0 192.168.1.71 00:0c:f1:b9:38:50 UHLW 1 1645 fxp0 192.168.1.84 00:04:23:af:79:66 UHLW 1 0 fxp0 192.168.1.112 00:30:4f:21:3b:8a UHLW 1 0 fxp0 192.168.1.196 00:07:e9:40:1f:c5 UHLW 1 0 fxp0 192.168.1.199 00:e0:81:21:28:21 UHLW 1 0 fxp0 192.168.1.200 00:30:4f:03:88:03 UHLW 1 0 fxp0 when the information I was actually looking for is: root@brad:0:/usr/home/src/FreeBSD-6/src/usr.bin/netstat# netstat -rnfinet Routing tables Internet: Destination Gateway Flags Refs Use Netif Expire default 10.1.1.244 UGS 0 31016 rl0 10.1.1/24 link#1 UC 0 0 rl0 127.0.0.1 127.0.0.1 UH 0 1117 lo0 192.168.1 link#5 UC 0 0 fxp0 root@brad:0:/usr/home/src/FreeBSD-6/src/usr.bin/netstat# The attachment patch ("cvs diff -u -rHEAD route.c" generated) prints link-layer generated routes when -a is specified and ignores them the rest of the time. Thoughts? POLA violation? Nikos --Boundary-00=_ZwG/D13V8eFC7T4 Content-Type: text/x-diff; charset="us-ascii"; name="route.c.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="route.c.patch" Index: route.c =================================================================== RCS file: /home/ncvs/src/usr.bin/netstat/route.c,v retrieving revision 1.76 diff -u -r1.76 route.c --- route.c 13 May 2005 16:31:10 -0000 1.76 +++ route.c 22 Feb 2006 13:35:39 -0000 @@ -285,11 +285,16 @@ int len; /* - * Don't print protocol-cloned routes unless -a. + * Don't print protocol-cloned routes and + * link-layer generated routes unless -a. */ - if (rt->rt_flags & RTF_WASCLONED && !aflag) { - kget(rt->rt_parent, parent); - if (parent.rt_flags & RTF_PRCLONING) + if (!aflag) { + if (rt->rt_flags & RTF_WASCLONED) { + kget(rt->rt_parent, parent); + if (parent.rt_flags & RTF_PRCLONING) + return; + } + if (rt->rt_flags & RTF_LLINFO) return; } @@ -712,11 +717,16 @@ sa_u addr, mask; /* - * Don't print protocol-cloned routes unless -a. + * Don't print protocol-cloned routes and + * link-layer generated routes unless -a. */ - if (rt->rt_flags & RTF_WASCLONED && !aflag) { - kget(rt->rt_parent, parent); - if (parent.rt_flags & RTF_PRCLONING) + if (!aflag) { + if (rt->rt_flags & RTF_WASCLONED) { + kget(rt->rt_parent, parent); + if (parent.rt_flags & RTF_PRCLONING) + return; + } + if (rt->rt_flags & RTF_LLINFO) return; } --Boundary-00=_ZwG/D13V8eFC7T4--