From be0f38553ef6037fe71eb896537060791e2f5b7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Thu, 15 Jun 2023 10:24:21 +0200 Subject: [PATCH] Make isc_result tables smaller 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 | 11 ++++++----- lib/isc/result.c | 2 ++ 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/isc/include/isc/result.h b/lib/isc/include/isc/result.h index 5d5195b38f..14146986f0 100644 --- a/lib/isc/include/isc/result.h +++ b/lib/isc/include/isc/result.h @@ -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; diff --git a/lib/isc/result.c b/lib/isc/result.c index f01df3e817..b8a0c0da43 100644 --- a/lib/isc/result.c +++ b/lib/isc/result.c @@ -260,6 +260,7 @@ static const char *description[ISC_R_NRESULTS] = { [DNS_R_RCODE14] = "", [DNS_R_RCODE15] = "", [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",