X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=pppd%2Fpppd.h;h=15a503cbd5b341791169d94f6606c57ffa4a23d8;hb=fc8a2a1cb1a141e5c1d9c9f0580e4f97271f9734;hp=fdb4aae03e3267da01123da572d5cbe08a116d34;hpb=8592783058509b5493a42f3b0432fcbaab55c994;p=ppp.git diff --git a/pppd/pppd.h b/pppd/pppd.h index fdb4aae..15a503c 100644 --- a/pppd/pppd.h +++ b/pppd/pppd.h @@ -16,7 +16,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: pppd.h,v 1.39 1999/05/12 06:19:49 paulus Exp $ + * $Id: pppd.h,v 1.47 1999/09/08 01:13:45 masputra Exp $ */ /* @@ -33,7 +33,7 @@ #include /* for struct timeval */ #include -#if __STDC__ +#if defined(__STDC__) #include #define __V(x) x #else @@ -43,6 +43,10 @@ #define volatile #endif +#ifdef INET6 +#include "eui64.h" +#endif + /* * Limits. */ @@ -97,7 +101,10 @@ typedef struct { #define OPT_A2COPY 0x200000 /* addr2 -> second location to rcv value */ #define OPT_ENABLE 0x400000 /* use *addr2 as enable for option */ #define OPT_PRIVFIX 0x800000 /* can't be overridden if noauth */ -#define OPT_PREPASS 0x1000000/* do this opt in pre-pass to find device */ +#define OPT_PREPASS 0x1000000 /* do this opt in pre-pass to find device */ +#define OPT_INITONLY 0x2000000 /* option can only be set in init phase */ +#define OPT_DEVEQUIV 0x4000000 /* equiv to device name */ +#define OPT_DEVNAM (OPT_PREPASS | OPT_INITONLY | OPT_DEVEQUIV) #define OPT_VAL(x) ((x) & OPT_VALUE) @@ -123,6 +130,12 @@ struct pppd_stats { unsigned int bytes_out; }; +/* Used for storing a sequence of words. Usually malloced. */ +struct wordlist { + struct wordlist *next; + char *word; +}; + /* * Global variables. */ @@ -150,6 +163,8 @@ extern int using_pty; /* using pty as device (notty or pty opt.) */ extern int log_to_fd; /* logging to this fd as well as syslog */ extern char *no_ppp_msg; /* message to print if ppp not in kernel */ extern volatile int status; /* exit status for pppd */ +extern int devnam_fixed; /* can no longer change devnam */ +extern int unsuccess; /* # unsuccessful connection attempts */ /* * Variables set by command-line options. @@ -166,13 +181,14 @@ extern u_int32_t netmask; /* IP netmask to set on interface */ extern bool lockflag; /* Create lock file to lock the serial dev */ extern bool nodetach; /* Don't detach from controlling tty */ extern bool updetach; /* Detach from controlling tty when link up */ +extern char *initializer; /* Script to initialize physical link */ extern char *connector; /* Script to establish physical link */ extern char *disconnector; /* Script to disestablish physical link */ extern char *welcomer; /* Script to welcome client after connection */ extern char *ptycommand; /* Command to run on other side of pty */ extern int maxconnect; /* Maximum connect time (seconds) */ extern char user[MAXNAMELEN];/* Our name for authenticating ourselves */ -extern char passwd[MAXSECRETLEN]; /* Password for PAP */ +extern char passwd[MAXSECRETLEN]; /* Password for PAP or CHAP */ extern bool auth_required; /* Peer is required to authenticate */ extern bool persist; /* Reopen link after it goes down */ extern bool uselogin; /* Use /etc/passwd for checking PAP */ @@ -187,33 +203,36 @@ extern int holdoff; /* Dead time before restarting */ extern bool notty; /* Stdin/out is not a tty */ extern char *record_file; /* File to record chars sent/received */ extern bool sync_serial; /* Device is synchronous serial device */ +extern int maxfail; /* Max # of unsuccessful connection attempts */ +extern char linkname[MAXPATHLEN]; /* logical name for link */ #ifdef PPP_FILTER extern struct bpf_program pass_filter; /* Filter for pkts to pass */ extern struct bpf_program active_filter; /* Filter for link-active pkts */ #endif -char *current_option; /* the name of the option being parsed */ -int privileged_option; /* set iff the current option came from root */ -char *option_source; /* string saying where the option came from */ - #ifdef MSLANMAN extern bool ms_lanman; /* Use LanMan password instead of NT */ /* Has meaning only with MS-CHAP challenges */ #endif +extern char *current_option; /* the name of the option being parsed */ +extern int privileged_option; /* set iff the current option came from root */ +extern char *option_source; /* string saying where the option came from */ + /* * Values for phase. */ #define PHASE_DEAD 0 #define PHASE_INITIALIZE 1 -#define PHASE_DORMANT 2 -#define PHASE_ESTABLISH 3 -#define PHASE_AUTHENTICATE 4 -#define PHASE_CALLBACK 5 -#define PHASE_NETWORK 6 -#define PHASE_TERMINATE 7 -#define PHASE_HOLDOFF 8 +#define PHASE_SERIALCONN 2 +#define PHASE_DORMANT 3 +#define PHASE_ESTABLISH 4 +#define PHASE_AUTHENTICATE 5 +#define PHASE_CALLBACK 6 +#define PHASE_NETWORK 7 +#define PHASE_TERMINATE 8 +#define PHASE_HOLDOFF 9 /* * The following struct gives the addresses of procedures to call @@ -272,16 +291,18 @@ void untimeout __P((void (*func)(void *), void *arg)); pid_t run_program __P((char *prog, char **args, int must_exist, void (*done)(void *), void *arg)); /* Run program prog with args in child */ -void demuxprotrej __P((int, int)); - /* Demultiplex a Protocol-Reject */ +void reopen_log __P((void)); /* (re)open the connection to syslog */ +void update_link_stats __P((int)); /* Get stats at link termination */ +void script_setenv __P((char *, char *)); /* set script env var */ +void script_unsetenv __P((char *)); /* unset script env var */ + +/* Procedures exported from utils.c. */ void log_packet __P((u_char *, int, char *, int)); /* Format a packet and log it with syslog */ void print_string __P((char *, int, void (*) (void *, char *, ...), void *)); /* Format a string for output */ int slprintf __P((char *, int, char *, ...)); /* sprintf++ */ int vslprintf __P((char *, int, char *, va_list)); /* vsprintf++ */ -void script_setenv __P((char *, char *)); /* set script env var */ -void script_unsetenv __P((char *)); /* unset script env var */ size_t strlcpy __P((char *, const char *, size_t)); /* safe strcpy */ size_t strlcat __P((char *, const char *, size_t)); /* safe strncpy */ void dbglog __P((char *, ...)); /* log a debug message */ @@ -290,13 +311,13 @@ void notice __P((char *, ...)); /* log a notice-level message */ void warn __P((char *, ...)); /* log a warning message */ void error __P((char *, ...)); /* log an error message */ void fatal __P((char *, ...)); /* log an error message and die(1) */ -void reopen_log __P((void)); /* (re)open the connection to syslog */ /* Procedures exported from auth.c */ void link_required __P((int)); /* we are starting to use the link */ void link_terminated __P((int)); /* we are finished with the link */ void link_down __P((int)); /* the LCP layer has left the Opened state */ void link_established __P((int)); /* the link is up; authenticate now */ +void start_networks __P((void)); /* start all the network control protos */ void np_up __P((int, int)); /* a network protocol has come up */ void np_down __P((int, int)); /* a network protocol has gone down */ void np_finished __P((int, int)); /* a network protocol no longer needs link */ @@ -368,14 +389,20 @@ int get_ppp_stats __P((int, struct pppd_stats *)); /* Return link statistics */ int sifvjcomp __P((int, int, int, int)); /* Configure VJ TCP header compression */ -int sifup __P((int)); /* Configure i/f up (for IP) */ +int sifup __P((int)); /* Configure i/f up for one protocol */ int sifnpmode __P((int u, int proto, enum NPmode mode)); /* Set mode for handling packets for proto */ -int sifdown __P((int)); /* Configure i/f down (for IP) */ +int sifdown __P((int)); /* Configure i/f down for one protocol */ int sifaddr __P((int, u_int32_t, u_int32_t, u_int32_t)); - /* Configure IP addresses for i/f */ + /* Configure IPv4 addresses for i/f */ int cifaddr __P((int, u_int32_t, u_int32_t)); /* Reset i/f IP addresses */ +#ifdef INET6 +int sif6addr __P((int, eui64_t, eui64_t)); + /* Configure IPv6 addresses for i/f */ +int cif6addr __P((int, eui64_t, eui64_t)); + /* Remove an IPv6 address from i/f */ +#endif int sifdefaultroute __P((int, u_int32_t, u_int32_t)); /* Create default route through i/f */ int cifdefaultroute __P((int, u_int32_t, u_int32_t)); @@ -409,8 +436,8 @@ int options_from_file __P((char *filename, int must_exist, int check_prot, /* Parse options from an options file */ int options_from_user __P((void)); /* Parse options from user's .ppprc */ int options_for_tty __P((void)); /* Parse options from /etc/ppp/options.tty */ -void scan_args __P((int argc, char **argv)); - /* Look for tty name in command-line args */ +int options_from_list __P((struct wordlist *, int privileged)); + /* Parse options from a wordlist */ int getword __P((FILE *f, char *word, int *newlinep, char *filename)); /* Read a word from a file */ void option_error __P((char *fmt, ...)); @@ -430,6 +457,7 @@ struct option_info { }; extern struct option_info devnam_info; +extern struct option_info initializer_info; extern struct option_info connector_info; extern struct option_info disconnector_info; extern struct option_info welcomer_info; @@ -514,6 +542,9 @@ extern struct option_info ptycommand_info; #define EXIT_CALLBACK 14 #define EXIT_PEER_DEAD 15 #define EXIT_HANGUP 16 +#define EXIT_LOOPBACK 17 +#define EXIT_INIT_FAILED 18 +#define EXIT_AUTH_TOPEER_FAILED 19 /* * Debug macros. Slightly useful for finding bugs in pppd, not particularly @@ -524,6 +555,7 @@ extern struct option_info ptycommand_info; #define DEBUGFSM 1 #define DEBUGLCP 1 #define DEBUGIPCP 1 +#define DEBUGIPV6CP 1 #define DEBUGUPAP 1 #define DEBUGCHAP 1 #endif @@ -531,7 +563,7 @@ extern struct option_info ptycommand_info; #ifndef LOG_PPP /* we use LOG_LOCAL2 for syslog by default */ #if defined(DEBUGMAIN) || defined(DEBUGFSM) || defined(DEBUGSYS) \ || defined(DEBUGLCP) || defined(DEBUGIPCP) || defined(DEBUGUPAP) \ - || defined(DEBUGCHAP) || defined(DEBUG) + || defined(DEBUGCHAP) || defined(DEBUG) || defined(DEBUGIPV6CP) #define LOG_PPP LOG_LOCAL2 #else #define LOG_PPP LOG_DAEMON @@ -568,6 +600,12 @@ extern struct option_info ptycommand_info; #define IPCPDEBUG(x) #endif +#ifdef DEBUGIPV6CP +#define IPV6CPDEBUG(x) if (debug) dbglog x +#else +#define IPV6CPDEBUG(x) +#endif + #ifdef DEBUGUPAP #define UPAPDEBUG(x) if (debug) dbglog x #else