]> git.ozlabs.org Git - ppp.git/blobdiff - pppd/auth.c
changes to linux interface for new kernel driver,
[ppp.git] / pppd / auth.c
index 189e74dd9c9ed772fa86ce801e437976ba326a5d..3d466e2e52fa097f95b72dac09ab50d4d71a9ea1 100644 (file)
@@ -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.62 2000/03/27 06:02:59 paulus Exp $"
 
 #include <stdio.h>
 #include <stddef.h>
@@ -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,7 @@ start_networks()
     struct protent *protp;
 
     new_phase(PHASE_NETWORK);
+
 #if 0
     if (!demand)
        set_filters(&pass_filter, &active_filter);
@@ -1563,7 +1571,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