]> git.ozlabs.org Git - ppp.git/blobdiff - pppd/auth.c
don't require authentication by default if privileged, even if we
[ppp.git] / pppd / auth.c
index 189e74dd9c9ed772fa86ce801e437976ba326a5d..4dfcb4382bdb2801e141ae6116bb84beeb3d956f 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.61 2000/03/13 23:25:46 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.");
 }
@@ -1563,7 +1570,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