| Summary: | 4.3 netstat -r output missing data | ||
|---|---|---|---|
| Product: | Base System | Reporter: | jonathan.chen <jonathan.chen> |
| Component: | bin | Assignee: | ru <ru> |
| Status: | Closed FIXED | ||
| Severity: | Affects Only Me | ||
| Priority: | Normal | ||
| Version: | Unspecified | ||
| Hardware: | Any | ||
| OS: | Any | ||
|
Description
jonathan.chen
2001-04-30 00:30:01 UTC
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 <<On Fri, 4 May 2001 18:21:32 +0300, Ruslan Ermilov <ru@FreeBSD.ORG> said: > 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)? Let me see if I can reconstruct the history. Originally, 4.4's `netstat -r' showed cloned routes. Then I added the ``protocol cloning'' feature and suddenly there were a lot more cloned routes. Then people complained that this was too much information. Then I added the `-a' flag to hide the stuff that protocol-cloning had added. I'm agnostic on whether `-a' should suppress all cloned routes or just the protocol-cloned routes. POLA suggests that the latter is probably a better choice. -GAWollman Ruslan Ermilov <ru@FreeBSD.org> writes: > 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? Probably because it was buried in a diff that contained other fixes that needed MFCing. It wasn't a conscious decision to MFC exactly that one change. DES -- Dag-Erling Smorgrav - des@ofug.org State Changed From-To: open->analyzed Old behavior of printing RTF_CLONING cloned routes restored in 5.0-CURRENT: src/usr.bin/netstat/route.c,v 1.48 src/usr.bin/netstat/netstat.1,v 1.28 Responsible Changed From-To: freebsd-bugs->ru My change, my fix. State Changed From-To: analyzed->closed Fix merged into 4.3-STABLE: src/usr.bin/netstat/route.c,v 1.41.2.6 src/usr.bin/netstat/netstat.1,v 1.22.2.4 |