Using union instead of "void *".

This commit is contained in:
Igor Sysoev
2020-10-13 12:56:56 +03:00
parent f541cbcce4
commit 90b2c9f7d6

View File

@@ -39,27 +39,35 @@ typedef enum {
typedef nxt_int_t (*nxt_conf_vldt_handler_t)(nxt_conf_validation_t *vldt, typedef nxt_int_t (*nxt_conf_vldt_handler_t)(nxt_conf_validation_t *vldt,
nxt_conf_value_t *value, nxt_conf_value_t *value,
void *data); void *data);
typedef struct {
nxt_str_t name;
nxt_conf_vldt_type_t type:32;
nxt_conf_vldt_flags_t flags:32;
nxt_conf_vldt_handler_t validator;
void *data;
} nxt_conf_vldt_object_t;
#define NXT_CONF_VLDT_NEXT(f) { .data = f }
#define NXT_CONF_VLDT_END { .name = nxt_null_string }
typedef nxt_int_t (*nxt_conf_vldt_member_t)(nxt_conf_validation_t *vldt, typedef nxt_int_t (*nxt_conf_vldt_member_t)(nxt_conf_validation_t *vldt,
nxt_str_t *name, nxt_str_t *name,
nxt_conf_value_t *value); nxt_conf_value_t *value);
typedef nxt_int_t (*nxt_conf_vldt_element_t)(nxt_conf_validation_t *vldt, typedef nxt_int_t (*nxt_conf_vldt_element_t)(nxt_conf_validation_t *vldt,
nxt_conf_value_t *value); nxt_conf_value_t *value);
typedef struct nxt_conf_vldt_object_s nxt_conf_vldt_object_t;
struct nxt_conf_vldt_object_s {
nxt_str_t name;
nxt_conf_vldt_type_t type:32;
nxt_conf_vldt_flags_t flags:32;
nxt_conf_vldt_handler_t validator;
union {
nxt_conf_vldt_object_t *members;
nxt_conf_vldt_object_t *next;
nxt_conf_vldt_member_t object;
nxt_conf_vldt_element_t array;
const char *string;
} u;
};
#define NXT_CONF_VLDT_NEXT(next) { .u.members = next }
#define NXT_CONF_VLDT_END { .name = nxt_null_string }
static nxt_int_t nxt_conf_vldt_type(nxt_conf_validation_t *vldt, static nxt_int_t nxt_conf_vldt_type(nxt_conf_validation_t *vldt,
nxt_str_t *name, nxt_conf_value_t *value, nxt_conf_vldt_type_t type); nxt_str_t *name, nxt_conf_value_t *value, nxt_conf_vldt_type_t type);
static nxt_int_t nxt_conf_vldt_error(nxt_conf_validation_t *vldt, static nxt_int_t nxt_conf_vldt_error(nxt_conf_validation_t *vldt,
@@ -195,27 +203,27 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_root_members[] = {
{ {
.name = nxt_string("settings"), .name = nxt_string("settings"),
.type = NXT_CONF_VLDT_OBJECT, .type = NXT_CONF_VLDT_OBJECT,
.validator = &nxt_conf_vldt_object, .validator = nxt_conf_vldt_object,
.data = (void *) &nxt_conf_vldt_setting_members, .u.members = nxt_conf_vldt_setting_members,
}, { }, {
.name = nxt_string("listeners"), .name = nxt_string("listeners"),
.type = NXT_CONF_VLDT_OBJECT, .type = NXT_CONF_VLDT_OBJECT,
.validator = &nxt_conf_vldt_object_iterator, .validator = nxt_conf_vldt_object_iterator,
.data = (void *) &nxt_conf_vldt_listener, .u.object = nxt_conf_vldt_listener,
}, { }, {
.name = nxt_string("routes"), .name = nxt_string("routes"),
.type = NXT_CONF_VLDT_ARRAY | NXT_CONF_VLDT_OBJECT, .type = NXT_CONF_VLDT_ARRAY | NXT_CONF_VLDT_OBJECT,
.validator = &nxt_conf_vldt_routes, .validator = nxt_conf_vldt_routes,
}, { }, {
.name = nxt_string("applications"), .name = nxt_string("applications"),
.type = NXT_CONF_VLDT_OBJECT, .type = NXT_CONF_VLDT_OBJECT,
.validator = &nxt_conf_vldt_object_iterator, .validator = nxt_conf_vldt_object_iterator,
.data = (void *) &nxt_conf_vldt_app, .u.object = nxt_conf_vldt_app,
}, { }, {
.name = nxt_string("upstreams"), .name = nxt_string("upstreams"),
.type = NXT_CONF_VLDT_OBJECT, .type = NXT_CONF_VLDT_OBJECT,
.validator = &nxt_conf_vldt_object_iterator, .validator = nxt_conf_vldt_object_iterator,
.data = (void *) &nxt_conf_vldt_upstream, .u.object = nxt_conf_vldt_upstream,
}, { }, {
.name = nxt_string("access_log"), .name = nxt_string("access_log"),
.type = NXT_CONF_VLDT_STRING, .type = NXT_CONF_VLDT_STRING,
@@ -229,8 +237,8 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_setting_members[] = {
{ {
.name = nxt_string("http"), .name = nxt_string("http"),
.type = NXT_CONF_VLDT_OBJECT, .type = NXT_CONF_VLDT_OBJECT,
.validator = &nxt_conf_vldt_object, .validator = nxt_conf_vldt_object,
.data = (void *) &nxt_conf_vldt_http_members, .u.members = nxt_conf_vldt_http_members,
}, },
NXT_CONF_VLDT_END NXT_CONF_VLDT_END
@@ -262,13 +270,13 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_http_members[] = {
}, { }, {
.name = nxt_string("websocket"), .name = nxt_string("websocket"),
.type = NXT_CONF_VLDT_OBJECT, .type = NXT_CONF_VLDT_OBJECT,
.validator = &nxt_conf_vldt_object, .validator = nxt_conf_vldt_object,
.data = (void *) &nxt_conf_vldt_websocket_members, .u.members = nxt_conf_vldt_websocket_members,
}, { }, {
.name = nxt_string("static"), .name = nxt_string("static"),
.type = NXT_CONF_VLDT_OBJECT, .type = NXT_CONF_VLDT_OBJECT,
.validator = &nxt_conf_vldt_object, .validator = nxt_conf_vldt_object,
.data = (void *) &nxt_conf_vldt_static_members, .u.members = nxt_conf_vldt_static_members,
}, },
NXT_CONF_VLDT_END NXT_CONF_VLDT_END
@@ -296,7 +304,7 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_static_members[] = {
{ {
.name = nxt_string("mime_types"), .name = nxt_string("mime_types"),
.type = NXT_CONF_VLDT_OBJECT, .type = NXT_CONF_VLDT_OBJECT,
.validator = &nxt_conf_vldt_mtypes, .validator = nxt_conf_vldt_mtypes,
}, },
NXT_CONF_VLDT_END NXT_CONF_VLDT_END
@@ -307,19 +315,19 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_listener_members[] = {
{ {
.name = nxt_string("pass"), .name = nxt_string("pass"),
.type = NXT_CONF_VLDT_STRING, .type = NXT_CONF_VLDT_STRING,
.validator = &nxt_conf_vldt_pass, .validator = nxt_conf_vldt_pass,
}, { }, {
.name = nxt_string("application"), .name = nxt_string("application"),
.type = NXT_CONF_VLDT_STRING, .type = NXT_CONF_VLDT_STRING,
.validator = &nxt_conf_vldt_app_name, .validator = nxt_conf_vldt_app_name,
}, },
#if (NXT_TLS) #if (NXT_TLS)
{ {
.name = nxt_string("tls"), .name = nxt_string("tls"),
.type = NXT_CONF_VLDT_OBJECT, .type = NXT_CONF_VLDT_OBJECT,
.validator = &nxt_conf_vldt_object, .validator = nxt_conf_vldt_object,
.data = (void *) &nxt_conf_vldt_tls_members, .u.members = nxt_conf_vldt_tls_members,
}, },
#endif #endif
@@ -333,7 +341,7 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_tls_members[] = {
{ {
.name = nxt_string("certificate"), .name = nxt_string("certificate"),
.type = NXT_CONF_VLDT_STRING, .type = NXT_CONF_VLDT_STRING,
.validator = &nxt_conf_vldt_certificate, .validator = nxt_conf_vldt_certificate,
}, },
NXT_CONF_VLDT_END NXT_CONF_VLDT_END
@@ -346,12 +354,12 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_route_members[] = {
{ {
.name = nxt_string("match"), .name = nxt_string("match"),
.type = NXT_CONF_VLDT_OBJECT, .type = NXT_CONF_VLDT_OBJECT,
.validator = &nxt_conf_vldt_object, .validator = nxt_conf_vldt_object,
.data = (void *) &nxt_conf_vldt_match_members, .u.members = nxt_conf_vldt_match_members,
}, { }, {
.name = nxt_string("action"), .name = nxt_string("action"),
.type = NXT_CONF_VLDT_OBJECT, .type = NXT_CONF_VLDT_OBJECT,
.validator = &nxt_conf_vldt_action, .validator = nxt_conf_vldt_action,
}, },
NXT_CONF_VLDT_END NXT_CONF_VLDT_END
@@ -362,39 +370,39 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_match_members[] = {
{ {
.name = nxt_string("method"), .name = nxt_string("method"),
.type = NXT_CONF_VLDT_STRING | NXT_CONF_VLDT_ARRAY, .type = NXT_CONF_VLDT_STRING | NXT_CONF_VLDT_ARRAY,
.validator = &nxt_conf_vldt_match_patterns, .validator = nxt_conf_vldt_match_patterns,
}, { }, {
.name = nxt_string("scheme"), .name = nxt_string("scheme"),
.type = NXT_CONF_VLDT_STRING, .type = NXT_CONF_VLDT_STRING,
.validator = &nxt_conf_vldt_match_scheme_pattern, .validator = nxt_conf_vldt_match_scheme_pattern,
}, { }, {
.name = nxt_string("host"), .name = nxt_string("host"),
.type = NXT_CONF_VLDT_STRING | NXT_CONF_VLDT_ARRAY, .type = NXT_CONF_VLDT_STRING | NXT_CONF_VLDT_ARRAY,
.validator = &nxt_conf_vldt_match_patterns, .validator = nxt_conf_vldt_match_patterns,
}, { }, {
.name = nxt_string("source"), .name = nxt_string("source"),
.type = NXT_CONF_VLDT_STRING | NXT_CONF_VLDT_ARRAY, .type = NXT_CONF_VLDT_STRING | NXT_CONF_VLDT_ARRAY,
.validator = &nxt_conf_vldt_match_addrs, .validator = nxt_conf_vldt_match_addrs,
}, { }, {
.name = nxt_string("destination"), .name = nxt_string("destination"),
.type = NXT_CONF_VLDT_STRING | NXT_CONF_VLDT_ARRAY, .type = NXT_CONF_VLDT_STRING | NXT_CONF_VLDT_ARRAY,
.validator = &nxt_conf_vldt_match_addrs, .validator = nxt_conf_vldt_match_addrs,
}, { }, {
.name = nxt_string("uri"), .name = nxt_string("uri"),
.type = NXT_CONF_VLDT_STRING | NXT_CONF_VLDT_ARRAY, .type = NXT_CONF_VLDT_STRING | NXT_CONF_VLDT_ARRAY,
.validator = &nxt_conf_vldt_match_encoded_patterns, .validator = nxt_conf_vldt_match_encoded_patterns,
}, { }, {
.name = nxt_string("arguments"), .name = nxt_string("arguments"),
.type = NXT_CONF_VLDT_OBJECT | NXT_CONF_VLDT_ARRAY, .type = NXT_CONF_VLDT_OBJECT | NXT_CONF_VLDT_ARRAY,
.validator = &nxt_conf_vldt_match_encoded_patterns_sets, .validator = nxt_conf_vldt_match_encoded_patterns_sets,
}, { }, {
.name = nxt_string("headers"), .name = nxt_string("headers"),
.type = NXT_CONF_VLDT_OBJECT | NXT_CONF_VLDT_ARRAY, .type = NXT_CONF_VLDT_OBJECT | NXT_CONF_VLDT_ARRAY,
.validator = &nxt_conf_vldt_match_patterns_sets, .validator = nxt_conf_vldt_match_patterns_sets,
}, { }, {
.name = nxt_string("cookies"), .name = nxt_string("cookies"),
.type = NXT_CONF_VLDT_OBJECT | NXT_CONF_VLDT_ARRAY, .type = NXT_CONF_VLDT_OBJECT | NXT_CONF_VLDT_ARRAY,
.validator = &nxt_conf_vldt_match_patterns_sets, .validator = nxt_conf_vldt_match_patterns_sets,
}, },
NXT_CONF_VLDT_END NXT_CONF_VLDT_END
@@ -405,7 +413,7 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_pass_action_members[] = {
{ {
.name = nxt_string("pass"), .name = nxt_string("pass"),
.type = NXT_CONF_VLDT_STRING, .type = NXT_CONF_VLDT_STRING,
.validator = &nxt_conf_vldt_pass, .validator = nxt_conf_vldt_pass,
}, },
NXT_CONF_VLDT_END NXT_CONF_VLDT_END
@@ -416,7 +424,7 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_return_action_members[] = {
{ {
.name = nxt_string("return"), .name = nxt_string("return"),
.type = NXT_CONF_VLDT_INTEGER, .type = NXT_CONF_VLDT_INTEGER,
.validator = &nxt_conf_vldt_return, .validator = nxt_conf_vldt_return,
}, { }, {
.name = nxt_string("location"), .name = nxt_string("location"),
.type = NXT_CONF_VLDT_STRING, .type = NXT_CONF_VLDT_STRING,
@@ -433,7 +441,7 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_share_action_members[] = {
}, { }, {
.name = nxt_string("fallback"), .name = nxt_string("fallback"),
.type = NXT_CONF_VLDT_OBJECT, .type = NXT_CONF_VLDT_OBJECT,
.validator = &nxt_conf_vldt_action, .validator = nxt_conf_vldt_action,
}, },
NXT_CONF_VLDT_END NXT_CONF_VLDT_END
@@ -444,7 +452,7 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_proxy_action_members[] = {
{ {
.name = nxt_string("proxy"), .name = nxt_string("proxy"),
.type = NXT_CONF_VLDT_STRING, .type = NXT_CONF_VLDT_STRING,
.validator = &nxt_conf_vldt_proxy, .validator = nxt_conf_vldt_proxy,
}, },
NXT_CONF_VLDT_END NXT_CONF_VLDT_END
@@ -459,11 +467,11 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_external_members[] = {
}, { }, {
.name = nxt_string("arguments"), .name = nxt_string("arguments"),
.type = NXT_CONF_VLDT_ARRAY, .type = NXT_CONF_VLDT_ARRAY,
.validator = &nxt_conf_vldt_array_iterator, .validator = nxt_conf_vldt_array_iterator,
.data = (void *) &nxt_conf_vldt_argument, .u.array = nxt_conf_vldt_argument,
}, },
NXT_CONF_VLDT_NEXT(&nxt_conf_vldt_common_members) NXT_CONF_VLDT_NEXT(nxt_conf_vldt_common_members)
}; };
@@ -483,7 +491,7 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_python_members[] = {
.type = NXT_CONF_VLDT_STRING, .type = NXT_CONF_VLDT_STRING,
}, },
NXT_CONF_VLDT_NEXT(&nxt_conf_vldt_common_members) NXT_CONF_VLDT_NEXT(nxt_conf_vldt_common_members)
}; };
@@ -491,25 +499,25 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_php_members[] = {
{ {
.name = nxt_string("root"), .name = nxt_string("root"),
.type = NXT_CONF_VLDT_ANY_TYPE, .type = NXT_CONF_VLDT_ANY_TYPE,
.validator = &nxt_conf_vldt_php_targets_exclusive, .validator = nxt_conf_vldt_php_targets_exclusive,
.data = (void *) "root", .u.string = "root",
}, { }, {
.name = nxt_string("script"), .name = nxt_string("script"),
.type = NXT_CONF_VLDT_ANY_TYPE, .type = NXT_CONF_VLDT_ANY_TYPE,
.validator = &nxt_conf_vldt_php_targets_exclusive, .validator = nxt_conf_vldt_php_targets_exclusive,
.data = (void *) "script", .u.string = "script",
}, { }, {
.name = nxt_string("index"), .name = nxt_string("index"),
.type = NXT_CONF_VLDT_ANY_TYPE, .type = NXT_CONF_VLDT_ANY_TYPE,
.validator = &nxt_conf_vldt_php_targets_exclusive, .validator = nxt_conf_vldt_php_targets_exclusive,
.data = (void *) "index", .u.string = "index",
}, { }, {
.name = nxt_string("targets"), .name = nxt_string("targets"),
.type = NXT_CONF_VLDT_OBJECT, .type = NXT_CONF_VLDT_OBJECT,
.validator = &nxt_conf_vldt_php_targets, .validator = nxt_conf_vldt_php_targets,
}, },
NXT_CONF_VLDT_NEXT(&nxt_conf_vldt_php_common_members) NXT_CONF_VLDT_NEXT(nxt_conf_vldt_php_common_members)
}; };
@@ -517,11 +525,11 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_php_common_members[] = {
{ {
.name = nxt_string("options"), .name = nxt_string("options"),
.type = NXT_CONF_VLDT_OBJECT, .type = NXT_CONF_VLDT_OBJECT,
.validator = &nxt_conf_vldt_object, .validator = nxt_conf_vldt_object,
.data = (void *) &nxt_conf_vldt_php_options_members, .u.members = nxt_conf_vldt_php_options_members,
}, },
NXT_CONF_VLDT_NEXT(&nxt_conf_vldt_common_members) NXT_CONF_VLDT_NEXT(nxt_conf_vldt_common_members)
}; };
@@ -532,13 +540,13 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_php_options_members[] = {
}, { }, {
.name = nxt_string("admin"), .name = nxt_string("admin"),
.type = NXT_CONF_VLDT_OBJECT, .type = NXT_CONF_VLDT_OBJECT,
.validator = &nxt_conf_vldt_object_iterator, .validator = nxt_conf_vldt_object_iterator,
.data = (void *) &nxt_conf_vldt_php_option, .u.object = nxt_conf_vldt_php_option,
}, { }, {
.name = nxt_string("user"), .name = nxt_string("user"),
.type = NXT_CONF_VLDT_OBJECT, .type = NXT_CONF_VLDT_OBJECT,
.validator = &nxt_conf_vldt_object_iterator, .validator = nxt_conf_vldt_object_iterator,
.data = (void *) &nxt_conf_vldt_php_option, .u.object = nxt_conf_vldt_php_option,
}, },
NXT_CONF_VLDT_END NXT_CONF_VLDT_END
@@ -575,7 +583,7 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_php_notargets_members[] = {
.type = NXT_CONF_VLDT_STRING, .type = NXT_CONF_VLDT_STRING,
}, },
NXT_CONF_VLDT_NEXT(&nxt_conf_vldt_php_common_members) NXT_CONF_VLDT_NEXT(nxt_conf_vldt_php_common_members)
}; };
@@ -586,7 +594,7 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_perl_members[] = {
.flags = NXT_CONF_VLDT_REQUIRED, .flags = NXT_CONF_VLDT_REQUIRED,
}, },
NXT_CONF_VLDT_NEXT(&nxt_conf_vldt_common_members) NXT_CONF_VLDT_NEXT(nxt_conf_vldt_common_members)
}; };
@@ -597,7 +605,7 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_ruby_members[] = {
.flags = NXT_CONF_VLDT_REQUIRED, .flags = NXT_CONF_VLDT_REQUIRED,
}, },
NXT_CONF_VLDT_NEXT(&nxt_conf_vldt_common_members) NXT_CONF_VLDT_NEXT(nxt_conf_vldt_common_members)
}; };
@@ -605,8 +613,8 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_java_members[] = {
{ {
.name = nxt_string("classpath"), .name = nxt_string("classpath"),
.type = NXT_CONF_VLDT_ARRAY, .type = NXT_CONF_VLDT_ARRAY,
.validator = &nxt_conf_vldt_array_iterator, .validator = nxt_conf_vldt_array_iterator,
.data = (void *) &nxt_conf_vldt_java_classpath, .u.array = nxt_conf_vldt_java_classpath,
}, { }, {
.name = nxt_string("webapp"), .name = nxt_string("webapp"),
.type = NXT_CONF_VLDT_STRING, .type = NXT_CONF_VLDT_STRING,
@@ -614,14 +622,14 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_java_members[] = {
}, { }, {
.name = nxt_string("options"), .name = nxt_string("options"),
.type = NXT_CONF_VLDT_ARRAY, .type = NXT_CONF_VLDT_ARRAY,
.validator = &nxt_conf_vldt_array_iterator, .validator = nxt_conf_vldt_array_iterator,
.data = (void *) &nxt_conf_vldt_java_option, .u.array = nxt_conf_vldt_java_option,
}, { }, {
.name = nxt_string("unit_jars"), .name = nxt_string("unit_jars"),
.type = NXT_CONF_VLDT_STRING, .type = NXT_CONF_VLDT_STRING,
}, },
NXT_CONF_VLDT_NEXT(&nxt_conf_vldt_common_members) NXT_CONF_VLDT_NEXT(nxt_conf_vldt_common_members)
}; };
@@ -632,13 +640,13 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_common_members[] = {
}, { }, {
.name = nxt_string("limits"), .name = nxt_string("limits"),
.type = NXT_CONF_VLDT_OBJECT, .type = NXT_CONF_VLDT_OBJECT,
.validator = &nxt_conf_vldt_object, .validator = nxt_conf_vldt_object,
.data = (void *) &nxt_conf_vldt_app_limits_members, .u.members = nxt_conf_vldt_app_limits_members,
}, { }, {
.name = nxt_string("processes"), .name = nxt_string("processes"),
.type = NXT_CONF_VLDT_INTEGER | NXT_CONF_VLDT_OBJECT, .type = NXT_CONF_VLDT_INTEGER | NXT_CONF_VLDT_OBJECT,
.validator = &nxt_conf_vldt_processes, .validator = nxt_conf_vldt_processes,
.data = (void *) &nxt_conf_vldt_app_processes_members, .u.members = nxt_conf_vldt_app_processes_members,
}, { }, {
.name = nxt_string("user"), .name = nxt_string("user"),
.type = NXT_CONF_VLDT_STRING, .type = NXT_CONF_VLDT_STRING,
@@ -651,13 +659,13 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_common_members[] = {
}, { }, {
.name = nxt_string("environment"), .name = nxt_string("environment"),
.type = NXT_CONF_VLDT_OBJECT, .type = NXT_CONF_VLDT_OBJECT,
.validator = &nxt_conf_vldt_object_iterator, .validator = nxt_conf_vldt_object_iterator,
.data = (void *) &nxt_conf_vldt_environment, .u.object = nxt_conf_vldt_environment,
}, { }, {
.name = nxt_string("isolation"), .name = nxt_string("isolation"),
.type = NXT_CONF_VLDT_OBJECT, .type = NXT_CONF_VLDT_OBJECT,
.validator = &nxt_conf_vldt_isolation, .validator = nxt_conf_vldt_isolation,
.data = (void *) &nxt_conf_vldt_app_isolation_members, .u.members = nxt_conf_vldt_app_isolation_members,
}, },
NXT_CONF_VLDT_END NXT_CONF_VLDT_END
@@ -700,21 +708,21 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_app_isolation_members[] = {
{ {
.name = nxt_string("namespaces"), .name = nxt_string("namespaces"),
.type = NXT_CONF_VLDT_OBJECT, .type = NXT_CONF_VLDT_OBJECT,
.validator = &nxt_conf_vldt_clone_namespaces, .validator = nxt_conf_vldt_clone_namespaces,
.data = (void *) &nxt_conf_vldt_app_namespaces_members, .u.members = nxt_conf_vldt_app_namespaces_members,
}, },
#if (NXT_HAVE_CLONE_NEWUSER) #if (NXT_HAVE_CLONE_NEWUSER)
{ {
.name = nxt_string("uidmap"), .name = nxt_string("uidmap"),
.type = NXT_CONF_VLDT_ARRAY, .type = NXT_CONF_VLDT_ARRAY,
.validator = &nxt_conf_vldt_array_iterator, .validator = nxt_conf_vldt_array_iterator,
.data = (void *) &nxt_conf_vldt_clone_uidmap, .u.array = nxt_conf_vldt_clone_uidmap,
}, { }, {
.name = nxt_string("gidmap"), .name = nxt_string("gidmap"),
.type = NXT_CONF_VLDT_ARRAY, .type = NXT_CONF_VLDT_ARRAY,
.validator = &nxt_conf_vldt_array_iterator, .validator = nxt_conf_vldt_array_iterator,
.data = (void *) &nxt_conf_vldt_clone_gidmap, .u.array = nxt_conf_vldt_clone_gidmap,
}, },
#endif #endif
@@ -725,8 +733,8 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_app_isolation_members[] = {
}, { }, {
.name = nxt_string("automount"), .name = nxt_string("automount"),
.type = NXT_CONF_VLDT_OBJECT, .type = NXT_CONF_VLDT_OBJECT,
.validator = &nxt_conf_vldt_object, .validator = nxt_conf_vldt_object,
.data = (void *) &nxt_conf_vldt_app_automount_members, .u.members = nxt_conf_vldt_app_automount_members,
}, },
#endif #endif
@@ -827,8 +835,8 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_upstream_members[] = {
{ {
.name = nxt_string("servers"), .name = nxt_string("servers"),
.type = NXT_CONF_VLDT_OBJECT, .type = NXT_CONF_VLDT_OBJECT,
.validator = &nxt_conf_vldt_object_iterator, .validator = nxt_conf_vldt_object_iterator,
.data = (void *) &nxt_conf_vldt_server, .u.object = nxt_conf_vldt_server,
}, },
NXT_CONF_VLDT_END NXT_CONF_VLDT_END
@@ -839,7 +847,7 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_upstream_server_members[] = {
{ {
.name = nxt_string("weight"), .name = nxt_string("weight"),
.type = NXT_CONF_VLDT_NUMBER, .type = NXT_CONF_VLDT_NUMBER,
.validator = &nxt_conf_vldt_server_weight, .validator = nxt_conf_vldt_server_weight,
}, },
NXT_CONF_VLDT_END NXT_CONF_VLDT_END
@@ -1768,8 +1776,8 @@ nxt_conf_vldt_object(nxt_conf_validation_t *vldt, nxt_conf_value_t *value,
for ( ;; ) { for ( ;; ) {
if (vals->name.length == 0) { if (vals->name.length == 0) {
if (vals->data != NULL) { if (vals->u.members != NULL) {
vals = vals->data; vals = vals->u.members;
continue; continue;
} }
@@ -1802,8 +1810,8 @@ nxt_conf_vldt_object(nxt_conf_validation_t *vldt, nxt_conf_value_t *value,
for ( ;; ) { for ( ;; ) {
if (vals->name.length == 0) { if (vals->name.length == 0) {
if (vals->data != NULL) { if (vals->u.members != NULL) {
vals = vals->data; vals = vals->u.members;
continue; continue;
} }
@@ -1823,7 +1831,7 @@ nxt_conf_vldt_object(nxt_conf_validation_t *vldt, nxt_conf_value_t *value,
} }
if (vals->validator != NULL) { if (vals->validator != NULL) {
ret = vals->validator(vldt, member, vals->data); ret = vals->validator(vldt, member, vals->u.members);
if (ret != NXT_OK) { if (ret != NXT_OK) {
return ret; return ret;