1995-01-31 06:29:58 +00:00
|
|
|
/*
|
|
|
|
* Written by Toshiharu OHNO (tony-o@iij.ad.jp)
|
|
|
|
*
|
|
|
|
* Copyright (C) 1993, Internet Initiative Japan, Inc. All rights reserverd.
|
|
|
|
*
|
|
|
|
* Redistribution and use in source and binary forms are permitted
|
|
|
|
* provided that the above copyright notice and this paragraph are
|
|
|
|
* duplicated in all such forms and that any documentation,
|
|
|
|
* advertising materials, and other materials related to such
|
|
|
|
* distribution and use acknowledge that the software was developed
|
|
|
|
* by the Internet Initiative Japan. The name of the
|
|
|
|
* IIJ may not be used to endorse or promote products derived
|
|
|
|
* from this software without specific prior written permission.
|
|
|
|
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
|
|
|
|
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
|
|
|
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
*
|
1999-08-28 01:35:59 +00:00
|
|
|
* $FreeBSD$
|
1995-01-31 06:29:58 +00:00
|
|
|
*
|
|
|
|
* TODO:
|
|
|
|
*/
|
|
|
|
|
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
|
|
|
|
1998-05-01 19:26:12 +00:00
|
|
|
#define _PATH_PPP "/etc/ppp"
|
|
|
|
|
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 */
|
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
|
|
|
|
1998-07-11 02:48:36 +00:00
|
|
|
#define MIN_LQRPERIOD 2 /* Minimum LQR frequency */
|
|
|
|
#define DEF_LQRPERIOD 30 /* Default LQR frequency */
|
1998-06-27 23:48:54 +00:00
|
|
|
#define MIN_FSMRETRY 3 /* 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 *);
|