X-Git-Url: https://git.ozlabs.org/?p=ppp.git;a=blobdiff_plain;f=pppstats%2Fpppstats.c;h=9863f32ced1fa4755f99f01564f1b041eb2a0656;hp=1a6eb9d603f924eac444a2353359dbeb497d660c;hb=41e270e1e197f693b019d8a9e54b9057c33a4108;hpb=47be928f50accd8136c6d0222cf6c14d1c8ab007 diff --git a/pppstats/pppstats.c b/pppstats/pppstats.c index 1a6eb9d..9863f32 100644 --- a/pppstats/pppstats.c +++ b/pppstats/pppstats.c @@ -6,6 +6,7 @@ * -v Verbose mode for default display * -r Show compression ratio in default display * -c Show Compression statistics instead of default display + * -a Do not show relative values. Show absolute values at all times. * * * History: @@ -36,7 +37,7 @@ */ #ifndef lint -static char rcsid[] = "$Id: pppstats.c,v 1.10 1995/06/30 01:58:25 paulus Exp $"; +static char rcsid[] = "$Id: pppstats.c,v 1.12 1995/12/11 05:18:59 paulus Exp $"; #endif #include @@ -69,7 +70,7 @@ static char rcsid[] = "$Id: pppstats.c,v 1.10 1995/06/30 01:58:25 paulus Exp $"; #endif #endif -int vflag, rflag, cflag; +int vflag, rflag, cflag, aflag; unsigned interval = 5; int unit; int s; /* socket file descriptor */ @@ -84,6 +85,11 @@ main(argc, argv) { --argc; ++argv; while (argc > 0) { + if (strcmp(argv[0], "-a") == 0) { + ++aflag; + ++argv, --argc; + continue; + } if (strcmp(argv[0], "-v") == 0) { ++vflag; ++argv, --argc; @@ -268,8 +274,11 @@ intpr() sigprocmask(SIG_SETMASK, &oldmask, NULL); signalled = 0; (void)alarm(interval); - old = cur; - ocs = ccs; + + if (aflag==0) { + old = cur; + ocs = ccs; + } } } @@ -289,8 +298,10 @@ get_ppp_stats(curp) { struct ifpppstatsreq req; + memset (&req, 0, sizeof (req)); + #ifdef _linux_ - req.stats_ptr = &req.stats; + req.stats_ptr = (caddr_t) &req.stats; #undef ifr_name #define ifr_name ifr__name #endif @@ -311,8 +322,10 @@ get_ppp_cstats(csp) { struct ifpppcstatsreq creq; + memset (&creq, 0, sizeof (creq)); + #ifdef _linux_ - creq.stats_ptr = &creq.stats; + creq.stats_ptr = (caddr_t) &creq.stats; #undef ifr_name #define ifr_name ifr__name #endif @@ -329,6 +342,21 @@ get_ppp_cstats(csp) exit(1); } } + +#ifdef _linux_ + if (creq.stats.c.bytes_out == 0) + creq.stats.c.ratio = 0.0; + else + creq.stats.c.ratio = (double) creq.stats.c.in_count / + (double) creq.stats.c.bytes_out; + + if (creq.stats.d.bytes_out == 0) + creq.stats.d.ratio = 0.0; + else + creq.stats.d.ratio = (double) creq.stats.d.in_count / + (double) creq.stats.d.bytes_out; +#endif + *csp = creq.stats; }