add Framed-Route entries to RADIUS records

This commit is contained in:
bodea 2005-10-19 03:09:29 +00:00
parent fcad08f613
commit 149c87a729
3 changed files with 28 additions and 3 deletions

View file

@ -1,6 +1,7 @@
* Tue Oct 18 2005 Brendan O'Dea <bod@optus.net> 2.1.10 * Wed Oct 19 2005 Brendan O'Dea <bod@optus.net> 2.1.10
- Add scripts/l2tpns-capture. - Add scripts/l2tpns-capture.
- Fix LCP Echo frequency. - Fix LCP Echo frequency.
- Add Framed-Route entries to RADIUS records.
* Tue Oct 11 2005 Brendan O'Dea <bod@optus.net> 2.1.9 * Tue Oct 11 2005 Brendan O'Dea <bod@optus.net> 2.1.9
- Fix Calling-Station-Id in RADIUS accounting records (Slobodan Tomic). - Fix Calling-Station-Id in RADIUS accounting records (Slobodan Tomic).

View file

@ -43,5 +43,5 @@ rm -rf %{buildroot}
%attr(644,root,root) /usr/share/man/man[58]/* %attr(644,root,root) /usr/share/man/man[58]/*
%changelog %changelog
* Tue Oct 18 2005 Brendan O'Dea <bod@optus.net> 2.1.10-1 * Wed Oct 19 2005 Brendan O'Dea <bod@optus.net> 2.1.10-1
- 2.1.10 release, see /usr/share/doc/l2tpns-2.1.10/Changes - 2.1.10 release, see /usr/share/doc/l2tpns-2.1.10/Changes

View file

@ -1,6 +1,6 @@
// L2TPNS Radius Stuff // L2TPNS Radius Stuff
char const *cvs_id_radius = "$Id: radius.c,v 1.44 2005/10/11 09:04:53 bodea Exp $"; char const *cvs_id_radius = "$Id: radius.c,v 1.45 2005/10/19 03:09:30 bodea Exp $";
#include <time.h> #include <time.h>
#include <stdio.h> #include <stdio.h>
@ -326,6 +326,30 @@ void radiussend(uint16_t r, uint8_t state)
*(uint32_t *) (p + 2) = htonl(session[s].ip); *(uint32_t *) (p + 2) = htonl(session[s].ip);
p += p[1]; p += p[1];
} }
if (s && session[s].route[0].ip)
{
int r;
for (r = 0; s && r < MAXROUTE && session[s].route[r].ip; r++)
{
int width = 32;
if (session[s].route[r].mask)
{
int mask = session[s].route[r].mask;
while (!(mask & 1))
{
width--;
mask >>= 1;
}
}
*p = 22; // Framed-Route
p[1] = sprintf((char *) p + 2, "%s/%d %s 1",
fmtaddr(htonl(session[s].route[r].ip), 0),
width, fmtaddr(htonl(session[s].ip), 1)) + 2;
p += p[1];
}
}
if (*session[s].called) if (*session[s].called)
{ {
*p = 30; // called *p = 30; // called