# zone11.xa
zone11.xa:53 {
    bind 127.19.11.21                # ns1.zone11.xa
    bind fda1:b2:c3::127:19:11:21    # ns1.zone11.xa
    bind 127.19.11.22                # ns2.zone11.xa
    bind fda1:b2:c3::127:19:11:22    # ns2.zone11.xa
    log
    file Zone-TP/zone11/zone11.xa.zone zone11.xa
}

##
## Regular scenarios
##

# good-spf-1.zone11.xa
good-spf-1.zone11.xa:53 {
    bind 127.19.11.31                # ns1.child.zone11.xa
    bind fda1:b2:c3::127:19:11:31    # ns1.child.zone11.xa
    bind 127.19.11.32                # ns2.child.zone11.xa
    bind fda1:b2:c3::127:19:11:32    # ns2.child.zone11.xa
    log
    file Zone-TP/zone11/good-spf-1.zone11.xa.zone good-spf-1.zone11.xa
}

# good-spf-2.zone11.xa
good-spf-2.zone11.xa:53 {
    bind 127.19.11.31                # ns1.child.zone11.xa
    bind fda1:b2:c3::127:19:11:31    # ns1.child.zone11.xa
    bind 127.19.11.32                # ns2.child.zone11.xa
    bind fda1:b2:c3::127:19:11:32    # ns2.child.zone11.xa
    log
    file Zone-TP/zone11/good-spf-2.zone11.xa.zone good-spf-2.zone11.xa
}

# same-spf-different-txt.zone11.xa
same-spf-different-txt.zone11.xa:53 {
    bind 127.19.11.31                # ns1.child.zone11.xa
    bind fda1:b2:c3::127:19:11:31    # ns1.child.zone11.xa
    log
    file Zone-TP/zone11/ns1.same-spf-different-txt.zone11.xa.zone same-spf-different-txt.zone11.xa
}

same-spf-different-txt.zone11.xa:53 {
    bind 127.19.11.32                # ns2.child.zone11.xa
    bind fda1:b2:c3::127:19:11:32    # ns2.child.zone11.xa
    log
    file Zone-TP/zone11/ns2.same-spf-different-txt.zone11.xa.zone same-spf-different-txt.zone11.xa
}

# no-txt.zone11.xa
no-txt.zone11.xa:53 {
    bind 127.19.11.31                # ns1.child.zone11.xa
    bind fda1:b2:c3::127:19:11:31    # ns1.child.zone11.xa
    bind 127.19.11.32                # ns2.child.zone11.xa
    bind fda1:b2:c3::127:19:11:32    # ns2.child.zone11.xa
    log
    file Zone-TP/zone11/no-txt.zone11.xa.zone no-txt.zone11.xa

    # CoreDNS erroneously returns NXDOMAIN when a node exists but no records
    # matching QTYPE. This is a workaround to ensure we get NODATA.
    template IN TXT no-txt.zone11.xa {
        rcode NOERROR
        # CAUTION: Make sure this remains in sync with the contents of COMMON-SCENARIO-INCLUDE
        authority "no-txt.zone11.xa. 3600 IN SOA ns1.child.zone11.xa. admin.zone11.xa. 2025080400 21600 3600 604800 86400"
    }
}

# no-spf-txt.zone11.xa
no-spf-txt.zone11.xa:53 {
    bind 127.19.11.31                # ns1.child.zone11.xa
    bind fda1:b2:c3::127:19:11:31    # ns1.child.zone11.xa
    bind 127.19.11.32                # ns2.child.zone11.xa
    bind fda1:b2:c3::127:19:11:32    # ns2.child.zone11.xa
    log
    file Zone-TP/zone11/no-spf-txt.zone11.xa.zone no-spf-txt.zone11.xa
}

