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