Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 19 Jun 1998 11:14:36 +0200 (CEST)
From:      zgabor@zg.CoDe.hu
To:        freebsd.org!FreeBSD-gnats-submit@zg.CoDe.hu
Subject:   bin/6994: netstat -s + IPX/Appletalk
Message-ID:  <199806190914.LAA00678@CoDe.hu>

next in thread | raw e-mail | index | archive | help

>Number:         6994
>Category:       bin
>Synopsis:       The netstat(1) -s generates wrong output with IPX and Appletalk
>Confidential:   yes
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:
>Keywords:
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Fri Jun 19 04:40:01 PDT 1998
>Last-Modified:
>Originator:     Zahemszky Gabor
>Organization:
CoDe Ltd.
>Release:        FreeBSD 2.2.6-RELEASE i386
>Environment:

	A 2.2.6 with in-kernel IPX and ATALK

>Description:

	The netstat(1) manual says:
	-s: Show per-protocol statistics.  If this option is repeated,
	counters with a value of zero are supressed.
	But the ipx/atalk version is buggy:
	$ netstat -s -s
	....
	ipx:
		generate the whole output, doesn't matter the 0 values
	spx:
		generate the whole output, doesn't matter the 0 values
	....

	$ netstat -s
	....
	ddp:
		doesn't generate statistics with zero values (as it need
		netstat -s -s)
	....

>How-To-Repeat:

	Generate a kernel with option IPX and option ATALK, and type:
	netstat -s -s, and netstat -s

>Fix:
	
	In ipx.c and atalk.c, change the definitionS(!) of the ANY macro from:

/* atalk.c: */
#define ANY(x,y,z) \
	((x) ? printf("\t%d %s%s%s\n",x,y,plural(x),z) : 0)

/* ipx.c: */
#define ANY(x,y,z)	(printf("\t%u %s%s%s\n",x,y,plural(x),z))

	to the next:
#define ANY(x,y,z) \
	if ( (x) || ( sflag <= 1 ) ) printf("\t%u %s%s%s\n",x,y,plural(x),z)

	By the way, in inet.c, the statistic-printing routines use the
	corresponding p, p2, and the absolutely unnecessary p3 (it isn't
	used in inet.c) macro, and in the format string, there is: %ld.
	In ipx.c, the ANY macro uses %u, and in atalk.c, %d.  I don't know
	the current implementation, but %u (maybe %lu) looks better to me.
	And maybe it would be better, to use the same printing macros
	(defined in only one place, eg. netstat.h) in all of the supported
	protocols statistic-printing routines.
>Audit-Trail:
>Unformatted:

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?199806190914.LAA00678>