// L2TPNS Radius Stuff
-char const *cvs_id_radius = "$Id: radius.c,v 1.20.2.1 2005/02/14 05:56:38 bodea Exp $";
+char const *cvs_id_radius = "$Id: radius.c,v 1.20.2.3 2005/05/30 06:35:19 bodea Exp $";
#include <time.h>
#include <stdio.h>
if (radius[r].state != state)
radius[r].try = 0;
radius[r].state = state;
- radius[r].retry = backoff(radius[r].try++);
+ radius[r].retry = backoff(radius[r].try++) + 20; // 3s, 4s, 6s, 10s...
LOG(4, s, session[s].tunnel, "Send RADIUS id %d sock %d state %s try %d\n",
r >> RADIUS_SHIFT, r & RADIUS_MASK,
radius_state(radius[r].state), radius[r].try);
*(uint32_t *) (p + 2) = htonl(time(NULL) - session[s].opened);
p += p[1];
}
+
+ if (session[s].snoop_ip && session[s].snoop_port)
+ {
+ *p = 26; // vendor-specific
+ *(uint32_t *) (p + 2) = htonl(9); // Cisco
+ p[6] = 1; // Cisco-Avpair
+ p[7] = 2 + sprintf(p + 8, "intercept=%s:%d",
+ fmtaddr(session[s].snoop_ip, 0), session[s].snoop_port);
+
+ p[1] = p[7] + 6;
+ p += p[1];
+ }
}
}
if (s)
if (s)
t = session[s].tunnel;
- radius[r].retry = backoff(radius[r].try + 1);
switch (radius[r].state)
{
case RADIUSCHAP: // sending CHAP down PPP