]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Make isc_result tables smaller
authorOndřej Surý <ondrej@isc.org>
Thu, 15 Jun 2023 08:24:21 +0000 (10:24 +0200)
committerOndřej Surý <ondrej@isc.org>
Thu, 15 Jun 2023 14:27:17 +0000 (16:27 +0200)
The isc_result_t enum was to sparse when each library code would skip to
next << 16 as a base.  Remove the huge holes in the isc_result_t enum to
make the isc_result tables more compact.

This change required a rewrite how we map dns_rcode_t to isc_result_t
and back, so we don't ever return neither isc_result_t value nor
dns_rcode_t out of defined range.

(cherry picked from commit a8e6c3b8f7b919075cae6db1d9835318c0350fc3)

lib/isc/include/isc/result.h
lib/isc/result.c

index 5d5195b38f9103f40e67368de54e2ef0e0c373af..14146986f06ec9291a6f7c5a997bb43f59b3902b 100644 (file)
@@ -97,7 +97,7 @@ typedef enum isc_result {
        ISC_R_DOTALPNERROR,   /*%< ALPN for DoT failed */
        ISC_R_INVALIDPROTO,   /*%< invalid protocol */
 
-       DNS_R_LABELTOOLONG = 1 << 16,
+       DNS_R_LABELTOOLONG,
        DNS_R_BADESCAPE,
        DNS_R_EMPTYLABEL,
        DNS_R_BADDOTTEDQUAD,
@@ -225,7 +225,7 @@ typedef enum isc_result {
        DNS_R_INCONSISTENTRR,
        DNS_R_NOALPN,
 
-       DST_R_UNSUPPORTEDALG = 2 << 16,
+       DST_R_UNSUPPORTEDALG,
        DST_R_CRYPTOFAILURE,
        /* compat */
        DST_R_OPENSSLFAILURE = DST_R_CRYPTOFAILURE,
@@ -246,7 +246,7 @@ typedef enum isc_result {
        DST_R_NOENGINE,
        DST_R_EXTERNALKEY,
 
-       DNS_R_NOERROR = 3 << 16,
+       DNS_R_NOERROR,
        DNS_R_FORMERR,
        DNS_R_SERVFAIL,
        DNS_R_NXDOMAIN,
@@ -263,15 +263,16 @@ typedef enum isc_result {
        DNS_R_RCODE14,
        DNS_R_RCODE15,
        DNS_R_BADVERS,
+       DNS_R_BADCOOKIE = DNS_R_NOERROR + 23,
 
-       ISCCC_R_UNKNOWNVERSION = 5 << 16,
+       ISCCC_R_UNKNOWNVERSION,
        ISCCC_R_SYNTAX,
        ISCCC_R_BADAUTH,
        ISCCC_R_EXPIRED,
        ISCCC_R_CLOCKSKEW,
        ISCCC_R_DUPLICATE,
 
-       ISC_R_NRESULTS = ISCCC_R_DUPLICATE + 1, /*% The number of results. */
+       ISC_R_NRESULTS, /*% The number of results. */
        ISC_R_MAKE_ENUM_32BIT = INT32_MAX,
 } isc_result_t;
 
index f01df3e81721a45cb6456cc212c4b2e522fd5644..b8a0c0da435c56585b3c92b7c20577a74cf79c0a 100644 (file)
@@ -260,6 +260,7 @@ static const char *description[ISC_R_NRESULTS] = {
        [DNS_R_RCODE14] = "<rcode 14>",
        [DNS_R_RCODE15] = "<rcode 15>",
        [DNS_R_BADVERS] = "BADVERS",
+       [DNS_R_BADCOOKIE] = "BADCOOKIE",
 
        [ISCCC_R_UNKNOWNVERSION] = "unknown version",
        [ISCCC_R_SYNTAX] = "syntax error",
@@ -508,6 +509,7 @@ static const char *identifier[ISC_R_NRESULTS] = {
        [DNS_R_RCODE14] = "DNS_R_RCODE14",
        [DNS_R_RCODE15] = "DNS_R_RCODE15",
        [DNS_R_BADVERS] = "DNS_R_BADVERS",
+       [DNS_R_BADCOOKIE] = "DNS_R_BADCOOKIE",
 
        [ISCCC_R_UNKNOWNVERSION] = "ISCCC_R_UNKNOWNVERSION",
        [ISCCC_R_SYNTAX] = "ISCCC_R_SYNTAX",