summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Price <steve@FreeBSD.org>1999-01-26 02:56:30 +0000
committerSteve Price <steve@FreeBSD.org>1999-01-26 02:56:30 +0000
commit1265dc060ebbf21ab03bd25a10d8b84305e77652 (patch)
treea6e3c4e0d5898c60f4c8a64e8f3d992444cda284
parentFix to allow commandline options. (diff)
No longer borken for ELF. Honor PREFIX and CFLAGS. Fix build on alpha.
Use X11BASE to find the X11R6 directory. Give rid up a bunch of extra cruft in patch-aa and split into one patch per file.
Notes
Notes: svn path=/head/; revision=16329
-rw-r--r--net/pppload/Makefile4
-rw-r--r--net/pppload/files/patch-aa1123
-rw-r--r--net/pppload/files/patch-ab38
-rw-r--r--net/pppload/files/patch-ac27
-rw-r--r--net/pppload/files/patch-ad115
-rw-r--r--net/pppload/files/patch-ae124
-rw-r--r--net/pppload/files/patch-af49
-rw-r--r--net/pppload/files/patch-ag64
8 files changed, 437 insertions, 1107 deletions
diff --git a/net/pppload/Makefile b/net/pppload/Makefile
index 0969b47378ea..fbc96ef2ea0e 100644
--- a/net/pppload/Makefile
+++ b/net/pppload/Makefile
@@ -3,7 +3,7 @@
# Date created: 30 January 1998
# Whom: Sean Cole <scole@aracnet.com>
#
-# $Id: Makefile,v 1.7 1998/10/13 23:53:28 jseger Exp $
+# $Id: Makefile,v 1.8 1998/11/21 07:27:39 steve Exp $
#
DISTNAME= pppload-1.0
@@ -12,8 +12,6 @@ MASTER_SITES= http://sunsite.unc.edu/pub/Linux/system/network/serial/ppp/
MAINTAINER= ports@FreeBSD.ORG
-BROKEN_ELF= yes
-
USE_QT= yes
USE_GMAKE= yes
diff --git a/net/pppload/files/patch-aa b/net/pppload/files/patch-aa
index d7f19274a824..a1cd3394e64d 100644
--- a/net/pppload/files/patch-aa
+++ b/net/pppload/files/patch-aa
@@ -1,33 +1,33 @@
-diff -u --new-file pppload-1.0/Makefile ./Makefile
---- pppload-1.0/Makefile Wed Sep 11 19:49:33 1996
-+++ ./Makefile Sat Jan 31 16:54:54 1998
-@@ -2,20 +2,20 @@
+--- Makefile.orig Wed Sep 11 21:49:33 1996
++++ Makefile Sun Jan 24 16:50:01 1999
+@@ -1,21 +1,19 @@
+ ####### Installation
RM=rm -f
LN=ln -sf
- INSTALL=install
+-INSTALL=install
-PREFIX=/usr
-+PREFIX=/usr/local
++INSTALL=install -c
++PREFIX?=/usr/local
BINDIR=$(PREFIX)/bin
MANDIR=$(PREFIX)/man/man1
####### Directories
-QTDIR = /usr/lib/qt
-+QTDIR = /usr/X11R6/include/X11 #/usr/lib/qt
- BASEDIR = $(QTDIR)
+-BASEDIR = $(QTDIR)
-INCDIR = $(BASEDIR)/include
-LIBDIR = $(BASEDIR)/lib
-+INCDIR = /usr/X11R6/include/X11/qt #$(BASEDIR)/include
-+LIBDIR = /usr/X11R6/lib #$(BASEDIR)/lib
++INCDIR = $(X11BASE)/include/X11/qt
++LIBDIR = $(X11BASE)/lib
####### Compiler
-CFLAGS = -pipe -O2 -m486 -Wall
-+CFLAGS = -pipe -O2 -Wall
++CFLAGS ?= -pipe -O -Wall
LFLAGS = -L$(LIBDIR) -lqt
LEXTRA =
CC = g++
-@@ -75,7 +75,7 @@
+@@ -75,7 +73,7 @@
doc:
../h2html-1.0/h2html $(HEADERS)
@@ -36,10 +36,13 @@ diff -u --new-file pppload-1.0/Makefile ./Makefile
srctar:
make veryclean
make doc
-@@ -107,70 +107,90 @@
-
- # DO NOT DELETE THIS LINE -- make depend depends on it.
-
+@@ -104,73 +102,3 @@
+
+ mMainWindow.C: MainWindow.H
+ moc -o mMainWindow.C MainWindow.H
+-
+-# DO NOT DELETE THIS LINE -- make depend depends on it.
+-
-pppload.o: /usr/lib/qt/include/qapp.h /usr/lib/qt/include/qwidget.h
-pppload.o: /usr/lib/qt/include/qwindefs.h /usr/lib/qt/include/qobjdefs.h
-pppload.o: /usr/lib/qt/include/qglobal.h /usr/lib/qt/include/qobject.h
@@ -107,1091 +110,3 @@ diff -u --new-file pppload-1.0/Makefile ./Makefile
-Options.o: /usr/include/string.h /usr/include/features.h
-Options.o: /usr/include/sys/cdefs.h
-Options.o: /usr/lib/gcc-lib/i486-linux/2.7.2/include/stddef.h
-+pppload.o: /usr/X11R6/include/X11/qt/qapp.h
-+pppload.o: /usr/X11R6/include/X11/qt/qwidget.h
-+pppload.o: /usr/X11R6/include/X11/qt/qwindefs.h
-+pppload.o: /usr/X11R6/include/X11/qt/qobjdefs.h
-+pppload.o: /usr/X11R6/include/X11/qt/qglobal.h
-+pppload.o: /usr/X11R6/include/X11/qt/qobject.h
-+pppload.o: /usr/X11R6/include/X11/qt/qstring.h
-+pppload.o: /usr/X11R6/include/X11/qt/qarray.h
-+pppload.o: /usr/X11R6/include/X11/qt/qgarray.h
-+pppload.o: /usr/X11R6/include/X11/qt/qshared.h
-+pppload.o: /usr/X11R6/include/X11/qt/qgeneric.h /usr/include/string.h
-+pppload.o: /usr/include/machine/ansi.h /usr/include/sys/cdefs.h
-+pppload.o: /usr/X11R6/include/X11/qt/qevent.h
-+pppload.o: /usr/X11R6/include/X11/qt/qrect.h
-+pppload.o: /usr/X11R6/include/X11/qt/qsize.h
-+pppload.o: /usr/X11R6/include/X11/qt/qpoint.h
-+pppload.o: /usr/X11R6/include/X11/qt/qpaintd.h
-+pppload.o: /usr/X11R6/include/X11/qt/qpalette.h
-+pppload.o: /usr/X11R6/include/X11/qt/qcolor.h
-+pppload.o: /usr/X11R6/include/X11/qt/qcursor.h
-+pppload.o: /usr/X11R6/include/X11/qt/qfont.h
-+pppload.o: /usr/X11R6/include/X11/qt/qfontmet.h
-+pppload.o: /usr/X11R6/include/X11/qt/qfontinf.h PPPStats.H MainWindow.H
-+pppload.o: /usr/X11R6/include/X11/qt/qpixmap.h Options.H
-+PPPStats.o: /usr/include/stdlib.h /usr/include/machine/ansi.h
-+PPPStats.o: /usr/include/machine/types.h /usr/include/sys/cdefs.h
-+PPPStats.o: /usr/include/stdio.h /usr/include/sys/types.h
-+PPPStats.o: /usr/include/machine/endian.h /usr/include/sys/select.h
-+PPPStats.o: /usr/include/sys/ioctl.h /usr/include/sys/ttycom.h
-+PPPStats.o: /usr/include/sys/ioccom.h /usr/include/sys/filio.h
-+PPPStats.o: /usr/include/sys/sockio.h /usr/include/sys/socket.h
-+PPPStats.o: /usr/include/sys/time.h /usr/include/time.h /usr/include/net/if.h
-+PPPStats.o: /usr/include/net/if_ppp.h /usr/include/net/ppp_defs.h PPPStats.H
-+PPPStats.o: /usr/X11R6/include/X11/qt/qobject.h
-+PPPStats.o: /usr/X11R6/include/X11/qt/qobjdefs.h
-+PPPStats.o: /usr/X11R6/include/X11/qt/qglobal.h
-+PPPStats.o: /usr/X11R6/include/X11/qt/qstring.h
-+PPPStats.o: /usr/X11R6/include/X11/qt/qarray.h
-+PPPStats.o: /usr/X11R6/include/X11/qt/qgarray.h
-+PPPStats.o: /usr/X11R6/include/X11/qt/qshared.h
-+PPPStats.o: /usr/X11R6/include/X11/qt/qgeneric.h /usr/include/string.h
-+PPPStats.o: /usr/X11R6/include/X11/qt/qevent.h
-+PPPStats.o: /usr/X11R6/include/X11/qt/qwindefs.h
-+PPPStats.o: /usr/X11R6/include/X11/qt/qrect.h
-+PPPStats.o: /usr/X11R6/include/X11/qt/qsize.h
-+PPPStats.o: /usr/X11R6/include/X11/qt/qpoint.h Options.H
-+PPPStats.o: /usr/X11R6/include/X11/qt/qcolor.h
-+MainWindow.o: /usr/X11R6/include/X11/qt/qpainter.h
-+MainWindow.o: /usr/X11R6/include/X11/qt/qpaintd.h
-+MainWindow.o: /usr/X11R6/include/X11/qt/qwindefs.h
-+MainWindow.o: /usr/X11R6/include/X11/qt/qobjdefs.h
-+MainWindow.o: /usr/X11R6/include/X11/qt/qglobal.h
-+MainWindow.o: /usr/X11R6/include/X11/qt/qrect.h
-+MainWindow.o: /usr/X11R6/include/X11/qt/qsize.h
-+MainWindow.o: /usr/X11R6/include/X11/qt/qpoint.h
-+MainWindow.o: /usr/X11R6/include/X11/qt/qcolor.h
-+MainWindow.o: /usr/X11R6/include/X11/qt/qfontmet.h
-+MainWindow.o: /usr/X11R6/include/X11/qt/qfont.h
-+MainWindow.o: /usr/X11R6/include/X11/qt/qstring.h
-+MainWindow.o: /usr/X11R6/include/X11/qt/qarray.h
-+MainWindow.o: /usr/X11R6/include/X11/qt/qgarray.h
-+MainWindow.o: /usr/X11R6/include/X11/qt/qshared.h
-+MainWindow.o: /usr/X11R6/include/X11/qt/qgeneric.h /usr/include/string.h
-+MainWindow.o: /usr/include/machine/ansi.h /usr/include/sys/cdefs.h
-+MainWindow.o: /usr/X11R6/include/X11/qt/qfontinf.h
-+MainWindow.o: /usr/X11R6/include/X11/qt/qregion.h
-+MainWindow.o: /usr/X11R6/include/X11/qt/qpen.h
-+MainWindow.o: /usr/X11R6/include/X11/qt/qbrush.h
-+MainWindow.o: /usr/X11R6/include/X11/qt/qpntarry.h
-+MainWindow.o: /usr/X11R6/include/X11/qt/qwmatrix.h MainWindow.H
-+MainWindow.o: /usr/X11R6/include/X11/qt/qwidget.h
-+MainWindow.o: /usr/X11R6/include/X11/qt/qobject.h
-+MainWindow.o: /usr/X11R6/include/X11/qt/qevent.h
-+MainWindow.o: /usr/X11R6/include/X11/qt/qpalette.h
-+MainWindow.o: /usr/X11R6/include/X11/qt/qcursor.h
-+MainWindow.o: /usr/X11R6/include/X11/qt/qpixmap.h Options.H
-+Options.o: /usr/include/stdio.h /usr/include/sys/cdefs.h
-+Options.o: /usr/include/machine/ansi.h Options.H
-+Options.o: /usr/X11R6/include/X11/qt/qcolor.h
-+Options.o: /usr/X11R6/include/X11/qt/qwindefs.h
-+Options.o: /usr/X11R6/include/X11/qt/qobjdefs.h
-+Options.o: /usr/X11R6/include/X11/qt/qglobal.h
-+Options.o: /usr/X11R6/include/X11/qt/qstring.h
-+Options.o: /usr/X11R6/include/X11/qt/qarray.h
-+Options.o: /usr/X11R6/include/X11/qt/qgarray.h
-+Options.o: /usr/X11R6/include/X11/qt/qshared.h
-+Options.o: /usr/X11R6/include/X11/qt/qgeneric.h /usr/include/string.h
-diff -u --new-file pppload-1.0/Options.C ./Options.C
---- pppload-1.0/Options.C Tue Sep 10 16:55:27 1996
-+++ ./Options.C Fri Jan 30 20:01:38 1998
-@@ -24,7 +24,7 @@
- #include "Options.H"
-
- Options::Options( int argc, char* argv[] )
--: _divider( 512 ), _interval( 5 ), _link( 0 ), _period( 60 ), _retry( 60 ), _showTx( true ), _showRx( true ), _txColor( "forestgreen" ), _rxColor( "red" )
-+: _divider( 512 ), _interval( 5 ), _device("tun"), _link( 0 ), _period( 60 ), _retry( 60 ), _showTx( true ), _showRx( true ), _txColor( "forestgreen" ), _rxColor( "red" )
- {
- for ( int i = 1; i < argc; i++ ) {
- if ( !strcmp( argv[i], "-cmd" ) ) {
-@@ -33,6 +33,8 @@
- sscanf( argv[++i], "%d", &_divider );
- } else if ( !strcmp( argv[i], "-i" ) ) {
- sscanf( argv[++i], "%d", &_interval );
-+ } else if ( !strcmp( argv[i], "-device" ) ) {
-+ strcpy(_device,argv[++i]);
- } else if ( !strcmp( argv[i], "-link" ) ) {
- sscanf( argv[++i], "%d", &_link );
- } else if ( !strcmp( argv[i], "-p" ) ) {
-@@ -60,6 +62,7 @@
- fprintf( stderr, "-d n Horizontal divider spacing in bytes per second (default: %d).\n", divider() );
- fprintf( stderr, "-h Print this help.\n" );
- fprintf( stderr, "-i interval Set the polling interval to be 'interval' seconds (default: %d).\n", interval() );
-+ fprintf( stderr, "-device name Name of the device to monitor (default is tun). \n");
- fprintf( stderr, "-link link The PPP link number to monitor (default: %d).\n", link() );
- fprintf( stderr, "-p period Set the load averaging period to be 'period seconds (default: %d).\n", period() );
- fprintf( stderr, "-retry interval Time between retries when dialling PPP link (default: %d).\n", retry() );
-@@ -74,7 +77,7 @@
- fprintf( stderr, "pppload comes with ABSOLUTELY NO WARRANTY; for details see the LICENSE file.\n" );
- fprintf( stderr, "This is free software, and you are welcome to redistribute it\n" );
- fprintf( stderr, "under certain conditions; see the LICENSE file for details.\n" );
--
-+ fprintf( stderr, "Modified for FreeBSD 1998 \n");
- exit( 1 );
- }
- }
-diff -u --new-file pppload-1.0/Options.H ./Options.H
---- pppload-1.0/Options.H Tue Sep 10 16:53:36 1996
-+++ ./Options.H Thu Jan 29 21:12:01 1998
-@@ -31,6 +31,8 @@
- int _divider;
- //: Statistics polling interval in seconds.
- int _interval;
-+ //: Network device to monitor
-+ char _device[4];
- //: PPP link number to monitor.
- int _link;
- //: Load averaging interval in seconds.
-@@ -49,9 +51,12 @@
- //: Extract command line opotions from argc and argv.
- Options( int argc, char* argv[] );
-
-- //: Return the PPP command.
-- QString& cmd() { return _cmd; }
-+ //: Return the PPP command.
-+ QString& cmd() { return _cmd; }
-
-+ //: Return the name of the device being monitored
-+ char * device() { return _device; }
-+
- //: Return the spacing between horizontal dividers.
- int divider() { return _divider; }
-
-diff -u --new-file pppload-1.0/PPPStats.C ./PPPStats.C
---- pppload-1.0/PPPStats.C Wed Sep 11 19:50:13 1996
-+++ ./PPPStats.C Fri Jan 30 20:16:04 1998
-@@ -19,16 +19,22 @@
-
- extern "C" {
- #include <stdlib.h>
--#include <errno.h>
- #include <stdio.h>
-+#include <sys/types.h>
-+#include <sys/select.h>
- #include <sys/ioctl.h>
- #include <sys/socket.h>
--#include <net/if.h>
--#include <linux/ppp_defs.h>
-+#include <sys/time.h>
-+#include <net/if.h>
-+#include <net/if_ppp.h>
- }
-
- #include "PPPStats.H"
- #include "Options.H"
-+#include <iostream.h>
-+
-+void get_command(char *);
-+char command[200];
-
- typedef struct
- {
-@@ -53,38 +59,42 @@
- system( (const char*)options->cmd() );
- }
-
-- DclPPPInfo PPPInfo[1];
-- struct ifreq ifreq;
-+ DclPPPInfo PPPInfo[1];
-+ struct ifpppstatsreq ifreq;
- struct ppp_stats* PPPStat;
-- struct ppp_stats LastPPPStat[1];
--
-- memset (& ifreq, 0, sizeof (ifreq));
-- sprintf (ifreq.ifr_ifrn.ifrn_name, "ppp%d", options->link());
-+ struct ppp_stats LastPPPStat[1];
-
-- ifreq.ifr_ifru.ifru_data = (caddr_t) PPPInfo;
-+ memset (&ifreq, 0, sizeof (ifreq));
-+ sprintf (ifreq.ifr_name, "%s%d",(const char*)options->device(),options->link());
-+
- PPPStat = & PPPInfo->stats;
- memset (LastPPPStat, 0, sizeof (LastPPPStat));
-
-- if ( (ioctl (_s, SIOCDEVPRIVATE, (caddr_t) & ifreq) < 0) ||
-- ( _isUp && ( PPPStat->p.ppp_ibytes < _rxTotal ) ) ||
-- ( !_isUp && ( PPPStat->p.ppp_ibytes == 0 ) )
-- ) {
-- if ( _isUp ) {
-- _isUp = false;
-- emit linkDown();
-- if ( options->cmd().length() ) {
-- _retryId = startTimer( options->retry() * 1000 );
-- system( (const char*)options->cmd() );
-- }
-- }
-- PPPStat->p.ppp_ibytes = 0;
-- PPPStat->p.ppp_obytes = 0;
-+ get_command(ifreq.ifr_name);
-+ FILE * fptr;
-+ fptr=popen(command,"r+");
-+ fscanf(fptr,"%u%u",&PPPStat->p.ppp_ibytes,&PPPStat->p.ppp_obytes);
-+ pclose(fptr);
-+
-+ if ( ( _isUp && ( PPPStat->p.ppp_ibytes < _rxTotal ) ) ||
-+ ( !_isUp && ( PPPStat->p.ppp_ibytes == 0 ))
-+ ) {
-+ if ( _isUp ) {
-+ _isUp = false;
-+ emit linkDown();
-+ if ( options->cmd().length() ) {
-+ _retryId = startTimer( options->retry() * 1000 );
-+ system( (const char*)options->cmd() );
-+ }
-+ }
-+ PPPStat->p.ppp_ibytes = 0;
-+ PPPStat->p.ppp_obytes = 0;
- } else if ( !_isUp ) {
-- _isUp = true;
-- killTimer( _retryId );
-- _retryId = -1;
-+ _isUp = true;
-+ killTimer( _retryId );
-+ _retryId = -1;
- }
--
-+
- unsigned int rxDelta = PPPStat->p.ppp_ibytes - _rxTotal;
- unsigned int txDelta = PPPStat->p.ppp_obytes - _txTotal;
- _rxTotal = PPPStat->p.ppp_ibytes;
-@@ -92,4 +102,17 @@
- if ( rxDelta == _rxTotal ) rxDelta = 0;
- if ( txDelta == _txTotal ) txDelta = 0;
- emit changeStats( rxDelta, txDelta, _rxTotal, _txTotal );
-+
-+}
-+
-+void get_command(char * interface) {
-+ /*"/usr/bin/netstat -b -I tun0 | /usr/bin/grep Link | awk '{print $(NF-4),$(NF-1)}' */
-+ const char * netstat_command ="/usr/bin/netstat -n -b -I ";
-+ const char * grep_command =" | /usr/bin/grep Link | /usr/bin/awk '{print $(NF-4),$(NF-1)}'";
-+ command[0]='\0';
-+ strcat(command,netstat_command);
-+ strcat(command,interface);
-+ strcat(command,grep_command);
- }
-+
-+
-diff -u --new-file pppload-1.0/PPPStats.C.ppp ./PPPStats.C.ppp
---- pppload-1.0/PPPStats.C.ppp Wed Dec 31 16:00:00 1969
-+++ ./PPPStats.C.ppp Wed Jan 28 18:27:30 1998
-@@ -0,0 +1,120 @@
-+// pppload - A PPP Load Monitor
-+// Copyright (C) 1996 Sean Vyain
-+// svyain@mail.tds.net
-+// smvyain@softart.com
-+//
-+// This program is free software; you can redistribute it and/or modify
-+// it under the terms of the GNU General Public License as published by
-+// the Free Software Foundation; either version 2 of the License, or
-+// (at your option) any later version.
-+//
-+// This program is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+// GNU General Public License for more details.
-+//
-+// You should have received a copy of the GNU General Public License
-+// along with this program; if not, write to the Free Software
-+// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+
-+extern "C" {
-+#include <stdlib.h>
-+#include <stdio.h>
-+#include <sys/types.h>
-+#include <sys/select.h>
-+#include <sys/ioctl.h>
-+#include <sys/socket.h>
-+#include <sys/time.h>
-+#include <net/if.h>
-+#include <net/if_ppp.h>
-+#include <net/if_var.h>
-+#include <net/if_tun.h>
-+}
-+
-+#include "PPPStats.H"
-+#include "Options.H"
-+#include <iostream.h>
-+
-+
-+typedef struct
-+{
-+ struct ppp_stats stats;
-+} DclPPPInfo;
-+
-+PPPStats::PPPStats()
-+: _rxTotal( 0 ), _txTotal( 0 ), _isUp( true ), _retryId( -1 )
-+{
-+ if ((_s = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
-+ perror("couldn't create IP socket");
-+ exit(1);
-+ }
-+
-+ startTimer( options->interval() * 1000 );
-+}
-+
-+void PPPStats::timerEvent( QTimerEvent* e )
-+{
-+ if ( e->timerId() == _retryId )
-+ {
-+ system( (const char*)options->cmd() );
-+ }
-+
-+ DclPPPInfo PPPInfo[1]; // what is this var for?
-+ struct ifpppstatsreq ifreq; // ifreq ifreq;
-+ struct ppp_stats* PPPStat;
-+ struct ppp_stats LastPPPStat[1]; // what is this var for?
-+
-+ memset (&ifreq, 0, sizeof (ifreq));
-+// sprintf (ifreq.ifr_ifrn.ifrn_name, "ppp%d", options->link());
-+ sprintf (ifreq.ifr_name, "tun%d", options->link());
-+
-+// ifreq.ifr_ifru.ifru_data = (caddr_t) PPPInfo;
-+
-+ PPPStat = & PPPInfo->stats;
-+ memset (LastPPPStat, 0, sizeof (LastPPPStat));
-+
-+
-+
-+// if ( (ioctl (_s, SIOCDEVPRIVATE, (caddr_t) & ifreq) < 0) ||
-+// ( _isUp && ( PPPStat->p.ppp_ibytes < _rxTotal ) ) ||
-+// ( !_isUp && ( PPPStat->p.ppp_ibytes == 0 ) )
-+ if ( (ioctl (_s, SIOCGPPPSTATS , &ifreq) < 0) ||
-+ ( _isUp && ( ifreq.stats.p.ppp_ibytes < _rxTotal ) ) ||
-+ ( !_isUp && ( ifreq.stats.p.ppp_ibytes == 0 ))
-+ ) {
-+ if ( _isUp ) {
-+ _isUp = false;
-+ emit linkDown();
-+ if ( options->cmd().length() ) {
-+ _retryId = startTimer( options->retry() * 1000 );
-+ system( (const char*)options->cmd() );
-+ }
-+ }
-+ PPPStat->p.ppp_ibytes = 0;
-+ PPPStat->p.ppp_obytes = 0;
-+ } else if ( !_isUp ) {
-+ _isUp = true;
-+ killTimer( _retryId );
-+ _retryId = -1;
-+ }
-+
-+ PPPStat->p.ppp_ibytes=ifreq.stats.p.ppp_ibytes;
-+ PPPStat->p.ppp_obytes=ifreq.stats.p.ppp_obytes;
-+
-+
-+cout<<ifreq.stats.p.ppp_ibytes<<" "<<ifreq.stats.p.ppp_ipackets<<" "
-+ <<ifreq.stats.p.ppp_ierrors<<" "<<ifreq.stats.p.ppp_obytes <<" "
-+ <<ifreq.stats.p.ppp_opackets<<" "<<ifreq.stats.p.ppp_oerrors<<endl
-+ <<PPPStat->p.ppp_ibytes<<" "<<PPPStat->p.ppp_ipackets<<" "
-+ <<PPPStat->p.ppp_ierrors<<" "<<PPPStat->p.ppp_obytes <<" "
-+ <<PPPStat->p.ppp_opackets<<" "<<PPPStat->p.ppp_oerrors<<endl;
-+ unsigned int rxDelta = PPPStat->p.ppp_ibytes - _rxTotal;
-+ unsigned int txDelta = PPPStat->p.ppp_obytes - _txTotal;
-+ _rxTotal = PPPStat->p.ppp_ibytes;
-+ _txTotal = PPPStat->p.ppp_obytes;
-+ if ( rxDelta == _rxTotal ) rxDelta = 0;
-+ if ( txDelta == _txTotal ) txDelta = 0;
-+ emit changeStats( rxDelta, txDelta, _rxTotal, _txTotal );
-+
-+}
-+
-diff -u --new-file pppload-1.0/README.freebsd ./README.freebsd
---- pppload-1.0/README.freebsd Wed Dec 31 16:00:00 1969
-+++ ./README.freebsd Fri Jan 30 20:14:36 1998
-@@ -0,0 +1,45 @@
-+PPPLoad is designed to display the current throughput of a particular
-+PPP link in a format that is similar to xload. Written by Sean Vyain.
-+
-+This is a FreeBSD port of the linux program called pppload, available at
-+http://sunsite.unc.edu/pub/Linux/system/network/serial/ppp/pppload-1.0.tar.gz
-+
-+Original program homepage at:
-+http://www.geocities.com/SiliconValley/Pines/1029/pppload.html
-+
-+I have modified the FreeBSD port to be able to show the throughput of
-+any network device that will work with netstat, e.g. tun, ppp, ed,
-+etc. I just wanted a program to nicely display throughput
-+statistics for the tun device.
-+
-+ Examples of usage:
-+For tun0 (tun is the default device,0 is the default link number):
-+% pppload &
-+
-+For first ne2000 clone:
-+% pppload -device ed -link 0 &
-+
-+for ppp2:
-+% pppload -device ppp -link 2 &
-+
-+BUGS
-+Command line is awkward with -device and -link.
-+
-+Can't detect whether the network device is up or not, so any command
-+line options like -cmd -percmd -retry probably don't work. This is
-+different that the original linux version.
-+
-+Keeps track of all packets network device has ever used, even if it
-+has gone down then up again. This is also different than the linux
-+version.
-+
-+Requires awk, grep, and netstat to get the data. Very short polling
-+time are definitely not recommended.
-+
-+Network interface names are limited to a total of 4 characters or less
-+at the moment, e.g. ppp0 ed3 ze1.
-+
-+
-+Documentation of this FreeBSD port is not complete.
-+
-+
-Common subdirectories: pppload-1.0/backup and ./backup
-diff -u --new-file pppload-1.0/patch ./patch
---- pppload-1.0/patch Wed Dec 31 16:00:00 1969
-+++ ./patch Sat Jan 31 16:54:56 1998
-@@ -0,0 +1,561 @@
-+diff -u --new-file pppload-1.0/Makefile ./Makefile
-+--- pppload-1.0/Makefile Wed Sep 11 19:49:33 1996
-++++ ./Makefile Sat Jan 31 16:54:54 1998
-+@@ -2,20 +2,20 @@
-+ RM=rm -f
-+ LN=ln -sf
-+ INSTALL=install
-+-PREFIX=/usr
-++PREFIX=/usr/local
-+ BINDIR=$(PREFIX)/bin
-+ MANDIR=$(PREFIX)/man/man1
-+
-+ ####### Directories
-+
-+-QTDIR = /usr/lib/qt
-++QTDIR = /usr/X11R6/include/X11 #/usr/lib/qt
-+ BASEDIR = $(QTDIR)
-+-INCDIR = $(BASEDIR)/include
-+-LIBDIR = $(BASEDIR)/lib
-++INCDIR = /usr/X11R6/include/X11/qt #$(BASEDIR)/include
-++LIBDIR = /usr/X11R6/lib #$(BASEDIR)/lib
-+
-+ ####### Compiler
-+
-+-CFLAGS = -pipe -O2 -m486 -Wall
-++CFLAGS = -pipe -O2 -Wall
-+ LFLAGS = -L$(LIBDIR) -lqt
-+ LEXTRA =
-+ CC = g++
-+@@ -75,7 +75,7 @@
-+
-+ doc:
-+ ../h2html-1.0/h2html $(HEADERS)
-+-
-++
-+ srctar:
-+ make veryclean
-+ make doc
-+@@ -90,8 +90,8 @@
-+ cd ..; tar -zcvf pppload-$(VERSION)-bin.tar.gz pppload-$(VERSION)
-+
-+ install:
-+- $(INSTALL) -s pppload $(BINDIR)
-+- $(INSTALL) pppload.1 $(MANDIR)
-++# $(INSTALL) -c pppload $(BINDIR)
-++# $(INSTALL) -c pppload.1 $(MANDIR)
-+
-+ uninstall:
-+ $(RM) $(BINDIR)/pppload
-+@@ -107,70 +107,90 @@
-+
-+ # DO NOT DELETE THIS LINE -- make depend depends on it.
-+
-+-pppload.o: /usr/lib/qt/include/qapp.h /usr/lib/qt/include/qwidget.h
-+-pppload.o: /usr/lib/qt/include/qwindefs.h /usr/lib/qt/include/qobjdefs.h
-+-pppload.o: /usr/lib/qt/include/qglobal.h /usr/lib/qt/include/qobject.h
-+-pppload.o: /usr/lib/qt/include/qstring.h /usr/lib/qt/include/qarray.h
-+-pppload.o: /usr/lib/qt/include/qgarray.h /usr/lib/qt/include/qshared.h
-+-pppload.o: /usr/lib/qt/include/qgeneric.h /usr/include/string.h
-+-pppload.o: /usr/include/features.h /usr/include/sys/cdefs.h
-+-pppload.o: /usr/lib/gcc-lib/i486-linux/2.7.2/include/stddef.h
-+-pppload.o: /usr/lib/qt/include/qevent.h /usr/lib/qt/include/qrect.h
-+-pppload.o: /usr/lib/qt/include/qsize.h /usr/lib/qt/include/qpoint.h
-+-pppload.o: /usr/lib/qt/include/qpaintd.h /usr/lib/qt/include/qpalette.h
-+-pppload.o: /usr/lib/qt/include/qcolor.h /usr/lib/qt/include/qcursor.h
-+-pppload.o: /usr/lib/qt/include/qfont.h /usr/lib/qt/include/qfontmet.h
-+-pppload.o: /usr/lib/qt/include/qfontinf.h PPPStats.H MainWindow.H
-+-pppload.o: /usr/lib/qt/include/qpixmap.h Options.H
-+-PPPStats.o: /usr/include/stdlib.h /usr/include/features.h
-+-PPPStats.o: /usr/include/sys/cdefs.h
-+-PPPStats.o: /usr/lib/gcc-lib/i486-linux/2.7.2/include/stddef.h
-+-PPPStats.o: /usr/include/errno.h /usr/include/linux/errno.h
-+-PPPStats.o: /usr/include/asm/errno.h /usr/include/alloca.h
-+-PPPStats.o: /usr/include/stdio.h /usr/include/libio.h
-+-PPPStats.o: /usr/include/_G_config.h /usr/include/sys/ioctl.h
-+-PPPStats.o: /usr/include/linux/ioctl.h /usr/include/asm/ioctl.h
-+-PPPStats.o: /usr/include/sys/termios.h /usr/include/sys/socketio.h
-+-PPPStats.o: /usr/include/linux/sockios.h /usr/include/asm/sockios.h
-+-PPPStats.o: /usr/include/sys/socket.h /usr/include/linux/socket.h
-+-PPPStats.o: /usr/include/asm/socket.h /usr/include/linux/uio.h
-+-PPPStats.o: /usr/include/sys/types.h /usr/include/linux/types.h
-+-PPPStats.o: /usr/include/linux/posix_types.h /usr/include/asm/posix_types.h
-+-PPPStats.o: /usr/include/asm/types.h /usr/include/sys/bitypes.h
-+-PPPStats.o: /usr/include/net/if.h /usr/include/linux/if.h
-+-PPPStats.o: /usr/include/linux/ppp_defs.h PPPStats.H
-+-PPPStats.o: /usr/lib/qt/include/qobject.h /usr/lib/qt/include/qobjdefs.h
-+-PPPStats.o: /usr/lib/qt/include/qglobal.h /usr/lib/qt/include/qstring.h
-+-PPPStats.o: /usr/lib/qt/include/qarray.h /usr/lib/qt/include/qgarray.h
-+-PPPStats.o: /usr/lib/qt/include/qshared.h /usr/lib/qt/include/qgeneric.h
-+-PPPStats.o: /usr/include/string.h /usr/lib/qt/include/qevent.h
-+-PPPStats.o: /usr/lib/qt/include/qwindefs.h /usr/lib/qt/include/qrect.h
-+-PPPStats.o: /usr/lib/qt/include/qsize.h /usr/lib/qt/include/qpoint.h
-+-PPPStats.o: Options.H /usr/lib/qt/include/qcolor.h
-+-MainWindow.o: /usr/lib/qt/include/qpainter.h /usr/lib/qt/include/qpaintd.h
-+-MainWindow.o: /usr/lib/qt/include/qwindefs.h /usr/lib/qt/include/qobjdefs.h
-+-MainWindow.o: /usr/lib/qt/include/qglobal.h /usr/lib/qt/include/qrect.h
-+-MainWindow.o: /usr/lib/qt/include/qsize.h /usr/lib/qt/include/qpoint.h
-+-MainWindow.o: /usr/lib/qt/include/qcolor.h /usr/lib/qt/include/qfontmet.h
-+-MainWindow.o: /usr/lib/qt/include/qfont.h /usr/lib/qt/include/qstring.h
-+-MainWindow.o: /usr/lib/qt/include/qarray.h /usr/lib/qt/include/qgarray.h
-+-MainWindow.o: /usr/lib/qt/include/qshared.h /usr/lib/qt/include/qgeneric.h
-+-MainWindow.o: /usr/include/string.h /usr/include/features.h
-+-MainWindow.o: /usr/include/sys/cdefs.h
-+-MainWindow.o: /usr/lib/gcc-lib/i486-linux/2.7.2/include/stddef.h
-+-MainWindow.o: /usr/lib/qt/include/qfontinf.h /usr/lib/qt/include/qregion.h
-+-MainWindow.o: /usr/lib/qt/include/qpen.h /usr/lib/qt/include/qbrush.h
-+-MainWindow.o: /usr/lib/qt/include/qpntarry.h /usr/lib/qt/include/qwmatrix.h
-+-MainWindow.o: MainWindow.H /usr/lib/qt/include/qwidget.h
-+-MainWindow.o: /usr/lib/qt/include/qobject.h /usr/lib/qt/include/qevent.h
-+-MainWindow.o: /usr/lib/qt/include/qpalette.h /usr/lib/qt/include/qcursor.h
-+-MainWindow.o: /usr/lib/qt/include/qpixmap.h Options.H
-+-Options.o: /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h
-+-Options.o: Options.H /usr/lib/qt/include/qcolor.h
-+-Options.o: /usr/lib/qt/include/qwindefs.h /usr/lib/qt/include/qobjdefs.h
-+-Options.o: /usr/lib/qt/include/qglobal.h /usr/lib/qt/include/qstring.h
-+-Options.o: /usr/lib/qt/include/qarray.h /usr/lib/qt/include/qgarray.h
-+-Options.o: /usr/lib/qt/include/qshared.h /usr/lib/qt/include/qgeneric.h
-+-Options.o: /usr/include/string.h /usr/include/features.h
-+-Options.o: /usr/include/sys/cdefs.h
-+-Options.o: /usr/lib/gcc-lib/i486-linux/2.7.2/include/stddef.h
-++pppload.o: /usr/X11R6/include/X11/qt/qapp.h
-++pppload.o: /usr/X11R6/include/X11/qt/qwidget.h
-++pppload.o: /usr/X11R6/include/X11/qt/qwindefs.h
-++pppload.o: /usr/X11R6/include/X11/qt/qobjdefs.h
-++pppload.o: /usr/X11R6/include/X11/qt/qglobal.h
-++pppload.o: /usr/X11R6/include/X11/qt/qobject.h
-++pppload.o: /usr/X11R6/include/X11/qt/qstring.h
-++pppload.o: /usr/X11R6/include/X11/qt/qarray.h
-++pppload.o: /usr/X11R6/include/X11/qt/qgarray.h
-++pppload.o: /usr/X11R6/include/X11/qt/qshared.h
-++pppload.o: /usr/X11R6/include/X11/qt/qgeneric.h /usr/include/string.h
-++pppload.o: /usr/include/machine/ansi.h /usr/include/sys/cdefs.h
-++pppload.o: /usr/X11R6/include/X11/qt/qevent.h
-++pppload.o: /usr/X11R6/include/X11/qt/qrect.h
-++pppload.o: /usr/X11R6/include/X11/qt/qsize.h
-++pppload.o: /usr/X11R6/include/X11/qt/qpoint.h
-++pppload.o: /usr/X11R6/include/X11/qt/qpaintd.h
-++pppload.o: /usr/X11R6/include/X11/qt/qpalette.h
-++pppload.o: /usr/X11R6/include/X11/qt/qcolor.h
-++pppload.o: /usr/X11R6/include/X11/qt/qcursor.h
-++pppload.o: /usr/X11R6/include/X11/qt/qfont.h
-++pppload.o: /usr/X11R6/include/X11/qt/qfontmet.h
-++pppload.o: /usr/X11R6/include/X11/qt/qfontinf.h PPPStats.H MainWindow.H
-++pppload.o: /usr/X11R6/include/X11/qt/qpixmap.h Options.H
-++PPPStats.o: /usr/include/stdlib.h /usr/include/machine/ansi.h
-++PPPStats.o: /usr/include/machine/types.h /usr/include/sys/cdefs.h
-++PPPStats.o: /usr/include/stdio.h /usr/include/sys/types.h
-++PPPStats.o: /usr/include/machine/endian.h /usr/include/sys/select.h
-++PPPStats.o: /usr/include/sys/ioctl.h /usr/include/sys/ttycom.h
-++PPPStats.o: /usr/include/sys/ioccom.h /usr/include/sys/filio.h
-++PPPStats.o: /usr/include/sys/sockio.h /usr/include/sys/socket.h
-++PPPStats.o: /usr/include/sys/time.h /usr/include/time.h /usr/include/net/if.h
-++PPPStats.o: /usr/include/net/if_ppp.h /usr/include/net/ppp_defs.h PPPStats.H
-++PPPStats.o: /usr/X11R6/include/X11/qt/qobject.h
-++PPPStats.o: /usr/X11R6/include/X11/qt/qobjdefs.h
-++PPPStats.o: /usr/X11R6/include/X11/qt/qglobal.h
-++PPPStats.o: /usr/X11R6/include/X11/qt/qstring.h
-++PPPStats.o: /usr/X11R6/include/X11/qt/qarray.h
-++PPPStats.o: /usr/X11R6/include/X11/qt/qgarray.h
-++PPPStats.o: /usr/X11R6/include/X11/qt/qshared.h
-++PPPStats.o: /usr/X11R6/include/X11/qt/qgeneric.h /usr/include/string.h
-++PPPStats.o: /usr/X11R6/include/X11/qt/qevent.h
-++PPPStats.o: /usr/X11R6/include/X11/qt/qwindefs.h
-++PPPStats.o: /usr/X11R6/include/X11/qt/qrect.h
-++PPPStats.o: /usr/X11R6/include/X11/qt/qsize.h
-++PPPStats.o: /usr/X11R6/include/X11/qt/qpoint.h Options.H
-++PPPStats.o: /usr/X11R6/include/X11/qt/qcolor.h
-++MainWindow.o: /usr/X11R6/include/X11/qt/qpainter.h
-++MainWindow.o: /usr/X11R6/include/X11/qt/qpaintd.h
-++MainWindow.o: /usr/X11R6/include/X11/qt/qwindefs.h
-++MainWindow.o: /usr/X11R6/include/X11/qt/qobjdefs.h
-++MainWindow.o: /usr/X11R6/include/X11/qt/qglobal.h
-++MainWindow.o: /usr/X11R6/include/X11/qt/qrect.h
-++MainWindow.o: /usr/X11R6/include/X11/qt/qsize.h
-++MainWindow.o: /usr/X11R6/include/X11/qt/qpoint.h
-++MainWindow.o: /usr/X11R6/include/X11/qt/qcolor.h
-++MainWindow.o: /usr/X11R6/include/X11/qt/qfontmet.h
-++MainWindow.o: /usr/X11R6/include/X11/qt/qfont.h
-++MainWindow.o: /usr/X11R6/include/X11/qt/qstring.h
-++MainWindow.o: /usr/X11R6/include/X11/qt/qarray.h
-++MainWindow.o: /usr/X11R6/include/X11/qt/qgarray.h
-++MainWindow.o: /usr/X11R6/include/X11/qt/qshared.h
-++MainWindow.o: /usr/X11R6/include/X11/qt/qgeneric.h /usr/include/string.h
-++MainWindow.o: /usr/include/machine/ansi.h /usr/include/sys/cdefs.h
-++MainWindow.o: /usr/X11R6/include/X11/qt/qfontinf.h
-++MainWindow.o: /usr/X11R6/include/X11/qt/qregion.h
-++MainWindow.o: /usr/X11R6/include/X11/qt/qpen.h
-++MainWindow.o: /usr/X11R6/include/X11/qt/qbrush.h
-++MainWindow.o: /usr/X11R6/include/X11/qt/qpntarry.h
-++MainWindow.o: /usr/X11R6/include/X11/qt/qwmatrix.h MainWindow.H
-++MainWindow.o: /usr/X11R6/include/X11/qt/qwidget.h
-++MainWindow.o: /usr/X11R6/include/X11/qt/qobject.h
-++MainWindow.o: /usr/X11R6/include/X11/qt/qevent.h
-++MainWindow.o: /usr/X11R6/include/X11/qt/qpalette.h
-++MainWindow.o: /usr/X11R6/include/X11/qt/qcursor.h
-++MainWindow.o: /usr/X11R6/include/X11/qt/qpixmap.h Options.H
-++Options.o: /usr/include/stdio.h /usr/include/sys/cdefs.h
-++Options.o: /usr/include/machine/ansi.h Options.H
-++Options.o: /usr/X11R6/include/X11/qt/qcolor.h
-++Options.o: /usr/X11R6/include/X11/qt/qwindefs.h
-++Options.o: /usr/X11R6/include/X11/qt/qobjdefs.h
-++Options.o: /usr/X11R6/include/X11/qt/qglobal.h
-++Options.o: /usr/X11R6/include/X11/qt/qstring.h
-++Options.o: /usr/X11R6/include/X11/qt/qarray.h
-++Options.o: /usr/X11R6/include/X11/qt/qgarray.h
-++Options.o: /usr/X11R6/include/X11/qt/qshared.h
-++Options.o: /usr/X11R6/include/X11/qt/qgeneric.h /usr/include/string.h
-+diff -u --new-file pppload-1.0/Options.C ./Options.C
-+--- pppload-1.0/Options.C Tue Sep 10 16:55:27 1996
-++++ ./Options.C Fri Jan 30 20:01:38 1998
-+@@ -24,7 +24,7 @@
-+ #include "Options.H"
-+
-+ Options::Options( int argc, char* argv[] )
-+-: _divider( 512 ), _interval( 5 ), _link( 0 ), _period( 60 ), _retry( 60 ), _showTx( true ), _showRx( true ), _txColor( "forestgreen" ), _rxColor( "red" )
-++: _divider( 512 ), _interval( 5 ), _device("tun"), _link( 0 ), _period( 60 ), _retry( 60 ), _showTx( true ), _showRx( true ), _txColor( "forestgreen" ), _rxColor( "red" )
-+ {
-+ for ( int i = 1; i < argc; i++ ) {
-+ if ( !strcmp( argv[i], "-cmd" ) ) {
-+@@ -33,6 +33,8 @@
-+ sscanf( argv[++i], "%d", &_divider );
-+ } else if ( !strcmp( argv[i], "-i" ) ) {
-+ sscanf( argv[++i], "%d", &_interval );
-++ } else if ( !strcmp( argv[i], "-device" ) ) {
-++ strcpy(_device,argv[++i]);
-+ } else if ( !strcmp( argv[i], "-link" ) ) {
-+ sscanf( argv[++i], "%d", &_link );
-+ } else if ( !strcmp( argv[i], "-p" ) ) {
-+@@ -60,6 +62,7 @@
-+ fprintf( stderr, "-d n Horizontal divider spacing in bytes per second (default: %d).\n", divider() );
-+ fprintf( stderr, "-h Print this help.\n" );
-+ fprintf( stderr, "-i interval Set the polling interval to be 'interval' seconds (default: %d).\n", interval() );
-++ fprintf( stderr, "-device name Name of the device to monitor (default is tun). \n");
-+ fprintf( stderr, "-link link The PPP link number to monitor (default: %d).\n", link() );
-+ fprintf( stderr, "-p period Set the load averaging period to be 'period seconds (default: %d).\n", period() );
-+ fprintf( stderr, "-retry interval Time between retries when dialling PPP link (default: %d).\n", retry() );
-+@@ -74,7 +77,7 @@
-+ fprintf( stderr, "pppload comes with ABSOLUTELY NO WARRANTY; for details see the LICENSE file.\n" );
-+ fprintf( stderr, "This is free software, and you are welcome to redistribute it\n" );
-+ fprintf( stderr, "under certain conditions; see the LICENSE file for details.\n" );
-+-
-++ fprintf( stderr, "Modified for FreeBSD 1998 \n");
-+ exit( 1 );
-+ }
-+ }
-+diff -u --new-file pppload-1.0/Options.H ./Options.H
-+--- pppload-1.0/Options.H Tue Sep 10 16:53:36 1996
-++++ ./Options.H Thu Jan 29 21:12:01 1998
-+@@ -31,6 +31,8 @@
-+ int _divider;
-+ //: Statistics polling interval in seconds.
-+ int _interval;
-++ //: Network device to monitor
-++ char _device[4];
-+ //: PPP link number to monitor.
-+ int _link;
-+ //: Load averaging interval in seconds.
-+@@ -49,9 +51,12 @@
-+ //: Extract command line opotions from argc and argv.
-+ Options( int argc, char* argv[] );
-+
-+- //: Return the PPP command.
-+- QString& cmd() { return _cmd; }
-++ //: Return the PPP command.
-++ QString& cmd() { return _cmd; }
-+
-++ //: Return the name of the device being monitored
-++ char * device() { return _device; }
-++
-+ //: Return the spacing between horizontal dividers.
-+ int divider() { return _divider; }
-+
-+diff -u --new-file pppload-1.0/PPPStats.C ./PPPStats.C
-+--- pppload-1.0/PPPStats.C Wed Sep 11 19:50:13 1996
-++++ ./PPPStats.C Fri Jan 30 20:16:04 1998
-+@@ -19,16 +19,22 @@
-+
-+ extern "C" {
-+ #include <stdlib.h>
-+-#include <errno.h>
-+ #include <stdio.h>
-++#include <sys/types.h>
-++#include <sys/select.h>
-+ #include <sys/ioctl.h>
-+ #include <sys/socket.h>
-+-#include <net/if.h>
-+-#include <linux/ppp_defs.h>
-++#include <sys/time.h>
-++#include <net/if.h>
-++#include <net/if_ppp.h>
-+ }
-+
-+ #include "PPPStats.H"
-+ #include "Options.H"
-++#include <iostream.h>
-++
-++void get_command(char *);
-++char command[200];
-+
-+ typedef struct
-+ {
-+@@ -53,38 +59,42 @@
-+ system( (const char*)options->cmd() );
-+ }
-+
-+- DclPPPInfo PPPInfo[1];
-+- struct ifreq ifreq;
-++ DclPPPInfo PPPInfo[1];
-++ struct ifpppstatsreq ifreq;
-+ struct ppp_stats* PPPStat;
-+- struct ppp_stats LastPPPStat[1];
-+-
-+- memset (& ifreq, 0, sizeof (ifreq));
-+- sprintf (ifreq.ifr_ifrn.ifrn_name, "ppp%d", options->link());
-++ struct ppp_stats LastPPPStat[1];
-+
-+- ifreq.ifr_ifru.ifru_data = (caddr_t) PPPInfo;
-++ memset (&ifreq, 0, sizeof (ifreq));
-++ sprintf (ifreq.ifr_name, "%s%d",(const char*)options->device(),options->link());
-++
-+ PPPStat = & PPPInfo->stats;
-+ memset (LastPPPStat, 0, sizeof (LastPPPStat));
-+
-+- if ( (ioctl (_s, SIOCDEVPRIVATE, (caddr_t) & ifreq) < 0) ||
-+- ( _isUp && ( PPPStat->p.ppp_ibytes < _rxTotal ) ) ||
-+- ( !_isUp && ( PPPStat->p.ppp_ibytes == 0 ) )
-+- ) {
-+- if ( _isUp ) {
-+- _isUp = false;
-+- emit linkDown();
-+- if ( options->cmd().length() ) {
-+- _retryId = startTimer( options->retry() * 1000 );
-+- system( (const char*)options->cmd() );
-+- }
-+- }
-+- PPPStat->p.ppp_ibytes = 0;
-+- PPPStat->p.ppp_obytes = 0;
-++ get_command(ifreq.ifr_name);
-++ FILE * fptr;
-++ fptr=popen(command,"r+");
-++ fscanf(fptr,"%u%u",&PPPStat->p.ppp_ibytes,&PPPStat->p.ppp_obytes);
-++ pclose(fptr);
-++
-++ if ( ( _isUp && ( PPPStat->p.ppp_ibytes < _rxTotal ) ) ||
-++ ( !_isUp && ( PPPStat->p.ppp_ibytes == 0 ))
-++ ) {
-++ if ( _isUp ) {
-++ _isUp = false;
-++ emit linkDown();
-++ if ( options->cmd().length() ) {
-++ _retryId = startTimer( options->retry() * 1000 );
-++ system( (const char*)options->cmd() );
-++ }
-++ }
-++ PPPStat->p.ppp_ibytes = 0;
-++ PPPStat->p.ppp_obytes = 0;
-+ } else if ( !_isUp ) {
-+- _isUp = true;
-+- killTimer( _retryId );
-+- _retryId = -1;
-++ _isUp = true;
-++ killTimer( _retryId );
-++ _retryId = -1;
-+ }
-+-
-++
-+ unsigned int rxDelta = PPPStat->p.ppp_ibytes - _rxTotal;
-+ unsigned int txDelta = PPPStat->p.ppp_obytes - _txTotal;
-+ _rxTotal = PPPStat->p.ppp_ibytes;
-+@@ -92,4 +102,17 @@
-+ if ( rxDelta == _rxTotal ) rxDelta = 0;
-+ if ( txDelta == _txTotal ) txDelta = 0;
-+ emit changeStats( rxDelta, txDelta, _rxTotal, _txTotal );
-++
-++}
-++
-++void get_command(char * interface) {
-++ /*"/usr/bin/netstat -b -I tun0 | /usr/bin/grep Link | awk '{print $(NF-4),$(NF-1)}' */
-++ const char * netstat_command ="/usr/bin/netstat -n -b -I ";
-++ const char * grep_command =" | /usr/bin/grep Link | /usr/bin/awk '{print $(NF-4),$(NF-1)}'";
-++ command[0]='\0';
-++ strcat(command,netstat_command);
-++ strcat(command,interface);
-++ strcat(command,grep_command);
-+ }
-++
-++
-+diff -u --new-file pppload-1.0/PPPStats.C.ppp ./PPPStats.C.ppp
-+--- pppload-1.0/PPPStats.C.ppp Wed Dec 31 16:00:00 1969
-++++ ./PPPStats.C.ppp Wed Jan 28 18:27:30 1998
-+@@ -0,0 +1,120 @@
-++// pppload - A PPP Load Monitor
-++// Copyright (C) 1996 Sean Vyain
-++// svyain@mail.tds.net
-++// smvyain@softart.com
-++//
-++// This program is free software; you can redistribute it and/or modify
-++// it under the terms of the GNU General Public License as published by
-++// the Free Software Foundation; either version 2 of the License, or
-++// (at your option) any later version.
-++//
-++// This program is distributed in the hope that it will be useful,
-++// but WITHOUT ANY WARRANTY; without even the implied warranty of
-++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-++// GNU General Public License for more details.
-++//
-++// You should have received a copy of the GNU General Public License
-++// along with this program; if not, write to the Free Software
-++// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-++
-++extern "C" {
-++#include <stdlib.h>
-++#include <stdio.h>
-++#include <sys/types.h>
-++#include <sys/select.h>
-++#include <sys/ioctl.h>
-++#include <sys/socket.h>
-++#include <sys/time.h>
-++#include <net/if.h>
-++#include <net/if_ppp.h>
-++#include <net/if_var.h>
-++#include <net/if_tun.h>
-++}
-++
-++#include "PPPStats.H"
-++#include "Options.H"
-++#include <iostream.h>
-++
-++
-++typedef struct
-++{
-++ struct ppp_stats stats;
-++} DclPPPInfo;
-++
-++PPPStats::PPPStats()
-++: _rxTotal( 0 ), _txTotal( 0 ), _isUp( true ), _retryId( -1 )
-++{
-++ if ((_s = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
-++ perror("couldn't create IP socket");
-++ exit(1);
-++ }
-++
-++ startTimer( options->interval() * 1000 );
-++}
-++
-++void PPPStats::timerEvent( QTimerEvent* e )
-++{
-++ if ( e->timerId() == _retryId )
-++ {
-++ system( (const char*)options->cmd() );
-++ }
-++
-++ DclPPPInfo PPPInfo[1]; // what is this var for?
-++ struct ifpppstatsreq ifreq; // ifreq ifreq;
-++ struct ppp_stats* PPPStat;
-++ struct ppp_stats LastPPPStat[1]; // what is this var for?
-++
-++ memset (&ifreq, 0, sizeof (ifreq));
-++// sprintf (ifreq.ifr_ifrn.ifrn_name, "ppp%d", options->link());
-++ sprintf (ifreq.ifr_name, "tun%d", options->link());
-++
-++// ifreq.ifr_ifru.ifru_data = (caddr_t) PPPInfo;
-++
-++ PPPStat = & PPPInfo->stats;
-++ memset (LastPPPStat, 0, sizeof (LastPPPStat));
-++
-++
-++
-++// if ( (ioctl (_s, SIOCDEVPRIVATE, (caddr_t) & ifreq) < 0) ||
-++// ( _isUp && ( PPPStat->p.ppp_ibytes < _rxTotal ) ) ||
-++// ( !_isUp && ( PPPStat->p.ppp_ibytes == 0 ) )
-++ if ( (ioctl (_s, SIOCGPPPSTATS , &ifreq) < 0) ||
-++ ( _isUp && ( ifreq.stats.p.ppp_ibytes < _rxTotal ) ) ||
-++ ( !_isUp && ( ifreq.stats.p.ppp_ibytes == 0 ))
-++ ) {
-++ if ( _isUp ) {
-++ _isUp = false;
-++ emit linkDown();
-++ if ( options->cmd().length() ) {
-++ _retryId = startTimer( options->retry() * 1000 );
-++ system( (const char*)options->cmd() );
-++ }
-++ }
-++ PPPStat->p.ppp_ibytes = 0;
-++ PPPStat->p.ppp_obytes = 0;
-++ } else if ( !_isUp ) {
-++ _isUp = true;
-++ killTimer( _retryId );
-++ _retryId = -1;
-++ }
-++
-++ PPPStat->p.ppp_ibytes=ifreq.stats.p.ppp_ibytes;
-++ PPPStat->p.ppp_obytes=ifreq.stats.p.ppp_obytes;
-++
-++
-++cout<<ifreq.stats.p.ppp_ibytes<<" "<<ifreq.stats.p.ppp_ipackets<<" "
-++ <<ifreq.stats.p.ppp_ierrors<<" "<<ifreq.stats.p.ppp_obytes <<" "
-++ <<ifreq.stats.p.ppp_opackets<<" "<<ifreq.stats.p.ppp_oerrors<<endl
-++ <<PPPStat->p.ppp_ibytes<<" "<<PPPStat->p.ppp_ipackets<<" "
-++ <<PPPStat->p.ppp_ierrors<<" "<<PPPStat->p.ppp_obytes <<" "
-++ <<PPPStat->p.ppp_opackets<<" "<<PPPStat->p.ppp_oerrors<<endl;
-++ unsigned int rxDelta = PPPStat->p.ppp_ibytes - _rxTotal;
-++ unsigned int txDelta = PPPStat->p.ppp_obytes - _txTotal;
-++ _rxTotal = PPPStat->p.ppp_ibytes;
-++ _txTotal = PPPStat->p.ppp_obytes;
-++ if ( rxDelta == _rxTotal ) rxDelta = 0;
-++ if ( txDelta == _txTotal ) txDelta = 0;
-++ emit changeStats( rxDelta, txDelta, _rxTotal, _txTotal );
-++
-++}
-++
-+diff -u --new-file pppload-1.0/README.freebsd ./README.freebsd
-+--- pppload-1.0/README.freebsd Wed Dec 31 16:00:00 1969
-++++ ./README.freebsd Fri Jan 30 20:14:36 1998
-+@@ -0,0 +1,45 @@
-++PPPLoad is designed to display the current throughput of a particular
-++PPP link in a format that is similar to xload. Written by Sean Vyain.
-++
-++This is a FreeBSD port of the linux program called pppload, available at
-++http://sunsite.unc.edu/pub/Linux/system/network/serial/ppp/pppload-1.0.tar.gz
-++
-++Original program homepage at:
-++http://www.geocities.com/SiliconValley/Pines/1029/pppload.html
-++
-++I have modified the FreeBSD port to be able to show the throughput of
-++any network device that will work with netstat, e.g. tun, ppp, ed,
-++etc. I just wanted a program to nicely display throughput
-++statistics for the tun device.
-++
-++ Examples of usage:
-++For tun0 (tun is the default device,0 is the default link number):
-++% pppload &
-++
-++For first ne2000 clone:
-++% pppload -device ed -link 0 &
-++
-++for ppp2:
-++% pppload -device ppp -link 2 &
-++
-++BUGS
-++Command line is awkward with -device and -link.
-++
-++Can't detect whether the network device is up or not, so any command
-++line options like -cmd -percmd -retry probably don't work. This is
-++different that the original linux version.
-++
-++Keeps track of all packets network device has ever used, even if it
-++has gone down then up again. This is also different than the linux
-++version.
-++
-++Requires awk, grep, and netstat to get the data. Very short polling
-++time are definitely not recommended.
-++
-++Network interface names are limited to a total of 4 characters or less
-++at the moment, e.g. ppp0 ed3 ze1.
-++
-++
-++Documentation of this FreeBSD port is not complete.
-++
-++
-+Common subdirectories: pppload-1.0/backup and ./backup
-Binary files pppload-1.0/pppload and ./pppload differ
-Common subdirectories: pppload-1.0/pppload-1.0 and ./pppload-1.0
-diff -u --new-file pppload-1.0/pppload.1 ./pppload.1
---- pppload-1.0/pppload.1 Tue Sep 10 16:56:20 1996
-+++ ./pppload.1 Fri Jan 30 21:35:55 1998
-@@ -3,7 +3,7 @@
- pppload \- display an xload-style graph of PPP activity
- .SH SYNOPSIS
- .B pppload
--[\-cmd ppp_cmd] [\-i interval] [\-p period] [\-retry interval] [\-rx] [\-norx]
-+[\-cmd ppp_cmd] [\-i interval] [\-device name] [\-p period] [\-retry interval] [\-rx] [\-norx]
- [\-rxcolor color] [\-tx] [\-notx] [\-txcolor color]
- .SH DESCRIPTION
- .BR pppload
-@@ -28,6 +28,9 @@
- .I "\-h"
- Print command line usage.
- .TP
-+.I "\-device name"
-+Network device to monitor (default: tun)
-+.TP
- .I "\-i interval"
- The statistics polling interval in seconds (default: 5).
- .TP
-@@ -60,3 +63,41 @@
- The name of the color to draw transmit rates in (default: red).
- .SH AUTHOR
- Sean Vyain <svyain@mail.tds.net, smvyain@softart.com>
-+www.geocities.com/SiliconValley/Pines/1029/pppload.html
-+
-+.SH FREEBSD PORT
-+Examples of usage for the FreeBSD port:
-+
-+For tun0 (tun is the default device,0 is the default link number):
-+
-+% pppload &
-+
-+For the first ne2000 ethernet card:
-+
-+% pppload -device ed -link 0 &
-+
-+for the third ppp device:
-+
-+% pppload -device ppp -link 2 &
-+
-+.SH BUGS
-+The port to FreeBSD can't determine when the link is up or down, so
-+some of the command line options like
-+.I "\-cmd"
-+.I "\-percmd"
-+may not work.
-+
-+Command line is awkward with -device and -link.
-+
-+Keeps track of all packets network device has ever used, even if it
-+has gone down then up again. This is different than the linux
-+version.
-+
-+Requires awk, grep, and netstat to get the data. Very short polling
-+times are definitely not recommended.
-+
-+Network interface names are limited to a total of 4 characters or less
-+at the moment, e.g. ppp0 ed3 ze1.
-+
-+
-+Modified January 1998
-diff -u --new-file pppload-1.0/pppload.C ./pppload.C
---- pppload-1.0/pppload.C Wed Sep 11 19:56:40 1996
-+++ ./pppload.C Fri Jan 30 14:33:07 1998
-@@ -27,6 +27,7 @@
- int main(int argc,
- char* argv[])
- {
-+
- QApplication a( argc, argv );
- options = new Options( argc, argv );
- MainWindow* mw = new MainWindow;
-@@ -39,3 +40,4 @@
- mw->show();
- return a.exec();
- }
-+
diff --git a/net/pppload/files/patch-ab b/net/pppload/files/patch-ab
new file mode 100644
index 000000000000..2c7732baae69
--- /dev/null
+++ b/net/pppload/files/patch-ab
@@ -0,0 +1,38 @@
+diff -u --new-file pppload-1.0/Options.C ./Options.C
+--- pppload-1.0/Options.C Tue Sep 10 16:55:27 1996
++++ ./Options.C Fri Jan 30 20:01:38 1998
+@@ -24,7 +24,7 @@
+ #include "Options.H"
+
+ Options::Options( int argc, char* argv[] )
+-: _divider( 512 ), _interval( 5 ), _link( 0 ), _period( 60 ), _retry( 60 ), _showTx( true ), _showRx( true ), _txColor( "forestgreen" ), _rxColor( "red" )
++: _divider( 512 ), _interval( 5 ), _device("tun"), _link( 0 ), _period( 60 ), _retry( 60 ), _showTx( true ), _showRx( true ), _txColor( "forestgreen" ), _rxColor( "red" )
+ {
+ for ( int i = 1; i < argc; i++ ) {
+ if ( !strcmp( argv[i], "-cmd" ) ) {
+@@ -33,6 +33,8 @@
+ sscanf( argv[++i], "%d", &_divider );
+ } else if ( !strcmp( argv[i], "-i" ) ) {
+ sscanf( argv[++i], "%d", &_interval );
++ } else if ( !strcmp( argv[i], "-device" ) ) {
++ strcpy(_device,argv[++i]);
+ } else if ( !strcmp( argv[i], "-link" ) ) {
+ sscanf( argv[++i], "%d", &_link );
+ } else if ( !strcmp( argv[i], "-p" ) ) {
+@@ -60,6 +62,7 @@
+ fprintf( stderr, "-d n Horizontal divider spacing in bytes per second (default: %d).\n", divider() );
+ fprintf( stderr, "-h Print this help.\n" );
+ fprintf( stderr, "-i interval Set the polling interval to be 'interval' seconds (default: %d).\n", interval() );
++ fprintf( stderr, "-device name Name of the device to monitor (default is tun). \n");
+ fprintf( stderr, "-link link The PPP link number to monitor (default: %d).\n", link() );
+ fprintf( stderr, "-p period Set the load averaging period to be 'period seconds (default: %d).\n", period() );
+ fprintf( stderr, "-retry interval Time between retries when dialling PPP link (default: %d).\n", retry() );
+@@ -74,7 +77,7 @@
+ fprintf( stderr, "pppload comes with ABSOLUTELY NO WARRANTY; for details see the LICENSE file.\n" );
+ fprintf( stderr, "This is free software, and you are welcome to redistribute it\n" );
+ fprintf( stderr, "under certain conditions; see the LICENSE file for details.\n" );
+-
++ fprintf( stderr, "Modified for FreeBSD 1998 \n");
+ exit( 1 );
+ }
+ }
diff --git a/net/pppload/files/patch-ac b/net/pppload/files/patch-ac
new file mode 100644
index 000000000000..541be44618ad
--- /dev/null
+++ b/net/pppload/files/patch-ac
@@ -0,0 +1,27 @@
+diff -u --new-file pppload-1.0/Options.H ./Options.H
+--- pppload-1.0/Options.H Tue Sep 10 16:53:36 1996
++++ ./Options.H Thu Jan 29 21:12:01 1998
+@@ -31,6 +31,8 @@
+ int _divider;
+ //: Statistics polling interval in seconds.
+ int _interval;
++ //: Network device to monitor
++ char _device[4];
+ //: PPP link number to monitor.
+ int _link;
+ //: Load averaging interval in seconds.
+@@ -49,9 +51,12 @@
+ //: Extract command line opotions from argc and argv.
+ Options( int argc, char* argv[] );
+
+- //: Return the PPP command.
+- QString& cmd() { return _cmd; }
++ //: Return the PPP command.
++ QString& cmd() { return _cmd; }
+
++ //: Return the name of the device being monitored
++ char * device() { return _device; }
++
+ //: Return the spacing between horizontal dividers.
+ int divider() { return _divider; }
+
diff --git a/net/pppload/files/patch-ad b/net/pppload/files/patch-ad
new file mode 100644
index 000000000000..7e819476e22a
--- /dev/null
+++ b/net/pppload/files/patch-ad
@@ -0,0 +1,115 @@
+diff -u --new-file pppload-1.0/PPPStats.C ./PPPStats.C
+--- pppload-1.0/PPPStats.C Wed Sep 11 19:50:13 1996
++++ ./PPPStats.C Fri Jan 30 20:16:04 1998
+@@ -19,16 +19,22 @@
+
+ extern "C" {
+ #include <stdlib.h>
+-#include <errno.h>
+ #include <stdio.h>
++#include <sys/types.h>
++#include <sys/select.h>
+ #include <sys/ioctl.h>
+ #include <sys/socket.h>
+-#include <net/if.h>
+-#include <linux/ppp_defs.h>
++#include <sys/time.h>
++#include <net/if.h>
++#include <net/if_ppp.h>
+ }
+
+ #include "PPPStats.H"
+ #include "Options.H"
++#include <iostream.h>
++
++void get_command(char *);
++char command[200];
+
+ typedef struct
+ {
+@@ -53,38 +59,42 @@
+ system( (const char*)options->cmd() );
+ }
+
+- DclPPPInfo PPPInfo[1];
+- struct ifreq ifreq;
++ DclPPPInfo PPPInfo[1];
++ struct ifpppstatsreq ifreq;
+ struct ppp_stats* PPPStat;
+- struct ppp_stats LastPPPStat[1];
+-
+- memset (& ifreq, 0, sizeof (ifreq));
+- sprintf (ifreq.ifr_ifrn.ifrn_name, "ppp%d", options->link());
++ struct ppp_stats LastPPPStat[1];
+
+- ifreq.ifr_ifru.ifru_data = (caddr_t) PPPInfo;
++ memset (&ifreq, 0, sizeof (ifreq));
++ sprintf (ifreq.ifr_name, "%s%d",(const char*)options->device(),options->link());
++
+ PPPStat = & PPPInfo->stats;
+ memset (LastPPPStat, 0, sizeof (LastPPPStat));
+
+- if ( (ioctl (_s, SIOCDEVPRIVATE, (caddr_t) & ifreq) < 0) ||
+- ( _isUp && ( PPPStat->p.ppp_ibytes < _rxTotal ) ) ||
+- ( !_isUp && ( PPPStat->p.ppp_ibytes == 0 ) )
+- ) {
+- if ( _isUp ) {
+- _isUp = false;
+- emit linkDown();
+- if ( options->cmd().length() ) {
+- _retryId = startTimer( options->retry() * 1000 );
+- system( (const char*)options->cmd() );
+- }
+- }
+- PPPStat->p.ppp_ibytes = 0;
+- PPPStat->p.ppp_obytes = 0;
++ get_command(ifreq.ifr_name);
++ FILE * fptr;
++ fptr=popen(command,"r+");
++ fscanf(fptr,"%u%u",&PPPStat->p.ppp_ibytes,&PPPStat->p.ppp_obytes);
++ pclose(fptr);
++
++ if ( ( _isUp && ( PPPStat->p.ppp_ibytes < _rxTotal ) ) ||
++ ( !_isUp && ( PPPStat->p.ppp_ibytes == 0 ))
++ ) {
++ if ( _isUp ) {
++ _isUp = false;
++ emit linkDown();
++ if ( options->cmd().length() ) {
++ _retryId = startTimer( options->retry() * 1000 );
++ system( (const char*)options->cmd() );
++ }
++ }
++ PPPStat->p.ppp_ibytes = 0;
++ PPPStat->p.ppp_obytes = 0;
+ } else if ( !_isUp ) {
+- _isUp = true;
+- killTimer( _retryId );
+- _retryId = -1;
++ _isUp = true;
++ killTimer( _retryId );
++ _retryId = -1;
+ }
+-
++
+ unsigned int rxDelta = PPPStat->p.ppp_ibytes - _rxTotal;
+ unsigned int txDelta = PPPStat->p.ppp_obytes - _txTotal;
+ _rxTotal = PPPStat->p.ppp_ibytes;
+@@ -92,4 +102,17 @@
+ if ( rxDelta == _rxTotal ) rxDelta = 0;
+ if ( txDelta == _txTotal ) txDelta = 0;
+ emit changeStats( rxDelta, txDelta, _rxTotal, _txTotal );
++
++}
++
++void get_command(char * interface) {
++ /*"/usr/bin/netstat -b -I tun0 | /usr/bin/grep Link | awk '{print $(NF-4),$(NF-1)}' */
++ const char * netstat_command ="/usr/bin/netstat -n -b -I ";
++ const char * grep_command =" | /usr/bin/grep Link | /usr/bin/awk '{print $(NF-4),$(NF-1)}'";
++ command[0]='\0';
++ strcat(command,netstat_command);
++ strcat(command,interface);
++ strcat(command,grep_command);
+ }
++
++
diff --git a/net/pppload/files/patch-ae b/net/pppload/files/patch-ae
new file mode 100644
index 000000000000..ff57f7afc721
--- /dev/null
+++ b/net/pppload/files/patch-ae
@@ -0,0 +1,124 @@
+diff -u --new-file pppload-1.0/PPPStats.C.ppp ./PPPStats.C.ppp
+--- pppload-1.0/PPPStats.C.ppp Wed Dec 31 16:00:00 1969
++++ ./PPPStats.C.ppp Wed Jan 28 18:27:30 1998
+@@ -0,0 +1,120 @@
++// pppload - A PPP Load Monitor
++// Copyright (C) 1996 Sean Vyain
++// svyain@mail.tds.net
++// smvyain@softart.com
++//
++// This program is free software; you can redistribute it and/or modify
++// it under the terms of the GNU General Public License as published by
++// the Free Software Foundation; either version 2 of the License, or
++// (at your option) any later version.
++//
++// This program is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++// GNU General Public License for more details.
++//
++// You should have received a copy of the GNU General Public License
++// along with this program; if not, write to the Free Software
++// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++
++extern "C" {
++#include <stdlib.h>
++#include <stdio.h>
++#include <sys/types.h>
++#include <sys/select.h>
++#include <sys/ioctl.h>
++#include <sys/socket.h>
++#include <sys/time.h>
++#include <net/if.h>
++#include <net/if_ppp.h>
++#include <net/if_var.h>
++#include <net/if_tun.h>
++}
++
++#include "PPPStats.H"
++#include "Options.H"
++#include <iostream.h>
++
++
++typedef struct
++{
++ struct ppp_stats stats;
++} DclPPPInfo;
++
++PPPStats::PPPStats()
++: _rxTotal( 0 ), _txTotal( 0 ), _isUp( true ), _retryId( -1 )
++{
++ if ((_s = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
++ perror("couldn't create IP socket");
++ exit(1);
++ }
++
++ startTimer( options->interval() * 1000 );
++}
++
++void PPPStats::timerEvent( QTimerEvent* e )
++{
++ if ( e->timerId() == _retryId )
++ {
++ system( (const char*)options->cmd() );
++ }
++
++ DclPPPInfo PPPInfo[1]; // what is this var for?
++ struct ifpppstatsreq ifreq; // ifreq ifreq;
++ struct ppp_stats* PPPStat;
++ struct ppp_stats LastPPPStat[1]; // what is this var for?
++
++ memset (&ifreq, 0, sizeof (ifreq));
++// sprintf (ifreq.ifr_ifrn.ifrn_name, "ppp%d", options->link());
++ sprintf (ifreq.ifr_name, "tun%d", options->link());
++
++// ifreq.ifr_ifru.ifru_data = (caddr_t) PPPInfo;
++
++ PPPStat = & PPPInfo->stats;
++ memset (LastPPPStat, 0, sizeof (LastPPPStat));
++
++
++
++// if ( (ioctl (_s, SIOCDEVPRIVATE, (caddr_t) & ifreq) < 0) ||
++// ( _isUp && ( PPPStat->p.ppp_ibytes < _rxTotal ) ) ||
++// ( !_isUp && ( PPPStat->p.ppp_ibytes == 0 ) )
++ if ( (ioctl (_s, SIOCGPPPSTATS , &ifreq) < 0) ||
++ ( _isUp && ( ifreq.stats.p.ppp_ibytes < _rxTotal ) ) ||
++ ( !_isUp && ( ifreq.stats.p.ppp_ibytes == 0 ))
++ ) {
++ if ( _isUp ) {
++ _isUp = false;
++ emit linkDown();
++ if ( options->cmd().length() ) {
++ _retryId = startTimer( options->retry() * 1000 );
++ system( (const char*)options->cmd() );
++ }
++ }
++ PPPStat->p.ppp_ibytes = 0;
++ PPPStat->p.ppp_obytes = 0;
++ } else if ( !_isUp ) {
++ _isUp = true;
++ killTimer( _retryId );
++ _retryId = -1;
++ }
++
++ PPPStat->p.ppp_ibytes=ifreq.stats.p.ppp_ibytes;
++ PPPStat->p.ppp_obytes=ifreq.stats.p.ppp_obytes;
++
++
++cout<<ifreq.stats.p.ppp_ibytes<<" "<<ifreq.stats.p.ppp_ipackets<<" "
++ <<ifreq.stats.p.ppp_ierrors<<" "<<ifreq.stats.p.ppp_obytes <<" "
++ <<ifreq.stats.p.ppp_opackets<<" "<<ifreq.stats.p.ppp_oerrors<<endl
++ <<PPPStat->p.ppp_ibytes<<" "<<PPPStat->p.ppp_ipackets<<" "
++ <<PPPStat->p.ppp_ierrors<<" "<<PPPStat->p.ppp_obytes <<" "
++ <<PPPStat->p.ppp_opackets<<" "<<PPPStat->p.ppp_oerrors<<endl;
++ unsigned int rxDelta = PPPStat->p.ppp_ibytes - _rxTotal;
++ unsigned int txDelta = PPPStat->p.ppp_obytes - _txTotal;
++ _rxTotal = PPPStat->p.ppp_ibytes;
++ _txTotal = PPPStat->p.ppp_obytes;
++ if ( rxDelta == _rxTotal ) rxDelta = 0;
++ if ( txDelta == _txTotal ) txDelta = 0;
++ emit changeStats( rxDelta, txDelta, _rxTotal, _txTotal );
++
++}
++
diff --git a/net/pppload/files/patch-af b/net/pppload/files/patch-af
new file mode 100644
index 000000000000..3eb62e541a18
--- /dev/null
+++ b/net/pppload/files/patch-af
@@ -0,0 +1,49 @@
+diff -u --new-file pppload-1.0/README.freebsd ./README.freebsd
+--- pppload-1.0/README.freebsd Wed Dec 31 16:00:00 1969
++++ ./README.freebsd Fri Jan 30 20:14:36 1998
+@@ -0,0 +1,45 @@
++PPPLoad is designed to display the current throughput of a particular
++PPP link in a format that is similar to xload. Written by Sean Vyain.
++
++This is a FreeBSD port of the linux program called pppload, available at
++http://sunsite.unc.edu/pub/Linux/system/network/serial/ppp/pppload-1.0.tar.gz
++
++Original program homepage at:
++http://www.geocities.com/SiliconValley/Pines/1029/pppload.html
++
++I have modified the FreeBSD port to be able to show the throughput of
++any network device that will work with netstat, e.g. tun, ppp, ed,
++etc. I just wanted a program to nicely display throughput
++statistics for the tun device.
++
++ Examples of usage:
++For tun0 (tun is the default device,0 is the default link number):
++% pppload &
++
++For first ne2000 clone:
++% pppload -device ed -link 0 &
++
++for ppp2:
++% pppload -device ppp -link 2 &
++
++BUGS
++Command line is awkward with -device and -link.
++
++Can't detect whether the network device is up or not, so any command
++line options like -cmd -percmd -retry probably don't work. This is
++different that the original linux version.
++
++Keeps track of all packets network device has ever used, even if it
++has gone down then up again. This is also different than the linux
++version.
++
++Requires awk, grep, and netstat to get the data. Very short polling
++time are definitely not recommended.
++
++Network interface names are limited to a total of 4 characters or less
++at the moment, e.g. ppp0 ed3 ze1.
++
++
++Documentation of this FreeBSD port is not complete.
++
++
diff --git a/net/pppload/files/patch-ag b/net/pppload/files/patch-ag
new file mode 100644
index 000000000000..944bd4f81556
--- /dev/null
+++ b/net/pppload/files/patch-ag
@@ -0,0 +1,64 @@
+diff -u --new-file pppload-1.0/pppload.1 ./pppload.1
+--- pppload-1.0/pppload.1 Tue Sep 10 16:56:20 1996
++++ ./pppload.1 Fri Jan 30 21:35:55 1998
+@@ -3,7 +3,7 @@
+ pppload \- display an xload-style graph of PPP activity
+ .SH SYNOPSIS
+ .B pppload
+-[\-cmd ppp_cmd] [\-i interval] [\-p period] [\-retry interval] [\-rx] [\-norx]
++[\-cmd ppp_cmd] [\-i interval] [\-device name] [\-p period] [\-retry interval] [\-rx] [\-norx]
+ [\-rxcolor color] [\-tx] [\-notx] [\-txcolor color]
+ .SH DESCRIPTION
+ .BR pppload
+@@ -28,6 +28,9 @@
+ .I "\-h"
+ Print command line usage.
+ .TP
++.I "\-device name"
++Network device to monitor (default: tun)
++.TP
+ .I "\-i interval"
+ The statistics polling interval in seconds (default: 5).
+ .TP
+@@ -60,3 +63,41 @@
+ The name of the color to draw transmit rates in (default: red).
+ .SH AUTHOR
+ Sean Vyain <svyain@mail.tds.net, smvyain@softart.com>
++www.geocities.com/SiliconValley/Pines/1029/pppload.html
++
++.SH FREEBSD PORT
++Examples of usage for the FreeBSD port:
++
++For tun0 (tun is the default device,0 is the default link number):
++
++% pppload &
++
++For the first ne2000 ethernet card:
++
++% pppload -device ed -link 0 &
++
++for the third ppp device:
++
++% pppload -device ppp -link 2 &
++
++.SH BUGS
++The port to FreeBSD can't determine when the link is up or down, so
++some of the command line options like
++.I "\-cmd"
++.I "\-percmd"
++may not work.
++
++Command line is awkward with -device and -link.
++
++Keeps track of all packets network device has ever used, even if it
++has gone down then up again. This is different than the linux
++version.
++
++Requires awk, grep, and netstat to get the data. Very short polling
++times are definitely not recommended.
++
++Network interface names are limited to a total of 4 characters or less
++at the moment, e.g. ppp0 ed3 ze1.
++
++
++Modified January 1998