first version of the LAC functionality

This commit is contained in:
fendo 2012-11-28 23:43:33 +01:00
parent 7fd68b1dae
commit 4df24fd868
7 changed files with 582 additions and 10 deletions

25
ppp.c
View file

@ -1,5 +1,7 @@
// L2TPNS PPP Stuff
//#define LAC
#include <stdio.h>
#include <string.h>
#include <unistd.h>
@ -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)
{