1 /* $NetBSD: toisc.c,v 1.1.1.2 2014/07/12 11:58:00 spz Exp $ */
2 /* toisc.c
3
4 Convert non-ISC result codes to ISC result codes. */
5
6 /*
7 * Copyright (c) 2004,2007,2009,2014 by Internet Systems Consortium, Inc. ("ISC")
8 * Copyright (c) 2001-2003 by Internet Software Consortium
9 *
10 * Permission to use, copy, modify, and distribute this software for any
11 * purpose with or without fee is hereby granted, provided that the above
12 * copyright notice and this permission notice appear in all copies.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
15 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
16 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR
17 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
18 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
19 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
20 * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
21 *
22 * Internet Systems Consortium, Inc.
23 * 950 Charter Street
24 * Redwood City, CA 94063
25 * <info@isc.org>
26 * https://www.isc.org/
27 *
28 */
29
30 #include <sys/cdefs.h>
31 __RCSID("$NetBSD: toisc.c,v 1.1.1.2 2014/07/12 11:58:00 spz Exp $");
32
33 #include "dhcpd.h"
34
35 #include <omapip/omapip_p.h>
36 #include "arpa/nameser.h"
37 #include "minires.h"
38
39 #include <errno.h>
40
uerr2isc(int err)41 isc_result_t uerr2isc (int err)
42 {
43 switch (err) {
44 case EPERM:
45 return ISC_R_NOPERM;
46
47 case ENOENT:
48 return ISC_R_NOTFOUND;
49
50 case ESRCH:
51 return ISC_R_NOTFOUND;
52
53 case EIO:
54 return ISC_R_IOERROR;
55
56 case ENXIO:
57 return ISC_R_NOTFOUND;
58
59 case E2BIG:
60 return ISC_R_NOSPACE;
61
62 case ENOEXEC:
63 return DHCP_R_FORMERR;
64
65 case ECHILD:
66 return ISC_R_NOTFOUND;
67
68 case ENOMEM:
69 return ISC_R_NOMEMORY;
70
71 case EACCES:
72 return ISC_R_NOPERM;
73
74 case EFAULT:
75 return DHCP_R_INVALIDARG;
76
77 case EEXIST:
78 return ISC_R_EXISTS;
79
80 case EINVAL:
81 return DHCP_R_INVALIDARG;
82
83 case ENOTTY:
84 return DHCP_R_INVALIDARG;
85
86 case EFBIG:
87 return ISC_R_NOSPACE;
88
89 case ENOSPC:
90 return ISC_R_NOSPACE;
91
92 case EROFS:
93 return ISC_R_NOPERM;
94
95 case EMLINK:
96 return ISC_R_NOSPACE;
97
98 case EPIPE:
99 return ISC_R_NOTCONNECTED;
100
101 case EINPROGRESS:
102 return ISC_R_ALREADYRUNNING;
103
104 case EALREADY:
105 return ISC_R_ALREADYRUNNING;
106
107 case ENOTSOCK:
108 return ISC_R_INVALIDFILE;
109
110 case EDESTADDRREQ:
111 return DHCP_R_DESTADDRREQ;
112
113 case EMSGSIZE:
114 return ISC_R_NOSPACE;
115
116 case EPROTOTYPE:
117 return DHCP_R_INVALIDARG;
118
119 case ENOPROTOOPT:
120 return ISC_R_NOTIMPLEMENTED;
121
122 case EPROTONOSUPPORT:
123 return ISC_R_NOTIMPLEMENTED;
124
125 case ESOCKTNOSUPPORT:
126 return ISC_R_NOTIMPLEMENTED;
127
128 case EOPNOTSUPP:
129 return ISC_R_NOTIMPLEMENTED;
130
131 case EPFNOSUPPORT:
132 return ISC_R_NOTIMPLEMENTED;
133
134 case EAFNOSUPPORT:
135 return ISC_R_NOTIMPLEMENTED;
136
137 case EADDRINUSE:
138 return ISC_R_ADDRINUSE;
139
140 case EADDRNOTAVAIL:
141 return ISC_R_ADDRNOTAVAIL;
142
143 case ENETDOWN:
144 return ISC_R_NETDOWN;
145
146 case ENETUNREACH:
147 return ISC_R_NETUNREACH;
148
149 case ECONNABORTED:
150 return ISC_R_TIMEDOUT;
151
152 case ECONNRESET:
153 return DHCP_R_CONNRESET;
154
155 case ENOBUFS:
156 return ISC_R_NOSPACE;
157
158 case EISCONN:
159 return ISC_R_ALREADYRUNNING;
160
161 case ENOTCONN:
162 return ISC_R_NOTCONNECTED;
163
164 case ESHUTDOWN:
165 return ISC_R_SHUTTINGDOWN;
166
167 case ETIMEDOUT:
168 return ISC_R_TIMEDOUT;
169
170 case ECONNREFUSED:
171 return ISC_R_CONNREFUSED;
172
173 case EHOSTDOWN:
174 return ISC_R_HOSTDOWN;
175
176 case EHOSTUNREACH:
177 return ISC_R_HOSTUNREACH;
178
179 #ifdef EDQUOT
180 case EDQUOT:
181 return ISC_R_QUOTA;
182 #endif
183
184 #ifdef EBADRPC
185 case EBADRPC:
186 return ISC_R_NOTIMPLEMENTED;
187 #endif
188
189 #ifdef ERPCMISMATCH
190 case ERPCMISMATCH:
191 return DHCP_R_VERSIONMISMATCH;
192 #endif
193
194 #ifdef EPROGMISMATCH
195 case EPROGMISMATCH:
196 return DHCP_R_VERSIONMISMATCH;
197 #endif
198
199 #ifdef EAUTH
200 case EAUTH:
201 return DHCP_R_NOTAUTH;
202 #endif
203
204 #ifdef ENEEDAUTH
205 case ENEEDAUTH:
206 return DHCP_R_NOTAUTH;
207 #endif
208
209 #ifdef EOVERFLOW
210 case EOVERFLOW:
211 return ISC_R_NOSPACE;
212 #endif
213 }
214 return ISC_R_UNEXPECTED;
215 }
216