]> git.ozlabs.org Git - ppp.git/blobdiff - pppd/auth.c
exit with an appropriate value to indicate what happened
[ppp.git] / pppd / auth.c
index 2d1256b68e8d6ac1d93b134c8562cdd4323e6686..de3ae645ff0c84daa78a5a5d636b9b0590dc59bb 100644 (file)
@@ -33,7 +33,7 @@
  */
 
 #ifndef lint
-static char rcsid[] = "$Id: auth.c,v 1.48 1999/03/30 06:02:21 paulus Exp $";
+static char rcsid[] = "$Id: auth.c,v 1.52 1999/05/12 06:19:46 paulus Exp $";
 #endif
 
 #include <stdio.h>
@@ -367,6 +367,7 @@ link_established(unit)
        if (!wo->neg_upap || !null_login(unit)) {
            warn("peer refused to authenticate: terminating link");
            lcp_close(unit, "peer refused to authenticate");
+           status = EXIT_PEER_AUTH_FAILED;
            return;
        }
     }
@@ -460,6 +461,7 @@ auth_peer_fail(unit, protocol)
      * Authentication failure: take the link down
      */
     lcp_close(unit, "Authentication failed");
+    status = EXIT_PEER_AUTH_FAILED;
 }
 
 /*
@@ -562,6 +564,7 @@ np_up(unit, proto)
         * At this point we consider that the link has come up successfully.
         */
        need_holdoff = 0;
+       status = EXIT_OK;
 
        if (idle_time_limit > 0)
            TIMEOUT(check_idle, NULL, idle_time_limit);
@@ -623,8 +626,9 @@ check_idle(arg)
     itime = MIN(idle.xmit_idle, idle.recv_idle);
     if (itime >= idle_time_limit) {
        /* link is idle: shut it down. */
-       info("Terminating connection due to lack of activity.");
+       notice("Terminating connection due to lack of activity.");
        lcp_close(0, "Link inactive");
+       status = EXIT_IDLE_TIMEOUT;
     } else {
        TIMEOUT(check_idle, NULL, idle_time_limit - itime);
     }
@@ -639,6 +643,7 @@ connect_time_expired(arg)
 {
     info("Connect time expired");
     lcp_close(0, "Connect time expired");      /* Close connection */
+    status = EXIT_CONNECT_TIME;
 }
 
 /*
@@ -891,6 +896,7 @@ static int PAM_conv (int num_msg, const struct pam_message **msg,
     *resp = reply;     
     return PAM_SUCCESS;
 }
+
 static struct pam_conv PAM_conversation = {
     &PAM_conv,
     NULL
@@ -921,7 +927,8 @@ plogin(user, passwd, msg, msglen)
 
     pam_error = pam_start ("ppp", user, &PAM_conversation, &pamh);
     if (pam_error != PAM_SUCCESS) {
-        *msg = (char *) pam_strerror (pamh, pam_error);  
+        *msg = (char *) pam_strerror (pamh, pam_error);
+       reopen_log();
        return UPAP_AUTHNAK;
     }
     /*
@@ -944,9 +951,11 @@ plogin(user, passwd, msg, msglen)
     }
 
     *msg = (char *) pam_strerror (pamh, pam_error);
+
     /*
      * Clean up the mess
      */
+    reopen_log();      /* apparently the PAM stuff does closelog() */
     PAM_username = NULL;
     PAM_password = NULL;
     if (pam_error != PAM_SUCCESS)
@@ -1012,7 +1021,7 @@ plogin(user, passwd, msg, msglen)
                (void)lseek(fd, (off_t)(pw->pw_uid * sizeof(ll)), SEEK_SET);
                memset((void *)&ll, 0, sizeof(ll));
                (void)time(&ll.ll_time);
-               (void)strlcpy(ll.ll_line, tty, sizeof(ll.ll_line));
+               (void)strncpy(ll.ll_line, tty, sizeof(ll.ll_line));
                (void)write(fd, (char *)&ll, sizeof(ll));
                (void)close(fd);
            }
@@ -1039,6 +1048,8 @@ plogout()
        pam_end (pamh, pam_error);
        pamh = NULL;
     }
+    /* Apparently the pam stuff does closelog(). */
+    reopen_log();
 #else /* ! USE_PAM */   
     char *tty;