Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 4 May 2001 08:30:06 -0700 (PDT)
From:      Ruslan Ermilov <ru@FreeBSD.org>
To:        freebsd-bugs@FreeBSD.org
Subject:   Re: bin/26970: 4.3 netstat -r output
Message-ID:  <200105041530.f44FU6R32694@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/26970; it has been noted by GNATS.

From: Ruslan Ermilov <ru@FreeBSD.org>
To: jonathan.chen@itouch.co.nz,
	Dag-Erling Smorgrav <des@FreeBSD.org>,
	Garrett Wollman <wollman@FreeBSD.org>
Cc: FreeBSD-gnats-submit@FreeBSD.org, net@FreeBSD.org
Subject: Re: bin/26970: 4.3 netstat -r output
Date: Fri, 4 May 2001 18:21:32 +0300

 On Mon, Apr 30, 2001 at 11:29:11AM +1200, jonathan.chen@itouch.co.nz wrote:
 > 
 > The output of `netstat -r' for 4.3-RELEASE onwards doesn't appear
 > to include info on hosts on the local network that it has recently
 > communicated with.
 > 
 This is the documented behavior.  ``netstat -r'' does not anymore show
 cloned routes by default unless -a is given, see manpage for details.
 Previously, only protocol-cloned routes were hidden from a normal
 output.  Now both protocol-cloned and cloned routes are not shown.
 There was the reason for this change in -CURRENT, but for -STABLE it
 was certainly premature.  I don't have an idea why DES did this.  DES?
 
 I have a question for Garrett.  Was the original idea behind -a flag is
 to hide protocol-cloned routes only but not RTF_CLONING generated routes,
 or it was simply caused by the bug that `rt_parent' was not set for
 routes generated from RTF_CLONING parent, as documented in rtentry(9)?
 
 If the behavior of netstat(1) is to be restored, the following patch
 will DTRT:
 
 Index: route.c
 ===================================================================
 RCS file: /home/ncvs/src/usr.bin/netstat/route.c,v
 retrieving revision 1.41.2.5
 diff -u -p -r1.41.2.5 route.c
 --- route.c	2001/03/22 13:48:44	1.41.2.5
 +++ route.c	2001/05/04 15:02:48
 @@ -582,16 +582,20 @@ p_rtentry(rt)
  	register struct rtentry *rt;
  {
  	static struct ifnet ifnet, *lastif;
 +	struct rtentry parent;
  	static char name[16];
  	static char prettyname[9];
  	struct sockaddr *sa;
  	sa_u addr, mask;
  
  	/*
 -	 * Don't print cloned routes unless -a.
 +	 * Don't print protocol-cloned routes unless -a.
  	 */
 -	if (rt->rt_flags & RTF_WASCLONED && !aflag)
 -		return;
 +	if (rt->rt_flags & RTF_WASCLONED && !aflag) {
 +		kget(rt->rt_parent, parent);
 +		if (parent.rt_flags & RTF_PRCLONING)
 +			return;
 +	}
  
  	bzero(&addr, sizeof(addr));
  	if ((sa = kgetsa(rt_key(rt))))
 
 
 
 Cheers,
 -- 
 Ruslan Ermilov		Oracle Developer/DBA,
 ru@sunbay.com		Sunbay Software AG,
 ru@FreeBSD.org		FreeBSD committer,
 +380.652.512.251	Simferopol, Ukraine
 
 http://www.FreeBSD.org	The Power To Serve
 http://www.oracle.com	Enabling The Information Age

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200105041530.f44FU6R32694>