]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Look inside of virtuals for homes
authorAlan T. DeKok <aland@freeradius.org>
Wed, 15 Jun 2011 08:34:21 +0000 (10:34 +0200)
committerAlan T. DeKok <aland@freeradius.org>
Wed, 15 Jun 2011 08:34:21 +0000 (10:34 +0200)
This allows home servers to be tied to virtuals

src/main/realms.c

index c82131dbd8e8f92c53bb706a353656da49dec678..86ba068c94fdfbfb468d41a8ab8e34d7e5cbbcd7 100644 (file)
@@ -1809,6 +1809,9 @@ static int pool_peek_type(CONF_SECTION *config, CONF_SECTION *cs)
 int realms_init(CONF_SECTION *config)
 {
        CONF_SECTION *cs;
+#ifdef WITH_PROXY
+       CONF_SECTION *server_cs;
+#endif
        realm_config_t *rc, *old_rc;
 
        if (realms_byname) return 1;
@@ -1872,6 +1875,24 @@ int realms_init(CONF_SECTION *config)
                        return 0;
                }
        }
+
+       /*
+        *      Loop over virtual servers to find homes which are
+        *      defined in them.
+        */
+       for (server_cs = cf_subsection_find_next(config, NULL, "server");
+            server_cs != NULL;
+            server_cs = cf_subsection_find_next(config, server_cs, "server")) {
+               for (cs = cf_subsection_find_next(server_cs, NULL, "home_server");
+                    cs != NULL;
+                    cs = cf_subsection_find_next(server_cs, cs, "home_server")) {
+                       if (!home_server_add(rc, cs)) {
+                               free(rc);
+                               realms_free();
+                               return 0;
+                       }
+               }
+       }
 #endif
 
        for (cs = cf_subsection_find_next(config, NULL, "realm");