Your message dated Sun, 21 Feb 2010 16:40:19 +0300
with message-id <[email protected]>
and subject line Done: vnstat collects data from the wrong interface
has caused the Debian Bug report #512566,
regarding vnstat collects data from the wrong interface
to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)
--
512566: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=512566
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: vnstat
Version: 1.4-4
Severity: normal
Tags: patch
vnstat collects data from the wrong interface if you have interfaces
with more than one digit in the interface name:
# vnstat -D -u -i eth1
arg 1: "-D"
arg 2: "-u"
Updating database...
arg 3: "-i"
Used interface: eth1
bzise 4096
blocks 4085595
bfree 1858554
bavail 1651016
ffree 1974741
6604064 free space left
Database loaded for interface "eth1"...
eth16: 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0
btime 1225467954
rx: 0 - 0 = 0
tx: 0 - 0 = 0
Database saved...
In this case vnstat tries to collect data from eth16 instead of eth1.
The following patch fixes the problem for me:
diff -ur vnstat-1.4.orig/src/proc.c vnstat-1.4/src/proc.c
--- vnstat-1.4.orig/src/proc.c 2004-03-26 14:22:42.000000000 +0100
+++ vnstat-1.4/src/proc.c 2009-01-21 21:37:07.000000000 +0100
@@ -5,7 +5,7 @@
void readproc(char iface[32])
{
FILE *fp;
- char temp[64], inface[32];
+ char temp[64], inface[32], *p;
int check;
if ((fp=fopen("/proc/net/dev","r"))==NULL) {
@@ -22,7 +22,9 @@
check=0;
while (fgets(procline,512,fp)!=NULL) {
sscanf(procline,"%s",temp);
- if (strncmp(inface,temp,strlen(inface))==0) {
+ if ((p = strchr(temp, ':')) != NULL)
+ *p = '\0';
+ if (strcmp(inface, temp) == 0) {
if (debug)
printf("\n%s\n",procline);
check=1;
As 'apt-get source' seems not to honor apt preferences I started with
sources from the wrong version, so you can get the patch for vnstat 1.6
too ;-)
diff -ur vnstat-1.6.orig/src/ifinfo.c vnstat-1.6/src/ifinfo.c
--- vnstat-1.6.orig/src/ifinfo.c 2008-01-01 17:13:00.000000000 +0100
+++ vnstat-1.6/src/ifinfo.c 2009-01-21 20:58:40.000000000 +0100
@@ -32,7 +32,7 @@
int readproc(char iface[32])
{
FILE *fp;
- char temp[4][64], procline[512], *proclineptr;
+ char temp[4][64], procline[512], *proclineptr, *p;
int check;
if ((fp=fopen("/proc/net/dev", "r"))==NULL) {
@@ -44,7 +44,9 @@
check = 0;
while (fgets(procline, 512, fp)!=NULL) {
sscanf(procline, "%s", temp[0]);
- if (strncmp(iface, temp[0], strlen(iface))==0) {
+ if ((p = strchr(temp[0], ':')) != NULL)
+ *p = '\0';
+ if (strcmp(iface, temp[0]) == 0) {
if (debug)
printf("\n%s\n", procline);
check = 1;
BTW proc.c seems to be obsolete in version 1.6.
Regards
Uwe
-- System Information:
Debian Release: 4.0
APT prefers stable
APT policy: (850, 'stable'), (750, 'testing'), (650, 'unstable'), (1,
'experimental')
Architecture: i386 (i686)
Shell: /bin/sh linked to /bin/bash
Kernel: Linux 2.6.18-6-k7
Locale: LANG=en_US, LC_CTYPE=en_US (charmap=ISO-8859-1)
Versions of packages vnstat depends on:
ii libc6 2.3.6.ds1-13etch8 GNU C Library: Shared libraries
vnstat recommends no packages.
-- no debconf information
--- End Message ---
--- Begin Message ---
Package: vnstat
Version: 1.10-0.1
Bug was fixed by upstream, but has not been closed in debian.
--- End Message ---