projects
/
l2tpns.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
*** empty log message ***
[l2tpns.git]
/
ppp.c
diff --git
a/ppp.c
b/ppp.c
index
d9aab36
..
55edf58
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.
68 2005-08-10 11:25:56
bodea Exp $";
+char const *cvs_id_ppp = "$Id: ppp.c,v 1.
71 2005-08-11 06:22:11
bodea Exp $";
#include <stdio.h>
#include <string.h>
#include <stdio.h>
#include <string.h>
@@
-341,6
+341,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);
@@
-472,15
+474,15
@@
void processlcp(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
if (session[s].die) // going down...
return;
if (session[s].die) // going down...
return;
+ LOG(*p == EchoReq ? 4 : 3, s, t, "LCP: recv %s\n", ppp_code(*p));
+ if (config->debug > 3) dumplcp(p, l);
+
if (*p == ConfigAck)
{
int x = l - 4;
uint8_t *o = (p + 4);
int authtype = 0;
if (*p == ConfigAck)
{
int x = l - 4;
uint8_t *o = (p + 4);
int authtype = 0;
- LOG(3, s, t, "LCP: ConfigAck (%d bytes)...\n", l);
- if (config->debug > 3) dumplcp(p, l);
-
while (x > 2)
{
int type = o[0];
while (x > 2)
{
int type = o[0];
@@
-540,9
+542,6
@@
void processlcp(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
static uint8_t asyncmap[4] = { 0, 0, 0, 0 }; // all zero
static uint8_t authproto[5];
static uint8_t asyncmap[4] = { 0, 0, 0, 0 }; // all zero
static uint8_t authproto[5];
- LOG(3, s, t, "LCP: ConfigReq (%d bytes)...\n", l);
- if (config->debug > 3) dumplcp(p, l);
-
while (x > 2)
{
int type = o[0];
while (x > 2)
{
int type = o[0];
@@
-559,7
+558,7
@@
void processlcp(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
if (!ntohl(*(uint32_t *)(o + 2))) // all bits zero is OK
break;
if (!ntohl(*(uint32_t *)(o + 2))) // all bits zero is OK
break;
- LOG(
2
, s, t, " Remote requesting asyncmap. Rejecting.\n");
+ LOG(
3
, s, t, " Remote requesting asyncmap. Rejecting.\n");
q = ppp_nak(s, b, sizeof(b), PPPLCP, &response, q, p, o, asyncmap, sizeof(asyncmap));
break;
q = ppp_nak(s, b, sizeof(b), PPPLCP, &response, q, p, o, asyncmap, sizeof(asyncmap));
break;
@@
-593,7
+592,7
@@
void processlcp(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
else
sprintf(proto_name, "%#4.4x", proto);
else
sprintf(proto_name, "%#4.4x", proto);
- LOG(
2
, s, t, " Remote requesting %s authentication. Rejecting.\n", proto_name);
+ LOG(
3
, s, t, " Remote requesting %s authentication. Rejecting.\n", proto_name);
alen = add_lcp_auth(authproto, sizeof(authproto), config->radius_authprefer);
if (alen < 2) break; // paranoia
alen = add_lcp_auth(authproto, sizeof(authproto), config->radius_authprefer);
if (alen < 2) break; // paranoia
@@
-622,7
+621,7
@@
void processlcp(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
break;
default: // Reject any unknown options
break;
default: // Reject any unknown options
- LOG(
2, s, t, " Rejecting PPP LCP Option type
%d\n", type);
+ LOG(
3, s, t, " Rejecting unknown PPP LCP option
%d\n", type);
q = ppp_rej(s, b, sizeof(b), PPPLCP, &response, q, p, o);
}
x -= length;
q = ppp_rej(s, b, sizeof(b), PPPLCP, &response, q, p, o);
}
x -= length;
@@
-691,7
+690,9
@@
void processlcp(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
return;
}
return;
}
- LOG(3, s, t, "LCP: Sending %s\n", ppp_code(*response));
+ LOG(3, s, t, "LCP: send %s\n", ppp_code(*response));
+ if (config->debug > 3) dumplcp(response, l);
+
tunnelsend(b, l + (response - b), t);
}
else if (*p == ConfigNak)
tunnelsend(b, l + (response - b), t);
}
else if (*p == ConfigNak)
@@
-700,9
+701,6
@@
void processlcp(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
uint8_t *o = (p + 4);
int authtype = -1;
uint8_t *o = (p + 4);
int authtype = -1;
- LOG(3, s, t, "LCP: ConfigNak (%d bytes)...\n", l);
- if (config->debug > 3) dumplcp(p, l);
-
while (x > 2)
{
int type = o[0];
while (x > 2)
{
int type = o[0];
@@
-769,6
+767,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;
@@
-796,10
+798,13
@@
void processlcp(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
}
else if (*p == TerminateReq)
{
}
else if (*p == TerminateReq)
{
- LOG(3, s, t, "LCP: Received TerminateReq. Sending TerminateAck\n");
*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);
}
@@
-823,11
+828,14
@@
void processlcp(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
}
else if (*p == EchoReq)
{
}
else if (*p == EchoReq)
{
- LOG(5, s, t, "LCP: Received EchoReq. Sending EchoReply\n");
*p = EchoReply; // reply
*(uint32_t *) (p + 4) = htonl(session[s].magic); // our magic number
q = makeppp(b, sizeof(b), p, l, s, t, PPPLCP);
if (!q) return;
*p = EchoReply; // reply
*(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)
@@
-847,7
+855,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);
}
}
@@
-904,6
+915,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)
@@
-936,8
+949,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)
@@
-1061,15
+1072,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);
}
@@
-1086,7
+1097,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);
}
}
@@
-1134,6
+1146,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));
@@
-1182,8
+1196,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)
@@
-1281,15
+1293,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);
}
@@
-1306,7
+1318,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);
}
}
@@
-1556,6
+1569,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)
@@
-1640,15
+1654,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);
}
@@
-1665,7
+1679,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);
}
}
@@
-1792,9
+1807,10
@@
void sendlcp(sessionidt s, tunnelidt t, int authtype)
if (!(q = makeppp(b, sizeof(b), NULL, 0, s, t, PPPLCP)))
return;
if (!(q = makeppp(b, sizeof(b), NULL, 0, s, t, PPPLCP)))
return;
- LOG(4, s, t, "Sending LCP ConfigReq%s%s\n",
- authtype ? " for " : "",
- authtype ? (authtype == AUTHCHAP ? "CHAP" : "PAP") : "");
+ LOG(3, s, t, "LCP: send ConfigReq%s%s%s\n",
+ authtype ? " (" : "",
+ authtype ? (authtype == AUTHCHAP ? "CHAP" : "PAP") : "",
+ authtype ? ")" : "");
if (!session[s].mru)
session[s].mru = DEFAULT_MRU;
if (!session[s].mru)
session[s].mru = DEFAULT_MRU;
@@
-1818,6
+1834,8
@@
void sendlcp(sessionidt s, tunnelidt t, int authtype)
*(uint16_t *)(q + 2) = htons(l - q); // Length
LOG_HEX(5, "PPPLCP", q, l - q);
*(uint16_t *)(q + 2) = htons(l - q); // Length
LOG_HEX(5, "PPPLCP", q, l - q);
+ if (config->debug > 3) dumplcp(q, l - q);
+
tunnelsend(b, (l - b), t);
}
tunnelsend(b, (l - b), t);
}
@@
-1829,7
+1847,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