X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=pppd%2Fpppd.h;h=fdb4aae03e3267da01123da572d5cbe08a116d34;hb=96ea87ebbd9f1bca4797b3d0c8b5de7e2635eb9a;hp=a01a52b935909a514f6d0bc64fb7c0ab461dd660;hpb=0cfd5b04d55f8fe181d4d73e33a890bee0cd9813;p=ppp.git diff --git a/pppd/pppd.h b/pppd/pppd.h index a01a52b..fdb4aae 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.32 1999/03/19 01:28:27 paulus Exp $ + * $Id: pppd.h,v 1.39 1999/05/12 06:19:49 paulus Exp $ */ /* @@ -27,6 +27,7 @@ #define __PPPD_H__ #include /* for FILE */ +#include /* for NGROUPS_MAX */ #include /* for MAXPATHLEN and BSD4_4, if defined */ #include /* for u_int32_t, if defined */ #include /* for struct timeval */ @@ -39,6 +40,7 @@ #include #define __V(x) (va_alist) va_dcl #define const +#define volatile #endif /* @@ -95,6 +97,7 @@ 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_VAL(x) ((x) & OPT_VALUE) @@ -109,6 +112,17 @@ struct permitted_ip { u_int32_t mask; /* base and mask are in network byte order */ }; +/* + * Unfortunately, the linux kernel driver uses a different structure + * for statistics from the rest of the ports. + * This structure serves as a common representation for the bits + * pppd needs. + */ +struct pppd_stats { + unsigned int bytes_in; + unsigned int bytes_out; +}; + /* * Global variables. */ @@ -130,6 +144,12 @@ extern char **script_env; /* Environment variables for scripts */ extern int detached; /* Have detached from controlling tty */ extern GIDSET_TYPE groups[NGROUPS_MAX]; /* groups the user is in */ extern int ngroups; /* How many groups valid in groups */ +extern struct pppd_stats link_stats; /* byte/packet counts etc. for link */ +extern int link_stats_valid; /* set if link_stats is valid */ +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 */ /* * Variables set by command-line options. @@ -149,6 +169,7 @@ extern bool updetach; /* Detach from controlling tty when link up */ 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 */ @@ -163,6 +184,9 @@ extern char *ipparam; /* Extra parameter for ip up/down scripts */ extern bool cryptpap; /* Others' PAP passwords are encrypted */ extern int idle_time_limit;/* Shut down link if idle for this long */ 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 */ #ifdef PPP_FILTER extern struct bpf_program pass_filter; /* Filter for pkts to pass */ @@ -266,6 +290,7 @@ 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 */ @@ -302,6 +327,7 @@ void demand_unblock __P((void)); /* set all NPs to pass packets */ void demand_discard __P((void)); /* set all NPs to discard packets */ void demand_rexmit __P((int)); /* retransmit saved frames for an NP */ int loop_chars __P((unsigned char *, int)); /* process chars from loopback */ +int loop_frame __P((unsigned char *, int)); /* should we bring link up? */ /* Procedures exported from sys-*.c */ void sys_init __P((void)); /* Do system-dependent initialization */ @@ -309,6 +335,7 @@ void sys_cleanup __P((void)); /* Restore system state before exiting */ int sys_check_options __P((void)); /* Check options specified */ void sys_close __P((void)); /* Clean up in a child before execing */ int ppp_available __P((void)); /* Test whether ppp kernel support exists */ +int get_pty __P((int *, int *, char *, int)); /* Get pty master/slave */ int open_ppp_loopback __P((void)); /* Open loopback for demand-dialling */ int establish_ppp __P((int)); /* Turn serial port into a ppp interface */ void restore_loop __P((void)); /* Transfer ppp unit back to loopback */ @@ -337,6 +364,8 @@ void ccp_flags_set __P((int, int, int)); int ccp_fatal_error __P((int)); /* Test for fatal decomp error in kernel */ int get_idle_time __P((int, struct ppp_idle *)); /* Find out how long link has been idle */ +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) */ @@ -357,8 +386,8 @@ int cifproxyarp __P((int, u_int32_t)); /* Delete proxy ARP entry for peer */ u_int32_t GetMask __P((u_int32_t)); /* Get appropriate netmask for address */ int lock __P((char *)); /* Create lock file for device */ +int relock __P((int)); /* Rewrite lock file with new pid */ void unlock __P((void)); /* Delete previously-created lock file */ -int daemon __P((int, int)); /* Detach us from terminal session */ void logwtmp __P((const char *, const char *, const char *)); /* Write entry to wtmp file */ int get_host_seed __P((void)); /* Get host-dependent random number seed */ @@ -404,6 +433,7 @@ extern struct option_info devnam_info; extern struct option_info connector_info; extern struct option_info disconnector_info; extern struct option_info welcomer_info; +extern struct option_info ptycommand_info; /* * Inline versions of get/put char/short/long. @@ -464,7 +494,31 @@ extern struct option_info welcomer_info; PUTCHAR(PPP_UI, p); \ PUTSHORT(t, p); } +/* + * Exit status values. + */ +#define EXIT_OK 0 +#define EXIT_FATAL_ERROR 1 +#define EXIT_OPTION_ERROR 2 +#define EXIT_NOT_ROOT 3 +#define EXIT_NO_KERNEL_SUPPORT 4 +#define EXIT_USER_REQUEST 5 +#define EXIT_LOCK_FAILED 6 +#define EXIT_OPEN_FAILED 7 +#define EXIT_CONNECT_FAILED 8 +#define EXIT_PTYCMD_FAILED 9 +#define EXIT_NEGOTIATION_FAILED 10 +#define EXIT_PEER_AUTH_FAILED 11 +#define EXIT_IDLE_TIMEOUT 12 +#define EXIT_CONNECT_TIME 13 +#define EXIT_CALLBACK 14 +#define EXIT_PEER_DEAD 15 +#define EXIT_HANGUP 16 +/* + * Debug macros. Slightly useful for finding bugs in pppd, not particularly + * useful for finding out why your connection isn't being established. + */ #ifdef DEBUGALL #define DEBUGMAIN 1 #define DEBUGFSM 1