From: Arran Cudbard-Bell Date: Wed, 17 Feb 2021 19:09:35 +0000 (+0000) Subject: Revert "disable a number of raw tests until we fix the underlying issue" X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=178c80554dc832e17bac9146be53da18852e5e3d;p=thirdparty%2Ffreeradius-server.git Revert "disable a number of raw tests until we fix the underlying issue" This reverts commit 1a0623b0cff8691551dcb701d22d2896c207e3a1. We must parse the namespace before allowing the rest of the virtual server to be parsed. --- diff --git a/src/lib/server/virtual_servers.c b/src/lib/server/virtual_servers.c index ebbeb0d462d..96bae318a35 100644 --- a/src/lib/server/virtual_servers.c +++ b/src/lib/server/virtual_servers.c @@ -97,6 +97,7 @@ static rbtree_t *server_section_name_tree = NULL; static int server_section_name_cmp(void const *one, void const *two); static int listen_on_read(TALLOC_CTX *ctx, void *out, UNUSED void *parent, CONF_ITEM *ci, CONF_PARSER const *rule); +static int server_on_read(TALLOC_CTX *ctx, void *out, UNUSED void *parent, CONF_ITEM *ci, UNUSED CONF_PARSER const *rule); static int listen_parse(TALLOC_CTX *ctx, void *out, UNUSED void *parent, CONF_ITEM *ci, CONF_PARSER const *rule); static int server_parse(TALLOC_CTX *ctx, void *out, UNUSED void *parent, CONF_ITEM *ci, UNUSED CONF_PARSER const *rule); @@ -121,14 +122,12 @@ const CONF_PARSER virtual_servers_on_read_config[] = { { FR_CONF_POINTER("server", FR_TYPE_SUBSECTION | FR_TYPE_MULTI | FR_TYPE_OK_MISSING | FR_TYPE_ON_READ, &virtual_servers), \ .subcs_size = sizeof(fr_virtual_server_t), .subcs_type = "fr_virtual_server_t", .subcs = (void const *) listen_on_read_config, .ident2 = CF_IDENT_ANY, - }, + .func = server_on_read }, CONF_PARSER_TERMINATOR }; static const CONF_PARSER server_config[] = { - { FR_CONF_OFFSET("namespace", FR_TYPE_STRING, fr_virtual_server_t, namespace), }, - { FR_CONF_OFFSET("listen", FR_TYPE_SUBSECTION | FR_TYPE_MULTI | FR_TYPE_OK_MISSING, fr_virtual_server_t, listener), \ .subcs_size = sizeof(fr_virtual_listen_t), .subcs_type = "fr_virtual_listen_t", @@ -137,6 +136,12 @@ static const CONF_PARSER server_config[] = { CONF_PARSER_TERMINATOR }; +static const CONF_PARSER namespace_config[] = { + { FR_CONF_OFFSET("namespace", FR_TYPE_STRING, fr_virtual_server_t, namespace), }, + + CONF_PARSER_TERMINATOR +}; + const CONF_PARSER virtual_servers_config[] = { /* * Not really ok if it's missing but we want to @@ -236,6 +241,23 @@ static int listen_on_read(UNUSED TALLOC_CTX *ctx, UNUSED void *out, UNUSED void } +/** Callback to set up listen_on_read + * + * @param[in] ctx to allocate data in. + * @param[out] out Where to our listen configuration. Is a #fr_virtual_server_t structure. + * @param[in] parent Base structure address. + * @param[in] ci #CONF_SECTION containing the listen section. + * @param[in] rule unused. + * @return + * - 0 on success. + * - -1 on failure. + */ +static int server_on_read(UNUSED TALLOC_CTX *ctx, UNUSED void *out, UNUSED void *parent, + CONF_ITEM *ci, UNUSED CONF_PARSER const *rule) +{ + return cf_section_rules_push(cf_item_to_section(ci), namespace_config); +} + /** dl_open a proto_* module * * @param[in] ctx to allocate data in. @@ -280,26 +302,23 @@ static int server_parse(UNUSED TALLOC_CTX *ctx, void *out, UNUSED void *parent, { fr_virtual_server_t *server = talloc_get_type_abort(out, fr_virtual_server_t); CONF_SECTION *server_cs = cf_item_to_section(ci); + CONF_PAIR *namespace; + + namespace = cf_pair_find(server_cs, "namespace"); + if (!namespace) { + cf_log_err(server_cs, "virtual server %s MUST contain a 'namespace' option", + cf_section_name2(server_cs)); + return -1; + } server->server_cs = server_cs; + server->namespace = cf_pair_value(namespace); /* - * Now parse everything in the virtual server. + * Now parse the listeners */ if (cf_section_parse(out, server, server_cs) < 0) return -1; - if (!server->namespace) { - cf_log_err(server_cs, "virtual server %s MUST contain a 'namespace' configuration", - cf_section_name2(server_cs)); - return -1; - } - - if (!*server->namespace) { - cf_log_err(server_cs, "virtual server %s MUST NOT have an empty 'namespace' configuration", - cf_section_name2(server_cs)); - return -1; - } - return 0; } diff --git a/src/tests/keywords/ipaddr.raw.ignore b/src/tests/keywords/ipaddr.raw similarity index 100% rename from src/tests/keywords/ipaddr.raw.ignore rename to src/tests/keywords/ipaddr.raw diff --git a/src/tests/keywords/unknown.ignore b/src/tests/keywords/unknown similarity index 100% rename from src/tests/keywords/unknown.ignore rename to src/tests/keywords/unknown diff --git a/src/tests/keywords/update-unknown.ignore b/src/tests/keywords/update-unknown similarity index 100% rename from src/tests/keywords/update-unknown.ignore rename to src/tests/keywords/update-unknown diff --git a/src/tests/keywords/vendor-specific.raw.ignore b/src/tests/keywords/vendor_specific.raw similarity index 100% rename from src/tests/keywords/vendor-specific.raw.ignore rename to src/tests/keywords/vendor_specific.raw