]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Change the EDNS KEY-TAG YAML output format
authorMark Andrews <marka@isc.org>
Tue, 29 Oct 2024 05:01:58 +0000 (16:01 +1100)
committerMark Andrews <marka@isc.org>
Mon, 21 Apr 2025 23:24:18 +0000 (09:24 +1000)
When using YAML, print the EDNS KEY-TAG as an array of integers
for easier machine parsing. Check the validity of the YAML output.

bin/tests/system/digdelv/tests.sh
lib/dns/message.c

index 65bf8f50f8923252f8034a4803827195ce8455b8..249c9989d483f221ed71f91fe4aabe5fe93091ba 100644 (file)
@@ -645,6 +645,18 @@ if [ -x "$DIG" ]; then
   if [ $ret -ne 0 ]; then echo_i "failed"; fi
   status=$((status + ret))
 
+  if [ $HAS_PYYAML -ne 0 ]; then
+    n=$((n + 1))
+    ret=0
+    echo_i "check that dig processes +ednsopt=key-tag:<value-list> +yaml ($n)"
+    dig_with_opts @10.53.0.3 +yaml +ednsopt=key-tag:00010002 a.example +qr >dig.out.test$n 2>&1 || ret=1
+    $PYTHON yamlget.py dig.out.test$n 0 message query_message_data OPT_PSEUDOSECTION EDNS KEY-TAG >yamlget.out.test$n 2>&1 || ret=1
+    read -r value <yamlget.out.test$n
+    [ "$value" = "[1, 2]" ] || ret=1
+    if [ $ret -ne 0 ]; then echo_i "failed"; fi
+    status=$((status + ret))
+  fi
+
   n=$((n + 1))
   echo_i "check that dig processes +ednsopt=key-tag:<malformed-value-list> and FORMERR is returned ($n)"
   ret=0
index 0f046f78bead7f5f2d95d974c179498e6d1b3274..8673dc71211b12d6a53908a9e6743fe8c1189fcd 100644 (file)
@@ -3809,7 +3809,7 @@ dns_message_pseudosectiontoyaml(dns_message_t *msg, dns_pseudosection_t section,
                                break;
                        case DNS_OPT_KEY_TAG:
                                if (optlen > 0U && (optlen % 2U) == 0U) {
-                                       const char *sep = "";
+                                       const char *sep = " [";
                                        while (optlen > 0U) {
                                                uint16_t id =
                                                        isc_buffer_getuint16(
@@ -3820,7 +3820,7 @@ dns_message_pseudosectiontoyaml(dns_message_t *msg, dns_pseudosection_t section,
                                                sep = ",";
                                                optlen -= 2;
                                        }
-                                       ADD_STRING(target, "\n");
+                                       ADD_STRING(target, " ]\n");
                                        continue;
                                }
                                break;