* configuration files.
*/
for (i = 0; i < pool->num_home_servers; i++) {
- if (pool->servers[i].home->cs) {
+ if (pool->servers[i]->cs) {
rad_assert(0 == 1);
return;
}
static int server_cmp_by_id(void const *one, void const *two)
{
- home_server_id_t const *a = (home_server_id_t const *) one;
- home_server_id_t const *b = (home_server_id_t const *) two;
+ home_server_t const *a = *(home_server_t const * const *) one;
+ home_server_t const *b = *(home_server_t const * const *) two;
if (a->id < b->id) return -1;
if (a->id > b->id) return +1;
- if (a->home < b->home) return -1;
+ if (a < b) return -1;
return +1;
}
}
if (do_print) cf_log_info(cs, "\thome_server = %s", home->name);
- pool->servers[num_home_servers++].home = home;
-
+ pool->servers[num_home_servers++] = home;
} /* loop over home_server's */
if (pool->fallback) {
for (i = 0; i < pool->num_home_servers; i++) {
uint32_t hash;
- home = pool->servers[i].home;
+ home = pool->servers[i];
switch (home->ipaddr.af) {
case AF_INET:
}
hash = fr_hash_update(&home->proto, sizeof(home->proto), hash);
- pool->servers[i].id = fr_hash_update(&home->port, sizeof(home->port), hash);
+ home->id = fr_hash_update(&home->port, sizeof(home->port), hash);
}
qsort(&pool->servers[0], pool->num_home_servers, sizeof(pool->servers[0]),
insert_point = -1;
if (pool) {
for (i = pool->num_home_servers - 1; i >= 0; i--) {
- if (pool->servers[i].home) break;
+ if (pool->servers[i]) break;
- if (!pool->servers[i].home) {
+ if (!pool->servers[i]) {
insert_point = i;
}
}
*/
if (insert_point >= 0) {
rad_assert(pool != NULL);
- pool->servers[insert_point].home = home;
+ pool->servers[insert_point] = home;
return 1;
}
pool->cs = cs;
- pool->servers[0].home = home;
+ pool->servers[0] = home;
if (!rbtree_insert(home_pools_byname, pool)) {
rad_assert("Internal sanity check failed" == NULL);
int i;
for (i = 0; i < pool->num_home_servers; i++) {
- if (pool->servers[i].id > hash) return pool->servers[i].home;
+ if (pool->servers[i]->id > hash) return pool->servers[i];
}
- return pool->servers[0].home;
+ return pool->servers[0];
}
home_server_t *home_server_ldb(char const *realmname,
* Otherwise, use it.
*/
for (count = 0; count < pool->num_home_servers; count++) {
- home_server_t *home = pool->servers[(start + count) % pool->num_home_servers].home;
+ home_server_t *home = pool->servers[(start + count) % pool->num_home_servers];
if (!home) continue;
if (!realm_config->fallback &&
realm_config->wake_all_if_all_dead) {
for (count = 0; count < pool->num_home_servers; count++) {
- home_server_t *home = pool->servers[count].home;
+ home_server_t *home = pool->servers[count];
if (!home) continue;
* send it there again.
*/
for (i = 0; i < realm->acct_pool->num_home_servers; i++) {
- if (realm->acct_pool->servers[i].home->ipaddr.af == AF_UNSPEC) continue;
+ if (realm->acct_pool->servers[i]->ipaddr.af == AF_UNSPEC) continue;
- if (fr_ipaddr_cmp(&realm->acct_pool->servers[i].home->ipaddr, &my_ipaddr) == 0) {
+ if (fr_ipaddr_cmp(&realm->acct_pool->servers[i]->ipaddr, &my_ipaddr) == 0) {
RDEBUG2("Suppressing proxy due to FreeRADIUS-Proxied-To");
return RLM_MODULE_OK;
}
* send it there again.
*/
for (i = 0; i < realm->acct_pool->num_home_servers; i++) {
- if (realm->acct_pool->servers[i].home->ipaddr.af == AF_UNSPEC) continue;
+ if (realm->acct_pool->servers[i]->ipaddr.af == AF_UNSPEC) continue;
- if ((fr_ipaddr_cmp(&realm->acct_pool->servers[i].home->ipaddr,
+ if ((fr_ipaddr_cmp(&realm->acct_pool->servers[i]->ipaddr,
&request->packet->src_ipaddr) == 0) &&
- (realm->acct_pool->servers[i].home->port == request->packet->src_port)) {
+ (realm->acct_pool->servers[i]->port == request->packet->src_port)) {
RDEBUG2("Suppressing proxy because packet was already sent to a server in that realm");
return RLM_MODULE_OK;
}