
# ns1 and ns2 recursor.engine.xa
recursor.engine.xa:53 {
   bind 127.30.1.21
   bind fda1:b2:c3:0:127:30:1:21
   bind 127.30.1.22
   bind fda1:b2:c3:0:127:30:1:22
   log
   file Engine/Recursor-PM/recursor.engine.xa recursor.engine.xa.
}

# ns1 cname.recursor.engine.xa
cname.recursor.engine.xa:53 {
   bind 127.30.1.31
   bind fda1:b2:c3:0:127:30:1:31
   log
   file Engine/Recursor-PM/cname.recursor.engine.xa cname.recursor.engine.xa.

   # For scenario MULT-CNAME
   template IN A mult-cname.cname.recursor.engine.xa {
       answer "mult-cname.cname.recursor.engine.xa. 3600 IN CNAME mult-cname-target-1.cname.recursor.engine.xa."
       answer "mult-cname.cname.recursor.engine.xa. 3600 IN CNAME mult-cname-target-2.cname.recursor.engine.xa."
       #answer "mult-cname-target-1.cname.recursor.engine.xa. 3600 IN A	127.0.0.1" # Taken from the zone
       #answer "mult-cname-target-2.cname.recursor.engine.xa. 3600 IN A	127.0.0.2" # Taken from the zone
   }

   # For scenario GOOD-CNAME-OUT-OF-ZONE
   template IN A good-cname-out-of-zone.cname.recursor.engine.xa {
      answer     "good-cname-out-of-zone.cname.recursor.engine.xa. 3600  IN  CNAME target.goodsub.cname.recursor.engine.xa."
      authority  "goodsub.cname.recursor.engine.xa.                3600  IN  NS    ns1.goodsub.cname.recursor.engine.xa."
      additional "ns1.goodsub.cname.recursor.engine.xa             3600  IN  A     127.30.1.34"
      additional "ns1.goodsub.cname.recursor.engine.xa             3600  IN  AAAA  fda1:b2:c3::127:30:1:34"
   }

   # For scenario NXDOMAIN-VIA-CNAME
   template IN A nxdomain-via-cname.cname.recursor.engine.xa {
      answer     "nxdomain-via-cname.cname.recursor.engine.xa. 3600 IN CNAME nxdomain-via-cname-target.cname.recursor.engine.xa."
      authority  "cname.recursor.engine.xa. 3600	IN	SOA	ns1.cname.recursor.engine.xa. root.cname.recursor.engine.xa. 2023111502 86400 14400 3600000 3600"
   }

   # For scenario NODATA-VIA-CNAME
   template IN A nodata-via-cname.cname.recursor.engine.xa {
      answer     "nodata-via-cname.cname.recursor.engine.xa. 3600	IN CNAME nodata-via-cname-target.cname.recursor.engine.xa."
      authority  "cname.recursor.engine.xa. 3600	IN	SOA	ns1.cname.recursor.engine.xa. root.cname.recursor.engine.xa. 2023111502 86400 14400 3600000 3600"
   }

   # For scenario LOOPED-CNAME-IN-ZONE-2
   template IN ANY looped-cname-in-zone-2.cname.recursor.engine.xa {
      answer     "looped-cname-in-zone-2.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-in-zone-2-a.cname.recursor.engine.xa."
      answer     "looped-cname-in-zone-2-a.cname.recursor.engine.xa. 3600	IN CNAME looped-cname-in-zone-2-b.cname.recursor.engine.xa."
      answer     "looped-cname-in-zone-2-b.cname.recursor.engine.xa. 3600	IN CNAME looped-cname-in-zone-2-a.cname.recursor.engine.xa."
      authority  "cname.recursor.engine.xa. 3600	IN	NS	ns1.cname.recursor.engine.xa."
    }

   # For scenario TOO-LONG-CNAME-CHAIN
   template IN A too-long-cname-chain.cname.recursor.engine.xa {
      answer     "too-long-cname-chain.cname.recursor.engine.xa.         3600 IN CNAME too-long-cname-chain-two.cname.recursor.engine.xa."
      answer     "too-long-cname-chain-two.cname.recursor.engine.xa.     3600 IN CNAME too-long-cname-chain-three.cname.recursor.engine.xa."
      answer     "too-long-cname-chain-three.cname.recursor.engine.xa.   3600 IN CNAME too-long-cname-chain-four.cname.recursor.engine.xa."
      answer     "too-long-cname-chain-four.cname.recursor.engine.xa.    3600 IN CNAME too-long-cname-chain-five.cname.recursor.engine.xa."
      answer     "too-long-cname-chain-five.cname.recursor.engine.xa.    3600 IN CNAME too-long-cname-chain-six.cname.recursor.engine.xa."
      answer     "too-long-cname-chain-six.cname.recursor.engine.xa.     3600 IN CNAME too-long-cname-chain-seven.cname.recursor.engine.xa."
      answer     "too-long-cname-chain-seven.cname.recursor.engine.xa.   3600 IN CNAME too-long-cname-chain-eight.cname.recursor.engine.xa."
      answer     "too-long-cname-chain-eight.cname.recursor.engine.xa.   3600 IN CNAME too-long-cname-chain-nine.cname.recursor.engine.xa."
      answer     "too-long-cname-chain-nine.cname.recursor.engine.xa.    3600 IN CNAME too-long-cname-chain-ten.cname.recursor.engine.xa."
      answer     "too-long-cname-chain-ten.cname.recursor.engine.xa.     3600 IN CNAME too-long-cname-chain-target.cname.recursor.engine.xa."
      answer     "too-long-cname-chain-target.cname.recursor.engine.xa.  3600 IN A     127.0.0.1"
      authority  "cname.recursor.engine.xa.                              3600 IN NS    ns1.cname.recursor.engine.xa."
   }

   # For scenario TARGET-NO-MATCH-CNAME
   template IN A target-no-match-cname.cname.recursor.engine.xa {
      answer     "target-no-match-cname.cname.recursor.engine.xa.        3600 IN CNAME target-no-match-cname-two.cname.recursor.engine.xa."
      answer     "target-no-match-cname-target.cname.recursor.engine.xa. 3600 IN A     127.0.0.1"
      authority  "cname.recursor.engine.xa.                              3600 IN NS    ns1.cname.recursor.engine.xa."
   }

   # For scenario BROKEN-CNAME-CHAIN
   template IN A broken-cname-chain.cname.recursor.engine.xa {
      answer     "broken-cname-chain.cname.recursor.engine.xa.         3600 IN CNAME broken-cname-chain-two.cname.recursor.engine.xa."
      answer     "broken-cname-chain-three.cname.recursor.engine.xa.   3600 IN CNAME broken-cname-chain-target.cname.recursor.engine.xa."
      #answer     "broken-cname-chain-target.cname.recursor.engine.xa.  3600 IN A     127.0.0.1" # Taken from the zone
      authority  "cname.recursor.engine.xa.                            3600 IN NS    ns1.cname.recursor.engine.xa."
   }

   # For scenario WRONG-CNAME-OWNER-NAME
   template IN A wrong-cname-owner-name.cname.recursor.engine.xa {
      answer     "wrong-cname-owner-name-1.cname.recursor.engine.xa.        3600 IN CNAME wrong-cname-owner-name-target.cname.recursor.engine.xa."
      #answer     "wrong-cname-owner-name-target.cname.recursor.engine.xa.   3600 IN A     127.0.0.1" # Taken from the zone
      authority  "cname.recursor.engine.xa.                                 3600 IN NS    ns1.cname.recursor.engine.xa."
  }

   # For scenario EXTRA-CNAME-IN-ANSWER
   template IN A extra-cname-in-answer.cname.recursor.engine.xa {
      answer     "extra-cname-in-answer.cname.recursor.engine.xa.           3600 IN A     127.0.0.1"
      answer     "extra-cname-in-answer-1.cname.recursor.engine.xa.         3600 IN CNAME extra-cname-in-answer-2.cname.recursor.engine.xa."
      authority  "cname.recursor.engine.xa.                                 3600 IN NS    ns1.cname.recursor.engine.xa."
   }
}

# ns1 sub2.cname.recursor.engine.xa
sub2.cname.recursor.engine.xa:53 {
   bind 127.30.1.32
   bind fda1:b2:c3:0:127:30:1:32
   log
   file Engine/Recursor-PM/sub2.cname.recursor.engine.xa sub2.cname.recursor.engine.xa.
}

# ns1 sub3.cname.recursor.engine.xa
sub3.cname.recursor.engine.xa:53 {
   bind 127.30.1.33
   bind fda1:b2:c3:0:127:30:1:33
   log
   file Engine/Recursor-PM/sub3.cname.recursor.engine.xa sub3.cname.recursor.engine.xa.
}

# ns1 goodsub.ns1 cname.recursor.engine.xa
goodsub.cname.recursor.engine.xa:53 {
   bind 127.30.1.34
   bind fda1:b2:c3:0:127:30:1:34
   log
   file Engine/Recursor-PM/goodsub.cname.recursor.engine.xa goodsub.cname.recursor.engine.xa.
}

