From 149c87a729099fa8c2c7c75ca3816f9aa7f8760d Mon Sep 17 00:00:00 2001 From: bodea Date: Wed, 19 Oct 2005 03:09:29 +0000 Subject: [PATCH] add Framed-Route entries to RADIUS records --- Changes | 3 ++- l2tpns.spec | 2 +- radius.c | 26 +++++++++++++++++++++++++- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/Changes b/Changes index 220ba22..0a0e445 100644 --- a/Changes +++ b/Changes @@ -1,6 +1,7 @@ -* Tue Oct 18 2005 Brendan O'Dea 2.1.10 +* Wed Oct 19 2005 Brendan O'Dea 2.1.10 - Add scripts/l2tpns-capture. - Fix LCP Echo frequency. +- Add Framed-Route entries to RADIUS records. * Tue Oct 11 2005 Brendan O'Dea 2.1.9 - Fix Calling-Station-Id in RADIUS accounting records (Slobodan Tomic). diff --git a/l2tpns.spec b/l2tpns.spec index de1cc46..53cd8c5 100644 --- a/l2tpns.spec +++ b/l2tpns.spec @@ -43,5 +43,5 @@ rm -rf %{buildroot} %attr(644,root,root) /usr/share/man/man[58]/* %changelog -* Tue Oct 18 2005 Brendan O'Dea 2.1.10-1 +* Wed Oct 19 2005 Brendan O'Dea 2.1.10-1 - 2.1.10 release, see /usr/share/doc/l2tpns-2.1.10/Changes diff --git a/radius.c b/radius.c index 55aa6cb..a2b2339 100644 --- a/radius.c +++ b/radius.c @@ -1,6 +1,6 @@ // 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 #include @@ -326,6 +326,30 @@ void radiussend(uint16_t r, uint8_t state) *(uint32_t *) (p + 2) = htonl(session[s].ip); 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) { *p = 30; // called -- 2.20.1