remove openssl crypto lib
[l2tpns.git] / ppp.c
diff --git a/ppp.c b/ppp.c
index c28a1d6..1d59e33 100644 (file)
--- a/ppp.c
+++ b/ppp.c
@@ -1,6 +1,6 @@
 // L2TPNS PPP Stuff
 
 // L2TPNS PPP Stuff
 
-char const *cvs_id_ppp = "$Id: ppp.c,v 1.69 2005/08/11 05:50:49 bodea Exp $";
+char const *cvs_id_ppp = "$Id: ppp.c,v 1.72 2005/08/12 08:18:46 bodea Exp $";
 
 #include <stdio.h>
 #include <string.h>
 
 #include <stdio.h>
 #include <string.h>
@@ -85,8 +85,7 @@ void processpap(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
                LOG(3, s, t, "PAP login %s/%s\n", user, pass);
        }
 
                LOG(3, s, t, "PAP login %s/%s\n", user, pass);
        }
 
-       r = radiusnew(s);
-       if (session[s].ip || !r)
+       if (session[s].ip || !(r = radiusnew(s)))
        {
                // respond now, either no RADIUS available or already authenticated
                uint8_t b[MAXCONTROL];
        {
                // respond now, either no RADIUS available or already authenticated
                uint8_t b[MAXCONTROL];
@@ -341,6 +340,8 @@ void lcp_open(sessionidt s, tunnelidt t)
        // transition to Authentication or Network phase: 
        session[s].ppp.phase = sess_local[s].lcp_authtype ? Authenticate : Network;
 
        // transition to Authentication or Network phase: 
        session[s].ppp.phase = sess_local[s].lcp_authtype ? Authenticate : Network;
 
+       LOG(3, s, t, "LCP: Opened, phase %s\n", ppp_phase(session[s].ppp.phase));
+
        // LCP now Opened
        change_state(s, lcp, Opened);
 
        // LCP now Opened
        change_state(s, lcp, Opened);
 
@@ -765,6 +766,10 @@ void processlcp(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
                                if (!response) return;
                                *response = TerminateAck;
                                *((uint16_t *) (response + 2)) = htons(l = 4);
                                if (!response) return;
                                *response = TerminateAck;
                                *((uint16_t *) (response + 2)) = htons(l = 4);
+
+                               LOG(3, s, t, "LCP: send %s\n", ppp_code(*response));
+                               if (config->debug > 3) dumplcp(response, l);
+
                                tunnelsend(b, l + (response - b), t);
                        }
                        break;
                                tunnelsend(b, l + (response - b), t);
                        }
                        break;
@@ -795,6 +800,10 @@ void processlcp(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
                *p = TerminateAck;      // close
                q = makeppp(b, sizeof(b),  p, l, s, t, PPPLCP);
                if (!q) return;
                *p = TerminateAck;      // close
                q = makeppp(b, sizeof(b),  p, l, s, t, PPPLCP);
                if (!q) return;
+
+               LOG(3, s, t, "LCP: send %s\n", ppp_code(*q));
+               if (config->debug > 3) dumplcp(q, l);
+
                tunnelsend(b, l + (q - b), t); // send it
                sessionshutdown(s, "Remote end closed connection.", 3, 0);
        }
                tunnelsend(b, l + (q - b), t); // send it
                sessionshutdown(s, "Remote end closed connection.", 3, 0);
        }
@@ -822,6 +831,10 @@ void processlcp(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
                *(uint32_t *) (p + 4) = htonl(session[s].magic); // our magic number
                q = makeppp(b, sizeof(b), p, l, s, t, PPPLCP);
                if (!q) return;
                *(uint32_t *) (p + 4) = htonl(session[s].magic); // our magic number
                q = makeppp(b, sizeof(b), p, l, s, t, PPPLCP);
                if (!q) return;
+
+               LOG(4, s, t, "LCP: send %s\n", ppp_code(*q));
+               if (config->debug > 3) dumplcp(q, l);
+
                tunnelsend(b, l + (q - b), t); // send it
        }
        else if (*p == EchoReply)
                tunnelsend(b, l + (q - b), t); // send it
        }
        else if (*p == EchoReply)