# invalid-syntax-1.zone11.xa
invalid-syntax-1.zone11.xa:53 {
    bind 127.19.11.31                # ns1.child.zone11.xa
    bind fda1:b2:c3::127:19:11:31    # ns1.child.zone11.xa
    bind 127.19.11.32                # ns2.child.zone11.xa
    bind fda1:b2:c3::127:19:11:32    # ns2.child.zone11.xa
    log
    file Zone-TP/zone11/invalid-syntax-1.zone11.xa.zone invalid-syntax-1.zone11.xa
}

# invalid-syntax-2.zone11.xa
invalid-syntax-2.zone11.xa:53 {
    bind 127.19.11.31                # ns1{a,b}.invalid-syntax-2.zone11.xa
    bind fda1:b2:c3::127:19:11:31    # ns1{a,b}.invalid-syntax-2.zone11.xa
    bind 127.19.11.32                # ns2.invalid-syntax-2.zone11.xa
    bind fda1:b2:c3::127:19:11:32    # ns2.invalid-syntax-2.zone11.xa
    log
    file Zone-TP/zone11/invalid-syntax-2.zone11.xa.zone invalid-syntax-2.zone11.xa
}

# invalid-syntax-3.zone11.xa
invalid-syntax-3.zone11.xa:53 {
    bind 127.19.11.31                # ns1.child.zone11.xa
    bind fda1:b2:c3::127:19:11:31    # ns1.child.zone11.xa
    bind 127.19.11.32                # ns2.child.zone11.xa
    bind fda1:b2:c3::127:19:11:32    # ns2.child.zone11.xa
    log
    file Zone-TP/zone11/invalid-syntax-3.zone11.xa.zone invalid-syntax-3.zone11.xa
}

# non-auth-txt.zone11.xa
non-auth-txt.zone11.xa:53 {
    bind 127.19.11.31                # ns1.child.zone11.xa
    bind fda1:b2:c3::127:19:11:31    # ns1.child.zone11.xa
    bind 127.19.11.32                # ns2.child.zone11.xa
    bind fda1:b2:c3::127:19:11:32    # ns2.child.zone11.xa
    log
    file Zone-TP/zone11/non-auth-txt.zone11.xa.zone non-auth-txt.zone11.xa

    header {
        response clear aa
    }
}

# servfail.zone11.xa
servfail.zone11.xa:53 {
    bind 127.19.11.31                # ns1.child.zone11.xa
    bind fda1:b2:c3::127:19:11:31    # ns1.child.zone11.xa
    bind 127.19.11.32                # ns2.child.zone11.xa
    bind fda1:b2:c3::127:19:11:32    # ns2.child.zone11.xa
    log
    file Zone-TP/zone11/servfail.zone11.xa.zone servfail.zone11.xa

    template IN TXT servfail.zone11.xa {
        rcode SERVFAIL
    }
}

# inconsistent-spf.zone11.xa
inconsistent-spf.zone11.xa:53 {
    bind 127.19.11.31                # ns1.child.zone11.xa
    bind fda1:b2:c3::127:19:11:31    # ns1.child.zone11.xa
    log
    file Zone-TP/zone11/ns1.inconsistent-spf.zone11.xa.zone inconsistent-spf.zone11.xa
}

inconsistent-spf.zone11.xa:53 {
    bind 127.19.11.32                # ns2.child.zone11.xa
    bind fda1:b2:c3::127:19:11:32    # ns2.child.zone11.xa
    log
    file Zone-TP/zone11/ns2.inconsistent-spf.zone11.xa.zone inconsistent-spf.zone11.xa
}

# spf-missing-on-one.zone11.xa
spf-missing-on-one.zone11.xa:53 {
    bind 127.19.11.31                # ns1.child.zone11.xa
    bind fda1:b2:c3::127:19:11:31    # ns1.child.zone11.xa
    log
    file Zone-TP/zone11/ns1.spf-missing-on-one.zone11.xa.zone spf-missing-on-one.zone11.xa
}

