X-Git-Url: https://git.ozlabs.org/?p=ppp.git;a=blobdiff_plain;f=pppd%2Fauth.c;h=023653d5d15c0036e12437bdd6524779a2496253;hp=189e74dd9c9ed772fa86ce801e437976ba326a5d;hb=3f2fe49d822135c209e9896f666b748cf2234f2e;hpb=af2093b4aa8256bf9150bac9197e09a6819fdb77 diff --git a/pppd/auth.c b/pppd/auth.c index 189e74d..023653d 100644 --- a/pppd/auth.c +++ b/pppd/auth.c @@ -32,7 +32,7 @@ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ -#define RCSID "$Id: auth.c,v 1.59 1999/11/20 05:11:01 paulus Exp $" +#define RCSID "$Id: auth.c,v 1.64 2000/04/13 12:05:57 paulus Exp $" #include #include @@ -126,6 +126,9 @@ int (*pap_auth_hook) __P((char *user, char *passwd, char **msgp, struct wordlist **paddrs, struct wordlist **popts)) = NULL; +/* Hook for a plugin to know about the PAP user logout */ +void (*pap_logout_hook) __P((void)) = NULL; + /* Hook for a plugin to get the PAP password for authenticating us */ int (*pap_passwd_hook) __P((char *user, char *passwd)) = NULL; @@ -349,8 +352,12 @@ link_terminated(unit) { if (phase == PHASE_DEAD) return; - if (logged_in) - plogout(); + if (pap_logout_hook) { + pap_logout_hook(); + } else { + if (logged_in) + plogout(); + } new_phase(PHASE_DEAD); notice("Connection terminated."); } @@ -502,6 +509,17 @@ start_networks() struct protent *protp; new_phase(PHASE_NETWORK); + +#ifdef HAVE_MULTILINK + if (multilink) { + if (mp_join_bundle()) { + if (updetach && !nodetach) + detach(); + return; + } + } +#endif /* HAVE_MULTILINK */ + #if 0 if (!demand) set_filters(&pass_filter, &active_filter); @@ -563,7 +581,7 @@ auth_peer_success(unit, protocol, name, namelen) namelen = sizeof(peer_authname) - 1; BCOPY(name, peer_authname, namelen); peer_authname[namelen] = 0; - script_setenv("PEERNAME", peer_authname); + script_setenv("PEERNAME", peer_authname, 0); /* * If there is no more authentication still to be done, @@ -1563,7 +1581,7 @@ auth_ip_addr(unit, addr) } if (auth_required) return 0; /* no addresses authorized */ - return allow_any_ip || !have_route_to(addr); + return allow_any_ip || privileged || !have_route_to(addr); } static int