// Copyright (c) 2002 FireBrick (Andrews & Arnold Ltd / Watchfront Ltd) - GPL licenced
// vim: sw=8 ts=8
-char const *cvs_id_l2tpns = "$Id: l2tpns.c,v 1.102 2005/05/12 04:08:45 bodea Exp $";
+char const *cvs_id_l2tpns = "$Id: l2tpns.c,v 1.104 2005/05/16 04:51:16 bodea Exp $";
#include <arpa/inet.h>
#include <assert.h>
if (!q) return;
*q = ConfigReq;
- q[1] = r << RADIUS_SHIFT; // ID, dont care, we only send one type of request
+ q[1] = r >> RADIUS_SHIFT; // ID, dont care, we only send one type of request
*(uint16_t *) (q + 2) = htons(10);
q[4] = 3;
q[5] = 6;
if (!q) return;
*q = ConfigReq;
- q[1] = r << RADIUS_SHIFT; // ID, don't care, we
+ q[1] = r >> RADIUS_SHIFT; // ID, don't care, we
// only send one type
// of request
*(uint16_t *) (q + 2) = htons(14);
// TBA
break;
case 10: // ICRQ
- controlt *c;
-
if (sessionfree)
{
uint16_t r;
// make a RADIUS session
if ((r = radiusnew(s)))
{
- c = controlnew(11); // sending ICRP
+ controlt *c = controlnew(11); // sending ICRP
session[s].opened = time_now;
session[s].tunnel = t;
session[s].far = asession;
LOG(1, 0, t, "No free sessions\n");
}
- c = controlnew(14); // CDN
- control16(c, 1, 4, 1); // temporary lack of resources
- controladd(c, session[s].tunnel, asession); // send the message
+ {
+ controlt *c = controlnew(14); // CDN
+ control16(c, 1, 4, 1); // temporary lack of resources
+ controladd(c, session[s].tunnel, asession); // send the message
+ }
return;
case 11: // ICRP
// TBA
LOG(3, s, t, "Magic %X Flags %X\n", amagic, aflags);
controlnull(t); // ack
// proxy authentication type is not supported
- if (authtype && !(config->radius_authtypes & authtype))
- sendlcp(t, s, config->radius_authprefer);
+ if (!(config->radius_authtypes & authtype))
+ authtype = config->radius_authprefer;
+
+ // start LCP
+ sendlcp(t, s, authtype);
break;
case 14: // CDN
controlnull(t); // ack
if (!config->numradiusservers)
LOG(0, 0, 0, "No RADIUS servers defined!\n");
- config->num_radfds = 2 << RADIUS_SHIFT;
+ config->num_radfds = 1 << RADIUS_SHIFT;
// parse radius_authtypes_s
config->radius_authtypes = config->radius_authprefer = 0;