netdev
[Top] [All Lists]

lnstat (rtstat replacement)

To: Harald Welte <laforge@xxxxxxxxxxxx>
Subject: lnstat (rtstat replacement)
From: Robert Olsson <Robert.Olsson@xxxxxxxxxxx>
Date: Sun, 3 Oct 2004 23:07:00 +0200
Cc: Linux Netdev List <netdev@xxxxxxxxxxx>, David Miller <davem@xxxxxxxxxxxxx>, Robert Olsson <Robert.Olsson@xxxxxxxxxxx>, Stephen Hemminger <shemminger@xxxxxxxx>
In-reply-to: <20041002162120.GT27499@sunbeam.de.gnumonks.org>
References: <20041002162120.GT27499@sunbeam.de.gnumonks.org>
Sender: netdev-bounce@xxxxxxxxxxx
Harald Welte writes:

 > I've finished my work on 'lnstat'.  The current development version is
 > available from
 >      http://svn.gnumonks.org/cgi-bin/viewcvs.cgi/trunk/lnstat/

 I will get a useful tool...

 > Robert: I hope you're fine with the new lnstat tool replacing rtstat.


 I just tried "compatibility mode". Something like patch below makes it closer 
 to old rtstat. Did the last two fields get switched?

 Cheers.
                                                        --ro



--- lnstat.c.orig       2004-10-03 21:01:50.518607296 +0200
+++ lnstat.c    2004-10-03 22:38:25.846513976 +0200
@@ -54,7 +54,7 @@
                gettimeofday(&lf->last_read, NULL);
 
                for (j = 0; j < lf->num_fields; j++)
-                       lf->fields[j].values[i] += strtoul(ptr, &ptr, 16);
+                       lf->fields[j].values[i] = strtoul(ptr, &ptr, 16);
        }
        return num_lines;
 }
@@ -79,6 +79,7 @@
        struct lnstat_file *lf;
        char buf[FGETS_BUF_SIZE];
        struct timeval tv;
+       time_t told;
 
        gettimeofday(&tv, NULL);
 
@@ -92,15 +93,22 @@
                                /* skip first line */
                                fgets(buf, sizeof(buf)-1, lf->fp);
                        }
+                       told = lf->last_read.tv_sec;
                        scan_lines(lf, 1);
 
                        for (i = 0, lfi = &lf->fields[i]; 
                             i < lf->num_fields; i++, lfi = &lf->fields[i]) {
                                if (i == 0)
                                        lfi->result = lfi->values[1];
-                               else
+                               else {
+
                                        lfi->result = 
(lfi->values[1]-lfi->values[0])
-                                                       / lf->interval.tv_sec;
+
+                                         / ( lf->last_read.tv_sec -told);
+                                       
+                                       /* Save current to next diff */
+                                       lfi->values[0] = lfi->values[1];
+                               }
                        }
 
                        rewind(lf->fp);
 

<Prev in Thread] Current Thread [Next in Thread>