projects
/
l2tpns.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: No RADIUS Stop message sent (regression due to the patch to avoid sending multip...
[l2tpns.git]
/
ppp.c
diff --git
a/ppp.c
b/ppp.c
index
f9a60ac
..
5ed8563
100644
(file)
--- a/
ppp.c
+++ b/
ppp.c
@@
-12,6
+12,11
@@
#include "tbf.h"
#include "cluster.h"
#include "tbf.h"
#include "cluster.h"
+#ifdef LAC
+#include "l2tplac.h"
+#endif
+#include "pppoe.h"
+
extern tunnelt *tunnel;
extern bundlet *bundle;
extern fragmentationt *frag;
extern tunnelt *tunnel;
extern bundlet *bundle;
extern fragmentationt *frag;
@@
-100,6
+105,14
@@
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);
}
+#ifdef LAC
+ if ((!config->disable_lac_func) && lac_conf_forwardtoremotelns(s, user))
+ {
+ // Creating a tunnel/session has been started
+ return;
+ }
+#endif
+
if (session[s].ip || !(r = radiusnew(s)))
{
// respond now, either no RADIUS available or already authenticated
if (session[s].ip || !(r = radiusnew(s)))
{
// respond now, either no RADIUS available or already authenticated
@@
-251,6
+264,16
@@
void processchap(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
packet.username = calloc(l + 1, 1);
memcpy(packet.username, p, l);
packet.username = calloc(l + 1, 1);
memcpy(packet.username, p, l);
+#ifdef LAC
+ if ((!config->disable_lac_func) && lac_conf_forwardtoremotelns(s, packet.username))
+ {
+ free(packet.username);
+ free(packet.password);
+ // Creating a tunnel/session has been started
+ return;
+ }
+#endif
+
run_plugins(PLUGIN_PRE_AUTH, &packet);
if (!packet.continue_auth)
{
run_plugins(PLUGIN_PRE_AUTH, &packet);
if (!packet.continue_auth)
{
@@
-403,7
+426,7
@@
void lcp_open(sessionidt s, tunnelidt t)
}
}
}
}
-
static
void lcp_restart(sessionidt s)
+void lcp_restart(sessionidt s)
{
session[s].ppp.phase = Establish;
// This-Layer-Down
{
session[s].ppp.phase = Establish;
// This-Layer-Down
@@
-536,7
+559,7
@@
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 || *p == EchoReply) ? 4 : 3
, s, t,
+ LOG((
(*p == EchoReq || *p == EchoReply) ? 4 : 3)
, s, t,
"LCP: recv %s\n", ppp_code(*p));
if (config->debug > 3) dumplcp(p, l);
"LCP: recv %s\n", ppp_code(*p));
if (config->debug > 3) dumplcp(p, l);
@@
-2499,6
+2522,11
@@
uint8_t *makeppp(uint8_t *b, int size, uint8_t *p, int l, sessionidt s, tunnelid
uint16_t type = mtype;
uint8_t *start = b;
uint16_t type = mtype;
uint8_t *start = b;
+ if (t == TUNNEL_ID_PPPOE)
+ {
+ return pppoe_makeppp(b, size, p, l, s, t, mtype, prio, bid, mp_bits);
+ }
+
if (size < 16) // Need more space than this!!
{
LOG(0, s, t, "makeppp buffer too small for L2TP header (size=%d)\n", size);
if (size < 16) // Need more space than this!!
{
LOG(0, s, t, "makeppp buffer too small for L2TP header (size=%d)\n", size);