X-Git-Url: http://git.ozlabs.org/?p=ppp.git;a=blobdiff_plain;f=pppd%2Fpppd.h;h=35cf85bf2ca51ef7fca09689c3a5078de14b2276;hp=f645eb4fa41bdd68883d190d2614bb47767dca53;hb=857e121025571b1c1173c2e70053bde804a46a0d;hpb=3371dbae2932c2f3035587d05962240d95b1f63b diff --git a/pppd/pppd.h b/pppd/pppd.h index f645eb4..35cf85b 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.63 2002/01/11 18:31:42 etbe Exp $ + * $Id: pppd.h,v 1.76 2002/10/27 12:30:54 fcusack Exp $ */ /* @@ -79,13 +79,14 @@ typedef struct { enum opt_type type; void *addr; char *description; - int flags; + unsigned int flags; void *addr2; int upper_limit; int lower_limit; const char *source; short int priority; short int winner; + void *addr3; } option_t; /* Values for flags */ @@ -94,6 +95,7 @@ typedef struct { #define OPT_NOARG 0x200 /* option doesn't take argument */ #define OPT_OR 0x400 /* OR in argument to value */ #define OPT_INC 0x800 /* increment value */ +#define OPT_A2OR 0x800 /* for o_bool, OR arg to *(u_char *)addr2 */ #define OPT_PRIV 0x1000 /* privileged option */ #define OPT_STATIC 0x2000 /* string option goes into static array */ #define OPT_LLIMIT 0x4000 /* check value against lower limit */ @@ -102,6 +104,7 @@ typedef struct { #define OPT_ZEROOK 0x10000 /* 0 value is OK even if not within limits */ #define OPT_HIDE 0x10000 /* for o_string, print value as ?????? */ #define OPT_A2LIST 0x10000 /* for o_special, keep list of values */ +#define OPT_A2CLRB 0x10000 /* o_bool, clr val bits in *(u_char *)addr2 */ #define OPT_NOINCR 0x20000 /* value mustn't be increased */ #define OPT_ZEROINF 0x40000 /* with OPT_NOINCR, 0 == infinity */ #define OPT_PRIO 0x80000 /* process option priorities for this option */ @@ -195,6 +198,7 @@ extern int baud_rate; /* Current link speed in bits/sec */ extern char *progname; /* Name of this program */ extern int redirect_stderr;/* Connector's stderr should go to file */ extern char peer_authname[];/* Authenticated name of peer */ +extern int auth_done[NUM_PPP]; /* Methods actually used for auth */ extern int privileged; /* We were run by real-uid root */ extern int need_holdoff; /* Need holdoff period after link terminates */ extern char **script_env; /* Environment variables for scripts */ @@ -203,7 +207,7 @@ 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 link_connect_time; /* time the link was up for */ +extern unsigned link_connect_time; /* time the link was up for */ 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 bool log_default; /* log_to_fd is default (stdout) */ @@ -214,6 +218,9 @@ extern int unsuccess; /* # unsuccessful connection attempts */ extern int do_callback; /* set if we want to do callback next */ extern int doing_callback; /* set if this is a callback */ extern char ppp_devnam[MAXPATHLEN]; +extern char remote_number[MAXNAMELEN]; /* Remote telephone number, if avail. */ +extern int ppp_session_number; /* Session number (eg PPPoE session) */ + extern int listen_time; /* time to listen first (ms) */ extern struct notifier *pidchange; /* for notifications of pid changing */ extern struct notifier *phasechange; /* for notifications of phase changes */ @@ -279,6 +286,22 @@ extern char *bundle_name; /* bundle name for multilink */ extern bool dump_options; /* print out option values */ extern bool dryrun; /* check everything, print options, exit */ +#ifdef MAXOCTETS +extern unsigned int maxoctets; /* Maximum octetes per session (in bytes) */ +extern int maxoctets_dir; /* Direction : + 0 - in+out (default) + 1 - in + 2 - out + 3 - max(in,out) */ +extern int maxoctets_timeout; /* Timeout for check of octets limit */ +#define PPP_OCTETS_DIRECTION_SUM 0 +#define PPP_OCTETS_DIRECTION_IN 1 +#define PPP_OCTETS_DIRECTION_OUT 2 +#define PPP_OCTETS_DIRECTION_MAXOVERAL 3 +/* same as previos, but little different on RADIUS side */ +#define PPP_OCTETS_DIRECTION_MAXSESSION 4 +#endif + #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 */ @@ -289,6 +312,22 @@ extern bool ms_lanman; /* Use LanMan password instead of NT */ /* Has meaning only with MS-CHAP challenges */ #endif +/* Values for auth_pending, auth_done */ +#define PAP_WITHPEER 0x1 +#define PAP_PEER 0x2 +#define CHAP_WITHPEER 0x4 +#define CHAP_PEER 0x8 +/* Values for auth_done only */ +#define CHAP_MD5_WITHPEER 0x10 +#define CHAP_MD5_PEER 0x20 +#ifdef CHAPMS +#define CHAP_MS_SHIFT 6 /* LSB position for MS auths */ +#define CHAP_MS_WITHPEER 0x40 +#define CHAP_MS_PEER 0x80 +#define CHAP_MS2_WITHPEER 0x100 +#define CHAP_MS2_PEER 0x200 +#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 */ @@ -455,17 +494,18 @@ 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 start_networks __P((int)); /* start all the network control protos */ +void continue_networks __P((int)); /* start network [ip, etc] 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 */ void auth_peer_fail __P((int, int)); /* peer failed to authenticate itself */ -void auth_peer_success __P((int, int, char *, int)); +void auth_peer_success __P((int, int, int, char *, int)); /* peer successfully authenticated itself */ void auth_withpeer_fail __P((int, int)); /* we failed to authenticate ourselves */ -void auth_withpeer_success __P((int, int)); +void auth_withpeer_success __P((int, int, int)); /* we successfully authenticated ourselves */ void auth_check_options __P((void)); /* check authentication options supplied */ @@ -476,6 +516,7 @@ int get_secret __P((int, char *, char *, char *, int *, int)); /* get "secret" for chap */ int auth_ip_addr __P((int, u_int32_t)); /* check if IP address is authorized */ +int auth_number __P((void)); /* check if remote number is authorized */ int bad_ip_adrs __P((u_int32_t)); /* check if IP address is unreasonable */ @@ -536,6 +577,7 @@ int get_idle_time __P((int, struct ppp_idle *)); int get_ppp_stats __P((int, struct pppd_stats *)); /* Return link statistics */ void netif_set_mtu __P((int, int)); /* Set PPP interface MTU */ +int netif_get_mtu __P((int)); /* Get PPP interface MTU */ int sifvjcomp __P((int, int, int, int)); /* Configure VJ TCP header compression */ int sifup __P((int)); /* Configure i/f up for one protocol */ @@ -617,10 +659,18 @@ extern int (*pap_auth_hook) __P((char *user, char *passwd, char **msgp, struct wordlist **popts)); extern void (*pap_logout_hook) __P((void)); extern int (*pap_passwd_hook) __P((char *user, char *passwd)); +extern int (*allowed_address_hook) __P((u_int32_t addr)); extern void (*ip_up_hook) __P((void)); extern void (*ip_down_hook) __P((void)); extern void (*ip_choose_hook) __P((u_int32_t *)); +extern int (*chap_check_hook) __P((void)); +extern int (*chap_passwd_hook) __P((char *user, char *passwd)); + +/* Let a plugin snoop sent and received packets. Useful for L2TP */ +extern void (*snoop_recv_hook) __P((unsigned char *p, int len)); +extern void (*snoop_send_hook) __P((unsigned char *p, int len)); + /* * Inline versions of get/put char/short/long. * Pointer is advanced; we assume that both arguments @@ -703,6 +753,10 @@ extern void (*ip_choose_hook) __P((u_int32_t *)); #define EXIT_LOOPBACK 17 #define EXIT_INIT_FAILED 18 #define EXIT_AUTH_TOPEER_FAILED 19 +#ifdef MAXOCTETS +#define EXIT_TRAFFIC_LIMIT 20 +#endif +#define EXIT_CNID_AUTH_FAILED 21 /* * Debug macros. Slightly useful for finding bugs in pppd, not particularly @@ -797,4 +851,8 @@ extern void (*ip_choose_hook) __P((u_int32_t *)); #define MAX(a, b) ((a) > (b)? (a): (b)) #endif +#ifndef offsetof +#define offsetof(type, member) ((size_t) &((type *)0)->member) +#endif + #endif /* __PPP_H__ */