diff --git a/bin/dig/dighost.c b/bin/dig/dighost.c index e9696ab1d2..05693cdfe2 100644 --- a/bin/dig/dighost.c +++ b/bin/dig/dighost.c @@ -1363,6 +1363,7 @@ typedef struct dig_ednsoptname { dig_ednsoptname_t optnames[] = { { 1, "LLQ" }, /* draft-sekar-dns-llq */ + { 2, "UPDATE-LEASE" }, /* draft-ietf-dnssd-update-lease */ { 2, "UL" }, /* draft-ietf-dnssd-update-lease */ { 3, "NSID" }, /* RFC 5001 */ { 5, "DAU" }, /* RFC 6975 */ diff --git a/bin/tests/system/digdelv/tests.sh b/bin/tests/system/digdelv/tests.sh index 55de3f12a5..207e407c5a 100644 --- a/bin/tests/system/digdelv/tests.sh +++ b/bin/tests/system/digdelv/tests.sh @@ -562,24 +562,50 @@ if [ -x "$DIG" ]; then status=$((status + ret)) n=$((n + 1)) - echo_i "checking ednsopt UL prints as expected (single lease) ($n)" + echo_i "checking ednsopt UPDATE-LEASE prints as expected (single lease) ($n)" ret=0 - dig_with_opts @10.53.0.3 +ednsopt=UL:00000e10 +qr a.example >dig.out.test$n 2>&1 || ret=1 - pat='UL: 3600 (1 hour)' + dig_with_opts @10.53.0.3 +ednsopt=UPDATE-LEASE:00000e10 +qr a.example >dig.out.test$n 2>&1 || ret=1 + pat='UPDATE-LEASE: 3600 (1 hour)' grep "$pat" dig.out.test$n >/dev/null || ret=1 if [ $ret -ne 0 ]; then echo_i "failed"; fi status=$((status + ret)) n=$((n + 1)) + if [ $HAS_PYYAML -ne 0 ]; then + n=$((n + 1)) + echo_i "checking ednsopt UPDATE-LEASE prints as expected (single lease) +yaml ($n)" + ret=0 + dig_with_opts @10.53.0.3 +yaml +ednsopt=UPDATE-LEASE:00000e10 +qr a.example >dig.out.test$n 2>&1 || ret=1 + $PYTHON yamlget.py dig.out.test$n 0 message query_message_data OPT_PSEUDOSECTION EDNS UPDATE-LEASE LEASE >yamlget.out.test$n 2>&1 || ret=1 + read -r value dig.out.test$n 2>&1 || ret=1 - pat='UL: 3600/1209600 (1 hour/2 weeks)' + dig_with_opts @10.53.0.3 +ednsopt=UPDATE-LEASE:00000e1000127500 +qr a.example >dig.out.test$n 2>&1 || ret=1 + pat='UPDATE-LEASE: 3600/1209600 (1 hour/2 weeks)' grep "$pat" dig.out.test$n >/dev/null || ret=1 if [ $ret -ne 0 ]; then echo_i "failed"; fi status=$((status + ret)) - n=$((n + 1)) + + if [ $HAS_PYYAML -ne 0 ]; then + n=$((n + 1)) + echo_i "checking ednsopt UPDATE-LEASE prints as expected (split lease) +yaml ($n)" + ret=0 + dig_with_opts @10.53.0.3 +yaml +ednsopt=UPDATE-LEASE:00000e1000127500 +qr a.example >dig.out.test$n 2>&1 || ret=1 + $PYTHON yamlget.py dig.out.test$n 0 message query_message_data OPT_PSEUDOSECTION EDNS UPDATE-LEASE LEASE >yamlget.out.test$n 2>&1 || ret=1 + read -r value yamlget.out.test$n 2>&1 || ret=1 + read -r value indent.count++; + secs = isc_buffer_getuint32(&optbuf); + ADD_STRING(target, "\n"); + INDENT(style); + ADD_STRING(target, "LEASE:"); snprintf(buf, sizeof(buf), " %u", secs); ADD_STRING(target, buf); - if (optlen == 8U) { - key = isc_buffer_getuint32( - &optbuf); - snprintf(buf, sizeof(buf), - "/%u", key); - ADD_STRING(target, buf); - } + ADD_STRING(target, " ("); result = dns_ttl_totext(secs, true, true, target); if (result != ISC_R_SUCCESS) { goto cleanup; } + ADD_STRING(target, ")"); + if (optlen == 8U) { - ADD_STRING(target, "/"); + key = isc_buffer_getuint32( + &optbuf); + ADD_STRING(target, "\n"); + INDENT(style); + ADD_STRING(target, + "KEY-LEASE:"); + snprintf(buf, sizeof(buf), + " %u", key); + ADD_STRING(target, buf); + + ADD_STRING(target, " ("); result = dns_ttl_totext( key, true, true, target); if (result != ISC_R_SUCCESS) { goto cleanup; } + ADD_STRING(target, ")"); } - ADD_STRING(target, ")\n"); + ADD_STRING(target, "\n"); continue; } break;