Make the next number redial ability configurable. The
"set redial pause [times]" command becomes "set redial end-pause[.next-pause] [times]" and next-pause defaults to 3 seconds. This keeps things backwards compatable. Suggested by: ache
This commit is contained in:
parent
68bc60e3b0
commit
43ea9d19fa
@ -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.36 1997/03/24 16:01:46 ache Exp $
|
||||
* $Id: command.c,v 1.37 1997/04/09 17:35:52 ache Exp $
|
||||
*
|
||||
*/
|
||||
#include <sys/types.h>
|
||||
@ -376,6 +376,15 @@ static int ShowRedial()
|
||||
printf(" Random 0 - %d seconds, ", REDIAL_PERIOD);
|
||||
}
|
||||
|
||||
printf(" Redial Next Timer: ");
|
||||
|
||||
if (VarRedialNextTimeout >= 0) {
|
||||
printf(" %d seconds, ", VarRedialNextTimeout);
|
||||
}
|
||||
else {
|
||||
printf(" Random 0 - %d seconds, ", REDIAL_PERIOD);
|
||||
}
|
||||
|
||||
if (VarDialTries)
|
||||
printf("%d dial tries", VarDialTries);
|
||||
|
||||
@ -650,9 +659,11 @@ char **argv;
|
||||
{
|
||||
int timeout;
|
||||
int tries;
|
||||
char *dot;
|
||||
|
||||
if (argc == 1 || argc == 2 ) {
|
||||
if (strcasecmp(argv[0], "random") == 0) {
|
||||
if (strncasecmp(argv[0], "random", 6) == 0 &&
|
||||
(argv[0][6] == '\0' || argv[0][6] == '.')) {
|
||||
VarRedialTimeout = -1;
|
||||
printf("Using random redial timeout.\n");
|
||||
if (!randinit) {
|
||||
@ -672,6 +683,32 @@ char **argv;
|
||||
printf("Usage: %s %s\n", list->name, list->syntax);
|
||||
}
|
||||
}
|
||||
|
||||
dot = index(argv[0],'.');
|
||||
if (dot) {
|
||||
if (strcasecmp(++dot, "random") == 0) {
|
||||
VarRedialNextTimeout = -1;
|
||||
printf("Using random next redial timeout.\n");
|
||||
if (!randinit) {
|
||||
randinit = 1;
|
||||
if (srandomdev() < 0)
|
||||
srandom((unsigned long)(time(NULL) ^ getpid()));
|
||||
}
|
||||
}
|
||||
else {
|
||||
timeout = atoi(dot);
|
||||
if (timeout >= 0) {
|
||||
VarRedialNextTimeout = timeout;
|
||||
}
|
||||
else {
|
||||
printf("invalid next redial timeout\n");
|
||||
printf("Usage: %s %s\n", list->name, list->syntax);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
VarRedialNextTimeout = NEXT_REDIAL_PERIOD; /* Default next timeout */
|
||||
|
||||
if (argc == 2) {
|
||||
tries = atoi(argv[1]);
|
||||
|
||||
@ -1043,7 +1080,7 @@ struct cmdtab const SetCommands[] = {
|
||||
{ "timeout", NULL, SetIdleTimeout, LOCAL_AUTH,
|
||||
"Set Idle timeout", StrValue},
|
||||
{ "redial", NULL, SetRedialTimeout, LOCAL_AUTH,
|
||||
"Set Redial timeout", "value|random [dial_attempts]"},
|
||||
"Set Redial timeout", "value|random[.value|random] [dial_attempts]"},
|
||||
#ifdef MSEXT
|
||||
{ "ns", NULL, SetNS, LOCAL_AUTH,
|
||||
"Set NameServer", "pri-addr [sec-addr]"},
|
||||
|
@ -15,7 +15,7 @@
|
||||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id$
|
||||
* $Id: defs.h,v 1.10 1997/02/22 16:10:10 peter Exp $
|
||||
*
|
||||
* TODO:
|
||||
*/
|
||||
@ -45,8 +45,9 @@
|
||||
#define MODEM_SPEED B38400 /* tty speed */
|
||||
#define SERVER_PORT 3000 /* Base server port no. */
|
||||
|
||||
#define MODEM_CTSRTS TRUE /* Default (true): use CTS/RTS signals */
|
||||
#define REDIAL_PERIOD 30 /* Default Hold time to redial */
|
||||
#define MODEM_CTSRTS TRUE /* Default (true): use CTS/RTS signals */
|
||||
#define REDIAL_PERIOD 30 /* Default Hold time to redial */
|
||||
#define NEXT_REDIAL_PERIOD 3 /* Default Hold time to next number redial */
|
||||
|
||||
#define CONFFILE "ppp.conf"
|
||||
#define LINKFILE "ppp.linkup"
|
||||
|
@ -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.42 1997/04/12 22:58:39 brian Exp $
|
||||
* $Id: main.c,v 1.43 1997/04/13 00:54:43 brian Exp $
|
||||
*
|
||||
* TODO:
|
||||
* o Add commands for traffic summary, version display, etc.
|
||||
@ -682,19 +682,22 @@ RedialTimeout()
|
||||
}
|
||||
|
||||
static void
|
||||
StartRedialTimer()
|
||||
StartRedialTimer(Timeout)
|
||||
int Timeout;
|
||||
{
|
||||
StopTimer(&RedialTimer);
|
||||
|
||||
if (VarRedialTimeout) {
|
||||
LogPrintf(LOG_PHASE_BIT, "Enter pause for redialing.\n");
|
||||
if (Timeout) {
|
||||
RedialTimer.state = TIMER_STOPPED;
|
||||
|
||||
if (VarRedialTimeout > 0)
|
||||
RedialTimer.load = VarRedialTimeout * SECTICKS;
|
||||
if (Timeout > 0)
|
||||
RedialTimer.load = Timeout * SECTICKS;
|
||||
else
|
||||
RedialTimer.load = (random() % REDIAL_PERIOD) * SECTICKS;
|
||||
|
||||
LogPrintf(LOG_PHASE_BIT, "Enter pause (%d) for redialing.\n",
|
||||
RedialTimer.load / SECTICKS);
|
||||
|
||||
RedialTimer.func = RedialTimeout;
|
||||
StartTimer(&RedialTimer);
|
||||
}
|
||||
@ -759,7 +762,7 @@ DoLoop()
|
||||
#endif
|
||||
modem = OpenModem(mode);
|
||||
if (modem < 0) {
|
||||
StartRedialTimer();
|
||||
StartRedialTimer(VarRedialTimeout);
|
||||
} else {
|
||||
tries++; /* Tries are per number, not per list of numbers. */
|
||||
if (VarDialTries)
|
||||
@ -779,21 +782,18 @@ DoLoop()
|
||||
if (VarNextPhone == NULL)
|
||||
Cleanup(EX_DIAL); /* Tried all numbers - no luck */
|
||||
else
|
||||
sleep(1); /* Try all numbers in background mode */
|
||||
/* Try all numbers in background mode */
|
||||
StartRedialTimer(VarRedialNextTimeout);
|
||||
} else if (VarDialTries && tries >= VarDialTries) {
|
||||
/* I give up ! Can't get through :( */
|
||||
StartRedialTimer();
|
||||
StartRedialTimer(VarRedialTimeout);
|
||||
dial_up = FALSE;
|
||||
tries = 0;
|
||||
} else if (VarNextPhone == NULL)
|
||||
/* Dial failed. Keep quite during redial wait period. */
|
||||
StartRedialTimer();
|
||||
StartRedialTimer(VarRedialTimeout);
|
||||
else
|
||||
/*
|
||||
* Give the modem a chance to recover, then dial the next
|
||||
* number in our list
|
||||
*/
|
||||
sleep(1);
|
||||
StartRedialTimer(VarRedialNextTimeout);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
.\" manual page [] for ppp 0.94 beta2 + alpha
|
||||
.\" $Id: ppp.8,v 1.27 1997/04/12 22:58:41 brian Exp $
|
||||
.\" $Id: ppp.8,v 1.28 1997/04/13 00:54:45 brian Exp $
|
||||
.Dd 20 September 1995
|
||||
.Os FreeBSD
|
||||
.Dt PPP 8
|
||||
@ -402,13 +402,21 @@ If the connect fails, the default behavior is to wait 30 seconds
|
||||
and then attempt to connect when another outgoing packet is detected.
|
||||
This behavior can be changed with
|
||||
.Bd -literal -offset indent
|
||||
set redial seconds|random [dial_attempts]
|
||||
set redial seconds|random[.nseconds|random] [dial_attempts]
|
||||
.Ed
|
||||
.Pp
|
||||
Seconds is the number of seconds to wait before attempting
|
||||
.Sq Seconds
|
||||
is the number of seconds to wait before attempting
|
||||
to connect again. If the argument is
|
||||
.Sq random ,
|
||||
the delay period is a random value between 0 and 30 seconds.
|
||||
.Sq Nseconds
|
||||
is the number of seconds to wait before attempting
|
||||
to dial the next number in a list of numbers (see the
|
||||
.Dq set phone
|
||||
command). The default is 3 seconds. Again, if the argument is
|
||||
.Sq random ,
|
||||
the delay period is a random value between 0 and 30 seconds.
|
||||
.Sq dial_attempts
|
||||
is the number of times to try to connect for each outgoing packet
|
||||
that is received. The previous value is unchanged if this parameter
|
||||
@ -417,13 +425,14 @@ is omitted. If a value of zero is specified for
|
||||
.Nm ppp
|
||||
will keep trying until a connection is made.
|
||||
.Bd -literal -offset indent
|
||||
set redial 10 4
|
||||
set redial 10.3 4
|
||||
.Ed
|
||||
.Pp
|
||||
will attempt to connect 4 times for each outgoing packet that is
|
||||
detected with a 10 second delay between each attempt. If multiple
|
||||
phone numbers are specified, the total number of attempts is still
|
||||
4 (it does not attempt each number 4 times).
|
||||
detected with a 3 second delay between each number and a 10 second
|
||||
delay after all numbers have been tried. If multiple phone numbers
|
||||
are specified, the total number of attempts is still 4 (it does not
|
||||
attempt each number 4 times).
|
||||
|
||||
Modifying the dial delay is very useful when running
|
||||
.Nm
|
||||
@ -432,12 +441,13 @@ dial mode on both ends of the link. If each end has the same timeout,
|
||||
both ends wind up calling each other at the same time if the link
|
||||
drops and both ends have packets queued.
|
||||
|
||||
The
|
||||
.Dq set redial
|
||||
command is ineffective if the
|
||||
If the
|
||||
.Fl background
|
||||
flag is specified. For background mode, all phone numbers are dialed
|
||||
at most once until a connection is made.
|
||||
flag is specified, all phone numbers are dialed at most once until
|
||||
a connection is made. The next number redial period specified with
|
||||
the
|
||||
.Dq set redial
|
||||
command is honoured.
|
||||
|
||||
To terminate the program, type
|
||||
|
||||
@ -793,9 +803,8 @@ set phone "1234567:2345678"
|
||||
.Ed
|
||||
.Pp
|
||||
Here, the first number is attempted. If the connection fails, the second
|
||||
number is attempted immediately. The redial timeout is ignored (although
|
||||
the value of dial_attempts is not - see above). If the second number
|
||||
also fails, the first is tried again after the redial timeout has expired.
|
||||
number is attempted after the next number redial period. If the second number
|
||||
also fails, the first is tried again after the redial period has expired.
|
||||
The selected phone number is substituted for the \\T string in the
|
||||
.Dq set dial
|
||||
command (see below).
|
||||
|
@ -1,5 +1,5 @@
|
||||
.\" manual page [] for ppp 0.94 beta2 + alpha
|
||||
.\" $Id: ppp.8,v 1.27 1997/04/12 22:58:41 brian Exp $
|
||||
.\" $Id: ppp.8,v 1.28 1997/04/13 00:54:45 brian Exp $
|
||||
.Dd 20 September 1995
|
||||
.Os FreeBSD
|
||||
.Dt PPP 8
|
||||
@ -402,13 +402,21 @@ If the connect fails, the default behavior is to wait 30 seconds
|
||||
and then attempt to connect when another outgoing packet is detected.
|
||||
This behavior can be changed with
|
||||
.Bd -literal -offset indent
|
||||
set redial seconds|random [dial_attempts]
|
||||
set redial seconds|random[.nseconds|random] [dial_attempts]
|
||||
.Ed
|
||||
.Pp
|
||||
Seconds is the number of seconds to wait before attempting
|
||||
.Sq Seconds
|
||||
is the number of seconds to wait before attempting
|
||||
to connect again. If the argument is
|
||||
.Sq random ,
|
||||
the delay period is a random value between 0 and 30 seconds.
|
||||
.Sq Nseconds
|
||||
is the number of seconds to wait before attempting
|
||||
to dial the next number in a list of numbers (see the
|
||||
.Dq set phone
|
||||
command). The default is 3 seconds. Again, if the argument is
|
||||
.Sq random ,
|
||||
the delay period is a random value between 0 and 30 seconds.
|
||||
.Sq dial_attempts
|
||||
is the number of times to try to connect for each outgoing packet
|
||||
that is received. The previous value is unchanged if this parameter
|
||||
@ -417,13 +425,14 @@ is omitted. If a value of zero is specified for
|
||||
.Nm ppp
|
||||
will keep trying until a connection is made.
|
||||
.Bd -literal -offset indent
|
||||
set redial 10 4
|
||||
set redial 10.3 4
|
||||
.Ed
|
||||
.Pp
|
||||
will attempt to connect 4 times for each outgoing packet that is
|
||||
detected with a 10 second delay between each attempt. If multiple
|
||||
phone numbers are specified, the total number of attempts is still
|
||||
4 (it does not attempt each number 4 times).
|
||||
detected with a 3 second delay between each number and a 10 second
|
||||
delay after all numbers have been tried. If multiple phone numbers
|
||||
are specified, the total number of attempts is still 4 (it does not
|
||||
attempt each number 4 times).
|
||||
|
||||
Modifying the dial delay is very useful when running
|
||||
.Nm
|
||||
@ -432,12 +441,13 @@ dial mode on both ends of the link. If each end has the same timeout,
|
||||
both ends wind up calling each other at the same time if the link
|
||||
drops and both ends have packets queued.
|
||||
|
||||
The
|
||||
.Dq set redial
|
||||
command is ineffective if the
|
||||
If the
|
||||
.Fl background
|
||||
flag is specified. For background mode, all phone numbers are dialed
|
||||
at most once until a connection is made.
|
||||
flag is specified, all phone numbers are dialed at most once until
|
||||
a connection is made. The next number redial period specified with
|
||||
the
|
||||
.Dq set redial
|
||||
command is honoured.
|
||||
|
||||
To terminate the program, type
|
||||
|
||||
@ -793,9 +803,8 @@ set phone "1234567:2345678"
|
||||
.Ed
|
||||
.Pp
|
||||
Here, the first number is attempted. If the connection fails, the second
|
||||
number is attempted immediately. The redial timeout is ignored (although
|
||||
the value of dial_attempts is not - see above). If the second number
|
||||
also fails, the first is tried again after the redial timeout has expired.
|
||||
number is attempted after the next number redial period. If the second number
|
||||
also fails, the first is tried again after the redial period has expired.
|
||||
The selected phone number is substituted for the \\T string in the
|
||||
.Dq set dial
|
||||
command (see below).
|
||||
|
@ -17,7 +17,7 @@
|
||||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id$
|
||||
* $Id: vars.c,v 1.12 1997/02/22 16:11:00 peter Exp $
|
||||
*
|
||||
*/
|
||||
#include "fsm.h"
|
||||
@ -29,7 +29,7 @@
|
||||
#include "defs.h"
|
||||
|
||||
char VarVersion[] = "Version 0.94";
|
||||
char VarLocalVersion[] = "$Date: 1997/01/14 07:15:44 $";
|
||||
char VarLocalVersion[] = "$Date: 1997/02/22 16:11:00 $";
|
||||
|
||||
/*
|
||||
* Order of conf option is important. See vars.h.
|
||||
@ -50,7 +50,7 @@ struct confdesc pppConfs[] = {
|
||||
|
||||
struct pppvars pppVars = {
|
||||
DEF_MRU, 0, MODEM_SPEED, CS8, MODEM_CTSRTS, 180, 30, 3,
|
||||
REDIAL_PERIOD, 1, MODEM_DEV, OPEN_PASSIVE, LOCAL_NO_AUTH,
|
||||
REDIAL_PERIOD, NEXT_REDIAL_PERIOD, 1, MODEM_DEV, OPEN_PASSIVE, LOCAL_NO_AUTH,
|
||||
};
|
||||
|
||||
int
|
||||
|
@ -15,7 +15,7 @@
|
||||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id$
|
||||
* $Id: vars.h,v 1.10 1997/02/22 16:11:02 peter Exp $
|
||||
*
|
||||
* TODO:
|
||||
*/
|
||||
@ -63,6 +63,7 @@ struct pppvars {
|
||||
int lqr_timeout; /* LQR timeout value */
|
||||
int retry_timeout; /* Retry timeout value */
|
||||
int redial_timeout; /* Redial timeout value */
|
||||
int redial_next_timeout; /* Redial next timeout value */
|
||||
int dial_tries; /* Dial attempts before giving up, 0 == forever */
|
||||
char modem_dev[20]; /* Name of device */
|
||||
int open_mode; /* LCP open mode */
|
||||
@ -101,6 +102,7 @@ struct pppvars {
|
||||
#define VarNextPhone pppVars.next_phone
|
||||
#define VarShortHost pppVars.shostname
|
||||
#define VarRedialTimeout pppVars.redial_timeout
|
||||
#define VarRedialNextTimeout pppVars.redial_next_timeout
|
||||
#define VarDialTries pppVars.dial_tries
|
||||
|
||||
#define DEV_IS_SYNC (VarSpeed == 0)
|
||||
|
Loading…
Reference in New Issue
Block a user