Sort out ppp over tcp:
o Allow "set var" with no args to blank var (don't req ""). o Zero VarTerm ASAP if not in interactive mode. o Never print anything to stdout in -direct mode. o Count redial when failing to open modem. o Increase device size to 40 characters (for host:port). o Remove missed "if (fd == 0) fd = 1;". o Don't give up on incoming non-terminal connections.
This commit is contained in:
parent
419a3911cf
commit
0706ff3806
@ -17,7 +17,7 @@
|
||||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id: command.c,v 1.53 1997/06/01 01:13:00 brian Exp $
|
||||
* $Id: command.c,v 1.54 1997/06/09 03:27:16 brian Exp $
|
||||
*
|
||||
*/
|
||||
#include <sys/types.h>
|
||||
@ -1128,43 +1128,47 @@ char **argv;
|
||||
int param;
|
||||
{
|
||||
u_long map;
|
||||
char *arg;
|
||||
|
||||
if (argc > 0) {
|
||||
switch (param) {
|
||||
if (argc > 0)
|
||||
arg = *argv;
|
||||
else
|
||||
arg = "";
|
||||
|
||||
switch (param) {
|
||||
case VAR_AUTHKEY:
|
||||
strncpy(VarAuthKey, *argv, sizeof(VarAuthKey)-1);
|
||||
strncpy(VarAuthKey, arg, sizeof(VarAuthKey)-1);
|
||||
VarAuthKey[sizeof(VarAuthKey)-1] = '\0';
|
||||
break;
|
||||
case VAR_AUTHNAME:
|
||||
strncpy(VarAuthName, *argv, sizeof(VarAuthName)-1);
|
||||
strncpy(VarAuthName, arg, sizeof(VarAuthName)-1);
|
||||
VarAuthName[sizeof(VarAuthName)-1] = '\0';
|
||||
break;
|
||||
case VAR_DIAL:
|
||||
strncpy(VarDialScript, *argv, sizeof(VarDialScript)-1);
|
||||
strncpy(VarDialScript, arg, sizeof(VarDialScript)-1);
|
||||
VarDialScript[sizeof(VarDialScript)-1] = '\0';
|
||||
break;
|
||||
case VAR_LOGIN:
|
||||
strncpy(VarLoginScript, *argv, sizeof(VarLoginScript)-1);
|
||||
strncpy(VarLoginScript, arg, sizeof(VarLoginScript)-1);
|
||||
VarLoginScript[sizeof(VarLoginScript)-1] = '\0';
|
||||
break;
|
||||
case VAR_DEVICE:
|
||||
CloseModem();
|
||||
strncpy(VarDevice, *argv, sizeof(VarDevice)-1);
|
||||
strncpy(VarDevice, arg, sizeof(VarDevice)-1);
|
||||
VarDevice[sizeof(VarDevice)-1] = '\0';
|
||||
VarBaseDevice = rindex(VarDevice, '/');
|
||||
VarBaseDevice = VarBaseDevice ? VarBaseDevice + 1 : "";
|
||||
break;
|
||||
case VAR_ACCMAP:
|
||||
sscanf(*argv, "%lx", &map);
|
||||
sscanf(arg, "%lx", &map);
|
||||
VarAccmap = map;
|
||||
break;
|
||||
case VAR_PHONE:
|
||||
strncpy(VarPhoneList, *argv, sizeof(VarPhoneList)-1);
|
||||
strncpy(VarPhoneList, arg, sizeof(VarPhoneList)-1);
|
||||
VarPhoneList[sizeof(VarPhoneList)-1] = '\0';
|
||||
strcpy(VarPhoneCopy, VarPhoneList);
|
||||
VarNextPhone = VarPhoneCopy;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return 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.59 1997/06/01 03:43:25 brian Exp $
|
||||
* $Id: main.c,v 1.60 1997/06/09 03:27:28 brian Exp $
|
||||
*
|
||||
* TODO:
|
||||
* o Add commands for traffic summary, version display, etc.
|
||||
@ -329,7 +329,7 @@ char **argv;
|
||||
FILE *lockfile;
|
||||
char *name;
|
||||
|
||||
VarTerm = stdout;
|
||||
VarTerm = 0;
|
||||
name = rindex(argv[0], '/');
|
||||
LogOpen(name ? name+1 : argv[0]);
|
||||
|
||||
@ -338,7 +338,8 @@ char **argv;
|
||||
netfd = server = modem = tun_in = -1;
|
||||
ProcessArgs(argc, argv);
|
||||
if (!(mode & MODE_DIRECT))
|
||||
Greetings();
|
||||
VarTerm = stdout;
|
||||
Greetings();
|
||||
GetUid();
|
||||
IpcpDefAddress();
|
||||
|
||||
@ -350,6 +351,7 @@ char **argv;
|
||||
if (VarTerm) {
|
||||
fprintf(VarTerm,LAUTH_M1);
|
||||
fprintf(VarTerm,LAUTH_M2);
|
||||
fflush(VarTerm);
|
||||
}
|
||||
/* Fall down */
|
||||
case VALID:
|
||||
@ -409,19 +411,15 @@ char **argv;
|
||||
|
||||
if (dstsystem) {
|
||||
if (SelectSystem(dstsystem, CONFFILE) < 0) {
|
||||
if (VarTerm)
|
||||
fprintf(VarTerm, "Destination system not found in conf file.\n");
|
||||
LogPrintf(LogWARN, "Destination system not found in conf file.\n");
|
||||
Cleanup(EX_START);
|
||||
}
|
||||
if ((mode & MODE_AUTO) && DefHisAddress.ipaddr.s_addr == INADDR_ANY) {
|
||||
if (VarTerm)
|
||||
fprintf(VarTerm, "Must specify dstaddr with"
|
||||
LogPrintf(LogWARN, "Must specify dstaddr with"
|
||||
" auto, background or ddial mode.\n");
|
||||
Cleanup(EX_START);
|
||||
}
|
||||
}
|
||||
if (mode & MODE_DIRECT)
|
||||
fprintf(VarTerm, "Packet mode enabled.\n");
|
||||
|
||||
if (!(mode & MODE_INTER)) {
|
||||
int port = SERVER_PORT + tunno;
|
||||
@ -511,13 +509,17 @@ char **argv;
|
||||
|
||||
if (server >= 0)
|
||||
LogPrintf(LogPHASE, "Listening at %d.\n", port);
|
||||
|
||||
VarTerm = 0; /* We know it's currently stdin */
|
||||
|
||||
#ifdef DOTTYINIT
|
||||
if (mode & (MODE_DIRECT|MODE_DEDICATED))
|
||||
if (mode & (MODE_DIRECT|MODE_DEDICATED)) { /* } */
|
||||
#else
|
||||
if (mode & MODE_DIRECT)
|
||||
if (mode & MODE_DIRECT) {
|
||||
#endif
|
||||
chdir("/"); /* Be consistent with daemon() */
|
||||
TtyInit();
|
||||
else
|
||||
} else
|
||||
daemon(0,0);
|
||||
} else {
|
||||
TtyInit();
|
||||
@ -743,6 +745,7 @@ DoLoop()
|
||||
pgroup = getpgrp();
|
||||
|
||||
if (mode & MODE_DIRECT) {
|
||||
LogPrintf(LogDEBUG, "Opening modem\n");
|
||||
modem = OpenModem(mode);
|
||||
LogPrintf(LogPHASE, "Packet mode enabled\n");
|
||||
PacketMode();
|
||||
@ -805,7 +808,22 @@ DoLoop()
|
||||
LogPrintf(LogDEBUG, "going to dial: modem = %d\n", modem);
|
||||
modem = OpenModem(mode);
|
||||
if (modem < 0) {
|
||||
StartRedialTimer(VarRedialTimeout);
|
||||
tries++;
|
||||
if (VarDialTries)
|
||||
LogPrintf(LogCHAT, "Failed to open modem (attempt %u of %d)\n",
|
||||
tries, VarDialTries);
|
||||
else
|
||||
LogPrintf(LogCHAT, "Failed to open modem (attempt %u)\n", tries);
|
||||
|
||||
if (VarDialTries && tries >= VarDialTries) {
|
||||
if (mode & MODE_BACKGROUND)
|
||||
Cleanup(EX_DIAL); /* Can't get the modem */
|
||||
dial_up = FALSE;
|
||||
reconnectState = RECON_UNKNOWN;
|
||||
reconnectCount = 0;
|
||||
tries = 0;
|
||||
} else
|
||||
StartRedialTimer(VarRedialTimeout);
|
||||
} else {
|
||||
tries++; /* Tries are per number, not per list of numbers. */
|
||||
if (VarDialTries)
|
||||
|
@ -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.41 1997/05/29 02:29:13 brian Exp $
|
||||
* $Id: modem.c,v 1.42 1997/06/09 03:27:30 brian Exp $
|
||||
*
|
||||
* TODO:
|
||||
*/
|
||||
@ -359,6 +359,7 @@ char *host, *port;
|
||||
LogPrintf(LogWARN, "OpenConnection: connection failed.\n");
|
||||
return(-1);
|
||||
}
|
||||
LogPrintf(LogDEBUG, "OpenConnection: modem fd is %d.\n", sock);
|
||||
return(sock);
|
||||
}
|
||||
|
||||
@ -381,8 +382,9 @@ int mode;
|
||||
LogPrintf(LogPHASE, "Open Failed %s\n", ctermid(NULL));
|
||||
return(modem);
|
||||
}
|
||||
} else if (modem < 0)
|
||||
return(modem);
|
||||
} else
|
||||
/* must be a tcp connection */
|
||||
return modem = dup(1);
|
||||
} else if (modem < 0) {
|
||||
if (strncmp(VarDevice, "/dev/", 5) == 0) {
|
||||
if ((res = uu_lock(VarBaseDevice)) != UU_LOCK_OK) {
|
||||
@ -680,7 +682,6 @@ int fd;
|
||||
if (modemout) {
|
||||
nb = modemout->cnt;
|
||||
if (nb > 1600) nb = 1600;
|
||||
if (fd == 0) fd = 1; /* XXX WTFO! This is bogus */
|
||||
nw = write(fd, MBUF_CTOP(modemout), nb);
|
||||
LogPrintf(LogDEBUG, "ModemStartOutput: wrote: %d(%d)\n", nw, nb);
|
||||
LogDumpBuff(LogDEBUG, "ModemStartOutput: modem write",
|
||||
@ -693,8 +694,11 @@ int fd;
|
||||
LogPrintf(LogDEBUG, "ModemStartOutput: mbfree\n");
|
||||
}
|
||||
} else if (nw < 0) {
|
||||
if (errno != EAGAIN)
|
||||
LogPrintf(LogERROR, "modem write: %s", strerror(errno));
|
||||
if (errno != EAGAIN) {
|
||||
LogPrintf(LogERROR, "modem write (%d): %s", modem, strerror(errno));
|
||||
reconnect(RECON_TRUE);
|
||||
DownConnection();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -15,7 +15,7 @@
|
||||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id: vars.h,v 1.17 1997/06/01 01:13:04 brian Exp $
|
||||
* $Id: vars.h,v 1.18 1997/06/09 03:27:42 brian Exp $
|
||||
*
|
||||
* TODO:
|
||||
*/
|
||||
@ -68,7 +68,7 @@ struct pppvars {
|
||||
int redial_timeout; /* Redial timeout value */
|
||||
int redial_next_timeout; /* Redial next timeout value */
|
||||
int dial_tries; /* Dial attempts before giving up, 0 == inf */
|
||||
char modem_dev[20]; /* Name of device */
|
||||
char modem_dev[40]; /* Name of device / host:port */
|
||||
char *base_modem_dev; /* Pointer to base of modem_dev */
|
||||
int open_mode; /* LCP open mode */
|
||||
#define LOCAL_AUTH 0x01
|
||||
|
Loading…
x
Reference in New Issue
Block a user