vp = pairfind(request->config_items, PW_ACCT_TYPE);
if (vp) {
DEBUG2(" Found Acct-Type %s", vp->vp_strvalue);
- acct_type = vp->lvalue;
+ acct_type = vp->vp_integer;
}
result = module_accounting(acct_type, request);
switch (result) {
if ((cli = pairfind(request->packet->vps, PW_CALLING_STATION_ID)) == NULL)
do_cli = 0;
if ((pair = pairfind(request->packet->vps, PW_NAS_PORT)) != NULL)
- port = pair->lvalue;
+ port = pair->vp_integer;
snprintf(buf, buflen, "from client %.128s port %u%s%.128s",
client_name_old(&request->packet->src_ipaddr), port,
*/
cur_config_item = request->config_items;
while(((auth_type_pair = pairfind(cur_config_item, PW_AUTH_TYPE))) != NULL) {
- auth_type = auth_type_pair->lvalue;
+ auth_type = auth_type_pair->vp_integer;
auth_type_count++;
DEBUG2(" rad_check_password: Found Auth-Type %s",
vp = pairfind(request->config_items, PW_POST_AUTH_TYPE);
if (vp) {
DEBUG2(" Found Post-Auth-Type %s", vp->vp_strvalue);
- postauth_type = vp->lvalue;
+ postauth_type = vp->vp_integer;
}
result = module_post_auth(postauth_type, request);
switch (result) {
radlog(L_ERR|L_CONS, "Not enough memory");
exit(1);
}
- tmp->lvalue = PW_AUTHTYPE_ACCEPT;
+ tmp->vp_integer = PW_AUTHTYPE_ACCEPT;
pairadd(&request->config_items, tmp);
break;
/*
tmp = pairfind(request->config_items, PW_AUTZ_TYPE);
if (tmp) {
DEBUG2(" Found Autz-Type %s", tmp->vp_strvalue);
- autz_type = tmp->lvalue;
+ autz_type = tmp->vp_integer;
autz_retry = 1;
goto autz_redo;
}
tmp = pairfind(request->config_items, PW_SESSION_TYPE);
if (tmp) {
DEBUG2(" Found Session-Type %s", tmp->vp_strvalue);
- session_type = tmp->lvalue;
+ session_type = tmp->vp_integer;
}
/*
* for the Simultaneous-Use parameter.
*/
if (namepair &&
- (r = module_checksimul(session_type, request, check_item->lvalue)) != 0) {
+ (r = module_checksimul(session_type, request, check_item->vp_integer)) != 0) {
char mpp_ok = 0;
if (r == 2){
VALUE_PAIR *port_limit;
if ((port_limit = pairfind(request->reply->vps, PW_PORT_LIMIT)) != NULL &&
- port_limit->lvalue > check_item->lvalue){
+ port_limit->vp_integer > check_item->vp_integer){
DEBUG2("main auth: MPP is OK");
mpp_ok = 1;
}
}
if (!mpp_ok){
- if (check_item->lvalue > 1) {
+ if (check_item->vp_integer > 1) {
snprintf(umsg, sizeof(umsg),
"\r\nYou are already logged in %d times - access denied\r\n\n",
- (int)check_item->lvalue);
+ (int)check_item->vp_integer);
user_msg = umsg;
} else {
user_msg = "\r\nYou are already logged in - access denied\r\n\n";
request->reply->vps = tmp;
snprintf(logstr, sizeof(logstr), "Multiple logins (max %d) %s",
- check_item->lvalue,
+ check_item->vp_integer,
r == 2 ? "[MPP attempt]" : "");
rad_authlog(logstr, request, 1);
*/
if ((vpPortId = pairfind(request->packet->vps,
PW_NAS_PORT)) != NULL) {
- unsigned long tvalue = ntohl(tmp->lvalue);
- tmp->lvalue = htonl(tvalue + vpPortId->lvalue);
+ unsigned long tvalue = ntohl(tmp->vp_integer);
+ tmp->vp_integer = htonl(tvalue + vpPortId->vp_integer);
tmp->flags.addport = 0;
- ip_ntoa(tmp->vp_strvalue, tmp->lvalue);
+ ip_ntoa(tmp->vp_strvalue, tmp->vp_integer);
} else {
DEBUG2("WARNING: No NAS-Port attribute in request. CANNOT return a Framed-IP-Address + NAS-Port.\n");
pairdelete(&request->reply->vps, PW_FRAMED_IP_ADDRESS);
{
if (!mainconfig.do_snmp) return;
- if (!client) return;
-
/*
* Update the SNMP statistics.
*
case PW_AUTHENTICATION_ACK:
rad_snmp.auth.total_responses++;
rad_snmp.auth.total_access_accepts++;
- client->auth->accepts++;
+ if (client) client->auth->accepts++;
break;
case PW_AUTHENTICATION_REJECT:
rad_snmp.auth.total_responses++;
rad_snmp.auth.total_access_rejects++;
- client->auth->rejects++;
+ if (client) client->auth->rejects++;
break;
case PW_ACCESS_CHALLENGE:
rad_snmp.auth.total_responses++;
rad_snmp.auth.total_access_challenges++;
- client->auth->challenges++;
+ if (client) client->auth->challenges++;
break;
case PW_ACCOUNTING_RESPONSE:
rad_snmp.acct.total_responses++;
- client->auth->responses++;
+ if (client) client->auth->responses++;
break;
/*
case 0:
if (request->packet->code == PW_AUTHENTICATION_REQUEST) {
rad_snmp.auth.total_bad_authenticators++;
- client->auth->bad_authenticators++;
+ if (client) client->auth->bad_authenticators++;
}
break;
vp = pairfind(request->config_items, PW_POST_PROXY_TYPE);
if (vp) {
DEBUG2(" Found Post-Proxy-Type %s", vp->vp_strvalue);
- post_proxy_type = vp->lvalue;
+ post_proxy_type = vp->vp_integer;
}
rcode = module_post_proxy(post_proxy_type, request);
vp = pairfind(request->config_items, PW_PRE_PROXY_TYPE);
if (vp) {
DEBUG2(" Found Pre-Proxy-Type %s", vp->vp_strvalue);
- pre_proxy_type = vp->lvalue;
+ pre_proxy_type = vp->vp_integer;
}
rcode = module_pre_proxy(pre_proxy_type, request);
switch (rcode) {
if ((request->reply->code == 0) &&
((vp = pairfind(request->config_items, PW_AUTH_TYPE)) != NULL) &&
- (vp->lvalue == PW_AUTHTYPE_REJECT)) {
+ (vp->vp_integer == PW_AUTHTYPE_REJECT)) {
request->reply->code = PW_AUTHENTICATION_REJECT;
}
rad_assert(vp != NULL);
}
if (data->timestamp != 0) {
- vp->lvalue += time(NULL) - data->timestamp;
+ vp->vp_integer += time(NULL) - data->timestamp;
}
/*
vp = pairfind(packet->vps, PW_PACKET_SRC_IP_ADDRESS);
if (vp) {
packet->src_ipaddr.af = AF_INET;
- packet->src_ipaddr.ipaddr.ip4addr.s_addr = vp->lvalue;
+ packet->src_ipaddr.ipaddr.ip4addr.s_addr = vp->vp_ipaddr;
} else {
vp = pairfind(packet->vps, PW_PACKET_SRC_IPV6_ADDRESS);
if (vp) {
vp = pairfind(packet->vps, PW_PACKET_DST_IP_ADDRESS);
if (vp) {
packet->dst_ipaddr.af = AF_INET;
- packet->dst_ipaddr.ipaddr.ip4addr.s_addr = vp->lvalue;
+ packet->dst_ipaddr.ipaddr.ip4addr.s_addr = vp->vp_ipaddr;
} else {
vp = pairfind(packet->vps, PW_PACKET_DST_IPV6_ADDRESS);
if (vp) {
* the attributes read from the file.
*/
case PW_PACKET_TYPE:
- radclient->request->code = vp->lvalue;
+ radclient->request->code = vp->vp_integer;
break;
case PW_PACKET_DST_PORT:
- radclient->request->dst_port = (vp->lvalue & 0xffff);
+ radclient->request->dst_port = (vp->vp_integer & 0xffff);
break;
case PW_PACKET_DST_IP_ADDRESS:
radclient->request->dst_ipaddr.af = AF_INET;
- radclient->request->dst_ipaddr.ipaddr.ip4addr.s_addr = vp->lvalue;
+ radclient->request->dst_ipaddr.ipaddr.ip4addr.s_addr = vp->vp_ipaddr;
break;
case PW_PACKET_DST_IPV6_ADDRESS:
break;
case PW_PACKET_SRC_PORT:
- radclient->request->src_port = (vp->lvalue & 0xffff);
+ radclient->request->src_port = (vp->vp_integer & 0xffff);
break;
case PW_PACKET_SRC_IP_ADDRESS:
radclient->request->src_ipaddr.af = AF_INET;
- radclient->request->src_ipaddr.ipaddr.ip4addr.s_addr = vp->lvalue;
+ radclient->request->src_ipaddr.ipaddr.ip4addr.s_addr = vp->vp_ipaddr;
break;
case PW_PACKET_SRC_IPV6_ADDRESS:
#include <freeradius-devel/radiusd.h>
#include <freeradius-devel/rad_assert.h>
-#include <signal.h>
+#ifdef HAVE_SYS_WAIT_H
#include <sys/wait.h>
+#endif
/*
* End a session by faking a Stop packet to all accounting modules.
vp->e = v; \
pairadd(&(stopreq->packet->vps), vp); \
} while(0)
-#define INTPAIR(n,v) PAIR(n,v,PW_TYPE_INTEGER,lvalue)
-#define IPPAIR(n,v) PAIR(n,v,PW_TYPE_IPADDR,lvalue)
+#define INTPAIR(n,v) PAIR(n,v,PW_TYPE_INTEGER,vp_integer)
+#define IPPAIR(n,v) PAIR(n,v,PW_TYPE_IPADDR,vp_ipaddr)
#define STRINGPAIR(n,v) do { \
if(!(vp = paircreate(n, PW_TYPE_STRING))) { \
radlog(L_ERR|L_CONS, "no memory"); \
(char *)check->vp_strvalue);
}
break;
+ case PW_TYPE_BYTE:
+ case PW_TYPE_SHORT:
case PW_TYPE_INTEGER:
+ ret = vp->vp_integer - check->vp_integer;
+ break;
case PW_TYPE_DATE:
- ret = vp->lvalue - check->lvalue;
+ ret = vp->vp_date - check->vp_date;
break;
case PW_TYPE_IPADDR:
ret = ntohl(vp->vp_ipaddr) - ntohl(check->vp_ipaddr);
return 0;
}
localvp.attribute = da->attr;
- localvp.lvalue = packet->src_ipaddr.ipaddr.ip4addr.s_addr;
+ localvp.vp_ipaddr = packet->src_ipaddr.ipaddr.ip4addr.s_addr;
break;
case PW_PACKET_DST_IP_ADDRESS:
return 0;
}
localvp.attribute = da->attr;
- localvp.lvalue = packet->dst_ipaddr.ipaddr.ip4addr.s_addr;
+ localvp.vp_ipaddr = packet->dst_ipaddr.ipaddr.ip4addr.s_addr;
break;
case PW_PACKET_SRC_PORT:
localvp.attribute = da->attr;
- localvp.lvalue = packet->src_port;
+ localvp.vp_integer = packet->src_port;
break;
case PW_PACKET_DST_PORT:
localvp.attribute = da->attr;
- localvp.lvalue = packet->dst_port;
+ localvp.vp_integer = packet->dst_port;
break;
case PW_PACKET_AUTHENTICATION_VECTOR: