Move the dial, login and hangup scripts into struct datalink.

Don't set these scripts in -direct mode.
Always set reconnect_tries to zero for -direct mode.
This commit is contained in:
Brian Somers 1998-02-16 19:10:03 +00:00
parent 310c3bab77
commit 5b8b8060c1
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/cvs2svn/branches/MP/; revision=33435
8 changed files with 63 additions and 51 deletions

View File

@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: bundle.c,v 1.1.2.8 1998/02/10 03:23:06 brian Exp $
* $Id: bundle.c,v 1.1.2.9 1998/02/15 23:59:39 brian Exp $
*/
#include <sys/param.h>
@ -535,6 +535,8 @@ bundle_LinkLost(struct bundle *bundle, struct link *link, int staydown)
* and MAY cause a program exit.
*/
if ((mode & MODE_DIRECT) || CleaningUp)
staydown = 1;
datalink_Down(bundle->links, staydown);
}
@ -543,9 +545,13 @@ bundle_LinkClosed(struct bundle *bundle, struct datalink *dl)
{
/*
* Our datalink has closed.
* If it's DIRECT, delete it.
* If it's DIRECT or BACKGROUND, delete it.
* If it's the last data link,
*/
if (mode & (MODE_BACKGROUND|MODE_DIRECT))
CleaningUp = 1;
if (!(mode & MODE_AUTO))
bundle_DownInterface(bundle);
if (mode & MODE_DDIAL)

View File

@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: chat.c,v 1.44.2.7 1998/02/13 05:10:06 brian Exp $
* $Id: chat.c,v 1.44.2.8 1998/02/13 05:31:03 brian Exp $
*/
#include <sys/param.h>
@ -455,9 +455,14 @@ chat_Init(struct chat *c, struct physical *p, const char *data, int emptybuf)
c->state = CHAT_EXPECT;
strncpy(c->script, data, sizeof c->script - 1);
c->script[sizeof c->script - 1] = '\0';
c->argc = MakeArgs(c->script, c->argv, VECSIZE(c->argv));
if (data == NULL) {
*c->script = '\0';
c->argc = 0;
} else {
strncpy(c->script, data, sizeof c->script - 1);
c->script[sizeof c->script - 1] = '\0';
c->argc = MakeArgs(c->script, c->argv, VECSIZE(c->argv));
}
c->arg = -1;
c->argptr = NULL;

View File

@ -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.131.2.16 1998/02/13 05:10:13 brian Exp $
* $Id: command.c,v 1.131.2.17 1998/02/15 23:59:49 brian Exp $
*
*/
#include <sys/param.h>
@ -1277,6 +1277,7 @@ SetVariable(struct cmdargs const *arg)
u_long map;
const char *argp;
int param = (int)arg->data;
struct datalink *dl = bundle2datalink(arg->bundle, NULL);
if (arg->argc > 0)
argp = *arg->argv;
@ -1293,12 +1294,16 @@ SetVariable(struct cmdargs const *arg)
VarAuthName[sizeof VarAuthName - 1] = '\0';
break;
case VAR_DIAL:
strncpy(VarDialScript, argp, sizeof VarDialScript - 1);
VarDialScript[sizeof VarDialScript - 1] = '\0';
if (!(mode & (MODE_DIRECT|MODE_DEDICATED))) {
strncpy(dl->script.dial, argp, sizeof dl->script.dial - 1);
dl->script.dial[sizeof dl->script.dial - 1] = '\0';
}
break;
case VAR_LOGIN:
strncpy(VarLoginScript, argp, sizeof VarLoginScript - 1);
VarLoginScript[sizeof VarLoginScript - 1] = '\0';
if (!(mode & (MODE_DIRECT|MODE_DEDICATED))) {
strncpy(dl->script.login, argp, sizeof dl->script.login - 1);
dl->script.login[sizeof dl->script.login - 1] = '\0';
}
break;
case VAR_DEVICE:
if (link_IsActive(&arg->bundle->links->physical->link))
@ -1322,8 +1327,10 @@ SetVariable(struct cmdargs const *arg)
VarAltPhone = NULL;
break;
case VAR_HANGUP:
strncpy(VarHangupScript, argp, sizeof VarHangupScript - 1);
VarHangupScript[sizeof VarHangupScript - 1] = '\0';
if (!(mode & (MODE_DIRECT|MODE_DEDICATED))) {
strncpy(dl->script.hangup, argp, sizeof dl->script.hangup - 1);
dl->script.hangup[sizeof dl->script.hangup - 1] = '\0';
}
break;
#ifdef HAVE_DES
case VAR_ENC:

View File

@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: datalink.c,v 1.1.2.1 1998/02/15 23:59:55 brian Exp $
* $Id: datalink.c,v 1.1.2.2 1998/02/16 00:18:52 brian Exp $
*/
#include <sys/param.h>
@ -129,7 +129,7 @@ datalink_UpdateSet(struct descriptor *d, fd_set *r, fd_set *w, fd_set *e,
if (modem_Open(dl->physical, dl->bundle) >= 0) {
LogPrintf(LogPHASE, "%s: Entering DIAL state\n", dl->name);
dl->state = DATALINK_DIAL;
chat_Init(&dl->chat, dl->physical, VarDialScript, 1);
chat_Init(&dl->chat, dl->physical, dl->script.dial, 1);
if (!(mode & MODE_DDIAL) && VarDialTries)
LogPrintf(LogCHAT, "%s: Dial attempt %u of %d\n",
dl->name, VarDialTries - dl->dial_tries, VarDialTries);
@ -145,8 +145,7 @@ datalink_UpdateSet(struct descriptor *d, fd_set *r, fd_set *w, fd_set *e,
dl->state = DATALINK_CLOSED;
dl->reconnect_tries = 0;
dl->dial_tries = -1;
if (mode & MODE_BACKGROUND)
CleaningUp = 1;
bundle_LinkClosed(dl->bundle, dl);
} else
datalink_StartDialTimer(dl, VarRedialTimeout);
}
@ -167,7 +166,7 @@ datalink_UpdateSet(struct descriptor *d, fd_set *r, fd_set *w, fd_set *e,
case DATALINK_DIAL:
LogPrintf(LogPHASE, "%s: Entering LOGIN state\n", dl->name);
dl->state = DATALINK_LOGIN;
chat_Init(&dl->chat, dl->physical, VarLoginScript, 0);
chat_Init(&dl->chat, dl->physical, dl->script.login, 0);
break;
case DATALINK_LOGIN:
dl->dial_tries = 0;
@ -176,7 +175,7 @@ datalink_UpdateSet(struct descriptor *d, fd_set *r, fd_set *w, fd_set *e,
LogPrintf(LogPHASE, "%s: Entering HANGUP state\n", dl->name);
dl->state = DATALINK_HANGUP;
modem_Offline(dl->physical);
chat_Init(&dl->chat, dl->physical, VarHangupScript, 1);
chat_Init(&dl->chat, dl->physical, dl->script.hangup, 1);
} else {
LogPrintf(LogPHASE, "%s: Entering OPEN state\n", dl->name);
dl->state = DATALINK_OPEN;
@ -198,7 +197,7 @@ datalink_UpdateSet(struct descriptor *d, fd_set *r, fd_set *w, fd_set *e,
LogPrintf(LogPHASE, "%s: Entering HANGUP state\n", dl->name);
dl->state = DATALINK_HANGUP;
modem_Offline(dl->physical);
chat_Init(&dl->chat, dl->physical, VarHangupScript, 1);
chat_Init(&dl->chat, dl->physical, dl->script.hangup, 1);
break;
}
break;
@ -282,6 +281,11 @@ datalink_Create(const char *name, struct bundle *bundle)
dl->desc.IsSet = datalink_IsSet;
dl->desc.Read = datalink_Read;
dl->desc.Write = datalink_Write;
*dl->script.dial = '\0';
*dl->script.login = '\0';
*dl->script.hangup = '\0';
dl->state = DATALINK_CLOSED;
dl->bundle = bundle;
dl->next = NULL;
@ -326,7 +330,7 @@ datalink_Up(struct datalink *dl)
if (dl->state == DATALINK_CLOSED) {
LogPrintf(LogPHASE, "%s: Entering OPENING state\n", dl->name);
dl->state = DATALINK_OPENING;
dl->reconnect_tries = VarReconnectTries;
dl->reconnect_tries = (mode & MODE_DIRECT) ? 0 : VarReconnectTries;
dl->dial_tries = VarDialTries;
}
}
@ -351,7 +355,7 @@ datalink_Down(struct datalink *dl, int stay)
FsmDown(&CcpInfo.fsm);
FsmClose(&CcpInfo.fsm);
FsmDown(&LcpInfo.fsm);
if (CleaningUp || stay)
if (stay)
FsmClose(&LcpInfo.fsm);
else
FsmOpen(&CcpInfo.fsm);
@ -360,7 +364,7 @@ datalink_Down(struct datalink *dl, int stay)
LogPrintf(LogPHASE, "%s: Entering HANGUP state\n", dl->name);
dl->state = DATALINK_HANGUP;
modem_Offline(dl->physical);
chat_Init(&dl->chat, dl->physical, VarHangupScript, 1);
chat_Init(&dl->chat, dl->physical, dl->script.hangup, 1);
}
if (stay) {

View File

@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id$
* $Id: datalink.h,v 1.1.2.1 1998/02/16 00:00:01 brian Exp $
*/
#define DATALINK_CLOSED (0)
@ -37,7 +37,14 @@ struct datalink {
struct descriptor desc; /* We play either a physical or a chat */
int state; /* Our DATALINK_* state */
struct physical *physical; /* Our link */
struct chat chat; /* For bringing the link up & down */
struct {
char dial[SCRIPT_LEN]; /* dial */
char login[SCRIPT_LEN]; /* login */
char hangup[SCRIPT_LEN]; /* hangup */
} script;
struct pppTimer dial_timer; /* For timing between opens & scripts */
int dial_tries; /* try again this number of times */
unsigned reconnect_tries; /* try again this number of times */

View File

@ -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.121.2.21 1998/02/13 05:10:16 brian Exp $
* $Id: main.c,v 1.121.2.22 1998/02/16 00:00:31 brian Exp $
*
* TODO:
* o Add commands for traffic summary, version display, etc.
@ -519,25 +519,12 @@ DoLoop(struct bundle *bundle)
{
fd_set rfds, wfds, efds;
int pri, i, n, nfds;
struct timeval timeout;
int qlen;
struct tun_data tun;
#define rbuff tun.data
if (mode & MODE_DIRECT) {
LogPrintf(LogDEBUG, "Opening modem\n");
if (modem_Open(bundle2physical(bundle, NULL), bundle) < 0)
return;
LogPrintf(LogPHASE, "Packet mode enabled\n");
PacketMode(bundle, VarOpenMode);
} else if (mode & MODE_DEDICATED) {
if (!link_IsActive(bundle2link(bundle, NULL)))
while (modem_Open(bundle2physical(bundle, NULL), bundle) < 0)
nointr_sleep(VarReconnectTimer);
}
timeout.tv_sec = 0;
timeout.tv_usec = 0;
if (mode & (MODE_DIRECT|MODE_DEDICATED))
bundle_Open(bundle, NULL);
if (mode & MODE_BACKGROUND)
bundle_Open(bundle, NULL);

View File

@ -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.77.2.15 1998/02/13 05:10:19 brian Exp $
* $Id: modem.c,v 1.77.2.16 1998/02/16 00:00:45 brian Exp $
*
* TODO:
*/
@ -65,6 +65,7 @@
#include "physical.h"
#include "prompt.h"
#include "chat.h"
#include "datalink.h"
#ifndef O_NONBLOCK
@ -888,6 +889,7 @@ modem_ShowStatus(struct cmdargs const *arg)
{
const char *dev;
struct physical *modem = bundle2physical(arg->bundle, NULL);
struct datalink *dl = bundle2datalink(arg->bundle, NULL);
#ifdef TIOCOUTQ
int nb;
#endif
@ -929,9 +931,9 @@ modem_ShowStatus(struct cmdargs const *arg)
prompt_Printf(&prompt, "outq: ioctl probe failed: %s\n", strerror(errno));
#endif
prompt_Printf(&prompt, "outqlen: %d\n", link_QueueLen(&modem->link));
prompt_Printf(&prompt, "DialScript = %s\n", VarDialScript);
prompt_Printf(&prompt, "LoginScript = %s\n", VarLoginScript);
prompt_Printf(&prompt, "PhoneNumber(s) = %s\n", VarPhoneList);
prompt_Printf(&prompt, "DialScript = %s\n", dl->script.dial);
prompt_Printf(&prompt, "LoginScript = %s\n", dl->script.login);
prompt_Printf(&prompt, "PhoneNumber(s) = %s\n", dl->script.hangup);
prompt_Printf(&prompt, "\n");
throughput_disp(&modem->link.throughput);

View File

@ -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.42.2.3 1998/02/10 03:23:50 brian Exp $
* $Id: vars.h,v 1.42.2.4 1998/02/16 00:01:12 brian Exp $
*
* TODO:
*/
@ -82,8 +82,6 @@ struct pppvars {
/* The rest are just default initialized in vars.c */
#define DIALUP_REQ 0x01
#define DIALUP_DONE 0x02
char dial_script[SCRIPT_LEN]; /* Dial script */
char login_script[SCRIPT_LEN]; /* Login script */
char auth_key[50]; /* PAP/CHAP key */
char auth_name[50]; /* PAP/CHAP system name */
char local_auth_key[50]; /* Local auth passwd */
@ -96,7 +94,6 @@ struct pppvars {
char *next_phone; /* Next phone from the list */
char *alt_phone; /* Next phone from the list */
char shostname[MAXHOSTNAMELEN]; /* Local short Host Name */
char hangup_script[SCRIPT_LEN]; /* Hangup script before modem is closed */
struct aliasHandlers handler; /* Alias function pointers */
};
@ -113,9 +110,6 @@ struct pppvars {
#endif
#define VarOpenMode pppVars.open_mode
#define VarLocalAuth pppVars.lauth
#define VarDialScript pppVars.dial_script
#define VarHangupScript pppVars.hangup_script
#define VarLoginScript pppVars.login_script
#define VarIdleTimeout pppVars.idle_timeout
#define VarLqrTimeout pppVars.lqr_timeout
#define VarRetryTimeout pppVars.retry_timeout