spf-missing-on-one.zone11.xa:53 {
    bind 127.19.11.32                # ns2.child.zone11.xa
    bind fda1:b2:c3::127:19:11:32    # ns2.child.zone11.xa
    bind 127.19.11.33                # ns3.child.zone11.xa
    bind fda1:b2:c3::127:19:11:33    # ns3.child.zone11.xa
    log
    file Zone-TP/zone11/ns2-3.spf-missing-on-one.zone11.xa.zone spf-missing-on-one.zone11.xa
}

# all-different-spf.zone11.xa
all-different-spf.zone11.xa:53 {
    bind 127.19.11.31                # ns1.child.zone11.xa
    bind fda1:b2:c3::127:19:11:31    # ns1.child.zone11.xa
    log
    file Zone-TP/zone11/ns1.all-different-spf.zone11.xa.zone all-different-spf.zone11.xa
}

all-different-spf.zone11.xa:53 {
    bind 127.19.11.32                # ns2.child.zone11.xa
    bind fda1:b2:c3::127:19:11:32    # ns2.child.zone11.xa
    log
    file Zone-TP/zone11/ns2.all-different-spf.zone11.xa.zone all-different-spf.zone11.xa
}

all-different-spf.zone11.xa:53 {
    bind 127.19.11.33                # ns3.child.zone11.xa
    bind fda1:b2:c3::127:19:11:33    # ns3.child.zone11.xa
    log
    file Zone-TP/zone11/ns3.all-different-spf.zone11.xa.zone all-different-spf.zone11.xa
}

# multiple-spf-records.zone11.xa
multiple-spf-records.zone11.xa:53 {
    bind 127.19.11.31                # ns1.child.zone11.xa
    bind fda1:b2:c3::127:19:11:31    # ns1.child.zone11.xa
    bind 127.19.11.32                # ns2.child.zone11.xa
    bind fda1:b2:c3::127:19:11:32    # ns2.child.zone11.xa
    log
    file Zone-TP/zone11/multiple-spf-records.zone11.xa.zone multiple-spf-records.zone11.xa
}

##
## TLD and ARPA scenarios
##

# no-spf-zone11
no-spf-zone11:53 {
    bind 127.19.11.21                # ns1.zone11.xa
    bind fda1:b2:c3::127:19:11:21    # ns1.zone11.xa
    bind 127.19.11.22                # ns2.zone11.xa
    bind fda1:b2:c3::127:19:11:22    # ns2.zone11.xa
    log
    file Zone-TP/zone11/no-spf-zone11.zone no-spf-zone11

    # CoreDNS erroneously returns NXDOMAIN when a node exists but no records
    # matching QTYPE. This is a workaround to ensure we get NODATA.
    template IN TXT no-spf-zone11 {
        rcode NOERROR
        # CAUTION: Make sure this remains in sync with the contents of COMMON-TLD-ARPA-INCLUDE
        authority "no-spf-zone11. 3600 IN SOA ns1.zone11.xa. admin.zone11.xa. 2025080400 21600 3600 604800 86400"
    }
}

# null-spf-zone11
null-spf-zone11:53 {
    bind 127.19.11.21                # ns1.zone11.xa
    bind fda1:b2:c3::127:19:11:21    # ns1.zone11.xa
    bind 127.19.11.22                # ns2.zone11.xa
    bind fda1:b2:c3::127:19:11:22    # ns2.zone11.xa
    log
    file Zone-TP/zone11/null-spf-zone11.zone null-spf-zone11
}

# non-null-spf-zone11
non-null-spf-zone11:53 {
    bind 127.19.11.21                # ns1.zone11.xa
    bind fda1:b2:c3::127:19:11:21    # ns1.zone11.xa
    bind 127.19.11.22                # ns2.zone11.xa
    bind fda1:b2:c3::127:19:11:22    # ns2.zone11.xa
    log
    file Zone-TP/zone11/non-null-spf-zone11.zone non-null-spf-zone11
}

# zone11.arpa
zone11.arpa:53 {
    bind 127.19.11.21                # ns1.zone11.xa
    bind fda1:b2:c3::127:19:11:21    # ns1.zone11.xa
    bind 127.19.11.22                # ns2.zone11.xa
    bind fda1:b2:c3::127:19:11:22    # ns2.zone11.xa
    log
    file Zone-TP/zone11/zone11.arpa.zone zone11.arpa
}

