X-Git-Url: http://git.sameswireless.fr/l2tpns.git/blobdiff_plain/7fd68b1daeab9a2a1a3ee8f0652c25fc37bf3549..4df24fd868177859ddd778f1f45bc825f6264cfb:/ppp.c diff --git a/ppp.c b/ppp.c index f9a60ac..518f6ec 100644 --- a/ppp.c +++ b/ppp.c @@ -1,5 +1,7 @@ // L2TPNS PPP Stuff +//#define LAC + #include #include #include @@ -12,6 +14,10 @@ #include "tbf.h" #include "cluster.h" +#ifdef LAC +#include "l2tplac.h" +#endif + extern tunnelt *tunnel; extern bundlet *bundle; extern fragmentationt *frag; @@ -100,6 +106,14 @@ void processpap(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l) LOG(3, s, t, "PAP login %s/%s\n", user, pass); } +#ifdef LAC + if (forwardtolns(s, user)) + { + LOG(3, s, t, "Forwarding login for %s to other LNS\n", user); + return; + } +#endif + if (session[s].ip || !(r = radiusnew(s))) { // respond now, either no RADIUS available or already authenticated @@ -251,6 +265,17 @@ void processchap(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l) packet.username = calloc(l + 1, 1); memcpy(packet.username, p, l); +#ifdef LAC + if (forwardtolns(s, packet.username)) + { + LOG(3, s, t, "Forwarding login for %s to other LNS\n", packet.username); + + free(packet.username); + free(packet.password); + return; + } +#endif + run_plugins(PLUGIN_PRE_AUTH, &packet); if (!packet.continue_auth) {