projects
/
l2tpns.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
doc update
[l2tpns.git]
/
ppp.c
diff --git
a/ppp.c
b/ppp.c
index
809637c
..
81727e9
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.2
4 2004/11/09 05:48
:28 bodea Exp $";
+char const *cvs_id_ppp = "$Id: ppp.c,v 1.2
7 2004/11/18 13:15
:28 bodea Exp $";
#include <stdio.h>
#include <string.h>
#include <stdio.h>
#include <string.h>
@@
-23,7
+23,7
@@
extern u32 eth_tx;
extern time_t time_now;
extern struct configt *config;
extern time_t time_now;
extern struct configt *config;
-void sendccp(tunnelidt t, sessionidt s);
+
static
void sendccp(tunnelidt t, sessionidt s);
// Process PAP messages
void processpap(tunnelidt t, sessionidt s, u8 *p, u16 l)
// Process PAP messages
void processpap(tunnelidt t, sessionidt s, u8 *p, u16 l)
@@
-224,7
+224,7
@@
void processchap(tunnelidt t, sessionidt s, u8 *p, u16 l)
radiussend(r, RADIUSAUTH);
}
radiussend(r, RADIUSAUTH);
}
-char *ppp_lcp_types[] = {
+
static
char *ppp_lcp_types[] = {
NULL,
"ConfigReq",
"ConfigAck",
NULL,
"ConfigReq",
"ConfigAck",
@@
-240,7
+240,7
@@
char *ppp_lcp_types[] = {
"IdentRequest",
};
"IdentRequest",
};
-void dumplcp(u8 *p, int l)
+
static
void dumplcp(u8 *p, int l)
{
int x = l - 4;
u8 *o = (p + 4);
{
int x = l - 4;
u8 *o = (p + 4);
@@
-543,6
+543,26
@@
void processlcp(tunnelidt t, sessionidt s, u8 *p, u16 l)
}
}
}
}
+// find a PPP option, returns point to option, or 0 if not found
+static u8 *findppp(u8 *b, u8 mtype)
+{
+ u16 l = ntohs(*(u16 *) (b + 2));
+ if (l < 4)
+ return 0;
+ b += 4;
+ l -= 4;
+ while (l)
+ {
+ if (l < b[1] || !b[1])
+ return 0; // faulty
+ if (*b == mtype)
+ return b;
+ l -= b[1];
+ b += b[1];
+ }
+ return 0;
+}
+
// Process IPCP messages
void processipcp(tunnelidt t, sessionidt s, u8 *p, u16 l)
{
// Process IPCP messages
void processipcp(tunnelidt t, sessionidt s, u8 *p, u16 l)
{
@@
-580,6
+600,10
@@
void processipcp(tunnelidt t, sessionidt s, u8 *p, u16 l)
session[s].flags |= SF_IPCP_ACKED;
LOG(3, session[s].ip, s, t, "IPCP Acked, session is now active\n");
session[s].flags |= SF_IPCP_ACKED;
LOG(3, session[s].ip, s, t, "IPCP Acked, session is now active\n");
+
+ // clear LCP_ACKED flag for possible fast renegotiaion for routers
+ session[s].flags &= ~SF_LCP_ACKED;
+
return;
}
if (*p != ConfigReq)
return;
}
if (*p != ConfigReq)
@@
-783,7
+807,7
@@
void send_ipin(sessionidt s, u8 *buf, int len)
eth_tx += len - 4;
STAT(tun_tx_packets);
eth_tx += len - 4;
STAT(tun_tx_packets);
- INC_STAT(tun_tx_bytes, l - 4);
+ INC_STAT(tun_tx_bytes, l
en
- 4);
}
}
@@
-820,7
+844,7
@@
void processccp(tunnelidt t, sessionidt s, u8 *p, u16 l)
*p = TerminateAck; // close
if (!(q = makeppp(b, sizeof(b), p, l, t, s, PPPCCP)))
{
*p = TerminateAck; // close
if (!(q = makeppp(b, sizeof(b), p, l, t, s, PPPCCP)))
{
- LOG(1,0,0,0, "Failed to send CCP packet.\n");
+ LOG(1,0,0,0, "Failed to send CCP packet.\n");
return;
}
tunnelsend(b, l + (q - b), t); // send it
return;
}
tunnelsend(b, l + (q - b), t); // send it
@@
-910,26
+934,6
@@
u8 *makeppp(u8 *b, int size, u8 *p, int l, tunnelidt t, sessionidt s, u16 mtype)
return b;
}
return b;
}
-// find a PPP option, returns point to option, or 0 if not found
-u8 *findppp(u8 *b, u8 mtype)
-{
- u16 l = ntohs(*(u16 *) (b + 2));
- if (l < 4)
- return 0;
- b += 4;
- l -= 4;
- while (l)
- {
- if (l < b[1] || !b[1])
- return 0; // faulty
- if (*b == mtype)
- return b;
- l -= b[1];
- b += b[1];
- }
- return 0;
-}
-
// Send initial LCP ConfigReq
void initlcp(tunnelidt t, sessionidt s)
{
// Send initial LCP ConfigReq
void initlcp(tunnelidt t, sessionidt s)
{
@@
-955,7
+959,7
@@
void initlcp(tunnelidt t, sessionidt s)
}
// Send CCP reply
}
// Send CCP reply
-void sendccp(tunnelidt t, sessionidt s)
+
static
void sendccp(tunnelidt t, sessionidt s)
{
char *q, b[500] = {0};
{
char *q, b[500] = {0};