@@ -841,7 +854,10 @@ void processlcp(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
                q = makeppp(b, sizeof(b), p, l, s, t, PPPLCP);
                if (!q) return;
 
                q = makeppp(b, sizeof(b), p, l, s, t, PPPLCP);
                if (!q) return;
 
-               LOG(3, s, t, "Unexpected LCP code %s\n", ppp_code(code));
+               LOG(2, s, t, "Unexpected LCP code %s\n", ppp_code(code));
+               LOG(3, s, t, "LCP: send %s\n", ppp_code(*q));
+               if (config->debug > 3) dumplcp(q, l);
+
                tunnelsend(b, l + (q - b), t);
        }
 }
                tunnelsend(b, l + (q - b), t);
        }
 }
@@ -898,6 +914,8 @@ void processipcp(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
                return;
        }
 
                return;
        }
 
+       LOG(3, s, t, "IPCP: recv %s\n", ppp_code(*p));
+
        if (*p == ConfigAck)
        {
                switch (session[s].ppp.ipcp)
        if (*p == ConfigAck)
        {
                switch (session[s].ppp.ipcp)
@@ -930,8 +948,6 @@ void processipcp(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
                int gotip = 0;
                in_addr_t addr;
 
                int gotip = 0;
                in_addr_t addr;
 
-               LOG(3, s, t, "IPCP: ConfigReq received\n");
-
                while (length > 2)
                {
                        switch (*o)
                while (length > 2)
                {
                        switch (*o)
@@ -1055,15 +1071,15 @@ void processipcp(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
                        return;
                }
 
                        return;
                }
 
-               LOG(3, s, t, "IPCP: Sending %s\n", ppp_code(*response));
+               LOG(3, s, t, "IPCP: send %s\n", ppp_code(*response));
                tunnelsend(b, l + (response - b), t);
        }
        else if (*p == TerminateReq)
        {
                tunnelsend(b, l + (response - b), t);
        }
        else if (*p == TerminateReq)
        {
-               LOG(3, s, t, "IPCP: Received TerminateReq.  Sending TerminateAck\n");
                *p = TerminateAck;
                q = makeppp(b, sizeof(b), p, l, s, t, PPPIPCP);
                if (!q) return;
                *p = TerminateAck;
                q = makeppp(b, sizeof(b), p, l, s, t, PPPIPCP);
                if (!q) return;
+               LOG(3, s, t, "IPCP: send %s\n", ppp_code(*q));
                tunnelsend(b, l + (q - b), t);
                change_state(s, ipcp, Stopped);
        }
                tunnelsend(b, l + (q - b), t);
                change_state(s, ipcp, Stopped);
        }
@@ -1080,7 +1096,8 @@ void processipcp(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
                q = makeppp(b, sizeof(b), p, l, s, t, PPPIPCP);
                if (!q) return;
 
                q = makeppp(b, sizeof(b), p, l, s, t, PPPIPCP);
                if (!q) return;
 
-               LOG(3, s, t, "Unexpected IPCP code %s\n", ppp_code(code));
+               LOG(2, s, t, "Unexpected IPCP code %s\n", ppp_code(code));
+               LOG(3, s, t, "IPCP: send %s\n", ppp_code(*q));
                tunnelsend(b, l + (q - b), t);
        }
 }
                tunnelsend(b, l + (q - b), t);
        }
 }
@@ -1128,6 +1145,8 @@ void processipv6cp(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
                return;
        }
 
                return;
        }
 
+       LOG(3, s, t, "IPV6CP: recv %s\n", ppp_code(*p));
+
        if (!config->ipv6_prefix.s6_addr[0])
        {
                LOG(2, s, t, "IPV6CP: %s rejected (not configured)\n", ppp_code(*p));
        if (!config->ipv6_prefix.s6_addr[0])
        {
                LOG(2, s, t, "IPV6CP: %s rejected (not configured)\n", ppp_code(*p));
@@ -1176,8 +1195,6 @@ void processipv6cp(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
                int gotip = 0;
                uint8_t ident[8];
 
                int gotip = 0;
                uint8_t ident[8];
 
-               LOG(3, s, t, "IPV6CP: ConfigReq received\n");
-
                while (length > 2)
                {
                        switch (*o)
                while (length > 2)
                {
                        switch (*o)
@@ -1275,15 +1292,15 @@ void processipv6cp(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
                        return;
                }
 
                        return;
                }
 
-               LOG(3, s, t, "IPV6CP: Sending %s\n", ppp_code(*response));
+               LOG(3, s, t, "IPV6CP: send %s\n", ppp_code(*response));
                tunnelsend(b, l + (response - b), t);
        }
        else if (*p == TerminateReq)
        {
                tunnelsend(b, l + (response - b), t);
        }
        else if (*p == TerminateReq)
        {
-               LOG(3, s, t, "IPV6CP: Received TerminateReq.  Sending TerminateAck\n");
                *p = TerminateAck;
                q = makeppp(b, sizeof(b),  p, l, s, t, PPPIPV6CP);
                if (!q) return;
                *p = TerminateAck;
                q = makeppp(b, sizeof(b),  p, l, s, t, PPPIPV6CP);
                if (!q) return;
+               LOG(3, s, t, "IPV6CP: send %s\n", ppp_code(*q));
                tunnelsend(b, l + (q - b), t);
                change_state(s, ipv6cp, Stopped);
        }
                tunnelsend(b, l + (q - b), t);
                change_state(s, ipv6cp, Stopped);
        }
@@ -1300,7 +1317,8 @@ void processipv6cp(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
                q = makeppp(b, sizeof(b), p, l, s, t, PPPIPV6CP);
                if (!q) return;
 
                q = makeppp(b, sizeof(b), p, l, s, t, PPPIPV6CP);
                if (!q) return;
 
-               LOG(3, s, t, "Unexpected IPV6CP code %s\n", ppp_code(code));
+               LOG(2, s, t, "Unexpected IPV6CP code %s\n", ppp_code(code));
+               LOG(3, s, t, "IPV6CP: send %s\n", ppp_code(*q));
                tunnelsend(b, l + (q - b), t);
        }
 }
                tunnelsend(b, l + (q - b), t);
        }
 }
