Use multiple radius sockets to allow more concurrent authentication requests
Remove per-packet plugin hooks (they are slow)
This commit is contained in:
parent
d305da84f4
commit
1af4c16721
1 changed files with 7 additions and 13 deletions
20
ppp.c
20
ppp.c
|
|
@ -1,5 +1,5 @@
|
||||||
// L2TPNS PPP Stuff
|
// L2TPNS PPP Stuff
|
||||||
// $Id: ppp.c,v 1.3 2004/03/05 00:22:06 fred_nerk Exp $
|
// $Id: ppp.c,v 1.4 2004/05/24 04:26:01 fred_nerk Exp $
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
@ -87,7 +87,7 @@ void processpap(tunnelidt t, sessionidt s, u8 * p, u16 l)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ // set up RADIUS request
|
{ // set up RADIUS request
|
||||||
u8 r = session[s].radius;
|
u16 r = session[s].radius;
|
||||||
|
|
||||||
// Run PRE_AUTH plugins
|
// Run PRE_AUTH plugins
|
||||||
struct param_pre_auth packet = { &tunnel[t], &session[s], strdup(user), strdup(pass), PPPPAP, 1 };
|
struct param_pre_auth packet = { &tunnel[t], &session[s], strdup(user), strdup(pass), PPPPAP, 1 };
|
||||||
|
|
@ -115,7 +115,7 @@ void processpap(tunnelidt t, sessionidt s, u8 * p, u16 l)
|
||||||
// Process CHAP messages
|
// Process CHAP messages
|
||||||
void processchap(tunnelidt t, sessionidt s, u8 * p, u16 l)
|
void processchap(tunnelidt t, sessionidt s, u8 * p, u16 l)
|
||||||
{
|
{
|
||||||
u8 r;
|
u16 r;
|
||||||
u16 len;
|
u16 len;
|
||||||
|
|
||||||
#ifdef STAT_CALLS
|
#ifdef STAT_CALLS
|
||||||
|
|
@ -187,8 +187,8 @@ void processchap(tunnelidt t, sessionidt s, u8 * p, u16 l)
|
||||||
}
|
}
|
||||||
|
|
||||||
radius[r].chap = 1;
|
radius[r].chap = 1;
|
||||||
radiussend(r, RADIUSAUTH);
|
|
||||||
log(3, 0, s, t, "CHAP login %s\n", session[s].user);
|
log(3, 0, s, t, "CHAP login %s\n", session[s].user);
|
||||||
|
radiussend(r, RADIUSAUTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
char *ppp_lcp_types[] = {
|
char *ppp_lcp_types[] = {
|
||||||
|
|
@ -407,7 +407,7 @@ void processlcp(tunnelidt t, sessionidt s, u8 * p, u16 l)
|
||||||
*p = EchoReply; // reply
|
*p = EchoReply; // reply
|
||||||
*(u32 *) (p + 4) = htonl(session[s].magic); // our magic number
|
*(u32 *) (p + 4) = htonl(session[s].magic); // our magic number
|
||||||
q = makeppp(b, p, l, t, s, PPPLCP);
|
q = makeppp(b, p, l, t, s, PPPLCP);
|
||||||
log(4, session[s].ip, s, t, "LCP: Received EchoReq. Sending EchoReply\n");
|
log(5, session[s].ip, s, t, "LCP: Received EchoReq. Sending EchoReply\n");
|
||||||
tunnelsend(b, l + (q - b), t); // send it
|
tunnelsend(b, l + (q - b), t); // send it
|
||||||
}
|
}
|
||||||
else if (*p == EchoReply)
|
else if (*p == EchoReply)
|
||||||
|
|
@ -437,7 +437,7 @@ void processipcp(tunnelidt t, sessionidt s, u8 * p, u16 l)
|
||||||
}
|
}
|
||||||
if (*p == ConfigAck)
|
if (*p == ConfigAck)
|
||||||
{ // happy with our IPCP
|
{ // happy with our IPCP
|
||||||
u8 r = session[s].radius;
|
u16 r = session[s].radius;
|
||||||
if ((!r || radius[r].state == RADIUSIPCP) && !session[s].walled_garden)
|
if ((!r || radius[r].state == RADIUSIPCP) && !session[s].walled_garden)
|
||||||
if (!r)
|
if (!r)
|
||||||
r = radiusnew(s);
|
r = radiusnew(s);
|
||||||
|
|
@ -560,12 +560,6 @@ void processipin(tunnelidt t, sessionidt s, u8 * p, u16 l)
|
||||||
*(u32 *)p = htonl(0x00000800);
|
*(u32 *)p = htonl(0x00000800);
|
||||||
l += 4;
|
l += 4;
|
||||||
|
|
||||||
// Plugin hook
|
|
||||||
{
|
|
||||||
struct param_packet_rx packet = { &tunnel[t], &session[s], p, l };
|
|
||||||
run_plugins(PLUGIN_PACKET_TX, &packet);
|
|
||||||
}
|
|
||||||
|
|
||||||
// send to ethernet
|
// send to ethernet
|
||||||
if (write(tapfd, p, l) < 0)
|
if (write(tapfd, p, l) < 0)
|
||||||
{
|
{
|
||||||
|
|
@ -622,7 +616,7 @@ void processccp(tunnelidt t, sessionidt s, u8 * p, u16 l)
|
||||||
void sendchap(tunnelidt t, sessionidt s)
|
void sendchap(tunnelidt t, sessionidt s)
|
||||||
{
|
{
|
||||||
u8 b[MAXCONTROL];
|
u8 b[MAXCONTROL];
|
||||||
u8 r = session[s].radius;
|
u16 r = session[s].radius;
|
||||||
u8 *q;
|
u8 *q;
|
||||||
#ifdef STAT_CALLS
|
#ifdef STAT_CALLS
|
||||||
STAT(call_sendchap);
|
STAT(call_sendchap);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue