1/* toisc.c
2
3   Convert non-ISC result codes to ISC result codes. */
4
5/*
6 * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
7 * Copyright (c) 2001-2003 by Internet Software Consortium
8 *
9 * Permission to use, copy, modify, and distribute this software for any
10 * purpose with or without fee is hereby granted, provided that the above
11 * copyright notice and this permission notice appear in all copies.
12 *
13 * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
14 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
15 * MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR
16 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
17 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
18 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
19 * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
20 *
21 *   Internet Systems Consortium, Inc.
22 *   950 Charter Street
23 *   Redwood City, CA 94063
24 *   <info@isc.org>
25 *   http://www.isc.org/
26 *
27 * This software has been written for Internet Systems Consortium
28 * by Ted Lemon in cooperation with Vixie Enterprises and Nominum, Inc.
29 * To learn more about Internet Systems Consortium, see
30 * ``http://www.isc.org/''.  To learn more about Vixie Enterprises,
31 * see ``http://www.vix.com''.   To learn more about Nominum, Inc., see
32 * ``http://www.nominum.com''.
33 */
34
35#include <omapip/omapip_p.h>
36#include "arpa/nameser.h"
37#include "minires/minires.h"
38
39isc_result_t ns_rcode_to_isc (int nsr)
40{
41	switch (nsr) {
42	      case ns_r_noerror:
43		return ISC_R_SUCCESS;
44
45	      case ns_r_formerr:
46		return ISC_R_FORMERR;
47
48	      case ns_r_servfail:
49		return ISC_R_SERVFAIL;
50
51	      case ns_r_nxdomain:
52		return ISC_R_NXDOMAIN;
53
54	      case ns_r_notimpl:
55		return ISC_R_NOTIMPL;
56
57	      case ns_r_refused:
58		return ISC_R_REFUSED;
59
60	      case ns_r_yxdomain:
61		return ISC_R_YXDOMAIN;
62
63	      case ns_r_yxrrset:
64		return ISC_R_YXRRSET;
65
66	      case ns_r_nxrrset:
67		return ISC_R_NXRRSET;
68
69	      case ns_r_notauth:
70		return ISC_R_NOTAUTH;
71
72	      case ns_r_notzone:
73		return ISC_R_NOTZONE;
74
75	      case ns_r_badsig:
76		return ISC_R_BADSIG;
77
78	      case ns_r_badkey:
79		return ISC_R_BADKEY;
80
81	      case ns_r_badtime:
82		return ISC_R_BADTIME;
83
84	      default:
85		;
86	}
87	return ISC_R_UNEXPECTED;
88}
89
90isc_result_t uerr2isc (int err)
91{
92	switch (err) {
93	      case EPERM:
94		return ISC_R_NOPERM;
95
96	      case ENOENT:
97		return ISC_R_NOTFOUND;
98
99	      case ESRCH:
100		return ISC_R_NOTFOUND;
101
102	      case EIO:
103		return ISC_R_IOERROR;
104
105	      case ENXIO:
106		return ISC_R_NOTFOUND;
107
108	      case E2BIG:
109		return ISC_R_NOSPACE;
110
111	      case ENOEXEC:
112		return ISC_R_FORMERR;
113
114	      case ECHILD:
115		return ISC_R_NOTFOUND;
116
117	      case ENOMEM:
118		return ISC_R_NOMEMORY;
119
120	      case EACCES:
121		return ISC_R_NOPERM;
122
123	      case EFAULT:
124		return ISC_R_INVALIDARG;
125
126	      case EEXIST:
127		return ISC_R_EXISTS;
128
129	      case EINVAL:
130		return ISC_R_INVALIDARG;
131
132	      case ENOTTY:
133		return ISC_R_INVALIDARG;
134
135	      case EFBIG:
136		return ISC_R_NOSPACE;
137
138	      case ENOSPC:
139		return ISC_R_NOSPACE;
140
141	      case EROFS:
142		return ISC_R_NOPERM;
143
144	      case EMLINK:
145		return ISC_R_NOSPACE;
146
147	      case EPIPE:
148		return ISC_R_NOTCONNECTED;
149
150	      case EINPROGRESS:
151		return ISC_R_ALREADYRUNNING;
152
153	      case EALREADY:
154		return ISC_R_ALREADYRUNNING;
155
156	      case ENOTSOCK:
157		return ISC_R_INVALIDFILE;
158
159	      case EDESTADDRREQ:
160		return ISC_R_DESTADDRREQ;
161
162	      case EMSGSIZE:
163		return ISC_R_NOSPACE;
164
165	      case EPROTOTYPE:
166		return ISC_R_INVALIDARG;
167
168	      case ENOPROTOOPT:
169		return ISC_R_NOTIMPLEMENTED;
170
171	      case EPROTONOSUPPORT:
172		return ISC_R_NOTIMPLEMENTED;
173
174	      case ESOCKTNOSUPPORT:
175		return ISC_R_NOTIMPLEMENTED;
176
177	      case EOPNOTSUPP:
178		return ISC_R_NOTIMPLEMENTED;
179
180	      case EPFNOSUPPORT:
181		return ISC_R_NOTIMPLEMENTED;
182
183	      case EAFNOSUPPORT:
184		return ISC_R_NOTIMPLEMENTED;
185
186	      case EADDRINUSE:
187		return ISC_R_ADDRINUSE;
188
189	      case EADDRNOTAVAIL:
190		return ISC_R_ADDRNOTAVAIL;
191
192	      case ENETDOWN:
193		return ISC_R_NETDOWN;
194
195	      case ENETUNREACH:
196		return ISC_R_NETUNREACH;
197
198	      case ECONNABORTED:
199		return ISC_R_TIMEDOUT;
200
201	      case ECONNRESET:
202		return ISC_R_CONNRESET;
203
204	      case ENOBUFS:
205		return ISC_R_NOSPACE;
206
207	      case EISCONN:
208		return ISC_R_ALREADYRUNNING;
209
210	      case ENOTCONN:
211		return ISC_R_NOTCONNECTED;
212
213	      case ESHUTDOWN:
214		return ISC_R_SHUTTINGDOWN;
215
216	      case ETIMEDOUT:
217		return ISC_R_TIMEDOUT;
218
219	      case ECONNREFUSED:
220		return ISC_R_CONNREFUSED;
221
222	      case EHOSTDOWN:
223		return ISC_R_HOSTDOWN;
224
225	      case EHOSTUNREACH:
226		return ISC_R_HOSTUNREACH;
227
228#ifdef EDQUOT
229	      case EDQUOT:
230		return ISC_R_QUOTA;
231#endif
232
233#ifdef EBADRPC
234	      case EBADRPC:
235		return ISC_R_NOTIMPLEMENTED;
236#endif
237
238#ifdef ERPCMISMATCH
239	      case ERPCMISMATCH:
240		return ISC_R_VERSIONMISMATCH;
241#endif
242
243#ifdef EPROGMISMATCH
244	      case EPROGMISMATCH:
245		return ISC_R_VERSIONMISMATCH;
246#endif
247
248#ifdef EAUTH
249	      case EAUTH:
250		return ISC_R_NOTAUTH;
251#endif
252
253#ifdef ENEEDAUTH
254	      case ENEEDAUTH:
255		return ISC_R_NOTAUTH;
256#endif
257
258#ifdef EOVERFLOW
259	      case EOVERFLOW:
260		return ISC_R_NOSPACE;
261#endif
262	}
263	return ISC_R_UNEXPECTED;
264}
265
266ns_rcode isc_rcode_to_ns (isc_result_t isc)
267{
268	switch (isc) {
269	      case ISC_R_SUCCESS:
270		return ns_r_noerror;
271
272	      case ISC_R_FORMERR:
273		return ns_r_formerr;
274
275	      case ISC_R_SERVFAIL:
276		return ns_r_servfail;
277
278	      case ISC_R_NXDOMAIN:
279		return ns_r_nxdomain;
280
281	      case ISC_R_NOTIMPL:
282		return ns_r_notimpl;
283
284	      case ISC_R_REFUSED:
285		return ns_r_refused;
286
287	      case ISC_R_YXDOMAIN:
288		return ns_r_yxdomain;
289
290	      case ISC_R_YXRRSET:
291		return ns_r_yxrrset;
292
293	      case ISC_R_NXRRSET:
294		return ns_r_nxrrset;
295
296	      case ISC_R_NOTAUTH:
297		return ns_r_notauth;
298
299	      case ISC_R_NOTZONE:
300		return ns_r_notzone;
301
302	      case ISC_R_BADSIG:
303		return ns_r_badsig;
304
305	      case ISC_R_BADKEY:
306		return ns_r_badkey;
307
308	      case ISC_R_BADTIME:
309		return ns_r_badtime;
310
311	      default:
312		;
313	}
314	return ns_r_servfail;
315}
316