]> 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 13:32:04 +0000 (15:32 +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.

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

index 215c83aba333b4a228b50fe45f5e2bc6d61f79e8..734ace772839f5cbbb012e13c555e7d4e385c18e 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,
@@ -227,7 +227,7 @@ typedef enum isc_result {
        DNS_R_NOALPN,
        DNS_R_NODOHPATH,
 
-       DST_R_UNSUPPORTEDALG = 2 << 16,
+       DST_R_UNSUPPORTEDALG,
        DST_R_CRYPTOFAILURE,
        /* compat */
        DST_R_OPENSSLFAILURE = DST_R_CRYPTOFAILURE,
@@ -248,7 +248,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,
@@ -265,15 +265,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 ac55e0bd46f4cfbed3e9539cdfd0c2748ee77bde..99e0be7d389c44e37f634b30eb07db681bd1edbb 100644 (file)
@@ -262,6 +262,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",
@@ -512,6 +513,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",