@ SOA ns hostmaster 2011012708 3600 1200 604800 1200
NS ns
ns A 192.0.2.1
-bad ATMRELAY 0 0 0
+bad AMTRELAY 0 0 0 .
bad CNAME @
aaaa02.example. 3600 IN AAAA fd92:7065:b8e:ffff::5
afsdb01.example. 3600 IN AFSDB 0 hostname.example.
afsdb02.example. 3600 IN AFSDB 65535 .
-amtrelay01.example. 3600 IN AMTRELAY 0 0 0
-amtrelay02.example. 3600 IN AMTRELAY 0 1 0
+amtrelay01.example. 3600 IN AMTRELAY 0 0 0 .
+amtrelay02.example. 3600 IN AMTRELAY 0 1 0 .
amtrelay03.example. 3600 IN AMTRELAY 0 0 1 0.0.0.0
amtrelay04.example. 3600 IN AMTRELAY 0 0 2 ::
amtrelay05.example. 3600 IN AMTRELAY 0 0 3 example.net.
aaaa02.example8. 3600 IN AAAA fd92:7065:b8e:ffff::5
afsdb01.example8. 3600 IN AFSDB 0 hostname.example8.
afsdb02.example8. 3600 IN AFSDB 65535 .
-amtrelay01.example8. 3600 IN AMTRELAY 0 0 0
-amtrelay02.example8. 3600 IN AMTRELAY 0 1 0
+amtrelay01.example8. 3600 IN AMTRELAY 0 0 0 .
+amtrelay02.example8. 3600 IN AMTRELAY 0 1 0 .
amtrelay03.example8. 3600 IN AMTRELAY 0 0 1 0.0.0.0
amtrelay04.example8. 3600 IN AMTRELAY 0 0 2 ::
amtrelay05.example8. 3600 IN AMTRELAY 0 0 3 example.net.
doa02 DOA 0 1 2 "" aHR0cHM6Ly93d3cuaXNjLm9yZy8=
; type 260
-amtrelay01 AMTRELAY 0 0 0
-amtrelay02 AMTRELAY 0 1 0
+amtrelay01 AMTRELAY 0 0 0 .
+amtrelay02 AMTRELAY 0 1 0 .
amtrelay03 AMTRELAY 0 0 1 0.0.0.0
amtrelay04 AMTRELAY 0 0 2 ::
amtrelay05 AMTRELAY 0 0 3 example.net.
aaaa02.example. 3600 IN AAAA fd92:7065:b8e:ffff::5
afsdb01.example. 3600 IN AFSDB 0 hostname.example.
afsdb02.example. 3600 IN AFSDB 65535 .
-amtrelay01.example. 3600 IN AMTRELAY 0 0 0
-amtrelay02.example. 3600 IN AMTRELAY 0 1 0
+amtrelay01.example. 3600 IN AMTRELAY 0 0 0 .
+amtrelay02.example. 3600 IN AMTRELAY 0 1 0 .
amtrelay03.example. 3600 IN AMTRELAY 0 0 1 0.0.0.0
amtrelay04.example. 3600 IN AMTRELAY 0 0 2 ::
amtrelay05.example. 3600 IN AMTRELAY 0 0 3 example.net.
aaaa02.example. 3600 IN AAAA fd92:7065:b8e:ffff::5
afsdb01.example. 3600 IN AFSDB 0 hostname.example.
afsdb02.example. 3600 IN AFSDB 65535 .
-amtrelay01.example. 3600 IN AMTRELAY 0 0 0
-amtrelay02.example. 3600 IN AMTRELAY 0 1 0
+amtrelay01.example. 3600 IN AMTRELAY 0 0 0 .
+amtrelay02.example. 3600 IN AMTRELAY 0 1 0 .
amtrelay03.example. 3600 IN AMTRELAY 0 0 1 0.0.0.1
amtrelay04.example. 3600 IN AMTRELAY 0 0 2 ::
amtrelay05.example. 3600 IN AMTRELAY 0 0 3 example.net.
RETERR(uint8_tobuffer(token.value.as_ulong | (discovery << 7), target));
gateway = token.value.as_ulong;
- if (gateway == 0) {
- return ISC_R_SUCCESS;
- }
-
- if (gateway > 3) {
- return ISC_R_NOTIMPLEMENTED;
- }
-
/*
- * Gateway.
+ * Gateway (must exist).
*/
RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string,
false));
+ if (gateway > 3) {
+ return ISC_R_NOTIMPLEMENTED;
+ }
+
switch (gateway) {
+ case 0:
+ if (strcmp(DNS_AS_STR(token), ".") != 0) {
+ RETTOK(DNS_R_SYNTAX);
+ }
+ return ISC_R_SUCCESS;
case 1:
if (inet_pton(AF_INET, DNS_AS_STR(token), &addr) != 1) {
RETTOK(DNS_R_BADDOTTEDQUAD);
unsigned char precedence;
unsigned char discovery;
unsigned char gateway;
- const char *space;
UNUSED(tctx);
gateway = uint8_fromregion(®ion);
discovery = gateway >> 7;
gateway &= 0x7f;
- space = (gateway != 0U) ? " " : "";
isc_region_consume(®ion, 1);
- snprintf(buf, sizeof(buf), "%u %u%s", discovery, gateway, space);
+ snprintf(buf, sizeof(buf), "%u %u ", discovery, gateway);
RETERR(str_totext(buf, target));
/*
*/
switch (gateway) {
case 0:
- break;
+ return str_totext(".", target);
+
case 1:
return inet_totext(AF_INET, tctx->flags, ®ion, target);
ISC_RUN_TEST_IMPL(amtrelay) {
text_ok_t text_ok[] = {
TEXT_INVALID(""), TEXT_INVALID("0"), TEXT_INVALID("0 0"),
+ TEXT_INVALID("0 0 0"),
/* gateway type 0 */
- TEXT_VALID("0 0 0"), TEXT_VALID("0 1 0"),
- TEXT_INVALID("0 2 0"), /* discovery out of range */
- TEXT_VALID("255 1 0"), /* max precedence */
- TEXT_INVALID("256 1 0"), /* precedence out of range */
+ TEXT_INVALID("0 0 0 x"), /* bad placeholder */
+ TEXT_VALID("0 0 0 ."), TEXT_VALID("0 1 0 ."),
+ TEXT_INVALID("0 2 0 ."), /* discovery out of range */
+ TEXT_VALID("255 1 0 ."), /* max precedence */
+ TEXT_INVALID("256 1 0 ."), /* precedence out of range */
/* IPv4 gateway */
TEXT_INVALID("0 0 1"), /* no address */