@@ -1550,6 +1568,7 @@ void processccp(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
                STAT(tunnel_rx_errors);
        }
 
                STAT(tunnel_rx_errors);
        }
 
+       LOG(3, s, t, "CCP: recv %s\n", ppp_code(*p));
        if (*p == ConfigAck)
        {
                switch (session[s].ppp.ccp)
        if (*p == ConfigAck)
        {
                switch (session[s].ppp.ccp)
@@ -1634,15 +1653,15 @@ void processccp(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
                        return;
                }
 
                        return;
                }
 
-               LOG(3, s, t, "CCP: Sending %s\n", ppp_code(*q));
+               LOG(3, s, t, "CCP: send %s\n", ppp_code(*q));
                tunnelsend(b, l + (q - b), t);
        }
        else if (*p == TerminateReq)
        {
                tunnelsend(b, l + (q - b), t);
        }
        else if (*p == TerminateReq)
        {
-               LOG(3, s, t, "CCP: Received TerminateReq.  Sending TerminateAck\n");
                *p = TerminateAck;
                q = makeppp(b, sizeof(b),  p, l, s, t, PPPCCP);
                if (!q) return;
                *p = TerminateAck;
                q = makeppp(b, sizeof(b),  p, l, s, t, PPPCCP);
                if (!q) return;
+               LOG(3, s, t, "CCP: send %s\n", ppp_code(*q));
                tunnelsend(b, l + (q - b), t);
                change_state(s, ccp, Stopped);
        }
                tunnelsend(b, l + (q - b), t);
                change_state(s, ccp, Stopped);
        }
@@ -1659,7 +1678,8 @@ void processccp(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
                q = makeppp(b, sizeof(b), p, l, s, t, PPPCCP);
                if (!q) return;
 
                q = makeppp(b, sizeof(b), p, l, s, t, PPPCCP);
                if (!q) return;
 
-               LOG(3, s, t, "Unexpected CCP code %s\n", ppp_code(code));
+               LOG(2, s, t, "Unexpected CCP code %s\n", ppp_code(code));
+               LOG(3, s, t, "CCP: send %s\n", ppp_code(*q));
                tunnelsend(b, l + (q - b), t);
        }
 }
                tunnelsend(b, l + (q - b), t);
        }
 }
@@ -1826,7 +1846,8 @@ void sendccp(sessionidt s, tunnelidt t)
        if (!(q = makeppp(b, sizeof(b), NULL, 0, s, t, PPPCCP)))
                return;
 
        if (!(q = makeppp(b, sizeof(b), NULL, 0, s, t, PPPCCP)))
                return;
 
-       LOG(4, s, t, "Sending CCP ConfigReq for no compression\n");
+       LOG(3, s, t, "CCP: send ConfigReq (no compression)\n");
+
        *q = ConfigReq;
        *(uint8_t *)(q + 1) = (time_now % 255) + 1; // ID
        *(uint16_t *)(q + 2) = htons(4); // Length
        *q = ConfigReq;
        *(uint8_t *)(q + 1) = (time_now % 255) + 1; // ID
        *(uint16_t *)(q + 2) = htons(4); // Length