bin/119581: [patch] systat(1): systat -ifstat fails if iface table
is `sparse`
Alexander Chernikov
admin at su29.net
Fri Jan 11 15:50:01 PST 2008
>Number: 119581
>Category: bin
>Synopsis: [patch] systat(1): systat -ifstat fails if iface table is `sparse`
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Fri Jan 11 23:50:00 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator: Alexander Chernikov
>Release: 6.2-RELEASE
>Organization:
>Environment:
FreeBSD pochta.alo.ru 6.2-RELEASE-p1 FreeBSD 6.2-RELEASE-p1 #1: Sun Mar 25 13:26:51 MSD 2007 root at pochta.alo.ru:/usr/obj/usr/src/sys/POCHTA amd64
>Description:
systat -ifstat returns
'systat: sysctl error getting interface data: No such file or directory'
if interface from the 'middle' of interface table is deleted.
The problem resides in an incorrect ifmib(4) sysctl usage.
systat(1) does not handle `sparse` table case correctly and exits instead of skipping row.
>How-To-Repeat:
tcsh# kldload ng_iface
tcsh# ngctl mkpeer iface dummy inet
tcsh# ngctl mkpeer iface dummy inet
tcsh# ngctl mkpeer iface dummy inet
[We now got 3 ngX interfaces, ng0-2]
tcsh# ngctl shutdown ng1:
tcsh# systat -ifstat
systat: sysctl error getting interface data: No such file or directory
>Fix:
Apply the following patch:
Patch attached with submission follows:
--- /usr/src/usr.bin/systat/ifstat.c 2008-01-12 01:14:47.000000000 +0300
+++ /usr/src/usr.bin/systat/ifstat.c 2008-01-12 01:25:22.000000000 +0300
@@ -37,6 +37,7 @@
#include <stdlib.h>
#include <string.h>
#include <err.h>
+#include <errno.h>
#include "systat.h"
#include "extern.h"
@@ -384,8 +385,8 @@
datalen = sizeof(*data);
name[4] = row;
- if (sysctl(name, 6, (void *)data, (size_t *)&datalen, (void *)NULL,
- (size_t)0) != 0)
+ if ((sysctl(name, 6, (void *)data, (size_t *)&datalen, (void *)NULL,
+ (size_t)0) != 0) && (errno != ENOENT))
IFSTAT_ERR(2, "sysctl error getting interface data");
}
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list