]> git.ozlabs.org Git - ppp.git/blobdiff - pppstats/pppstats.c
added hide-password option
[ppp.git] / pppstats / pppstats.c
index 3388f7978a12acbf841c28a7ccad1bc802c1ada5..78cc3701d905bf30fcb1fa6eb9c97f0cd7afbb34 100644 (file)
@@ -32,7 +32,7 @@
  */
 
 #ifndef lint
-static char rcsid[] = "$Id: pppstats.c,v 1.16 1996/09/14 05:13:25 paulus Exp $";
+static char rcsid[] = "$Id: pppstats.c,v 1.24 1999/01/20 00:02:21 paulus Exp $";
 #endif
 
 #include <stdio.h>
@@ -47,15 +47,33 @@ static char rcsid[] = "$Id: pppstats.c,v 1.16 1996/09/14 05:13:25 paulus Exp $";
 #include <sys/param.h>
 #include <sys/types.h>
 #include <sys/ioctl.h>
-#include <net/ppp_defs.h>
 
 #ifndef STREAMS
+#if defined(_linux_) && defined(__powerpc__)
+/* kludge alert! */
+#undef __GLIBC__
+#endif
 #include <sys/socket.h>                /* *BSD, Linux, NeXT, Ultrix etc. */
+#ifndef _linux_
 #include <net/if.h>
+#include <net/ppp_defs.h>
 #include <net/if_ppp.h>
+#else
+/* Linux */
+#if __GLIBC__ >= 2
+#include <asm/types.h>         /* glibc 2 conflicts with linux/types.h */
+#include <net/if.h>
+#else
+#include <linux/types.h>
+#include <linux/if.h>
+#endif
+#include <linux/ppp_defs.h>
+#include <linux/if_ppp.h>
+#endif /* _linux_ */
 
 #else  /* STREAMS */
 #include <sys/stropts.h>       /* SVR4, Solaris 2, SunOS 4, OSF/1, etc. */
+#include <net/ppp_defs.h>
 #include <net/pppio.h>
 
 #endif /* STREAMS */
@@ -71,12 +89,20 @@ int signalled;              /* set if alarm goes off "early" */
 char   *progname;
 char   *interface;
 
-#if defined(SUNOS4)
+#if defined(SUNOS4) || defined(ULTRIX) || defined(NeXT)
 extern int optind;
 extern char *optarg;
 #endif
 
-void
+static void usage __P((void));
+static void catchalarm __P((int));
+static void get_ppp_stats __P((struct ppp_stats *));
+static void get_ppp_cstats __P((struct ppp_comp_stats *));
+static void intpr __P((void));
+
+int main __P((int, char *argv[]));
+
+static void
 usage()
 {
     fprintf(stderr, "Usage: %s [-a|-d] [-v|-r|-z] [-c count] [-w wait] [interface]\n",
@@ -88,7 +114,7 @@ usage()
  * Called if an interval expires before intpr has completed a loop.
  * Sets a flag to not wait for the alarm.
  */
-void
+static void
 catchalarm(arg)
     int arg;
 {
@@ -97,7 +123,7 @@ catchalarm(arg)
 
 
 #ifndef STREAMS
-void
+static void
 get_ppp_stats(curp)
     struct ppp_stats *curp;
 {
@@ -123,7 +149,7 @@ get_ppp_stats(curp)
     *curp = req.stats;
 }
 
-void
+static void
 get_ppp_cstats(csp)
     struct ppp_comp_stats *csp;
 {
@@ -152,17 +178,25 @@ get_ppp_cstats(csp)
     }
 
 #ifdef _linux_
+    if (creq.stats.c.bytes_out == 0) {
+       creq.stats.c.bytes_out = creq.stats.c.comp_bytes + creq.stats.c.inc_bytes;
+       creq.stats.c.in_count = creq.stats.c.unc_bytes;
+    }
     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;
+       creq.stats.c.ratio = 256.0 * creq.stats.c.in_count /
+                            creq.stats.c.bytes_out;
 
+    if (creq.stats.d.bytes_out == 0) {
+       creq.stats.d.bytes_out = creq.stats.d.comp_bytes + creq.stats.d.inc_bytes;
+       creq.stats.d.in_count = creq.stats.d.unc_bytes;
+    }
     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;
+       creq.stats.d.ratio = 256.0 * creq.stats.d.in_count /
+                            creq.stats.d.bytes_out;
 #endif
 
     *csp = creq.stats;
@@ -189,7 +223,7 @@ strioctl(fd, cmd, ptr, ilen, olen)
     return 0;
 }
 
-void
+static void
 get_ppp_stats(curp)
     struct ppp_stats *curp;
 {
@@ -203,7 +237,7 @@ get_ppp_stats(curp)
     }
 }
 
-void
+static void
 get_ppp_cstats(csp)
     struct ppp_comp_stats *csp;
 {
@@ -238,7 +272,7 @@ get_ppp_cstats(csp)
  * collected over that interval.  Assumes that interval is non-zero.
  * First line printed is cumulative.
  */
-void
+static void
 intpr()
 {
     register int line = 0;
@@ -297,26 +331,26 @@ intpr()
                       W(d.comp_packets),
                       KBPS(W(d.inc_bytes)),
                       W(d.inc_packets),
-                      ccs.d.ratio * 256.0);
+                      ccs.d.ratio / 256.0);
                printf(" | %8.3f %6u %8.3f %6u %6.2f",
                       KBPS(W(c.comp_bytes)),
                       W(c.comp_packets),
                       KBPS(W(c.inc_bytes)),
                       W(c.inc_packets),
-                      ccs.c.ratio * 256.0);
+                      ccs.c.ratio / 256.0);
            } else {
                printf("%8u %6u %8u %6u %6.2f",
                       W(d.comp_bytes),
                       W(d.comp_packets),
                       W(d.inc_bytes),
                       W(d.inc_packets),
-                      ccs.d.ratio * 256.0);
+                      ccs.d.ratio / 256.0);
                printf(" | %8u %6u %8u %6u %6.2f",
                       W(c.comp_bytes),
                       W(c.comp_packets),
                       W(c.inc_bytes),
                       W(c.inc_packets),
-                      ccs.c.ratio * 256.0);
+                      ccs.c.ratio / 256.0);
            }
        
        } else {
@@ -348,7 +382,6 @@ intpr()
            else
                printf("  | %8u", V(p.ppp_obytes));
            printf(" %6u %6u",
-                  V(p.ppp_obytes),
                   V(p.ppp_opackets),
                   V(vj.vjs_compressed));
            if (!rflag)