- Ignore gateway address in Framed-Route (from Jonathan McDowell).

- Call sessionshutdown() when a tunnel is dropped rather than
  sessionkill() to ensure that RADIUS stop records are sent.
- Cleanup: make a bunch of global functions/variables static.
This commit is contained in:
bodea 2004-11-16 07:54:32 +00:00
parent 00f945ddce
commit 27329d23aa
11 changed files with 205 additions and 275 deletions

50
ppp.c
View file

@ -1,6 +1,6 @@
// L2TPNS PPP Stuff
char const *cvs_id_ppp = "$Id: ppp.c,v 1.25 2004/11/09 05:49:08 bodea Exp $";
char const *cvs_id_ppp = "$Id: ppp.c,v 1.26 2004/11/16 07:54:32 bodea Exp $";
#include <stdio.h>
#include <string.h>
@ -23,7 +23,7 @@ extern u32 eth_tx;
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)
@ -224,7 +224,7 @@ void processchap(tunnelidt t, sessionidt s, u8 *p, u16 l)
radiussend(r, RADIUSAUTH);
}
char *ppp_lcp_types[] = {
static char *ppp_lcp_types[] = {
NULL,
"ConfigReq",
"ConfigAck",
@ -240,7 +240,7 @@ char *ppp_lcp_types[] = {
"IdentRequest",
};
void dumplcp(u8 *p, int l)
static void dumplcp(u8 *p, int l)
{
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)
{
@ -910,26 +930,6 @@ u8 *makeppp(u8 *b, int size, u8 *p, int l, tunnelidt t, sessionidt s, u16 mtype)
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)
{
@ -955,7 +955,7 @@ void initlcp(tunnelidt t, sessionidt s)
}
// Send CCP reply
void sendccp(tunnelidt t, sessionidt s)
static void sendccp(tunnelidt t, sessionidt s)
{
char *q, b[500] = {0};