Home | History | Annotate | Line # | Download | only in isc
      1 /*	$NetBSD: result.h,v 1.15 2026/06/19 20:10:02 christos Exp $	*/
      2 
      3 /*
      4  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
      5  *
      6  * SPDX-License-Identifier: MPL-2.0
      7  *
      8  * This Source Code Form is subject to the terms of the Mozilla Public
      9  * License, v. 2.0. If a copy of the MPL was not distributed with this
     10  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
     11  *
     12  * See the COPYRIGHT file distributed with this work for additional
     13  * information regarding copyright ownership.
     14  */
     15 
     16 #pragma once
     17 
     18 /*! \file isc/result.h */
     19 
     20 #include <inttypes.h>
     21 
     22 #include <isc/lang.h>
     23 
     24 typedef enum isc_result {
     25 	ISC_R_SUCCESS,		      /*%< success */
     26 	ISC_R_NOMEMORY,		      /*%< out of memory */
     27 	ISC_R_TIMEDOUT,		      /*%< timed out */
     28 	ISC_R_NOTHREADS,	      /*%< no available threads */
     29 	ISC_R_ADDRNOTAVAIL,	      /*%< address not available */
     30 	ISC_R_ADDRINUSE,	      /*%< address in use */
     31 	ISC_R_NOPERM,		      /*%< permission denied */
     32 	ISC_R_NOCONN,		      /*%< no pending connections */
     33 	ISC_R_NETUNREACH,	      /*%< network unreachable */
     34 	ISC_R_HOSTUNREACH,	      /*%< host unreachable */
     35 	ISC_R_NETDOWN,		      /*%< network down */
     36 	ISC_R_HOSTDOWN,		      /*%< host down */
     37 	ISC_R_CONNREFUSED,	      /*%< connection refused */
     38 	ISC_R_NORESOURCES,	      /*%< not enough free resources */
     39 	ISC_R_EOF,		      /*%< end of file */
     40 	ISC_R_BOUND,		      /*%< socket already bound */
     41 	ISC_R_RELOAD,		      /*%< reload */
     42 	ISC_R_SUSPEND = ISC_R_RELOAD, /*%< alias of 'reload' */
     43 	ISC_R_LOCKBUSY,		      /*%< lock busy */
     44 	ISC_R_EXISTS,		      /*%< already exists */
     45 	ISC_R_NOSPACE,		      /*%< ran out of space */
     46 	ISC_R_CANCELED,		      /*%< operation canceled */
     47 	ISC_R_NOTBOUND,		      /*%< socket is not bound */
     48 	ISC_R_SHUTTINGDOWN,	      /*%< shutting down */
     49 	ISC_R_NOTFOUND,		      /*%< not found */
     50 	ISC_R_UNEXPECTEDEND,	      /*%< unexpected end of input */
     51 	ISC_R_FAILURE,		      /*%< generic failure */
     52 	ISC_R_IOERROR,		      /*%< I/O error */
     53 	ISC_R_NOTIMPLEMENTED,	      /*%< not implemented */
     54 	ISC_R_UNBALANCED,	      /*%< unbalanced parentheses */
     55 	ISC_R_NOMORE,		      /*%< no more */
     56 	ISC_R_INVALIDFILE,	      /*%< invalid file */
     57 	ISC_R_BADBASE64,	      /*%< bad base64 encoding */
     58 	ISC_R_UNEXPECTEDTOKEN,	      /*%< unexpected token */
     59 	ISC_R_QUOTA,		      /*%< quota reached */
     60 	ISC_R_UNEXPECTED,	      /*%< unexpected error */
     61 	ISC_R_ALREADYRUNNING,	      /*%< already running */
     62 	ISC_R_IGNORE,		      /*%< ignore */
     63 	ISC_R_MASKNONCONTIG,	      /*%< addr mask not contiguous */
     64 	ISC_R_FILENOTFOUND,	      /*%< file not found */
     65 	ISC_R_FILEEXISTS,	      /*%< file already exists */
     66 	ISC_R_NOTCONNECTED,	      /*%< socket is not connected */
     67 	ISC_R_RANGE,		      /*%< out of range */
     68 	ISC_R_NOENTROPY,	      /*%< out of entropy */
     69 	ISC_R_MULTICAST,	      /*%< invalid use of multicast */
     70 	ISC_R_NOTFILE,		      /*%< not a file */
     71 	ISC_R_NOTDIRECTORY,	      /*%< not a directory */
     72 	ISC_R_EMPTY,		      /*%< queue is empty */
     73 	ISC_R_FAMILYMISMATCH,	      /*%< address family mismatch */
     74 	ISC_R_FAMILYNOSUPPORT,	      /*%< AF not supported */
     75 	ISC_R_BADHEX,		      /*%< bad hex encoding */
     76 	ISC_R_TOOMANYOPENFILES,	      /*%< too many open files */
     77 	ISC_R_NOTBLOCKING,	      /*%< not blocking */
     78 	ISC_R_UNBALANCEDQUOTES,	      /*%< unbalanced quotes */
     79 	ISC_R_INPROGRESS,	      /*%< operation in progress */
     80 	ISC_R_CONNECTIONRESET,	      /*%< connection reset */
     81 	ISC_R_SOFTQUOTA,	      /*%< soft quota reached */
     82 	ISC_R_BADNUMBER,	      /*%< not a valid number */
     83 	ISC_R_DISABLED,		      /*%< disabled */
     84 	ISC_R_MAXSIZE,		      /*%< max size */
     85 	ISC_R_BADADDRESSFORM,	      /*%< invalid address format */
     86 	ISC_R_BADBASE32,	      /*%< bad base32 encoding */
     87 	ISC_R_UNSET,		      /*%< unset */
     88 	ISC_R_MULTIPLE,		      /*%< multiple */
     89 	ISC_R_WOULDBLOCK,	      /*%< would block */
     90 	ISC_R_COMPLETE,		      /*%< complete */
     91 	ISC_R_CRYPTOFAILURE,	      /*%< cryptography library failure */
     92 	ISC_R_DISCQUOTA,	      /*%< disc quota */
     93 	ISC_R_DISCFULL,		      /*%< disc full */
     94 	ISC_R_DEFAULT,		      /*%< default */
     95 	ISC_R_IPV4PREFIX,	      /*%< IPv4 prefix */
     96 	ISC_R_TLSERROR,		      /*%< TLS error */
     97 	ISC_R_TLSBADPEERCERT, /*%< TLS peer certificate verification failed */
     98 	ISC_R_HTTP2ALPNERROR, /*%< ALPN for HTTP/2 failed */
     99 	ISC_R_DOTALPNERROR,   /*%< ALPN for DoT failed */
    100 	ISC_R_INVALIDPROTO,   /*%< invalid protocol */
    101 	ISC_R_DEADLOCK,	      /*%< deadlock found */
    102 
    103 	DNS_R_LABELTOOLONG,
    104 	DNS_R_BADESCAPE,
    105 	DNS_R_EMPTYLABEL,
    106 	DNS_R_BADDOTTEDQUAD,
    107 	DNS_R_INVALIDNS,
    108 	DNS_R_UNKNOWN,
    109 	DNS_R_BADLABELTYPE,
    110 	DNS_R_BADPOINTER,
    111 	DNS_R_TOOMANYHOPS,
    112 	DNS_R_DISALLOWED,
    113 	DNS_R_EXTRATOKEN,
    114 	DNS_R_EXTRADATA,
    115 	DNS_R_TEXTTOOLONG,
    116 	DNS_R_NOTZONETOP,
    117 	DNS_R_SYNTAX,
    118 	DNS_R_BADCKSUM,
    119 	DNS_R_BADAAAA,
    120 	DNS_R_NOOWNER,
    121 	DNS_R_NOTTL,
    122 	DNS_R_BADCLASS,
    123 	DNS_R_NAMETOOLONG,
    124 	DNS_R_PARTIALMATCH,
    125 	DNS_R_NEWORIGIN,
    126 	DNS_R_UNCHANGED,
    127 	DNS_R_BADTTL,
    128 	DNS_R_NOREDATA,
    129 	DNS_R_CONTINUE,
    130 	DNS_R_DELEGATION,
    131 	DNS_R_GLUE,
    132 	DNS_R_DNAME,
    133 	DNS_R_CNAME,
    134 	DNS_R_BADDB,
    135 	DNS_R_ZONECUT,
    136 	DNS_R_BADZONE,
    137 	DNS_R_MOREDATA,
    138 	DNS_R_UPTODATE,
    139 	DNS_R_TSIGVERIFYFAILURE,
    140 	DNS_R_TSIGERRORSET,
    141 	DNS_R_SIGINVALID,
    142 	DNS_R_SIGEXPIRED,
    143 	DNS_R_SIGFUTURE,
    144 	DNS_R_KEYUNAUTHORIZED,
    145 	DNS_R_INVALIDTIME,
    146 	DNS_R_EXPECTEDTSIG,
    147 	DNS_R_UNEXPECTEDTSIG,
    148 	DNS_R_INVALIDTKEY,
    149 	DNS_R_HINT,
    150 	DNS_R_DROP,
    151 	DNS_R_NOTLOADED,
    152 	DNS_R_NCACHENXDOMAIN,
    153 	DNS_R_NCACHENXRRSET,
    154 	DNS_R_WAIT,
    155 	DNS_R_NOTVERIFIEDYET,
    156 	DNS_R_NOIDENTITY,
    157 	DNS_R_NOJOURNAL,
    158 	DNS_R_ALIAS,
    159 	DNS_R_USETCP,
    160 	DNS_R_NOVALIDSIG,
    161 	DNS_R_NOVALIDNSEC,
    162 	DNS_R_NOTINSECURE,
    163 	DNS_R_UNKNOWNSERVICE,
    164 	DNS_R_RECOVERABLE,
    165 	DNS_R_UNKNOWNOPT,
    166 	DNS_R_UNEXPECTEDID,
    167 	DNS_R_SEENINCLUDE,
    168 	DNS_R_NOTEXACT,
    169 	DNS_R_BLACKHOLED,
    170 	DNS_R_BADALG,
    171 	DNS_R_METATYPE,
    172 	DNS_R_CNAMEANDOTHER,
    173 	DNS_R_SINGLETON,
    174 	DNS_R_HINTNXRRSET,
    175 	DNS_R_NOMASTERFILE,
    176 	DNS_R_UNKNOWNPROTO,
    177 	DNS_R_CLOCKSKEW,
    178 	DNS_R_BADIXFR,
    179 	DNS_R_NOTAUTHORITATIVE,
    180 	DNS_R_NOVALIDKEY,
    181 	DNS_R_OBSOLETE,
    182 	DNS_R_FROZEN,
    183 	DNS_R_UNKNOWNFLAG,
    184 	DNS_R_EXPECTEDRESPONSE,
    185 	DNS_R_NOVALIDDS,
    186 	DNS_R_NSISADDRESS,
    187 	DNS_R_REMOTEFORMERR,
    188 	DNS_R_TRUNCATEDTCP,
    189 	DNS_R_LAME,
    190 	DNS_R_UNEXPECTEDRCODE,
    191 	DNS_R_UNEXPECTEDOPCODE,
    192 	DNS_R_CHASEDSSERVERS,
    193 	DNS_R_EMPTYNAME,
    194 	DNS_R_EMPTYWILD,
    195 	DNS_R_BADBITMAP,
    196 	DNS_R_FROMWILDCARD,
    197 	DNS_R_BADOWNERNAME,
    198 	DNS_R_BADNAME,
    199 	DNS_R_DYNAMIC,
    200 	DNS_R_UNKNOWNCOMMAND,
    201 	DNS_R_MUSTBESECURE,
    202 	DNS_R_COVERINGNSEC,
    203 	DNS_R_MXISADDRESS,
    204 	DNS_R_DUPLICATE,
    205 	DNS_R_INVALIDNSEC3,
    206 	DNS_R_NOTPRIMARY,
    207 	DNS_R_BROKENCHAIN,
    208 	DNS_R_EXPIRED,
    209 	DNS_R_NOTDYNAMIC,
    210 	DNS_R_BADEUI,
    211 	DNS_R_NTACOVERED,
    212 	DNS_R_BADCDS,
    213 	DNS_R_BADCDNSKEY,
    214 	DNS_R_OPTERR,
    215 	DNS_R_BADDNSTAP,
    216 	DNS_R_BADTSIG,
    217 	DNS_R_BADSIG0,
    218 	DNS_R_TOOMANYRECORDS,
    219 	DNS_R_VERIFYFAILURE,
    220 	DNS_R_ATZONETOP,
    221 	DNS_R_NOKEYMATCH,
    222 	DNS_R_TOOMANYKEYS,
    223 	DNS_R_KEYNOTACTIVE,
    224 	DNS_R_NSEC3ITERRANGE,
    225 	DNS_R_NSEC3SALTRANGE,
    226 	DNS_R_NSEC3BADALG,
    227 	DNS_R_NSEC3RESALT,
    228 	DNS_R_INCONSISTENTRR,
    229 	DNS_R_HAVEPARMKEYS,
    230 	DNS_R_NOALPN,
    231 	DNS_R_NODOHPATH,
    232 	DNS_R_NOSKRFILE,
    233 	DNS_R_NOSKRBUNDLE,
    234 	DNS_R_LOOPDETECTED,
    235 	DNS_R_MISMATCH,
    236 
    237 	DST_R_UNSUPPORTEDALG,
    238 	DST_R_CRYPTOFAILURE,
    239 	/* compat */
    240 	DST_R_OPENSSLFAILURE = DST_R_CRYPTOFAILURE,
    241 	DST_R_NOCRYPTO,
    242 	DST_R_NULLKEY,
    243 	DST_R_INVALIDPUBLICKEY,
    244 	DST_R_INVALIDPRIVATEKEY,
    245 	DST_R_WRITEERROR,
    246 	DST_R_INVALIDPARAM,
    247 	DST_R_SIGNFAILURE,
    248 	DST_R_VERIFYFAILURE,
    249 	DST_R_NOTPUBLICKEY,
    250 	DST_R_NOTPRIVATEKEY,
    251 	DST_R_KEYCANNOTCOMPUTESECRET,
    252 	DST_R_COMPUTESECRETFAILURE,
    253 	DST_R_NORANDOMNESS,
    254 	DST_R_BADKEYTYPE,
    255 	DST_R_NOENGINE,
    256 	DST_R_EXTERNALKEY,
    257 
    258 	DNS_R_NOERROR,
    259 	DNS_R_FORMERR,
    260 	DNS_R_SERVFAIL,
    261 	DNS_R_NXDOMAIN,
    262 	DNS_R_NOTIMP,
    263 	DNS_R_REFUSED,
    264 	DNS_R_YXDOMAIN,
    265 	DNS_R_YXRRSET,
    266 	DNS_R_NXRRSET,
    267 	DNS_R_NOTAUTH,
    268 	DNS_R_NOTZONE,
    269 	DNS_R_RCODE11,
    270 	DNS_R_RCODE12,
    271 	DNS_R_RCODE13,
    272 	DNS_R_RCODE14,
    273 	DNS_R_RCODE15,
    274 	DNS_R_BADVERS,
    275 	DNS_R_BADCOOKIE = DNS_R_NOERROR + 23,
    276 
    277 	ISCCC_R_UNKNOWNVERSION,
    278 	ISCCC_R_SYNTAX,
    279 	ISCCC_R_BADAUTH,
    280 	ISCCC_R_EXPIRED,
    281 	ISCCC_R_CLOCKSKEW,
    282 	ISCCC_R_DUPLICATE,
    283 	ISCCC_R_MAXDEPTH,
    284 
    285 	ISC_R_NRESULTS, /*% The number of results. */
    286 	ISC_R_MAKE_ENUM_32BIT = INT32_MAX,
    287 } isc_result_t;
    288 
    289 ISC_LANG_BEGINDECLS
    290 
    291 const char *isc_result_totext(isc_result_t);
    292 /*%<
    293  * Convert an isc_result_t into a string message describing the result.
    294  */
    295 
    296 const char *isc_result_toid(isc_result_t);
    297 /*%<
    298  * Convert an isc_result_t into a string identifier such as
    299  * "ISC_R_SUCCESS".
    300  */
    301 
    302 ISC_LANG_ENDDECLS
    303