) optviewzone_stmt_allow_v6_synthesis = ( Keyword('allow-v6-synthesis').suppress() - Group( aml_nesting )('allow_v6_synthesis') ) # alt-transfer-source ( ipv4_address | * ) [ port ( integer | * )]; optviewzone_stmt_alt_transfer_source = ( Keyword('alt-transfer-source').suppress() - Group( ( ( ip4_addr('ip4_addr') | Literal('*') )('') + Optional(inet_ip_port_keyword_and_wildcard_element) + Optional(inet_dscp_port_keyword_and_number_element) )('') )('alt_transfer_source') + semicolon )('') # alt-transfer-source-v6 ( ipv4_address | * ) [ port ( integer | * )]; optviewzone_stmt_alt_transfer_source_v6 = ( Keyword('alt-transfer-source-v6').suppress() - Group( ( (
literal_none = CaselessLiteral('none')('') literal_none.setName('"none"') literal_localnets = CaselessLiteral('localnets')('') literal_localnets.setName('"localnets"') aml_choices_key_id = CaselessLiteral('key').suppress() + acl_name('') # key_id('') aml_choices_key_id.setName('"key" <key_id>') aml_choices_acl_name = acl_name('') aml_choices = ( (aml_choices_key_id('key_id')) | (ip46_addr_or_prefix('addr')) | (ip4_addr('addr')) | (ip6_addr('addr')) | (literal_any('addr')) | (literal_none('addr')) | (literal_localhost('addr')) | (literal_localnets('addr')) | (aml_choices_acl_name('acl_name')) ) aml_nesting = Forward() aml_nesting << ( lbrack + ( ZeroOrMore( Group( (
# * masters statement or # * also-notify statement of options/view/zone clauses. master_id = (master_name_type_squotable | master_name_type_dquotable | master_name_type)('master_id') # { ( masters # | ipv4_address [ port integer ] # | ipv6_address [ port integer ] # | 'masters' # New in 9.15.1??? # ) # [ key string ]; # ... # }; masters_element_list = ( (ip4_addr('addr') + Optional(inet_ip_port_keyword_and_number_element) + Optional(key_id_keyword_and_name_pair) + semicolon) | (ip6_addr('addr') + Optional(inet_ip_port_keyword_and_number_element) + Optional(key_id_keyword_and_name_pair) + semicolon) | ( master_id('addr') + Optional(key_id_keyword_and_name_pair) + semicolon ) # TODO investigate if a series of master_id is supported in masters clause | (master_id('addr') + semicolon)) masters_element_series = ( OneOrMore(Group( # Started indexing via list [] masters_element_list))('master_list')) # masters string [ port integer ] # [ dscp integer ] # {
semicolon) # dnssec-validation ( yes | no ); optview_stmt_dnssec_validation = (Keyword('dnssec-validation').suppress() - (Literal('auto') | isc_boolean)('dnssec_validation') + semicolon) # dual-stack-servers [ port <pg_num> ] # { ( <domain_name> [port <p_num>] | # <ipv4> [port <p_num>] | # <ipv6> [port <p_num>] ); ... }; dual_stack_servers_address_set = (( # Orderings matter Group( ip4_addr('ip4_addr') + Optional(inet_ip_port_keyword_and_number_element)) ^ Group( ip6_addr('ip6_addr') + Optional(inet_ip_port_keyword_and_number_element)) ^ Group( quoted_domain_generic_fqdn( 'domain' ) # TODO is 'masters_name' the correct type for dual-stack-servers? + Optional(inet_ip_port_keyword_and_number_element))) + semicolon)('') dual_stack_servers_address_series = Group( ZeroOrMore((dual_stack_servers_address_set)(''))(''))('') optview_stmt_dual_stack_servers = ( Keyword('dual-stack-servers').suppress() - Group( Optional(inet_ip_port_keyword_and_number_element('')) + lbrack - (dual_stack_servers_address_series)('addrs') +