]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Collapse common switch cases when emitting EDNS options
authorMark Andrews <marka@isc.org>
Tue, 29 Oct 2024 23:41:21 +0000 (10:41 +1100)
committerMark Andrews <marka@isc.org>
Mon, 21 Apr 2025 23:23:53 +0000 (09:23 +1000)
The CHAIN and REPORT-CHANNEL EDNS options are both domain names, so they
can be combined.  THE CLIENT-TAG and SERVER-TAG EDNS options are both 16
bit integers, so they can be combined.

lib/dns/message.c

index dd9921eb95c27e5e2c9e1a0c30374eae2db09eb0..3c80e45c55179dd2d44f8fccdf938dad09649c91 100644 (file)
@@ -3766,6 +3766,7 @@ dns_message_pseudosectiontoyaml(dns_message_t *msg, dns_pseudosection_t section,
                                }
                                break;
                        case DNS_OPT_CHAIN:
+                       case DNS_OPT_REPORT_CHANNEL:
                                if (optlen > 0U) {
                                        isc_buffer_t sb = optbuf;
                                        isc_buffer_setactive(&optbuf, optlen);
@@ -3822,14 +3823,6 @@ dns_message_pseudosectiontoyaml(dns_message_t *msg, dns_pseudosection_t section,
                                }
                                break;
                        case DNS_OPT_CLIENT_TAG:
-                               if (optlen == 2U) {
-                                       uint16_t id =
-                                               isc_buffer_getuint16(&optbuf);
-                                       snprintf(buf, sizeof(buf), " %u\n", id);
-                                       ADD_STRING(target, buf);
-                                       continue;
-                               }
-                               break;
                        case DNS_OPT_SERVER_TAG:
                                if (optlen == 2U) {
                                        uint16_t id =
@@ -3839,19 +3832,6 @@ dns_message_pseudosectiontoyaml(dns_message_t *msg, dns_pseudosection_t section,
                                        continue;
                                }
                                break;
-                       case DNS_OPT_REPORT_CHANNEL:
-                               if (optlen > 0U) {
-                                       isc_buffer_t sb = optbuf;
-                                       isc_buffer_setactive(&optbuf, optlen);
-                                       result = render_nameopt(&optbuf,
-                                                               target);
-                                       if (result == ISC_R_SUCCESS) {
-                                               ADD_STRING(target, "\n");
-                                               continue;
-                                       }
-                                       optbuf = sb;
-                               }
-                               break;
                        case DNS_OPT_ZONEVERSION:
                                if (optlen >= 2U) {
                                        isc_buffer_t zonebuf = optbuf;
@@ -4195,6 +4175,7 @@ dns_message_pseudosectiontotext(dns_message_t *msg, dns_pseudosection_t section,
                                ADD_STRING(target, "\n");
                                continue;
                        case DNS_OPT_CHAIN:
+                       case DNS_OPT_REPORT_CHANNEL:
                                if (optlen > 0U) {
                                        isc_buffer_t sb = optbuf;
                                        isc_buffer_setactive(&optbuf, optlen);
@@ -4255,14 +4236,6 @@ dns_message_pseudosectiontotext(dns_message_t *msg, dns_pseudosection_t section,
                                }
                                break;
                        case DNS_OPT_CLIENT_TAG:
-                               if (optlen == 2U) {
-                                       uint16_t id =
-                                               isc_buffer_getuint16(&optbuf);
-                                       snprintf(buf, sizeof(buf), " %u\n", id);
-                                       ADD_STRING(target, buf);
-                                       continue;
-                               }
-                               break;
                        case DNS_OPT_SERVER_TAG:
                                if (optlen == 2U) {
                                        uint16_t id =
@@ -4272,19 +4245,6 @@ dns_message_pseudosectiontotext(dns_message_t *msg, dns_pseudosection_t section,
                                        continue;
                                }
                                break;
-                       case DNS_OPT_REPORT_CHANNEL:
-                               if (optlen > 0U) {
-                                       isc_buffer_t sb = optbuf;
-                                       isc_buffer_setactive(&optbuf, optlen);
-                                       result = render_nameopt(&optbuf,
-                                                               target);
-                                       if (result == ISC_R_SUCCESS) {
-                                               ADD_STRING(target, "\n");
-                                               continue;
-                                       }
-                                       optbuf = sb;
-                               }
-                               break;
                        case DNS_OPT_ZONEVERSION:
                                if (optlen >= 2U) {
                                        isc_buffer_t zonebuf = optbuf;