free(client->password);
free(client->server);
-#ifdef WITH_STATS
- free(client->auth);
-#ifdef WITH_ACCOUNTING
- free(client->acct);
-#endif
-#endif
-
#ifdef WITH_DYNAMIC_CLIENTS
free(client->client_server);
#endif
tree_num = rbtree_create(client_num_cmp, NULL, 0);
}
-
- /*
- * Catch clients added by rlm_sql.
- */
- if (!client->auth) {
- client->auth = rad_malloc(sizeof(*client->auth));
- memset(client->auth, 0, sizeof(*client->auth));
- }
-
-#ifdef WITH_ACCOUNTING
- if (!client->acct) {
- client->acct = rad_malloc(sizeof(*client->acct));
- memset(client->acct, 0, sizeof(*client->acct));
- }
-#endif
-
#ifdef WITH_DYNAMIC_CLIENTS
/*
* More catching of clients added by rlm_sql.
memset(c, 0, sizeof(*c));
c->cs = cs;
-#ifdef WITH_STATS
- c->auth = rad_malloc(sizeof(*c->auth));
- memset(c->auth, 0, sizeof(*c->auth));
-
-#ifdef WITH_ACCOUNTING
- c->acct = rad_malloc(sizeof(*c->acct));
- memset(c->acct, 0, sizeof(*c->acct));
-#endif
-#endif
-
memset(&cl_ip4addr, 0, sizeof(cl_ip4addr));
memset(&cl_ip6addr, 0, sizeof(cl_ip6addr));
c->prefix = -1;
/*
* Global statistics.
*/
- fake.auth = &radius_auth_stats;
+ fake.auth = radius_auth_stats;
#ifdef WITH_ACCOUNTING
- fake.auth = &radius_acct_stats;
+ fake.auth = radius_acct_stats;
#endif
#ifdef WITH_COA
- fake.coa = &radius_coa_stats;
- fake.dsc = &radius_dsc_stats;
+ fake.coa = radius_coa_stats;
+ fake.dsc = radius_dsc_stats;
#endif
client = &fake;
if (strcmp(argv[0], "auth") == 0) {
auth = TRUE;
- stats = client->auth;
+ stats = &client->auth;
} else if (strcmp(argv[0], "acct") == 0) {
#ifdef WITH_ACCOUNTING
auth = FALSE;
- stats = client->acct;
+ stats = &client->acct;
#else
cprintf(listener, "ERROR: This server was built without accounting support.\n");
return 0;
} else if (strcmp(argv[0], "coa") == 0) {
#ifdef WITH_COA
auth = FALSE;
- stats = client->coa;
+ stats = &client->coa;
#else
cprintf(listener, "ERROR: This server was built without CoA support.\n");
return 0;
} else if (strcmp(argv[0], "disconnect") == 0) {
#ifdef WITH_COA
auth = FALSE;
- stats = client->dsc;
+ stats = &client->dsc;
#else
cprintf(listener, "ERROR: This server was built without CoA support.\n");
return 0;
{
if (request->master_state == REQUEST_COUNTED) return;
+ if (!request->listener) return;
+ if (!request->client) return;
+
if ((request->listener->type != RAD_LISTEN_NONE) &&
#ifdef WITH_ACCOUNTING
(request->listener->type != RAD_LISTEN_ACCT) &&
(request->listener->type != RAD_LISTEN_AUTH)) return;
#undef INC_AUTH
-#define INC_AUTH(_x) radius_auth_stats._x++;request->listener->stats._x++;if (request->client && request->client->auth) request->client->auth->_x++;
+#define INC_AUTH(_x) radius_auth_stats._x++;request->listener->stats._x++;request->client->auth._x++;
#undef INC_ACCT
#ifdef WITH_ACCOUNTING
-#define INC_ACCT(_x) radius_acct_stats._x++;request->listener->stats._x++;if (request->client && request->client->acct) request->client->acct->_x++
+#define INC_ACCT(_x) radius_acct_stats._x++;request->listener->stats._x++;request->client->acct._x++
#else
#define INC_ACCT(_x)
#endif
#undef INC_COA
#ifdef WITH_COA
-#define INC_COA(_x) radius_coa_stats._x++;request->listener->stats._x++;if (request->client && request->client->coa) request->client->coa->_x++
+#define INC_COA(_x) radius_coa_stats._x++;request->listener->stats._x++;request->client->coa._x++
#else
#define INC_COA(_x)
#endif
#undef INC_DSC
#ifdef WITH_DSC
-#define INC_DSC(_x) radius_dsc_stats._x++;request->listener->stats._x++;if (request->client && request->client->dsc) request->client->dsc->_x++
+#define INC_DSC(_x) radius_dsc_stats._x++;request->listener->stats._x++;request->client->dsc._x++
#else
#define INC_DSC(_x)
#endif
stats_time(&radius_auth_stats,
&request->packet->timestamp,
&request->reply->timestamp);
- if (request->client && request->client->auth) {
- stats_time(request->client->auth,
- &request->packet->timestamp,
- &request->reply->timestamp);
- }
- if (request->listener) {
- stats_time(&request->listener->stats,
- &request->packet->timestamp,
- &request->reply->timestamp);
- }
+ stats_time(&request->client->auth,
+ &request->packet->timestamp,
+ &request->reply->timestamp);
+ stats_time(&request->listener->stats,
+ &request->packet->timestamp,
+ &request->reply->timestamp);
break;
case PW_AUTHENTICATION_REJECT:
stats_time(&radius_acct_stats,
&request->packet->timestamp,
&request->reply->timestamp);
- if (request->client && request->client->acct) {
- stats_time(request->client->acct,
- &request->packet->timestamp,
- &request->reply->timestamp);
- }
+ stats_time(&request->client->acct,
+ &request->packet->timestamp,
+ &request->reply->timestamp);
break;
#endif
INC_COA(total_access_accepts);
coa_stats:
INC_COA(total_responses);
- if (request->client && request->client->coa) {
- stats_time(request->client->coa,
- &request->packet->timestamp,
- &request->reply->timestamp);
- }
+ stats_time(&request->client->coa,
+ &request->packet->timestamp,
+ &request->reply->timestamp);
break;
case PW_COA_NAK:
INC_DSC(total_access_accepts);
dsc_stats:
INC_DSC(total_responses);
- if (request->client && request->client->dsc) {
- stats_time(request->client->dsc,
- &request->packet->timestamp,
- &request->reply->timestamp);
- }
+ stats_time(&request->client->dsc,
+ &request->packet->timestamp,
+ &request->reply->timestamp);
break;
case PW_DISCONNECT_NAK:
paircopyvp(server_port));
}
- if (client->auth &&
- ((flag->vp_integer & 0x01) != 0)) {
+ if ((flag->vp_integer & 0x01) != 0) {
request_stats_addvp(request, client_authvp,
- client->auth);
+ &client->auth);
}
#ifdef WITH_ACCOUNTING
- if (client->acct &&
- ((flag->vp_integer & 0x01) != 0)) {
+ if ((flag->vp_integer & 0x01) != 0) {
request_stats_addvp(request, client_acctvp,
- client->acct);
+ &client->acct);
}
#endif
} /* else client wasn't found, don't echo it back */