1 /*
2  * Copyright (c) 2010-2011 NLNet Labs. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
14  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
15  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
17  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
19  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
21  * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
22  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
23  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24  *
25  */
26 
27 /**
28  *
29  * Status.
30  */
31 
32 #ifndef UTIL_STATUS_H
33 #define UTIL_STATUS_H
34 
35 #include "config.h"
36 #include "log.h"
37 
38 enum ods_enum_status {
39     ODS_STATUS_OK,
40     ODS_STATUS_EOF,
41     ODS_STATUS_NOTIMPL,
42     ODS_STATUS_UPTODATE,
43 
44     ODS_STATUS_ASSERT_ERR,
45     ODS_STATUS_CFG_ERR,
46     ODS_STATUS_CHDIR_ERR,
47     ODS_STATUS_CHROOT_ERR,
48     ODS_STATUS_CMDHANDLER_ERR,
49     ODS_STATUS_XFRHANDLER_ERR,
50     ODS_STATUS_CONFLICT_ERR,
51     ODS_STATUS_ERR,
52     ODS_STATUS_FOPEN_ERR,
53     ODS_STATUS_FSEEK_ERR,
54     ODS_STATUS_FORK_ERR,
55     ODS_STATUS_FREAD_ERR,
56     ODS_STATUS_FWRITE_ERR,
57     ODS_STATUS_HSM_ERR,
58     ODS_STATUS_INSECURE,
59     ODS_STATUS_MALLOC_ERR,
60     ODS_STATUS_RENAME_ERR,
61     ODS_STATUS_UNLINK_ERR,
62 
63     ODS_STATUS_SOCK_BIND,
64     ODS_STATUS_SOCK_FCNTL_NONBLOCK,
65     ODS_STATUS_SOCK_GETADDRINFO,
66     ODS_STATUS_SOCK_LISTEN,
67     ODS_STATUS_SOCK_SETSOCKOPT_V6ONLY,
68     ODS_STATUS_SOCK_SOCKET_UDP,
69     ODS_STATUS_SOCK_SOCKET_TCP,
70 
71     ODS_STATUS_ACL_SUBNET_BAD_RANGE,
72     ODS_STATUS_ACL_SUBNET_OUT_RANGE,
73 
74     ODS_STATUS_PARSE_ERR,
75     ODS_STATUS_PRIVDROP_ERR,
76     ODS_STATUS_RNG_ERR,
77     ODS_STATUS_SETSID_ERR,
78     ODS_STATUS_UNCHANGED,
79     ODS_STATUS_WRITE_PIDFILE_ERR,
80     ODS_STATUS_XML_ERR,
81 
82     ODS_STATUS_XFR_NOT_READY,
83     ODS_STATUS_SKIPDNAME,
84     ODS_STATUS_BUFAVAIL,
85     ODS_STATUS_PARSESOA,
86     ODS_STATUS_REQAXFR,
87     ODS_STATUS_INSERIAL,
88     ODS_STATUS_XFRBADFORM,
89     ODS_STATUS_XFRINCOMPLETE,
90 
91     ODS_STATUS_DB_ERR,
92     ODS_STATUS_PIPE_ERR
93 };
94 typedef enum ods_enum_status ods_status;
95 
96 typedef struct ods_struct_lookup_table ods_lookup_table;
97 struct ods_struct_lookup_table {
98     int id;
99     const char* name;
100 };
101 
102 extern ods_lookup_table ods_status_str[];
103 
104 
105 /**
106  * Look up item in table.
107  * \param[in] table table
108  * \param[in] id identifier
109  *
110  */
111 ods_lookup_table* ods_lookup_by_id(ods_lookup_table *table, int id);
112 
113 /**
114  * Look up a descriptive text by each status.
115  * \param[in] status status identifierr
116  * \return const char* corresponding descriptive text
117  *
118  */
119 const char *ods_status2str(ods_status status);
120 
121 #define CHECKALLOC(PTR) if(!(PTR)) { ods_fatal_exit("Out of memory when executing %s at %s:%d\n", #PTR, __FILE__, __LINE__); }
122 
123 #endif /* UTIL_STATUS_H */
124