diff options
author | brian <brian@cvs.openbsd.org> | 1997-11-23 20:27:41 +0000 |
---|---|---|
committer | brian <brian@cvs.openbsd.org> | 1997-11-23 20:27:41 +0000 |
commit | 2cb79b0580b6b5629530c4d142a73a9a654f282f (patch) | |
tree | 8b062ff5e99e22ec2c95145149e22b58b7fc0e22 /usr.sbin/ppp/throughput.c | |
parent | 518c0071f44dfb9716d70e0d8781585db7a3bd7d (diff) |
Import version 1.5 of ppp.
<sales>
This is a user-level ppp implementation that uses the
tun driver. It was originally created by a Japanese
ISP. It's now piled with features. Check the man pages
for details.
</sales>
The sources are identical to the ones in FreeBSD, except
for the Makefile.
IP aliasing (NAT) is disabled, and can be enabled by simply
doing a ``make install'' of libalias, then rebuilding
ppp. I'll create libalias as a port soon.
Diffstat (limited to 'usr.sbin/ppp/throughput.c')
-rw-r--r-- | usr.sbin/ppp/throughput.c | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/usr.sbin/ppp/throughput.c b/usr.sbin/ppp/throughput.c new file mode 100644 index 00000000000..da0311fb2d9 --- /dev/null +++ b/usr.sbin/ppp/throughput.c @@ -0,0 +1,127 @@ +/* + * $Id: throughput.c,v 1.1 1997/11/23 20:27:37 brian Exp $ + */ + +#include <sys/param.h> + +#include <stdio.h> +#include <time.h> +#include <netinet/in.h> + +#include "command.h" +#include "mbuf.h" +#include "log.h" +#include "timer.h" +#include "throughput.h" +#include "defs.h" +#include "loadalias.h" +#include "vars.h" + +void +throughput_init(struct pppThroughput *t) +{ + int f; + + t->OctetsIn = t->OctetsOut = 0; + for (f = 0; f < SAMPLE_PERIOD; f++) + t->SampleOctets[f] = 0; + t->OctetsPerSecond = t->BestOctetsPerSecond = t->nSample = 0; + throughput_stop(t); +} + +void +throughput_disp(struct pppThroughput *t, FILE *f) +{ + int secs_up; + + secs_up = time(NULL) - t->uptime; + fprintf(f, "Connect time: %d secs\n", secs_up); + if (secs_up == 0) + secs_up = 1; + fprintf(f, "%ld octets in, %ld octets out\n", t->OctetsIn, t->OctetsOut); + if (Enabled(ConfThroughput)) { + fprintf(f, " overall %5ld bytes/sec\n", + (t->OctetsIn+t->OctetsOut)/secs_up); + fprintf(f, " currently %5d bytes/sec\n", t->OctetsPerSecond); + fprintf(f, " peak %5d bytes/sec\n", t->BestOctetsPerSecond); + } else + fprintf(f, "Overall %ld bytes/sec\n", (t->OctetsIn+t->OctetsOut)/secs_up); +} + + +void +throughput_log(struct pppThroughput *t, int level, const char *title) +{ + if (t->uptime) { + int secs_up; + + secs_up = time(NULL) - t->uptime; + if (title) + LogPrintf(level, "%s: Connect time: %d secs: %ld octets in, %ld octets" + " out\n", title, secs_up, t->OctetsIn, t->OctetsOut); + else + LogPrintf(level, "Connect time: %d secs: %ld octets in, %ld octets out\n", + secs_up, t->OctetsIn, t->OctetsOut); + if (secs_up == 0) + secs_up = 1; + if (Enabled(ConfThroughput)) + LogPrintf(level, " total %ld bytes/sec, peak %d bytes/sec\n", + (t->OctetsIn+t->OctetsOut)/secs_up, t->BestOctetsPerSecond); + else + LogPrintf(level, " total %ld bytes/sec\n", + (t->OctetsIn+t->OctetsOut)/secs_up); + } +} + +static void +throughput_sampler(void *v) +{ + struct pppThroughput *t = (struct pppThroughput *)v; + u_long old; + + StopTimer(&t->Timer); + t->Timer.state = TIMER_STOPPED; + + old = t->SampleOctets[t->nSample]; + t->SampleOctets[t->nSample] = t->OctetsIn + t->OctetsOut; + t->OctetsPerSecond = (t->SampleOctets[t->nSample] - old) / SAMPLE_PERIOD; + if (t->BestOctetsPerSecond < t->OctetsPerSecond) + t->BestOctetsPerSecond = t->OctetsPerSecond; + if (++t->nSample == SAMPLE_PERIOD) + t->nSample = 0; + + StartTimer(&t->Timer); +} + +void +throughput_start(struct pppThroughput *t) +{ + throughput_init(t); + time(&t->uptime); + if (Enabled(ConfThroughput)) { + t->Timer.state = TIMER_STOPPED; + t->Timer.load = SECTICKS; + t->Timer.func = throughput_sampler; + t->Timer.arg = t; + StartTimer(&t->Timer); + } +} + +void +throughput_stop(struct pppThroughput *t) +{ + if (Enabled(ConfThroughput)) + StopTimer(&t->Timer); +} + +void +throughput_addin(struct pppThroughput *t, int n) +{ + t->OctetsIn += n; +} + +void +throughput_addout(struct pppThroughput *t, int n) +{ + t->OctetsOut += n; +} |