o Bump version to 1.3 to reflect major changes
o Report modem connect time properly o Report bytes in/out over physical media o Fix phases (TERMINATE is *higher than* DEAD) o Do a LayerFinish from LcpDown o Bring down IPCP & CCP when we enter PHASE_TERMINATE o Give a new prompt when we go to PHASE_DEAD o Stop the modem timer properly when idle o Treat sig 15 like an exiting carrier loss o Log (DEBUG) offline & online transitions
This commit is contained in:
parent
0e5e974182
commit
0fe7ca3165
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=30825
@ -17,7 +17,7 @@
|
||||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id: async.c,v 1.11 1997/08/25 00:29:05 brian Exp $
|
||||
* $Id: async.c,v 1.12 1997/10/26 01:02:05 brian Exp $
|
||||
*
|
||||
*/
|
||||
#include <sys/param.h>
|
||||
@ -129,7 +129,7 @@ AsyncOutput(int pri, struct mbuf *bp, int proto)
|
||||
cnt = cp - hs->xbuff;
|
||||
LogDumpBuff(LogASYNC, "WriteModem", hs->xbuff, cnt);
|
||||
WriteModem(pri, (char *) hs->xbuff, cnt);
|
||||
OsAddOutOctets(cnt);
|
||||
ModemAddOutOctets(cnt);
|
||||
pfree(bp);
|
||||
}
|
||||
|
||||
@ -181,7 +181,7 @@ AsyncInput(u_char *buff, int cnt)
|
||||
{
|
||||
struct mbuf *bp;
|
||||
|
||||
OsAddInOctets(cnt);
|
||||
ModemAddInOctets(cnt);
|
||||
if (DEV_IS_SYNC) {
|
||||
bp = mballoc(cnt, MB_ASYNC);
|
||||
memcpy(MBUF_CTOP(bp), buff, cnt);
|
||||
|
@ -18,7 +18,7 @@
|
||||
* Columbus, OH 43221
|
||||
* (614)451-1883
|
||||
*
|
||||
* $Id: chat.c,v 1.34 1997/10/24 22:36:27 brian Exp $
|
||||
* $Id: chat.c,v 1.35 1997/10/26 01:02:22 brian Exp $
|
||||
*
|
||||
* TODO:
|
||||
* o Support more UUCP compatible control sequences.
|
||||
@ -638,9 +638,6 @@ DoChat(char *script)
|
||||
SendString(*argv++);
|
||||
break;
|
||||
case ABORT:
|
||||
#ifdef notdef
|
||||
HangupModem();
|
||||
#endif
|
||||
case NOMATCH:
|
||||
signal(SIGINT, oint);
|
||||
return (NOMATCH);
|
||||
|
@ -17,7 +17,7 @@
|
||||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id: ipcp.c,v 1.31 1997/10/26 01:02:54 brian Exp $
|
||||
* $Id: ipcp.c,v 1.32 1997/10/26 12:42:11 brian Exp $
|
||||
*
|
||||
* TODO:
|
||||
* o More RFC1772 backwoard compatibility
|
||||
@ -296,6 +296,7 @@ IpcpLayerDown(struct fsm * fp)
|
||||
LogPrintf(LogIPCP, "%d octets in, %d octets out\n",
|
||||
IpcpOctetsIn(), IpcpOctetsOut());
|
||||
StopTimer(&IpcpReportTimer);
|
||||
Prompt();
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -17,7 +17,7 @@
|
||||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id: lcp.c,v 1.40 1997/10/26 01:02:57 brian Exp $
|
||||
* $Id: lcp.c,v 1.41 1997/10/26 12:42:11 brian Exp $
|
||||
*
|
||||
* TODO:
|
||||
* o Validate magic number received from peer.
|
||||
@ -311,12 +311,10 @@ static void
|
||||
LcpLayerFinish(struct fsm * fp)
|
||||
{
|
||||
LogPrintf(LogLCP, "LcpLayerFinish\n");
|
||||
OsCloseLink(1);
|
||||
NewPhase(PHASE_DEAD);
|
||||
HangupModem(0);
|
||||
StopAllTimers();
|
||||
(void) OsInterfaceDown(0);
|
||||
/* We're down at last. Lets tell background and direct mode to get out */
|
||||
NewPhase(PHASE_TERMINATE);
|
||||
NewPhase(PHASE_DEAD);
|
||||
LcpInit();
|
||||
IpcpInit();
|
||||
CcpInit();
|
||||
@ -363,13 +361,9 @@ void
|
||||
LcpDown()
|
||||
{ /* Sudden death */
|
||||
LcpFailedMagic = 0;
|
||||
NewPhase(PHASE_DEAD);
|
||||
StopAllTimers();
|
||||
FsmDown(&LcpFsm);
|
||||
/*
|
||||
* We now wait for the FsmDown() to result in a LcpLayerDown() (if we're
|
||||
* open).
|
||||
*/
|
||||
/* FsmDown() results in a LcpLayerDown() if we're currently open. */
|
||||
LcpLayerFinish(&LcpFsm);
|
||||
}
|
||||
|
||||
void
|
||||
@ -383,6 +377,8 @@ LcpOpen(int mode)
|
||||
void
|
||||
LcpClose()
|
||||
{
|
||||
NewPhase(PHASE_TERMINATE);
|
||||
OsInterfaceDown(0);
|
||||
FsmClose(&LcpFsm);
|
||||
LcpFailedMagic = 0;
|
||||
}
|
||||
|
@ -17,7 +17,7 @@
|
||||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id: main.c,v 1.84 1997/10/24 22:36:30 brian Exp $
|
||||
* $Id: main.c,v 1.85 1997/10/26 01:03:14 brian Exp $
|
||||
*
|
||||
* TODO:
|
||||
* o Add commands for traffic summary, version display, etc.
|
||||
@ -173,14 +173,13 @@ TtyOldMode()
|
||||
void
|
||||
Cleanup(int excode)
|
||||
{
|
||||
OsLinkdown();
|
||||
OsCloseLink(1);
|
||||
OsInterfaceDown(1);
|
||||
HangupModem(1);
|
||||
nointr_sleep(1);
|
||||
if (mode & MODE_AUTO)
|
||||
DeleteIfRoutes(1);
|
||||
(void) unlink(pid_filename);
|
||||
(void) unlink(if_filename);
|
||||
OsInterfaceDown(1);
|
||||
if (mode & MODE_BACKGROUND && BGFiledes[1] != -1) {
|
||||
char c = EX_ERRDEAD;
|
||||
|
||||
@ -800,7 +799,6 @@ DoLoop()
|
||||
reconnectState = RECON_UNKNOWN;
|
||||
tries = 0;
|
||||
} else {
|
||||
CloseModem();
|
||||
if (mode & MODE_BACKGROUND) {
|
||||
if (VarNextPhone == NULL || res == EX_SIG)
|
||||
Cleanup(EX_DIAL); /* Tried all numbers - no luck */
|
||||
|
@ -17,7 +17,7 @@
|
||||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id: modem.c,v 1.59 1997/10/24 22:36:31 brian Exp $
|
||||
* $Id: modem.c,v 1.60 1997/10/26 01:03:24 brian Exp $
|
||||
*
|
||||
* TODO:
|
||||
*/
|
||||
@ -76,6 +76,8 @@ static struct mbuf *modemout;
|
||||
static struct mqueue OutputQueues[PRI_LINK + 1];
|
||||
static int dev_is_modem;
|
||||
|
||||
static void CloseLogicalModem(void);
|
||||
|
||||
void
|
||||
Enqueue(struct mqueue * queue, struct mbuf * bp)
|
||||
{
|
||||
@ -266,22 +268,13 @@ IntToSpeed(int nspeed)
|
||||
}
|
||||
|
||||
static time_t uptime;
|
||||
u_long OctetsIn, OctetsOut;
|
||||
|
||||
void
|
||||
DownConnection()
|
||||
{
|
||||
char ScriptBuffer[200];
|
||||
|
||||
LogPrintf(LogPHASE, "Disconnected!\n");
|
||||
if (uptime)
|
||||
LogPrintf(LogPHASE, "Connect time: %d secs\n", time(NULL) - uptime);
|
||||
uptime = 0;
|
||||
strcpy(ScriptBuffer, VarHangupScript); /* arrays are the same size */
|
||||
DoChat(ScriptBuffer);
|
||||
if (!TermMode) {
|
||||
CloseModem();
|
||||
LcpDown();
|
||||
}
|
||||
LcpDown();
|
||||
}
|
||||
|
||||
/*
|
||||
@ -309,10 +302,7 @@ ModemTimeout()
|
||||
change = ombits ^ mbits;
|
||||
if (change & TIOCM_CD) {
|
||||
if (Online) {
|
||||
time(&uptime);
|
||||
LogPrintf(LogPHASE, "*Connected!\n");
|
||||
connect_count++;
|
||||
|
||||
LogPrintf(LogDEBUG, "ModemTimeout: offline -> online\n");
|
||||
/*
|
||||
* In dedicated mode, start packet mode immediate after we detected
|
||||
* carrier.
|
||||
@ -320,18 +310,17 @@ ModemTimeout()
|
||||
if (mode & MODE_DEDICATED)
|
||||
PacketMode();
|
||||
} else {
|
||||
LogPrintf(LogDEBUG, "ModemTimeout: online -> offline\n");
|
||||
reconnect(RECON_TRUE);
|
||||
DownConnection();
|
||||
}
|
||||
}
|
||||
else
|
||||
LogPrintf(LogDEBUG, "ModemTimeout: Still %sline\n",
|
||||
Online ? "on" : "off");
|
||||
} else if (!Online) {
|
||||
/* mbits was set to zero in OpenModem() */
|
||||
time(&uptime);
|
||||
LogPrintf(LogPHASE, "Connected!\n");
|
||||
mbits = TIOCM_CD;
|
||||
connect_count++;
|
||||
} else if (uptime == 0) {
|
||||
time(&uptime);
|
||||
}
|
||||
}
|
||||
|
||||
@ -426,7 +415,7 @@ OpenConnection(char *host, char *port)
|
||||
return (-1);
|
||||
}
|
||||
}
|
||||
LogPrintf(LogPHASE, "Connected to %s:%s\n", host, port);
|
||||
LogPrintf(LogPHASE, "Connecting to %s:%s\n", host, port);
|
||||
|
||||
sock = socket(PF_INET, SOCK_STREAM, 0);
|
||||
if (sock < 0) {
|
||||
@ -486,6 +475,15 @@ UnlockModem()
|
||||
LogPrintf(LogALERT, "Warning: Can't uu_unlock %s\n", fn);
|
||||
}
|
||||
|
||||
static void
|
||||
HaveModem()
|
||||
{
|
||||
time(&uptime);
|
||||
OctetsIn = OctetsOut = 0;
|
||||
connect_count++;
|
||||
LogPrintf(LogPHASE, "Connected!\n");
|
||||
}
|
||||
|
||||
static struct termios modemios;
|
||||
|
||||
int
|
||||
@ -499,6 +497,7 @@ OpenModem(int mode)
|
||||
LogPrintf(LogDEBUG, "OpenModem: Modem is already open!\n");
|
||||
/* We're going back into "term" mode */
|
||||
else if (mode & MODE_DIRECT) {
|
||||
HaveModem();
|
||||
if (isatty(0)) {
|
||||
LogPrintf(LogDEBUG, "OpenModem(direct): Modem is a tty\n");
|
||||
cp = ttyname(0);
|
||||
@ -511,6 +510,7 @@ OpenModem(int mode)
|
||||
} else {
|
||||
LogPrintf(LogDEBUG, "OpenModem(direct): Modem is not a tty\n");
|
||||
SetVariable(0, 0, 0, VAR_DEVICE);
|
||||
/* We don't call ModemTimeout() with this type of connection */
|
||||
return modem = 0;
|
||||
}
|
||||
} else {
|
||||
@ -524,6 +524,7 @@ OpenModem(int mode)
|
||||
UnlockModem();
|
||||
return (-1);
|
||||
}
|
||||
HaveModem();
|
||||
LogPrintf(LogDEBUG, "OpenModem: Modem is %s\n", VarDevice);
|
||||
} else {
|
||||
/* PPP over TCP */
|
||||
@ -537,6 +538,7 @@ OpenModem(int mode)
|
||||
*cp = ':'; /* Don't destroy VarDevice */
|
||||
if (modem < 0)
|
||||
return (-1);
|
||||
HaveModem();
|
||||
LogPrintf(LogDEBUG, "OpenModem: Modem is socket %s\n", VarDevice);
|
||||
} else {
|
||||
*cp = ':'; /* Don't destroy VarDevice */
|
||||
@ -597,7 +599,8 @@ OpenModem(int mode)
|
||||
if (ioctl(modem, TIOCMGET, &mbits)) {
|
||||
LogPrintf(LogERROR, "OpenModem: Cannot get modem status: %s\n",
|
||||
strerror(errno));
|
||||
CloseModem();
|
||||
uptime = 0;
|
||||
CloseLogicalModem();
|
||||
return (-1);
|
||||
}
|
||||
LogPrintf(LogDEBUG, "OpenModem: modem control = %o\n", mbits);
|
||||
@ -606,7 +609,8 @@ OpenModem(int mode)
|
||||
if (oldflag < 0) {
|
||||
LogPrintf(LogERROR, "OpenModem: Cannot get modem flags: %s\n",
|
||||
strerror(errno));
|
||||
CloseModem();
|
||||
uptime = 0;
|
||||
CloseLogicalModem();
|
||||
return (-1);
|
||||
}
|
||||
(void) fcntl(modem, F_SETFL, oldflag & ~O_NONBLOCK);
|
||||
@ -670,15 +674,50 @@ UnrawModem(int modem)
|
||||
}
|
||||
}
|
||||
|
||||
void ModemAddInOctets(int n)
|
||||
{
|
||||
OctetsIn += n;
|
||||
}
|
||||
|
||||
void ModemAddOutOctets(int n)
|
||||
{
|
||||
OctetsOut += n;
|
||||
}
|
||||
|
||||
static void
|
||||
ClosePhysicalModem()
|
||||
{
|
||||
close(modem);
|
||||
if (uptime) {
|
||||
LogPrintf(LogPHASE, "Connect time: %d secs\n", time(NULL) - uptime);
|
||||
LogPrintf(LogPHASE, "Modem: %d octets in, %d octets out\n",
|
||||
OctetsIn, OctetsOut);
|
||||
OctetsIn = OctetsOut = 0;
|
||||
uptime = 0;
|
||||
}
|
||||
modem = -1; /* Mark modem as closed */
|
||||
}
|
||||
|
||||
void
|
||||
HangupModem(int flag)
|
||||
{
|
||||
struct termios tio;
|
||||
|
||||
LogPrintf(LogDEBUG, "Hangup modem (%s), uptime %ld\n",
|
||||
modem >= 0 ? "open" : "closed", (long)uptime);
|
||||
StopTimer(&ModemTimer);
|
||||
|
||||
if (modem < 0)
|
||||
return;
|
||||
|
||||
if (TermMode) {
|
||||
LogPrintf(LogDEBUG, "HangupModem: Not in 'term' mode\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!isatty(modem)) {
|
||||
mbits &= ~TIOCM_DTR;
|
||||
close(modem);
|
||||
modem = -1; /* Mark as modem has closed */
|
||||
ClosePhysicalModem();
|
||||
return;
|
||||
}
|
||||
|
||||
@ -697,13 +736,6 @@ HangupModem(int flag)
|
||||
* directed to quit program.
|
||||
*/
|
||||
if (modem >= 0 && (flag || !(mode & MODE_DEDICATED))) {
|
||||
ModemTimeout(); /* XXX */
|
||||
StopTimer(&ModemTimer); /* XXX */
|
||||
|
||||
/*
|
||||
* ModemTimeout() may call DownConection() to close the modem resulting
|
||||
* in modem == -1.
|
||||
*/
|
||||
if (modem >= 0) {
|
||||
char ScriptBuffer[200];
|
||||
|
||||
@ -711,7 +743,7 @@ HangupModem(int flag)
|
||||
DoChat(ScriptBuffer);
|
||||
tcflush(modem, TCIOFLUSH);
|
||||
UnrawModem(modem);
|
||||
CloseModem();
|
||||
CloseLogicalModem();
|
||||
}
|
||||
} else if (modem >= 0) {
|
||||
char ScriptBuffer[200];
|
||||
@ -729,11 +761,11 @@ HangupModem(int flag)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
CloseModem()
|
||||
static void
|
||||
CloseLogicalModem()
|
||||
{
|
||||
if (modem >= 0) {
|
||||
close(modem);
|
||||
ClosePhysicalModem();
|
||||
if (Utmp) {
|
||||
struct utmp ut;
|
||||
strncpy(ut.ut_line, VarBaseDevice, sizeof(ut.ut_line)-1);
|
||||
@ -741,12 +773,11 @@ CloseModem()
|
||||
if (logout(ut.ut_line))
|
||||
logwtmp(ut.ut_line, "", "");
|
||||
else
|
||||
LogPrintf(LogERROR, "CloseModem: No longer logged in on %s\n",
|
||||
LogPrintf(LogERROR, "CloseLogicalModem: No longer logged in on %s\n",
|
||||
ut.ut_line);
|
||||
Utmp = 0;
|
||||
}
|
||||
UnlockModem();
|
||||
modem = -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -15,7 +15,7 @@
|
||||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id: modem.h,v 1.10 1997/10/26 01:03:25 brian Exp $
|
||||
* $Id: modem.h,v 1.11 1997/10/26 12:42:13 brian Exp $
|
||||
*
|
||||
* TODO:
|
||||
*/
|
||||
@ -26,7 +26,6 @@ extern void DownModem(int);
|
||||
extern void WriteModem(int, char *, int);
|
||||
extern void ModemStartOutput(int);
|
||||
extern int OpenModem(int);
|
||||
extern void CloseModem(void);
|
||||
extern int ModemSpeed(void);
|
||||
extern int ModemQlen(void);
|
||||
extern int DialModem(void);
|
||||
@ -39,3 +38,5 @@ extern void HangupModem(int);
|
||||
extern int ShowModemStatus(void);
|
||||
extern void Enqueue(struct mqueue *, struct mbuf *);
|
||||
extern struct mbuf *Dequeue(struct mqueue *);
|
||||
extern void ModemAddInOctets(int);
|
||||
extern void ModemAddOutOctets(int);
|
||||
|
@ -17,7 +17,7 @@
|
||||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id: os.c,v 1.27 1997/09/03 02:08:20 brian Exp $
|
||||
* $Id: os.c,v 1.28 1997/10/26 01:03:26 brian Exp $
|
||||
*
|
||||
*/
|
||||
#include <sys/param.h>
|
||||
@ -240,13 +240,12 @@ OsLinkdown()
|
||||
int Level;
|
||||
|
||||
if (linkup) {
|
||||
FsmDown(&CcpFsm); /* CCP must come down */
|
||||
|
||||
s = (char *) inet_ntoa(peer_addr);
|
||||
Level = LogIsKept(LogLINK) ? LogLINK : LogIPCP;
|
||||
LogPrintf(Level, "OsLinkdown: %s\n", s);
|
||||
|
||||
FsmDown(&IpcpFsm); /* IPCP must come down */
|
||||
FsmDown(&CcpFsm); /* CCP must come down */
|
||||
|
||||
if (!(mode & MODE_AUTO))
|
||||
DeleteIfRoutes(0);
|
||||
@ -393,19 +392,3 @@ OpenTunnel(int *ptun)
|
||||
close(s);
|
||||
return (0);
|
||||
}
|
||||
|
||||
void
|
||||
OsCloseLink(int flag)
|
||||
{
|
||||
HangupModem(flag);
|
||||
}
|
||||
|
||||
void
|
||||
OsAddInOctets(int cnt)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
OsAddOutOctets(int cnt)
|
||||
{
|
||||
}
|
||||
|
@ -15,7 +15,7 @@
|
||||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id: os.h,v 1.8 1997/09/03 00:40:50 brian Exp $
|
||||
* $Id: os.h,v 1.9 1997/10/26 01:03:27 brian Exp $
|
||||
*
|
||||
* TODO:
|
||||
*/
|
||||
@ -26,11 +26,8 @@ int OsSetIpaddress(struct in_addr, struct in_addr, struct in_addr);
|
||||
int OsInterfaceDown(int);
|
||||
void OsSetInterfaceParams(int, int, int);
|
||||
int OpenTunnel(int *);
|
||||
void OsCloseLink(int);
|
||||
void OsLinkup(void);
|
||||
int OsLinkIsUp(void);
|
||||
void OsLinkdown(void);
|
||||
void OsSetRoute(int, struct in_addr, struct in_addr, struct in_addr);
|
||||
void DeleteIfRoutes(int);
|
||||
void OsAddInOctets(int);
|
||||
void OsAddOutOctets(int);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: $
|
||||
* $Id: phase.c,v 1.1 1997/10/26 01:03:31 brian Exp $
|
||||
*/
|
||||
|
||||
#include <sys/param.h>
|
||||
@ -56,7 +56,7 @@ NewPhase(int new)
|
||||
CcpUp();
|
||||
CcpOpen();
|
||||
break;
|
||||
case PHASE_TERMINATE:
|
||||
case PHASE_DEAD:
|
||||
if (mode & MODE_DIRECT)
|
||||
Cleanup(EX_DEAD);
|
||||
if (mode & MODE_BACKGROUND && reconnectState != RECON_TRUE)
|
||||
|
@ -17,7 +17,7 @@
|
||||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id: vars.c,v 1.30 1997/09/22 23:59:16 brian Exp $
|
||||
* $Id: vars.c,v 1.31 1997/10/26 01:03:58 brian Exp $
|
||||
*
|
||||
*/
|
||||
#include <sys/param.h>
|
||||
@ -39,8 +39,8 @@
|
||||
#include "auth.h"
|
||||
#include "defs.h"
|
||||
|
||||
char VarVersion[] = "PPP Version 1.2";
|
||||
char VarLocalVersion[] = "$Date: 1997/09/22 23:59:16 $";
|
||||
char VarVersion[] = "PPP Version 1.3";
|
||||
char VarLocalVersion[] = "$Date: 1997/10/26 01:03:58 $";
|
||||
int Utmp = 0;
|
||||
int ipInOctets = 0;
|
||||
int ipOutOctets = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user