X-Git-Url: http://git.ozlabs.org/?p=ppp.git;a=blobdiff_plain;f=pppd%2Fpppd.h;h=47e4d9ad40c36e692b97be97d268116fb8b0ef46;hp=cfb3a682b3800f2a74cac07b1373078125a9dc55;hb=398ed2585640d198c53e736ee5bbd67f7ce8168e;hpb=e5b9a1061f126b36c558aea09fd76fd691ebf018 diff --git a/pppd/pppd.h b/pppd/pppd.h index cfb3a68..47e4d9a 100644 --- a/pppd/pppd.h +++ b/pppd/pppd.h @@ -39,7 +39,7 @@ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $Id: pppd.h,v 1.92 2007/06/19 02:08:35 carlsonj Exp $ + * $Id: pppd.h,v 1.96 2008/06/23 11:47:18 paulus Exp $ */ /* @@ -115,19 +115,19 @@ typedef struct { #define OPT_VALUE 0xff /* mask for presupplied value */ #define OPT_HEX 0x100 /* int option is in hex */ #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_OR 0x400 /* for u32, OR in argument to value */ +#define OPT_INC 0x400 /* for o_int, 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_NOINCR 0x2000 /* for o_int, value mustn't be increased */ #define OPT_LLIMIT 0x4000 /* check value against lower limit */ #define OPT_ULIMIT 0x8000 /* check value against upper limit */ #define OPT_LIMITS (OPT_LLIMIT|OPT_ULIMIT) #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_A2LIST 0x20000 /* for o_special, keep list of values */ +#define OPT_A2CLRB 0x20000 /* o_bool, clr val bits in *(u_char *)addr2 */ #define OPT_ZEROINF 0x40000 /* with OPT_NOINCR, 0 == infinity */ #define OPT_PRIO 0x80000 /* process option priorities for this option */ #define OPT_PRIOSUB 0x100000 /* subsidiary member of priority group */ @@ -139,7 +139,7 @@ typedef struct { #define OPT_INITONLY 0x4000000 /* option can only be set in init phase */ #define OPT_DEVEQUIV 0x8000000 /* equiv to device name */ #define OPT_DEVNAM (OPT_INITONLY | OPT_DEVEQUIV) -#define OPT_A2PRINTER 0x10000000 /* *addr2 is a fn for printing option */ +#define OPT_A2PRINTER 0x10000000 /* *addr2 printer_func to print option */ #define OPT_A2STRVAL 0x20000000 /* *addr2 points to current string value */ #define OPT_NOPRINT 0x40000000 /* don't print this option at all */ @@ -199,6 +199,7 @@ struct epdisc { #define EPD_PHONENUM 5 typedef void (*notify_func) __P((void *, int)); +typedef void (*printer_func) __P((void *, char *, ...)); struct notifier { struct notifier *next; @@ -257,8 +258,10 @@ extern struct notifier *pidchange; /* for notifications of pid changing */ extern struct notifier *phasechange; /* for notifications of phase changes */ extern struct notifier *exitnotify; /* for notification that we're exiting */ extern struct notifier *sigreceived; /* notification of received signal */ -extern struct notifier *ip_up_notifier; /* IPCP has come up */ -extern struct notifier *ip_down_notifier; /* IPCP has gone down */ +extern struct notifier *ip_up_notifier; /* IPCP has come up */ +extern struct notifier *ip_down_notifier; /* IPCP has gone down */ +extern struct notifier *ipv6_up_notifier; /* IPV6CP has come up */ +extern struct notifier *ipv6_down_notifier; /* IPV6CP has gone down */ extern struct notifier *auth_up_notifier; /* peer has authenticated */ extern struct notifier *link_down_notifier; /* link has gone down */ extern struct notifier *fork_notifier; /* we are a new child process */ @@ -282,6 +285,7 @@ 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 bool master_detach; /* Detach when multilink master without link */ extern char *initializer; /* Script to initialize physical link */ extern char *connect_script; /* Script to establish physical link */ extern char *disconnect_script; /* Script to disestablish physical link */ @@ -406,8 +410,7 @@ struct protent { /* Close the protocol */ void (*close) __P((int unit, char *reason)); /* Print a packet in readable form */ - int (*printpkt) __P((u_char *pkt, int len, - void (*printer) __P((void *, char *, ...)), + int (*printpkt) __P((u_char *pkt, int len, printer_func printer, void *arg)); /* Process a received data packet */ void (*datainput) __P((int unit, u_char *pkt, int len)); @@ -460,6 +463,21 @@ struct channel { extern struct channel *the_channel; +/* + * This structure contains environment variables that are set or unset + * by the user. + */ +struct userenv { + struct userenv *ue_next; + char *ue_value; /* value (set only) */ + bool ue_isset; /* 1 for set, 0 for unset */ + bool ue_priv; /* from privileged source */ + const char *ue_source; /* source name */ + char ue_name[1]; /* variable name */ +}; + +extern struct userenv *userenv_list; + /* * Prototypes. */ @@ -474,7 +492,7 @@ void timeout __P((void (*func)(void *), void *arg, int s, int us)); /* Call func(arg) after s.us seconds */ void untimeout __P((void (*func)(void *), void *arg)); /* Cancel call to func(arg) */ -void record_child __P((int, char *, void (*) (void *), void *)); +void record_child __P((int, char *, void (*) (void *), void *, int)); pid_t safe_fork __P((int, int, int)); /* Fork & close stuff in child */ int device_script __P((char *cmd, int in, int out, int dont_wait)); /* Run `cmd' with given stdin and stdout */ @@ -504,8 +522,8 @@ void tty_init __P((void)); /* 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 */ +void print_string __P((char *, int, printer_func, void *)); + /* Format a string for output */ int slprintf __P((char *, int, char *, ...)); /* sprintf++ */ int vslprintf __P((char *, int, char *, va_list)); /* vsprintf++ */ size_t strlcpy __P((char *, const char *, size_t)); /* safe strcpy */ @@ -516,7 +534,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 init_pr_log __P((char *, int)); /* initialize for using pr_log */ +void init_pr_log __P((const char *, int)); /* initialize for using pr_log */ void pr_log __P((void *, char *, ...)); /* printer fn, output to syslog */ void end_pr_log __P((void)); /* finish up after using pr_log */ void dump_packet __P((const char *, u_char *, int)); @@ -638,6 +656,7 @@ int sifaddr __P((int, u_int32_t, u_int32_t, u_int32_t)); int cifaddr __P((int, u_int32_t, u_int32_t)); /* Reset i/f IP addresses */ #ifdef INET6 +int ether_to_eui64(eui64_t *p_eui64); /* convert eth0 hw address to EUI64 */ int sif6addr __P((int, eui64_t, eui64_t)); /* Configure IPv6 addresses for i/f */ int cif6addr __P((int, eui64_t, eui64_t)); @@ -691,7 +710,7 @@ void add_options __P((option_t *)); /* Add extra options */ void check_options __P((void)); /* check values after all options parsed */ int override_value __P((const char *, int, const char *)); /* override value if permitted by priority */ -void print_options __P((void (*) __P((void *, char *, ...)), void *)); +void print_options __P((printer_func, void *)); /* print out values of all options */ int parse_dotted_ip __P((char *, u_int32_t *)); @@ -712,9 +731,12 @@ 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 void (*ipv6_up_hook) __P((void)); +extern void (*ipv6_down_hook) __P((void)); extern int (*chap_check_hook) __P((void)); extern int (*chap_passwd_hook) __P((char *user, char *passwd)); +extern void (*multilink_join_hook) __P((void)); /* Let a plugin snoop sent and received packets. Useful for L2TP */ extern void (*snoop_recv_hook) __P((unsigned char *p, int len));