REALM *realm_find2(char const *name); /* ... with name taken from realm_find */
int realms_home_server_add(home_server *home, CONF_SECTION *cs, int dual);
int realms_pool_add(home_pool_t *pool, CONF_SECTION *cs);
+ int realms_realm_add( REALM *r, CONF_SECTION *cs);
void home_server_update_request(home_server *home, REQUEST *request);
#endif
+int realms_realm_add (REALM *r, CONF_SECTION *cs)
+{
+ #ifdef HAVE_REGEX_H
+ /*
+ * It's a regex. Add it to a separate list.
+ */
+ if (r->name[0] == '~') {
+ realm_regex_t *rr, **last;
+
+ rr = rad_malloc(sizeof(*rr));
+
+ last = &realms_regex;
+ while (*last) last = &((*last)->next); /* O(N^2)... sue me. */
+
+ rr->realm = r;
+ rr->next = NULL;
+
+ *last = rr;
+
+ return 1;
+ }
+#endif
+
+ if (!rbtree_insert(realms_byname, r)) {
+ rad_assert("Internal sanity check failed");
+ return 0;
+ }
+
+ return 1;
+}
+
+
static int realm_add(realm_config_t *rc, CONF_SECTION *cs)
{
char const *name2;
goto error;
}
-#ifdef HAVE_REGEX_H
- /*
- * It's a regex. Add it to a separate list.
- */
- if (name2[0] == '~') {
- realm_regex_t *rr, **last;
-
- rr = rad_malloc(sizeof(*rr));
-
- last = &realms_regex;
- while (*last) last = &((*last)->next); /* O(N^2)... sue me. */
-
- r->name = name2;
- rr->realm = r;
- rr->next = NULL;
-
- *last = rr;
+ if ( !realms_realm_add(r, cs))
+ goto error;
cf_log_info(cs, " }");
return 1;
- }
-#endif
-
- if (!rbtree_insert(realms_byname, r)) {
- rad_assert("Internal sanity check failed");
- goto error;
- }
-
- cf_log_info(cs, " }");
-
- return 1;
-
+
error:
cf_log_info(cs, " } # realm %s", name2);
free(r);