From a5f206585eabe1ff5a76f0b57baecfec1c4ee362 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Wed, 11 Feb 2004 22:26:14 +0000 Subject: - remove old struct stat - add new struct ifdata --- ifstat.c | 13 +++++++++++-- main.c | 25 +++++++++++++------------ main.h | 26 +++++++++++++++++--------- output.c | 15 +++++++++++---- 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 -// #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(); } -- cgit v1.2.3