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 a8e6c3b8f7)
This commit is contained in:
Ondřej Surý
2023-06-15 10:24:21 +02:00
parent a29de517fa
commit be0f38553e
2 changed files with 8 additions and 5 deletions

View 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;

View 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",