Exposed realm_home_server_add()
authorAlan T. DeKok <aland@freeradius.org>
Wed, 25 Jun 2014 16:07:07 +0000 (12:07 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Wed, 25 Jun 2014 16:07:07 +0000 (12:07 -0400)
For future work

src/include/realms.h
src/main/realms.c

index 754b398..6bee95b 100644 (file)
@@ -159,6 +159,9 @@ int realms_init(CONF_SECTION *config);
 void realms_free(void);
 REALM *realm_find(char const *name); /* name is from a packet */
 REALM *realm_find2(char const *name); /* ... with name taken from realm_find */
+int realm_home_server_add(home_server_t *home, CONF_SECTION *cs, int dual);
+int realm_pool_add(home_pool_t *pool, CONF_SECTION *cs);
+int realm_realm_add( REALM *r, CONF_SECTION *cs);
 
 void home_server_update_request(home_server_t *home, REQUEST *request);
 home_server_t *home_server_ldb(char const *realmname, home_pool_t *pool, REQUEST *request);
index c10963e..4f13f88 100644 (file)
@@ -606,6 +606,17 @@ static int home_server_add(realm_config_t *rc, CONF_SECTION *cs)
                goto error;
        }
 
+       hs_srcipaddr = NULL;
+
+       return realm_home_server_add(home, cs, dual);
+}
+
+
+int realm_home_server_add(home_server_t *home, CONF_SECTION *cs, int dual)
+{
+       const char *name2 = home->name;
+       CONF_SECTION *parent = NULL;
+
        /*
         *      Make sure that this is set.
         */
@@ -613,8 +624,6 @@ static int home_server_add(realm_config_t *rc, CONF_SECTION *cs)
                home->src_ipaddr.af = home->ipaddr.af;
        }
 
-       hs_srcipaddr = NULL;
-
        if (rbtree_finddata(home_servers_byname, home) != NULL) {
                cf_log_err_cs(cs,
                           "Duplicate home server name %s.", name2);
@@ -721,13 +730,13 @@ static int home_server_add(realm_config_t *rc, CONF_SECTION *cs)
        if ((home->limit.lifetime > 0) && (home->limit.idle_timeout > home->limit.lifetime))
                home->limit.idle_timeout = 0;
 
-       tls = cf_item_parent(cf_sectiontoitem(cs));
-       if (strcmp(cf_section_name1(tls), "server") == 0) {
-               home->parent_server = cf_section_name2(tls);
+       parent = cf_item_parent(cf_sectiontoitem(cs));
+       if (strcmp(cf_section_name1(parent), "server") == 0) {
+               home->parent_server = cf_section_name2(parent);
        }
 
        if (dual) {
-               home_server_t *home2 = talloc(rc, home_server_t);
+               home_server_t *home2 = talloc(home, home_server_t);
 
                memcpy(home2, home, sizeof(*home2));
 
@@ -752,6 +761,7 @@ static int home_server_add(realm_config_t *rc, CONF_SECTION *cs)
                                   "Internal error %d adding home server %s.",
                                   __LINE__, name2);
                        free(home2);
+               error:
                        return 0;
                }