From 5a911aa4bf7dddb9c077480eab4eae139910dc99 Mon Sep 17 00:00:00 2001 From: Artem Boldariev Date: Thu, 25 Nov 2021 13:52:47 +0200 Subject: [PATCH] WIP: add new "connect" server option syntax --- bin/named/named.conf.rst | 7 +++++-- doc/misc/options | 7 +++++-- doc/misc/options.active | 7 +++++-- doc/misc/server.grammar.rst | 3 ++- lib/isccfg/namedconf.c | 15 ++++++++++++++- 5 files changed, 31 insertions(+), 8 deletions(-) diff --git a/bin/named/named.conf.rst b/bin/named/named.conf.rst index e04891ab2a..c5ea1cb50c 100644 --- a/bin/named/named.conf.rst +++ b/bin/named/named.conf.rst @@ -512,6 +512,7 @@ SERVER server netprefix { bogus boolean; + connect [ port integer ] [ transport string ] [ tls string ]; edns boolean; edns-udp-size integer; edns-version integer; @@ -534,7 +535,7 @@ SERVER request-nsid boolean; send-cookie boolean; tcp-keepalive boolean; - tcp-only boolean; + tcp-only boolean;// deprecated transfer-format ( many-answers | one-answer ); transfer-source ( ipv4_address | * ) [ port ( integer | * ) ] [ dscp integer ]; @@ -822,6 +823,8 @@ VIEW serial-update-method ( date | increment | unixtime ); server netprefix { bogus boolean; + connect [ port integer ] [ transport string ] [ tls + string ]; edns boolean; edns-udp-size integer; edns-version integer; @@ -846,7 +849,7 @@ VIEW request-nsid boolean; send-cookie boolean; tcp-keepalive boolean; - tcp-only boolean; + tcp-only boolean;// deprecated transfer-format ( many-answers | one-answer ); transfer-source ( ipv4_address | * ) [ port ( integer | * ) ] [ dscp integer ]; diff --git a/doc/misc/options b/doc/misc/options index 02b6f7b609..d84e3e1300 100644 --- a/doc/misc/options +++ b/doc/misc/options @@ -418,6 +418,7 @@ primaries [ port ] [ dscp server { bogus ; + connect [ port ] [ transport ] [ tls ]; edns ; edns-udp-size ; edns-version ; @@ -440,7 +441,7 @@ server { request-nsid ; send-cookie ; tcp-keepalive ; - tcp-only ; + tcp-only ; // deprecated transfer-format ( many-answers | one-answer ); transfer-source ( | * ) [ port ( | * ) ] [ dscp ]; @@ -702,6 +703,8 @@ view [ ] { serial-update-method ( date | increment | unixtime ); server { bogus ; + connect [ port ] [ transport ] [ tls + ]; edns ; edns-udp-size ; edns-version ; @@ -726,7 +729,7 @@ view [ ] { request-nsid ; send-cookie ; tcp-keepalive ; - tcp-only ; + tcp-only ; // deprecated transfer-format ( many-answers | one-answer ); transfer-source ( | * ) [ port ( | * ) ] [ dscp ]; diff --git a/doc/misc/options.active b/doc/misc/options.active index 491a025ed4..56b800aff5 100644 --- a/doc/misc/options.active +++ b/doc/misc/options.active @@ -415,6 +415,7 @@ primaries [ port ] [ dscp server { bogus ; + connect [ port ] [ transport ] [ tls ]; edns ; edns-udp-size ; edns-version ; @@ -437,7 +438,7 @@ server { request-nsid ; send-cookie ; tcp-keepalive ; - tcp-only ; + tcp-only ; // deprecated transfer-format ( many-answers | one-answer ); transfer-source ( | * ) [ port ( | * ) ] [ dscp ]; @@ -698,6 +699,8 @@ view [ ] { serial-update-method ( date | increment | unixtime ); server { bogus ; + connect [ port ] [ transport ] [ tls + ]; edns ; edns-udp-size ; edns-version ; @@ -722,7 +725,7 @@ view [ ] { request-nsid ; send-cookie ; tcp-keepalive ; - tcp-only ; + tcp-only ; // deprecated transfer-format ( many-answers | one-answer ); transfer-source ( | * ) [ port ( | * ) ] [ dscp ]; diff --git a/doc/misc/server.grammar.rst b/doc/misc/server.grammar.rst index 4c461a0c12..d2deb54dd1 100644 --- a/doc/misc/server.grammar.rst +++ b/doc/misc/server.grammar.rst @@ -2,6 +2,7 @@ server { bogus ; + connect [ port ] [ transport ] [ tls ]; edns ; edns-udp-size ; edns-version ; @@ -24,7 +25,7 @@ request-nsid ; send-cookie ; tcp-keepalive ; - tcp-only ; + tcp-only ; // deprecated transfer-format ( many-answers | one-answer ); transfer-source ( | * ) [ port ( | * ) ] [ dscp ]; diff --git a/lib/isccfg/namedconf.c b/lib/isccfg/namedconf.c index 4067adf093..ce489c2c9f 100644 --- a/lib/isccfg/namedconf.c +++ b/lib/isccfg/namedconf.c @@ -2465,11 +2465,24 @@ static cfg_type_t cfg_type_key = { "key", cfg_parse_named_map, cfg_print_map, cfg_doc_map, &cfg_rep_map, key_clausesets }; +static cfg_tuplefielddef_t cfg_server_connect_tuple_fields[] = { + { "port", &cfg_type_optional_port, 0 }, + { "transport", &cfg_type_astring, 0 }, + { "tls", &cfg_type_astring, 0 }, + { NULL, NULL, 0 } +}; + +static cfg_type_t cfg_type_server_connect = { + "server-connect", cfg_parse_kv_tuple, cfg_print_kv_tuple, + cfg_doc_kv_tuple, &cfg_rep_tuple, cfg_server_connect_tuple_fields +}; + /*% * Clauses that can be found in a 'server' statement. */ static cfg_clausedef_t server_clauses[] = { { "bogus", &cfg_type_boolean, 0 }, + { "connect", &cfg_type_server_connect, 0 }, { "edns", &cfg_type_boolean, 0 }, { "edns-udp-size", &cfg_type_uint32, 0 }, { "edns-version", &cfg_type_uint32, 0 }, @@ -2488,7 +2501,7 @@ static cfg_clausedef_t server_clauses[] = { { "send-cookie", &cfg_type_boolean, 0 }, { "support-ixfr", NULL, CFG_CLAUSEFLAG_ANCIENT }, { "tcp-keepalive", &cfg_type_boolean, 0 }, - { "tcp-only", &cfg_type_boolean, 0 }, + { "tcp-only", &cfg_type_boolean, CFG_CLAUSEFLAG_DEPRECATED }, { "transfer-format", &cfg_type_transferformat, 0 }, { "transfer-source", &cfg_type_sockaddr4wild, 0 }, { "transfer-source-v6", &cfg_type_sockaddr6wild, 0 },