cfg_aclconfctx_t *actx, isc_mem_t *mctx, uint16_t family,
ns_listenelt_t **target) {
isc_result_t result;
+ const cfg_obj_t *ltup = NULL;
const cfg_obj_t *tlsobj = NULL, *httpobj = NULL;
const cfg_obj_t *portobj = NULL, *dscpobj = NULL;
const cfg_obj_t *http_server = NULL;
REQUIRE(target != NULL && *target == NULL);
- tlsobj = cfg_tuple_get(listener, "tls");
+ ltup = cfg_tuple_get(listener, "tuple");
+ RUNTIME_CHECK(ltup != NULL);
+
+ tlsobj = cfg_tuple_get(ltup, "tls");
if (tlsobj != NULL && cfg_obj_isstring(tlsobj)) {
const char *tlsname = cfg_obj_asstring(tlsobj);
}
}
- httpobj = cfg_tuple_get(listener, "http");
+ httpobj = cfg_tuple_get(ltup, "http");
if (httpobj != NULL && cfg_obj_isstring(httpobj)) {
const char *httpname = cfg_obj_asstring(httpobj);
http = true;
}
- portobj = cfg_tuple_get(listener, "port");
+ portobj = cfg_tuple_get(ltup, "port");
if (!cfg_obj_isuint32(portobj)) {
if (http && do_tls) {
if (named_g_httpsport != 0) {
port = (in_port_t)cfg_obj_asuint32(portobj);
}
- dscpobj = cfg_tuple_get(listener, "dscp");
+ dscpobj = cfg_tuple_get(ltup, "dscp");
if (!cfg_obj_isuint32(dscpobj)) {
dscp = named_g_dscp;
} else {
static void
doc_optional_keyvalue(cfg_printer_t *pctx, const cfg_type_t *type);
+static isc_result_t
+cfg_parse_kv_tuple(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret);
+
+static void
+cfg_print_kv_tuple(cfg_printer_t *pctx, const cfg_obj_t *obj);
+
+static void
+cfg_doc_kv_tuple(cfg_printer_t *pctx, const cfg_type_t *type);
+
static cfg_type_t cfg_type_acl;
static cfg_type_t cfg_type_bracketed_dscpsockaddrlist;
static cfg_type_t cfg_type_bracketed_namesockaddrkeylist;
static cfg_type_t cfg_type_dnstap;
static cfg_type_t cfg_type_dnstapoutput;
static cfg_type_t cfg_type_dyndb;
-static cfg_type_t cfg_type_plugin;
static cfg_type_t cfg_type_http_description;
static cfg_type_t cfg_type_ixfrdifftype;
static cfg_type_t cfg_type_ixfrratio;
static cfg_type_t cfg_type_optional_class;
static cfg_type_t cfg_type_optional_dscp;
static cfg_type_t cfg_type_optional_facility;
-static cfg_type_t cfg_type_optional_http;
static cfg_type_t cfg_type_optional_keyref;
static cfg_type_t cfg_type_optional_port;
static cfg_type_t cfg_type_optional_uint32;
static cfg_type_t cfg_type_optional_tls;
static cfg_type_t cfg_type_options;
+static cfg_type_t cfg_type_plugin;
static cfg_type_t cfg_type_portiplist;
static cfg_type_t cfg_type_printtime;
static cfg_type_t cfg_type_qminmethod;
/*% listen-on */
-static cfg_tuplefielddef_t listenon_fields[] = {
+static cfg_tuplefielddef_t listenon_tuple_fields[] = {
{ "port", &cfg_type_optional_port, 0 },
- { "dscp", &cfg_type_optional_dscp, 0 },
- { "tls", &cfg_type_optional_tls, 0 },
- { "http", &cfg_type_optional_http, 0 },
+ { "dscp", &cfg_type_uint32, 0 },
+ { "tls", &cfg_type_astring, 0 },
+ { "http", &cfg_type_astring, 0 },
+ { NULL, NULL, 0 }
+};
+static cfg_type_t cfg_type_listen_tuple = {
+ "listenon tuple", cfg_parse_kv_tuple, cfg_print_kv_tuple,
+ cfg_doc_kv_tuple, &cfg_rep_tuple, listenon_tuple_fields
+};
+
+static cfg_tuplefielddef_t listenon_fields[] = {
+ { "tuple", &cfg_type_listen_tuple, 0 },
{ "acl", &cfg_type_bracketed_aml, 0 },
{ NULL, NULL, 0 }
};
{ "cert-file", &cfg_type_qstring, 0 },
{ "ca-file", &cfg_type_qstring, 0 },
{ "hostname", &cfg_type_qstring, 0 },
- /* { "trusted-cert-file", &cfg_type_qstring, *
- CFG_CLAUSEFLAG_EXPERIMENTAL}, */
{ "dh-param", &cfg_type_qstring, CFG_CLAUSEFLAG_EXPERIMENTAL },
{ "protocols", &cfg_type_sslprotos, CFG_CLAUSEFLAG_EXPERIMENTAL },
{ "ciphers", &cfg_type_astring, CFG_CLAUSEFLAG_EXPERIMENTAL },
"http_desc", cfg_parse_named_map, cfg_print_map,
cfg_doc_map, &cfg_rep_map, http_description_clausesets
};
-
-static keyword_type_t http_kw = { "http", &cfg_type_astring };
-static cfg_type_t cfg_type_optional_http = {
- "http_optional", parse_optional_keyvalue, print_keyvalue,
- doc_optional_keyvalue, &cfg_rep_string, &http_kw
-};