summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2004-02-11 22:26:14 +0000
committerDimitri Sokolyuk <demon@dim13.org>2004-02-11 22:26:14 +0000
commita5f206585eabe1ff5a76f0b57baecfec1c4ee362 (patch)
tree9e1a375839e97e45143942d85a3edd3beed373fe
parent0f1d6a7b687909c94a81957171e876814a716462 (diff)
- remove old struct stat
- add new struct ifdata
-rw-r--r--ifstat.c13
-rw-r--r--main.c25
-rw-r--r--main.h26
-rw-r--r--output.c15
4 files changed, 52 insertions, 27 deletions
diff --git a/ifstat.c b/ifstat.c
index 488609d..3ecc60d 100644
--- a/ifstat.c
+++ b/ifstat.c
@@ -57,6 +57,7 @@ int if_init(char *ifname) {
if (addr == NULL)
error("interface not found");
+
}
int if_stat(void) {
@@ -64,8 +65,16 @@ int if_stat(void) {
if (kvm_read(kvmd, (unsigned long)addr, &ifnet, sizeof(ifnet)) != sizeof(ifnet))
error(kvm_geterr(kvmd));
- curr.ib = ifnet.if_ibytes;
- curr.ob = ifnet.if_obytes;
+
+ ifdata.xname = ifnet.if_xname;
+ ifdata.baudrate = ifnet.if_baudrate;
+ ifdata.ipackets = ifnet.if_ipackets;
+ ifdata.ierrors = ifnet.if_ierrors;
+ ifdata.opackets = ifnet.if_opackets;
+ ifdata.oerrors = ifnet.if_oerrors;
+ ifdata.collisions = ifnet.if_collisions;
+ ifdata.ibytes = ifnet.if_ibytes;
+ ifdata.obytes = ifnet.if_obytes;
}
int if_fini(void) {
diff --git a/main.c b/main.c
index 91377f1..9750e10 100644
--- a/main.c
+++ b/main.c
@@ -22,8 +22,14 @@
// extern char *__progname;
int main(int argc, char **argv) {
+/*
struct stat last;
struct stat diff;
+*/
+ extern struct ifdata ifdata;
+ struct ifdata last;
+ struct ifdata diff;
+
char *arg;
if(argv[1])
@@ -33,24 +39,19 @@ int main(int argc, char **argv) {
initscr();
-
-// if_init(argv[1]?argv[1]:"xl0");
if_init(arg);
if_stat();
- last.ib = curr.ib;
- last.ob = curr.ob;
+ last = ifdata;
+
while(1) {
if_stat();
- diff.ib = curr.ib - last.ib;
- diff.ob = curr.ob - last.ob;
- out(diff.ib, diff.ob);
-
- last.ib = curr.ib;
- last.ob = curr.ob;
- usleep(1000 * 1000);
+ diff.ibytes = ifdata.ibytes - last.ibytes;
+ diff.obytes = ifdata.obytes - last.obytes;
+ out(&diff);
+ last = ifdata;
+ usleep(1000000); /* 1s */
};
if_fini();
-
endwin();
exit(0);
}
diff --git a/main.h b/main.h
index 085f8da..896dbfe 100644
--- a/main.h
+++ b/main.h
@@ -17,19 +17,27 @@
#define kB 1024
#define MB (kB*1024)
+// #define IFNAMSIZ 16
extern char *__progname;
+struct ifdata {
+ char *xname;
+ u_long baudrate;
+ u_long ipackets;
+ u_long ierrors;
+ u_long opackets;
+ u_long oerrors;
+ u_long collisions;
+ u_long ibytes;
+ u_long obytes;
+};
+
+struct ifdata ifdata;
+
int if_init(char *);
int if_stat(void);
int if_fini(void);
-struct stat {
- long long ib;
- long long ob;
-};
-
-struct stat curr;
-
-int out(long long, long long);
-int error(char *); \ No newline at end of file
+int out(struct ifdata *);
+int error(char *);
diff --git a/output.c b/output.c
index e767e2f..8b4faee 100644
--- a/output.c
+++ b/output.c
@@ -16,12 +16,19 @@
*/
#include <curses.h>
-// #include "main.h"
+#include "main.h"
+
+int out(struct ifdata *diff) {
+ extern struct ifdata ifdata;
-int out(long long ib, long long ob) {
move(0,0);
// clear();
- printw("I: %ld\n", ib);
- printw("O: %ld\n", ob);
+
+ printw("I: %ld\n", diff->ibytes);
+ printw("O: %ld\n", diff->obytes);
+
+ printw("I: %ld\n", ifdata.ibytes);
+ printw("O: %ld\n", ifdata.obytes);
+
refresh();
}