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