1 /*------------------------------------------------------------------------------
2  *
3  * Copyright (c) 2011-2021, EURid vzw. All rights reserved.
4  * The YADIFA TM software product is provided under the BSD 3-clause license:
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  *
10  *        * Redistributions of source code must retain the above copyright
11  *          notice, this list of conditions and the following disclaimer.
12  *        * Redistributions in binary form must reproduce the above copyright
13  *          notice, this list of conditions and the following disclaimer in the
14  *          documentation and/or other materials provided with the distribution.
15  *        * Neither the name of EURid nor the names of its contributors may be
16  *          used to endorse or promote products derived from this software
17  *          without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29  * POSSIBILITY OF SUCH DAMAGE.
30  *
31  *------------------------------------------------------------------------------
32  *
33  */
34 
35 /** @defgroup error Database error handling
36  *  @ingroup dnsdb
37  *  @brief Database error handling
38  *
39  * @{
40  */
41 
42 #ifndef _ZDB_ERROR_H
43 #define	_ZDB_ERROR_H
44 
45 #include <dnscore/sys_types.h>
46 
47 #ifdef	__cplusplus
48 extern "C" {
49 #endif
50 
51 /** @brief a negative number that marks the start of the ZDB error codes */
52 #define ZDB_ERROR_BASE				0x80040000
53 #define ZDB_ERROR_CODE(code_)			((s32)(ZDB_ERROR_BASE+(code_)))
54 
55 #define ZDB_ERROR_GENERAL			            ZDB_ERROR_CODE(0x0000)
56 
57 #define ZDB_ERROR_KEY_NOTFOUND			        ZDB_ERROR_CODE(0x0001) // DATABASE KEY
58 #define ZDB_ERROR_DELETEFROMEMPTY		        ZDB_ERROR_CODE(0x0002) // DATABASE could not delete because collection is empty
59 #define ZDB_ERROR_NOSUCHCLASS	                ZDB_ERROR_CODE(0x0003) // DATABASE class not found
60 #define ZDB_ERROR_NOSOAATAPEX			        ZDB_ERROR_CODE(0x0004) // DATABASE zone has not SOA
61 #define ZDB_ERROR_COULDNOTOOBTAINZONEIMAGE      ZDB_ERROR_CODE(0x0005)
62 
63 #define ZDB_ERROR_CORRUPTEDSOA		    	    ZDB_ERROR_CODE(0x1001) // RECORD soa is corrupted
64 
65 #define ZDB_ERROR_ZONE_IS_NOT_SIGNED            ZDB_ERROR_CODE(0x3001) // DATABASE zone dnssec // not used
66 #define ZDB_ERROR_ZONE_IS_ALREADY_BEING_SIGNED  ZDB_ERROR_CODE(0x3002) // DATABASE zone dnssec
67 #define ZDB_ERROR_ZONE_INVALID                  ZDB_ERROR_CODE(0x3003) // DATABASE zone dynamic update
68 #define ZDB_ERROR_ZONE_IS_NOT_DNSSEC            ZDB_ERROR_CODE(0x3004) // DATABASE zone dnssec // not used
69 #define ZDB_ERROR_ZONE_NO_ZSK_PRIVATE_KEY_FILE  ZDB_ERROR_CODE(0x3005) // DATABASE zone dnssec
70 #define ZDB_ERROR_ZONE_NO_ACTIVE_DNSKEY_FOUND   ZDB_ERROR_CODE(0x3006) // DATABASE zone dnssec // not used
71 #define ZDB_ERROR_ZONE_NOT_IN_DATABASE          ZDB_ERROR_CODE(0x3007) // DATABASE zone
72 #define ZDB_ERROR_ZONE_NOT_MAINTAINED           ZDB_ERROR_CODE(0x3008) // DATABASE zone
73 #define ZDB_ERROR_ZONE_OPERATION_WOULD_BLOCK    ZDB_ERROR_CODE(0x3009) // DATABASE zone
74 
75 #define ZDB_READER_WRONGNAMEFORZONE	            ZDB_ERROR_CODE(0x4001) // DATABASE zone load // not used
76 #define ZDB_READER_ZONENOTLOADED	            ZDB_ERROR_CODE(0x4002) // DATABASE zone load // not used
77 #define ZDB_READER_FIRST_RECORD_NOT_SOA         ZDB_ERROR_CODE(0x4003) // DATABASE zone load
78 #define ZDB_READER_ANOTHER_DOMAIN_WAS_EXPECTED  ZDB_ERROR_CODE(0x4004) // DATABASE zone load
79 #define ZDB_READER_NSEC3WITHOUTNSEC3PARAM       ZDB_ERROR_CODE(0x4005) // DATABASE zone load // not used
80 #define ZDB_READER_MIXED_DNSSEC_VERSIONS        ZDB_ERROR_CODE(0x4006) // DATABASE zone load // not used
81 #define ZDB_READER_ALREADY_LOADED               ZDB_ERROR_CODE(0x4007) // DATABASE zone load // not used
82 #define ZDB_READER_NSEC3PARAMWITHOUTNSEC3       ZDB_ERROR_CODE(0x4008) // DATABASE zone load // not used
83 
84 #define ZDB_ERROR_ICMTL_NOTFOUND   		        ZDB_ERROR_CODE(0x5001) // ICMTL
85 #define ZDB_ERROR_ICMTL_STATUS_INVALID          ZDB_ERROR_CODE(0x5002) // ICMTL // not used
86 #define ZDB_ERROR_ICMTL_FOLDERPATHTOOLONG       ZDB_ERROR_CODE(0x5003) // ICMTL // not used
87 
88 #define ZDB_JOURNAL_WRONG_PARAMETERS            ZDB_ERROR_CODE(0x6001)
89 #define ZDB_JOURNAL_READING_DID_NOT_FOUND_SOA   ZDB_ERROR_CODE(0x6002) // nowhere in a scan // not used
90 #define ZDB_JOURNAL_SOA_RECORD_EXPECTED         ZDB_ERROR_CODE(0x6003) // record being read was expected to be an SOA // not used
91 #define ZDB_JOURNAL_SERIAL_OUT_OF_KNOWN_RANGE   ZDB_ERROR_CODE(0x6004)
92 #define ZDB_JOURNAL_FEATURE_NOT_SUPPORTED       ZDB_ERROR_CODE(0x6005)
93 #define ZDB_JOURNAL_NOT_INITIALISED             ZDB_ERROR_CODE(0x6006)
94 #define ZDB_JOURNAL_IS_BUSY                     ZDB_ERROR_CODE(0x6007)
95 #define ZDB_JOURNAL_MUST_SAFEGUARD_CONTINUITY   ZDB_ERROR_CODE(0x6008)
96 #define ZDB_JOURNAL_SERIAL_RANGE_LOCKED         ZDB_ERROR_CODE(0x6009)
97 #define ZDB_JOURNAL_LOOKS_CORRUPTED             ZDB_ERROR_CODE(0x6081)
98 #define ZDB_JOURNAL_UNEXPECTED_MAGIC            ZDB_ERROR_CODE(0x6082)
99 #define ZDB_JOURNAL_SHORT_READ                  ZDB_ERROR_CODE(0x6083)
100 #define ZDB_JOURNAL_SIZE_LIMIT_TOO_SMALL        ZDB_ERROR_CODE(0x6084)
101 
102 #define ZDB_JOURNAL_SHOULD_NOT_BE_USED(err__) (((err__) >= ZDB_JOURNAL_LOOKS_CORRUPTED) && ((err__) <= ZDB_JOURNAL_SHORT_READ) )
103 
104 void zdb_register_errors();
105 
106 #ifdef	__cplusplus
107 }
108 #endif
109 
110 #endif	/* _ZDB_ERROR_H */
111 
112 /** @} */
113