# no-spf-arpa-zone.zone11.arpa
no-spf-arpa-zone.zone11.arpa:53 {
    bind 127.19.11.31                # ns1.child.zone11.xa
    bind fda1:b2:c3::127:19:11:31    # ns1.child.zone11.xa
    bind 127.19.11.32                # ns2.child.zone11.xa
    bind fda1:b2:c3::127:19:11:32    # ns2.child.zone11.xa
    log
    file Zone-TP/zone11/no-spf-arpa-zone.zone11.arpa.zone no-spf-arpa-zone.zone11.arpa

    # CoreDNS erroneously returns NXDOMAIN when a node exists but no records
    # matching QTYPE. This is a workaround to ensure we get NODATA.
    template IN TXT no-spf-arpa-zone.zone11.arpa {
        rcode NOERROR
        # CAUTION: Make sure this remains in sync with the contents of COMMON-TLD-ARPA-INCLUDE
        authority "no-spf-arpa-zone.zone11.arpa. 3600 IN SOA ns1.zone11.xa. admin.zone11.xa. 2025080400 21600 3600 604800 86400"
    }
}

# null-spf-arpa-zone.zone11.arpa
null-spf-arpa-zone.zone11.arpa:53 {
    bind 127.19.11.31                # ns1.child.zone11.xa
    bind fda1:b2:c3::127:19:11:31    # ns1.child.zone11.xa
    bind 127.19.11.32                # ns2.child.zone11.xa
    bind fda1:b2:c3::127:19:11:32    # ns2.child.zone11.xa
    log
    file Zone-TP/zone11/null-spf-arpa-zone.zone11.arpa.zone null-spf-arpa-zone.zone11.arpa
}

# non-null-spf-arpa-zone.zone11.arpa
non-null-spf-arpa-zone.zone11.arpa:53 {
    bind 127.19.11.31                # ns1.child.zone11.xa
    bind fda1:b2:c3::127:19:11:31    # ns1.child.zone11.xa
    bind 127.19.11.32                # ns2.child.zone11.xa
    bind fda1:b2:c3::127:19:11:32    # ns2.child.zone11.xa
    log
    file Zone-TP/zone11/non-null-spf-arpa-zone.zone11.arpa.zone non-null-spf-arpa-zone.zone11.arpa
}


##
## Alternative root zones
##

.:53 {
    bind 127.19.11.41                # ns1.no-spf.root-servers.zone11.xa
    bind fda1:b2:c3::127:19:11:41    # ns1.no-spf.root-servers.zone11.xa
    bind 127.19.11.42                # ns2.no-spf.root-servers.zone11.xa
    bind fda1:b2:c3::127:19:11:42    # ns2.no-spf.root-servers.zone11.xa
    log
    file Zone-TP/zone11/root-no-spf.zone .
}

.:53 {
    bind 127.19.11.43                # ns1.null-spf.root-servers.zone11.xa
    bind fda1:b2:c3::127:19:11:43    # ns1.null-spf.root-servers.zone11.xa
    bind 127.19.11.44                # ns2.null-spf.root-servers.zone11.xa
    bind fda1:b2:c3::127:19:11:44    # ns2.null-spf.root-servers.zone11.xa
    log
    file Zone-TP/zone11/root-null-spf.zone .
}

.:53 {
    bind 127.19.11.45                # ns1.non-null-spf.root-servers.zone11.xa
    bind fda1:b2:c3::127:19:11:45    # ns1.non-null-spf.root-servers.zone11.xa
    bind 127.19.11.46                # ns2.non-null-spf.root-servers.zone11.xa
    bind fda1:b2:c3::127:19:11:46    # ns2.non-null-spf.root-servers.zone11.xa
    log
    file Zone-TP/zone11/root-non-null-spf.zone .
}
