2001-06-13 21:52:19 +00:00
|
|
|
/*-
|
|
|
|
* Copyright (c) 1996 - 2001 Brian Somers <brian@Awfulhak.org>
|
|
|
|
* based on work by Toshiharu OHNO <tony-o@iij.ad.jp>
|
|
|
|
* Internet Initiative Japan, Inc (IIJ)
|
|
|
|
* All rights reserved.
|
1995-01-31 06:29:58 +00:00
|
|
|
*
|
2001-06-13 21:52:19 +00:00
|
|
|
* Redistribution and use in source and binary forms, with or without
|
|
|
|
* modification, are permitted provided that the following conditions
|
|
|
|
* are met:
|
|
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
|
|
* notice, this list of conditions and the following disclaimer.
|
|
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
|
|
* documentation and/or other materials provided with the distribution.
|
1995-01-31 06:29:58 +00:00
|
|
|
*
|
2001-06-13 21:52:19 +00:00
|
|
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
|
|
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
|
|
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
|
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
|
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
|
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
|
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
|
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
|
|
* SUCH DAMAGE.
|
1995-01-31 06:29:58 +00:00
|
|
|
*
|
1999-08-28 01:35:59 +00:00
|
|
|
* $FreeBSD$
|
1995-01-31 06:29:58 +00:00
|
|
|
*/
|
|
|
|
|
1998-03-06 00:34:47 +00:00
|
|
|
/* Check the following definitions for your machine environment */
|
1995-02-26 12:18:08 +00:00
|
|
|
#ifdef __FreeBSD__
|
1999-04-27 00:23:57 +00:00
|
|
|
# define MODEM_LIST "/dev/cuaa1\0/dev/cuaa0" /* name of tty device */
|
1997-09-10 02:20:35 +00:00
|
|
|
#else
|
1997-10-26 01:04:02 +00:00
|
|
|
# ifdef __OpenBSD__
|
1999-04-27 00:23:57 +00:00
|
|
|
# define MODEM_LIST "/dev/cua01\0/dev/cua00" /* name of tty device */
|
1997-10-26 01:04:02 +00:00
|
|
|
# else
|
1999-04-27 00:23:57 +00:00
|
|
|
# define MODEM_LIST "/dev/tty01\0/dev/tty00" /* name of tty device */
|
1997-10-26 01:04:02 +00:00
|
|
|
# endif
|
1997-09-10 02:20:35 +00:00
|
|
|
#endif
|
1999-04-27 00:23:57 +00:00
|
|
|
#define NMODEMS 2
|
1997-10-26 01:04:02 +00:00
|
|
|
|
2001-03-23 11:43:22 +00:00
|
|
|
#ifndef PPP_CONFDIR
|
|
|
|
#define PPP_CONFDIR "/etc/ppp"
|
|
|
|
#endif
|
1998-05-01 19:26:12 +00:00
|
|
|
|
1998-05-28 23:17:51 +00:00
|
|
|
#define TUN_NAME "tun"
|
|
|
|
#define TUN_PREFIX (_PATH_DEV TUN_NAME) /* /dev/tun */
|
1998-04-10 13:19:23 +00:00
|
|
|
|
1997-08-25 00:29:32 +00:00
|
|
|
#define MODEM_SPEED B38400 /* tty speed */
|
|
|
|
#define SERVER_PORT 3000 /* Base server port no. */
|
1997-10-26 01:04:02 +00:00
|
|
|
#define MODEM_CTSRTS 1 /* Default (true): use CTS/RTS signals */
|
1998-02-16 19:10:44 +00:00
|
|
|
#define RECONNECT_TIMEOUT 3 /* Default timer for carrier loss */
|
1998-02-16 19:11:10 +00:00
|
|
|
#define DIAL_TIMEOUT 30 /* Default and Max random time to redial */
|
|
|
|
#define DIAL_NEXT_TIMEOUT 3 /* Default Hold time to next number redial */
|
1999-06-01 19:08:59 +00:00
|
|
|
#define SCRIPT_LEN 512 /* Size of login/dial/hangup scripts */
|
|
|
|
#define LINE_LEN SCRIPT_LEN /* Size of lines */
|
|
|
|
#define DEVICE_LEN SCRIPT_LEN /* Size of individual devices */
|
1999-02-11 10:14:08 +00:00
|
|
|
#define AUTHLEN 100 /* Size of authname/authkey */
|
1999-01-28 01:56:34 +00:00
|
|
|
#define CHAPDIGESTLEN 100 /* Maximum chap digest */
|
|
|
|
#define CHAPCHALLENGELEN 48 /* Maximum chap challenge */
|
2000-10-30 00:15:04 +00:00
|
|
|
#define CHAPAUTHRESPONSELEN 48 /* Maximum chap authresponse (chap81) */
|
1997-11-22 03:37:54 +00:00
|
|
|
#define MAXARGS 40 /* How many args per config line */
|
1998-08-25 17:48:43 +00:00
|
|
|
#define NCP_IDLE_TIMEOUT 180 /* Drop all links */
|
|
|
|
#define CHOKED_TIMEOUT 120 /* Delete queued packets w/ blocked tun */
|
1998-01-29 00:44:16 +00:00
|
|
|
|
2001-03-19 19:47:54 +00:00
|
|
|
#define MIN_LQRPERIOD 1 /* Minimum LQR frequency */
|
1998-07-11 02:48:36 +00:00
|
|
|
#define DEF_LQRPERIOD 30 /* Default LQR frequency */
|
2001-03-19 19:47:54 +00:00
|
|
|
#define MIN_FSMRETRY 1 /* Minimum FSM retry frequency */
|
1998-04-03 19:24:07 +00:00
|
|
|
#define DEF_FSMRETRY 3 /* FSM retry frequency */
|
Allow control over the number of ConfigREQ & TermREQ attempts
that are made in each of the FSMs (LCP, CCP & IPCP) and the
number of REQs/Challenges for PAP/CHAP by accepting more arguments
in the ``set {c,ip,l}cpretry'' and ``set {ch,p}apretry'' commands.
Change the non-convergence thresholds to 3 times the number of configured
REQ tries (rather than the previous fixed ``10''). We now notice
repeated NAKs and REJs rather than just REQs.
Don't suggest that CHAP 0x05 isn't supported when it's not configured.
Fix some bugs that expose themselves with smaller numbers of retries:
o Handle instantaneous disconnects (set device /dev/null) correctly
by stopping all fsm timers in fsm2initial.
o Don't forget to uu_unlock() devices that are files but are not
ttys (set device /dev/zero).
Fix a *HORRENDOUS* bug in RFC1661 (already fixed for an Open event in state
``Closed''):
According to the state transition table, a RCR+ or RCR- received in
the ``Stopped'' state are supposed to InitRestartCounter, SendConfigReq
and SendConfig{Ack,Nak}. However, in ``Stopped'', we haven't yet
done a TLS (or the last thing we did is a TLF). We must therefore
do the TLS at this point !
This was never noticed before because LCP and CCP used not use
LayerStart() for anything interesting, and IPCP tends to go into
Stopped then get a Down because of an LCP RTR rather than getting a
RCR again.
1999-02-26 21:28:14 +00:00
|
|
|
#define DEF_FSMTRIES 5 /* Default max retries */
|
1999-11-26 22:44:33 +00:00
|
|
|
#define DEF_FSMAUTHTRIES 3 /* Default max auth retries */
|
2000-06-11 02:30:51 +00:00
|
|
|
#define DEF_IFQUEUE 30 /* Default interface queue size */
|
1995-01-31 06:29:58 +00:00
|
|
|
|
|
|
|
#define CONFFILE "ppp.conf"
|
1997-06-13 02:07:32 +00:00
|
|
|
#define LINKUPFILE "ppp.linkup"
|
|
|
|
#define LINKDOWNFILE "ppp.linkdown"
|
1995-01-31 06:29:58 +00:00
|
|
|
#define SECRETFILE "ppp.secret"
|
|
|
|
|
1997-06-23 23:10:13 +00:00
|
|
|
#define EX_SIG -1
|
1995-01-31 06:29:58 +00:00
|
|
|
#define EX_NORMAL 0
|
|
|
|
#define EX_START 1
|
|
|
|
#define EX_SOCK 2
|
|
|
|
#define EX_MODEM 3
|
|
|
|
#define EX_DIAL 4
|
|
|
|
#define EX_DEAD 5
|
|
|
|
#define EX_DONE 6
|
|
|
|
#define EX_REBOOT 7
|
|
|
|
#define EX_ERRDEAD 8
|
2000-04-07 23:46:14 +00:00
|
|
|
#define EX_HANGUP 9
|
|
|
|
#define EX_TERM 10
|
|
|
|
#define EX_NODIAL 11
|
|
|
|
#define EX_NOLOGIN 12
|
|
|
|
/* return values for -background mode, not really exits */
|
|
|
|
#define EX_REDIAL 13
|
|
|
|
#define EX_RECONNECT 14
|
1995-01-31 06:29:58 +00:00
|
|
|
|
1998-04-10 13:19:23 +00:00
|
|
|
/* physical::type values (OR'd in bundle::phys_type) */
|
1998-05-29 18:32:11 +00:00
|
|
|
#define PHYS_NONE 0
|
|
|
|
#define PHYS_INTERACTIVE 1 /* Manual link */
|
|
|
|
#define PHYS_AUTO 2 /* Dial-on-demand link */
|
|
|
|
#define PHYS_DIRECT 4 /* Incoming link, deleted when closed */
|
|
|
|
#define PHYS_DEDICATED 8 /* Dedicated link */
|
|
|
|
#define PHYS_DDIAL 16 /* Dial immediately, stay connected */
|
|
|
|
#define PHYS_BACKGROUND 32 /* Dial immediately, deleted when closed */
|
1999-11-28 15:50:08 +00:00
|
|
|
#define PHYS_FOREGROUND 64 /* Pseudo mode, same as background */
|
|
|
|
#define PHYS_ALL 127
|
1995-02-26 12:18:08 +00:00
|
|
|
|
1999-12-27 11:43:31 +00:00
|
|
|
/* flags passed to findblank() and MakeArgs() */
|
|
|
|
#define PARSE_NORMAL 0
|
|
|
|
#define PARSE_REDUCE 1
|
|
|
|
#define PARSE_NOHASH 2
|
|
|
|
|
2000-03-14 01:46:44 +00:00
|
|
|
#define ROUNDUP(x) ((x) ? (1 + (((x) - 1) | (sizeof(long) - 1))) : sizeof(long))
|
|
|
|
|
2000-08-31 00:45:24 +00:00
|
|
|
#if defined(__NetBSD__) || __FreeBSD__ < 3
|
1997-10-26 01:04:02 +00:00
|
|
|
extern void randinit(void);
|
2000-08-31 00:45:24 +00:00
|
|
|
#else
|
|
|
|
#define random arc4random
|
|
|
|
#define randinit()
|
|
|
|
#endif
|
|
|
|
|
1998-04-30 23:53:56 +00:00
|
|
|
extern ssize_t fullread(int, void *, size_t);
|
1998-05-15 23:58:30 +00:00
|
|
|
extern const char *mode2Nam(int);
|
|
|
|
extern int Nam2mode(const char *);
|
1999-02-25 20:05:55 +00:00
|
|
|
extern struct in_addr GetIpAddr(const char *);
|
1999-05-08 11:07:56 +00:00
|
|
|
extern int SpeedToInt(speed_t);
|
|
|
|
extern speed_t IntToSpeed(int);
|
1999-12-23 21:43:12 +00:00
|
|
|
extern char *findblank(char *, int);
|
1999-12-22 21:48:12 +00:00
|
|
|
extern int MakeArgs(char *, char **, int, int);
|
2000-03-14 01:46:54 +00:00
|
|
|
extern const char *NumStr(long, char *, size_t);
|
|
|
|
extern const char *HexStr(long, char *, size_t);
|
2000-04-07 23:46:14 +00:00
|
|
|
extern const char *ex_desc(int);
|
2000-08-16 09:07:23 +00:00
|
|
|
extern void SetTitle(const char *);
|
2000-10-09 21:18:23 +00:00
|
|
|
extern fd_set *mkfdset(void);
|
|
|
|
extern void zerofdset(fd_set *);
|
2001-11-03 21:45:32 +00:00
|
|
|
extern void Concatinate(char *, size_t, int, const char *const *);
|