)

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(
        (
            (
Exemple #2
0
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 ]
#                {
Exemple #4
0
    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') +