s4-errors: Import error maps from the source3/ unix -> ntstatus mapping
[Samba/gebeck_regimport.git] / source4 / libcli / util / errormap.c
blob6476426d7fca7d9e36b2fcc30c5440ab7cb5f2d4
1 /*
2 * Unix SMB/CIFS implementation.
3 * error mapping functions
4 * Copyright (C) Andrew Tridgell 2001
5 * Copyright (C) Andrew Bartlett 2001
6 * Copyright (C) Tim Potter 2000
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 3 of the License, or
11 * (at your option) any later version.
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, see <http://www.gnu.org/licenses/>.
22 #include "includes.h"
24 /* errmap NTSTATUS->Win32 */
25 static const struct {
26 NTSTATUS ntstatus;
27 WERROR werror;
28 } ntstatus_to_werror_map[] = {
29 {NT_STATUS(0x103), W_ERROR(0x3e5)},
30 {NT_STATUS(0x105), W_ERROR(0xea)},
31 {NT_STATUS(0x106), W_ERROR(0x514)},
32 {NT_STATUS(0x107), W_ERROR(0x515)},
33 {NT_STATUS(0x10c), W_ERROR(0x3fe)},
34 {NT_STATUS(0x10d), W_ERROR(0x516)},
35 {NT_STATUS(0x121), W_ERROR(0x2009)},
36 {NT_STATUS(0xc0000001), W_ERROR(0x1f)},
37 {NT_STATUS(0xc0000002), W_ERROR(0x1)},
38 {NT_STATUS(0xc0000003), W_ERROR(0x57)},
39 {NT_STATUS(0xc0000004), W_ERROR(0x18)},
40 {NT_STATUS(0xc0000005), W_ERROR(0x3e6)},
41 {NT_STATUS(0xc0000006), W_ERROR(0x3e7)},
42 {NT_STATUS(0xc0000007), W_ERROR(0x5ae)},
43 {NT_STATUS(0xc0000008), W_ERROR(0x6)},
44 {NT_STATUS(0xc0000009), W_ERROR(0x3e9)},
45 {NT_STATUS(0xc000000a), W_ERROR(0xc1)},
46 {NT_STATUS(0xc000000b), W_ERROR(0x57)},
47 {NT_STATUS(0xc000000d), W_ERROR(0x57)},
48 {NT_STATUS(0xc000000e), W_ERROR(0x2)},
49 {NT_STATUS(0xc000000f), W_ERROR(0x2)},
50 {NT_STATUS(0xc0000010), W_ERROR(0x1)},
51 {NT_STATUS(0xc0000011), W_ERROR(0x26)},
52 {NT_STATUS(0xc0000012), W_ERROR(0x22)},
53 {NT_STATUS(0xc0000013), W_ERROR(0x15)},
54 {NT_STATUS(0xc0000014), W_ERROR(0x6f9)},
55 {NT_STATUS(0xc0000015), W_ERROR(0x1b)},
56 {NT_STATUS(0xc0000016), W_ERROR(0xea)},
57 {NT_STATUS(0xc0000017), W_ERROR(0x8)},
58 {NT_STATUS(0xc0000018), W_ERROR(0x1e7)},
59 {NT_STATUS(0xc0000019), W_ERROR(0x1e7)},
60 {NT_STATUS(0xc000001a), W_ERROR(0x57)},
61 {NT_STATUS(0xc000001b), W_ERROR(0x57)},
62 {NT_STATUS(0xc000001c), W_ERROR(0x1)},
63 {NT_STATUS(0xc000001d), W_ERROR(0xc000001d)},
64 {NT_STATUS(0xc000001e), W_ERROR(0x5)},
65 {NT_STATUS(0xc000001f), W_ERROR(0x5)},
66 {NT_STATUS(0xc0000020), W_ERROR(0xc1)},
67 {NT_STATUS(0xc0000021), W_ERROR(0x5)},
68 {NT_STATUS(0xc0000022), W_ERROR(0x5)},
69 {NT_STATUS(0xc0000023), W_ERROR(0x7a)},
70 {NT_STATUS(0xc0000024), W_ERROR(0x6)},
71 {NT_STATUS(0xc0000025), W_ERROR(0xc0000025)},
72 {NT_STATUS(0xc0000026), W_ERROR(0xc0000026)},
73 {NT_STATUS(0xc000002a), W_ERROR(0x9e)},
74 {NT_STATUS(0xc000002b), W_ERROR(0xc000002b)},
75 {NT_STATUS(0xc000002c), W_ERROR(0x1e7)},
76 {NT_STATUS(0xc000002d), W_ERROR(0x1e7)},
77 {NT_STATUS(0xc0000030), W_ERROR(0x57)},
78 {NT_STATUS(0xc0000032), W_ERROR(0x571)},
79 {NT_STATUS(0xc0000033), W_ERROR(0x7b)},
80 {NT_STATUS(0xc0000034), W_ERROR(0x2)},
81 {NT_STATUS(0xc0000035), W_ERROR(0xb7)},
82 {NT_STATUS(0xc0000037), W_ERROR(0x6)},
83 {NT_STATUS(0xc0000039), W_ERROR(0xa1)},
84 {NT_STATUS(0xc000003a), W_ERROR(0x3)},
85 {NT_STATUS(0xc000003b), W_ERROR(0xa1)},
86 {NT_STATUS(0xc000003c), W_ERROR(0x45d)},
87 {NT_STATUS(0xc000003d), W_ERROR(0x45d)},
88 {NT_STATUS(0xc000003e), W_ERROR(0x17)},
89 {NT_STATUS(0xc000003f), W_ERROR(0x17)},
90 {NT_STATUS(0xc0000040), W_ERROR(0x8)},
91 {NT_STATUS(0xc0000041), W_ERROR(0x5)},
92 {NT_STATUS(0xc0000042), W_ERROR(0x6)},
93 {NT_STATUS(0xc0000043), W_ERROR(0x20)},
94 {NT_STATUS(0xc0000044), W_ERROR(0x718)},
95 {NT_STATUS(0xc0000045), W_ERROR(0x57)},
96 {NT_STATUS(0xc0000046), W_ERROR(0x120)},
97 {NT_STATUS(0xc0000047), W_ERROR(0x12a)},
98 {NT_STATUS(0xc0000048), W_ERROR(0x57)},
99 {NT_STATUS(0xc0000049), W_ERROR(0x57)},
100 {NT_STATUS(0xc000004a), W_ERROR(0x9c)},
101 {NT_STATUS(0xc000004b), W_ERROR(0x5)},
102 {NT_STATUS(0xc000004c), W_ERROR(0x57)},
103 {NT_STATUS(0xc000004d), W_ERROR(0x57)},
104 {NT_STATUS(0xc000004e), W_ERROR(0x57)},
105 {NT_STATUS(0xc000004f), W_ERROR(0x11a)},
106 {NT_STATUS(0xc0000050), W_ERROR(0xff)},
107 {NT_STATUS(0xc0000051), W_ERROR(0x570)},
108 {NT_STATUS(0xc0000052), W_ERROR(0x570)},
109 {NT_STATUS(0xc0000053), W_ERROR(0x570)},
110 {NT_STATUS(0xc0000054), W_ERROR(0x21)},
111 {NT_STATUS(0xc0000055), W_ERROR(0x21)},
112 {NT_STATUS(0xc0000056), W_ERROR(0x5)},
113 {NT_STATUS(0xc0000057), W_ERROR(0x32)},
114 {NT_STATUS(0xc0000058), W_ERROR(0x519)},
115 {NT_STATUS(0xc0000059), W_ERROR(0x51a)},
116 {NT_STATUS(0xc000005a), W_ERROR(0x51b)},
117 {NT_STATUS(0xc000005b), W_ERROR(0x51c)},
118 {NT_STATUS(0xc000005c), W_ERROR(0x51d)},
119 {NT_STATUS(0xc000005d), W_ERROR(0x51e)},
120 {NT_STATUS(0xc000005e), W_ERROR(0x51f)},
121 {NT_STATUS(0xc000005f), W_ERROR(0x520)},
122 {NT_STATUS(0xc0000060), W_ERROR(0x521)},
123 {NT_STATUS(0xc0000061), W_ERROR(0x522)},
124 {NT_STATUS(0xc0000062), W_ERROR(0x523)},
125 {NT_STATUS(0xc0000063), W_ERROR(0x524)},
126 {NT_STATUS(0xc0000064), W_ERROR(0x525)},
127 {NT_STATUS(0xc0000065), W_ERROR(0x526)},
128 {NT_STATUS(0xc0000066), W_ERROR(0x527)},
129 {NT_STATUS(0xc0000067), W_ERROR(0x528)},
130 {NT_STATUS(0xc0000068), W_ERROR(0x529)},
131 {NT_STATUS(0xc0000069), W_ERROR(0x52a)},
132 {NT_STATUS(0xc000006a), W_ERROR(0x56)},
133 {NT_STATUS(0xc000006b), W_ERROR(0x52c)},
134 {NT_STATUS(0xc000006c), W_ERROR(0x52d)},
135 {NT_STATUS(0xc000006d), W_ERROR(0x52e)},
136 {NT_STATUS(0xc000006e), W_ERROR(0x52f)},
137 {NT_STATUS(0xc000006f), W_ERROR(0x530)},
138 {NT_STATUS(0xc0000070), W_ERROR(0x531)},
139 {NT_STATUS(0xc0000071), W_ERROR(0x532)},
140 {NT_STATUS(0xc0000072), W_ERROR(0x533)},
141 {NT_STATUS(0xc0000073), W_ERROR(0x534)},
142 {NT_STATUS(0xc0000074), W_ERROR(0x535)},
143 {NT_STATUS(0xc0000075), W_ERROR(0x536)},
144 {NT_STATUS(0xc0000076), W_ERROR(0x537)},
145 {NT_STATUS(0xc0000077), W_ERROR(0x538)},
146 {NT_STATUS(0xc0000078), W_ERROR(0x539)},
147 {NT_STATUS(0xc0000079), W_ERROR(0x53a)},
148 {NT_STATUS(0xc000007a), W_ERROR(0x7f)},
149 {NT_STATUS(0xc000007b), W_ERROR(0xc1)},
150 {NT_STATUS(0xc000007c), W_ERROR(0x3f0)},
151 {NT_STATUS(0xc000007d), W_ERROR(0x53c)},
152 {NT_STATUS(0xc000007e), W_ERROR(0x9e)},
153 {NT_STATUS(0xc000007f), W_ERROR(0x70)},
154 {NT_STATUS(0xc0000080), W_ERROR(0x53d)},
155 {NT_STATUS(0xc0000081), W_ERROR(0x53e)},
156 {NT_STATUS(0xc0000082), W_ERROR(0x44)},
157 {NT_STATUS(0xc0000083), W_ERROR(0x103)},
158 {NT_STATUS(0xc0000084), W_ERROR(0x53f)},
159 {NT_STATUS(0xc0000085), W_ERROR(0x103)},
160 {NT_STATUS(0xc0000086), W_ERROR(0x9a)},
161 {NT_STATUS(0xc0000087), W_ERROR(0xe)},
162 {NT_STATUS(0xc0000088), W_ERROR(0x1e7)},
163 {NT_STATUS(0xc0000089), W_ERROR(0x714)},
164 {NT_STATUS(0xc000008a), W_ERROR(0x715)},
165 {NT_STATUS(0xc000008b), W_ERROR(0x716)},
166 {NT_STATUS(0xc000008c), W_ERROR(0xc000008c)},
167 {NT_STATUS(0xc000008d), W_ERROR(0xc000008d)},
168 {NT_STATUS(0xc000008e), W_ERROR(0xc000008e)},
169 {NT_STATUS(0xc000008f), W_ERROR(0xc000008f)},
170 {NT_STATUS(0xc0000090), W_ERROR(0xc0000090)},
171 {NT_STATUS(0xc0000091), W_ERROR(0xc0000091)},
172 {NT_STATUS(0xc0000092), W_ERROR(0xc0000092)},
173 {NT_STATUS(0xc0000093), W_ERROR(0xc0000093)},
174 {NT_STATUS(0xc0000094), W_ERROR(0xc0000094)},
175 {NT_STATUS(0xc0000095), W_ERROR(0x216)},
176 {NT_STATUS(0xc0000096), W_ERROR(0xc0000096)},
177 {NT_STATUS(0xc0000097), W_ERROR(0x8)},
178 {NT_STATUS(0xc0000098), W_ERROR(0x3ee)},
179 {NT_STATUS(0xc0000099), W_ERROR(0x540)},
180 {NT_STATUS(0xc000009a), W_ERROR(0x5aa)},
181 {NT_STATUS(0xc000009b), W_ERROR(0x3)},
182 {NT_STATUS(0xc000009c), W_ERROR(0x17)},
183 {NT_STATUS(0xc000009d), W_ERROR(0x48f)},
184 {NT_STATUS(0xc000009e), W_ERROR(0x15)},
185 {NT_STATUS(0xc000009f), W_ERROR(0x1e7)},
186 {NT_STATUS(0xc00000a0), W_ERROR(0x1e7)},
187 {NT_STATUS(0xc00000a1), W_ERROR(0x5ad)},
188 {NT_STATUS(0xc00000a2), W_ERROR(0x13)},
189 {NT_STATUS(0xc00000a3), W_ERROR(0x15)},
190 {NT_STATUS(0xc00000a4), W_ERROR(0x541)},
191 {NT_STATUS(0xc00000a5), W_ERROR(0x542)},
192 {NT_STATUS(0xc00000a6), W_ERROR(0x543)},
193 {NT_STATUS(0xc00000a7), W_ERROR(0x544)},
194 {NT_STATUS(0xc00000a8), W_ERROR(0x545)},
195 {NT_STATUS(0xc00000a9), W_ERROR(0x57)},
196 {NT_STATUS(0xc00000ab), W_ERROR(0xe7)},
197 {NT_STATUS(0xc00000ac), W_ERROR(0xe7)},
198 {NT_STATUS(0xc00000ad), W_ERROR(0xe6)},
199 {NT_STATUS(0xc00000ae), W_ERROR(0xe7)},
200 {NT_STATUS(0xc00000af), W_ERROR(0x1)},
201 {NT_STATUS(0xc00000b0), W_ERROR(0xe9)},
202 {NT_STATUS(0xc00000b1), W_ERROR(0xe8)},
203 {NT_STATUS(0xc00000b2), W_ERROR(0x217)},
204 {NT_STATUS(0xc00000b3), W_ERROR(0x218)},
205 {NT_STATUS(0xc00000b4), W_ERROR(0xe6)},
206 {NT_STATUS(0xc00000b5), W_ERROR(0x79)},
207 {NT_STATUS(0xc00000b6), W_ERROR(0x26)},
208 {NT_STATUS(0xc00000ba), W_ERROR(0x5)},
209 {NT_STATUS(0xc00000bb), W_ERROR(0x32)},
210 {NT_STATUS(0xc00000bc), W_ERROR(0x33)},
211 {NT_STATUS(0xc00000bd), W_ERROR(0x34)},
212 {NT_STATUS(0xc00000be), W_ERROR(0x35)},
213 {NT_STATUS(0xc00000bf), W_ERROR(0x36)},
214 {NT_STATUS(0xc00000c0), W_ERROR(0x37)},
215 {NT_STATUS(0xc00000c1), W_ERROR(0x38)},
216 {NT_STATUS(0xc00000c2), W_ERROR(0x39)},
217 {NT_STATUS(0xc00000c3), W_ERROR(0x3a)},
218 {NT_STATUS(0xc00000c4), W_ERROR(0x3b)},
219 {NT_STATUS(0xc00000c5), W_ERROR(0x3c)},
220 {NT_STATUS(0xc00000c6), W_ERROR(0x3d)},
221 {NT_STATUS(0xc00000c7), W_ERROR(0x3e)},
222 {NT_STATUS(0xc00000c8), W_ERROR(0x3f)},
223 {NT_STATUS(0xc00000c9), W_ERROR(0x40)},
224 {NT_STATUS(0xc00000ca), W_ERROR(0x41)},
225 {NT_STATUS(0xc00000cb), W_ERROR(0x42)},
226 {NT_STATUS(0xc00000cc), W_ERROR(0x43)},
227 {NT_STATUS(0xc00000cd), W_ERROR(0x44)},
228 {NT_STATUS(0xc00000ce), W_ERROR(0x45)},
229 {NT_STATUS(0xc00000cf), W_ERROR(0x46)},
230 {NT_STATUS(0xc00000d0), W_ERROR(0x47)},
231 {NT_STATUS(0xc00000d1), W_ERROR(0x48)},
232 {NT_STATUS(0xc00000d2), W_ERROR(0x58)},
233 {NT_STATUS(0xc00000d4), W_ERROR(0x11)},
234 {NT_STATUS(0xc00000d5), W_ERROR(0x5)},
235 {NT_STATUS(0xc00000d6), W_ERROR(0xf0)},
236 {NT_STATUS(0xc00000d7), W_ERROR(0x546)},
237 {NT_STATUS(0xc00000d9), W_ERROR(0xe8)},
238 {NT_STATUS(0xc00000da), W_ERROR(0x547)},
239 {NT_STATUS(0xc00000dc), W_ERROR(0x548)},
240 {NT_STATUS(0xc00000dd), W_ERROR(0x549)},
241 {NT_STATUS(0xc00000de), W_ERROR(0x54a)},
242 {NT_STATUS(0xc00000df), W_ERROR(0x54b)},
243 {NT_STATUS(0xc00000e0), W_ERROR(0x54c)},
244 {NT_STATUS(0xc00000e1), W_ERROR(0x54d)},
245 {NT_STATUS(0xc00000e2), W_ERROR(0x12c)},
246 {NT_STATUS(0xc00000e3), W_ERROR(0x12d)},
247 {NT_STATUS(0xc00000e4), W_ERROR(0x54e)},
248 {NT_STATUS(0xc00000e5), W_ERROR(0x54f)},
249 {NT_STATUS(0xc00000e6), W_ERROR(0x550)},
250 {NT_STATUS(0xc00000e7), W_ERROR(0x551)},
251 {NT_STATUS(0xc00000e8), W_ERROR(0x6f8)},
252 {NT_STATUS(0xc00000ed), W_ERROR(0x552)},
253 {NT_STATUS(0xc00000ee), W_ERROR(0x553)},
254 {NT_STATUS(0xc00000ef), W_ERROR(0x57)},
255 {NT_STATUS(0xc00000f0), W_ERROR(0x57)},
256 {NT_STATUS(0xc00000f1), W_ERROR(0x57)},
257 {NT_STATUS(0xc00000f2), W_ERROR(0x57)},
258 {NT_STATUS(0xc00000f3), W_ERROR(0x57)},
259 {NT_STATUS(0xc00000f4), W_ERROR(0x57)},
260 {NT_STATUS(0xc00000f5), W_ERROR(0x57)},
261 {NT_STATUS(0xc00000f6), W_ERROR(0x57)},
262 {NT_STATUS(0xc00000f7), W_ERROR(0x57)},
263 {NT_STATUS(0xc00000f8), W_ERROR(0x57)},
264 {NT_STATUS(0xc00000f9), W_ERROR(0x57)},
265 {NT_STATUS(0xc00000fa), W_ERROR(0x57)},
266 {NT_STATUS(0xc00000fb), W_ERROR(0x3)},
267 {NT_STATUS(0xc00000fd), W_ERROR(0x3e9)},
268 {NT_STATUS(0xc00000fe), W_ERROR(0x554)},
269 {NT_STATUS(0xc0000100), W_ERROR(0xcb)},
270 {NT_STATUS(0xc0000101), W_ERROR(0x91)},
271 {NT_STATUS(0xc0000102), W_ERROR(0x570)},
272 {NT_STATUS(0xc0000103), W_ERROR(0x10b)},
273 {NT_STATUS(0xc0000104), W_ERROR(0x555)},
274 {NT_STATUS(0xc0000105), W_ERROR(0x556)},
275 {NT_STATUS(0xc0000106), W_ERROR(0xce)},
276 {NT_STATUS(0xc0000107), W_ERROR(0x961)},
277 {NT_STATUS(0xc0000108), W_ERROR(0x964)},
278 {NT_STATUS(0xc000010a), W_ERROR(0x5)},
279 {NT_STATUS(0xc000010b), W_ERROR(0x557)},
280 {NT_STATUS(0xc000010d), W_ERROR(0x558)},
281 {NT_STATUS(0xc000010e), W_ERROR(0x420)},
282 {NT_STATUS(0xc0000117), W_ERROR(0x5a4)},
283 {NT_STATUS(0xc000011b), W_ERROR(0xc1)},
284 {NT_STATUS(0xc000011c), W_ERROR(0x559)},
285 {NT_STATUS(0xc000011d), W_ERROR(0x55a)},
286 {NT_STATUS(0xc000011e), W_ERROR(0x3ee)},
287 {NT_STATUS(0xc000011f), W_ERROR(0x4)},
288 {NT_STATUS(0xc0000120), W_ERROR(0x3e3)},
289 {NT_STATUS(0xc0000121), W_ERROR(0x5)},
290 {NT_STATUS(0xc0000122), W_ERROR(0x4ba)},
291 {NT_STATUS(0xc0000123), W_ERROR(0x5)},
292 {NT_STATUS(0xc0000124), W_ERROR(0x55b)},
293 {NT_STATUS(0xc0000125), W_ERROR(0x55c)},
294 {NT_STATUS(0xc0000126), W_ERROR(0x55d)},
295 {NT_STATUS(0xc0000127), W_ERROR(0x55e)},
296 {NT_STATUS(0xc0000128), W_ERROR(0x6)},
297 {NT_STATUS(0xc000012b), W_ERROR(0x55f)},
298 {NT_STATUS(0xc000012d), W_ERROR(0x5af)},
299 {NT_STATUS(0xc000012e), W_ERROR(0xc1)},
300 {NT_STATUS(0xc000012f), W_ERROR(0xc1)},
301 {NT_STATUS(0xc0000130), W_ERROR(0xc1)},
302 {NT_STATUS(0xc0000131), W_ERROR(0xc1)},
303 {NT_STATUS(0xc0000133), W_ERROR(0x576)},
304 {NT_STATUS(0xc0000135), W_ERROR(0x7e)},
305 {NT_STATUS(0xc0000138), W_ERROR(0xb6)},
306 {NT_STATUS(0xc0000139), W_ERROR(0x7f)},
307 {NT_STATUS(0xc000013b), W_ERROR(0x40)},
308 {NT_STATUS(0xc000013c), W_ERROR(0x40)},
309 {NT_STATUS(0xc000013d), W_ERROR(0x33)},
310 {NT_STATUS(0xc000013e), W_ERROR(0x3b)},
311 {NT_STATUS(0xc000013f), W_ERROR(0x3b)},
312 {NT_STATUS(0xc0000140), W_ERROR(0x3b)},
313 {NT_STATUS(0xc0000141), W_ERROR(0x3b)},
314 {NT_STATUS(0xc0000142), W_ERROR(0x45a)},
315 {NT_STATUS(0xc0000148), W_ERROR(0x7c)},
316 {NT_STATUS(0xc0000149), W_ERROR(0x56)},
317 {NT_STATUS(0xc000014b), W_ERROR(0x6d)},
318 {NT_STATUS(0xc000014c), W_ERROR(0x3f1)},
319 {NT_STATUS(0xc000014d), W_ERROR(0x3f8)},
320 {NT_STATUS(0xc000014f), W_ERROR(0x3ed)},
321 {NT_STATUS(0xc0000150), W_ERROR(0x45e)},
322 {NT_STATUS(0xc0000151), W_ERROR(0x560)},
323 {NT_STATUS(0xc0000152), W_ERROR(0x561)},
324 {NT_STATUS(0xc0000153), W_ERROR(0x562)},
325 {NT_STATUS(0xc0000154), W_ERROR(0x563)},
326 {NT_STATUS(0xc0000155), W_ERROR(0x564)},
327 {NT_STATUS(0xc0000156), W_ERROR(0x565)},
328 {NT_STATUS(0xc0000157), W_ERROR(0x566)},
329 {NT_STATUS(0xc0000158), W_ERROR(0x567)},
330 {NT_STATUS(0xc0000159), W_ERROR(0x3ef)},
331 {NT_STATUS(0xc000015a), W_ERROR(0x568)},
332 {NT_STATUS(0xc000015b), W_ERROR(0x569)},
333 {NT_STATUS(0xc000015c), W_ERROR(0x3f9)},
334 {NT_STATUS(0xc000015d), W_ERROR(0x56a)},
335 {NT_STATUS(0xc000015f), W_ERROR(0x45d)},
336 {NT_STATUS(0xc0000162), W_ERROR(0x459)},
337 {NT_STATUS(0xc0000165), W_ERROR(0x462)},
338 {NT_STATUS(0xc0000166), W_ERROR(0x463)},
339 {NT_STATUS(0xc0000167), W_ERROR(0x464)},
340 {NT_STATUS(0xc0000168), W_ERROR(0x465)},
341 {NT_STATUS(0xc0000169), W_ERROR(0x466)},
342 {NT_STATUS(0xc000016a), W_ERROR(0x467)},
343 {NT_STATUS(0xc000016b), W_ERROR(0x468)},
344 {NT_STATUS(0xc000016c), W_ERROR(0x45f)},
345 {NT_STATUS(0xc000016d), W_ERROR(0x45d)},
346 {NT_STATUS(0xc0000172), W_ERROR(0x451)},
347 {NT_STATUS(0xc0000173), W_ERROR(0x452)},
348 {NT_STATUS(0xc0000174), W_ERROR(0x453)},
349 {NT_STATUS(0xc0000175), W_ERROR(0x454)},
350 {NT_STATUS(0xc0000176), W_ERROR(0x455)},
351 {NT_STATUS(0xc0000177), W_ERROR(0x469)},
352 {NT_STATUS(0xc0000178), W_ERROR(0x458)},
353 {NT_STATUS(0xc000017a), W_ERROR(0x56b)},
354 {NT_STATUS(0xc000017b), W_ERROR(0x56c)},
355 {NT_STATUS(0xc000017c), W_ERROR(0x3fa)},
356 {NT_STATUS(0xc000017d), W_ERROR(0x3fb)},
357 {NT_STATUS(0xc000017e), W_ERROR(0x56d)},
358 {NT_STATUS(0xc000017f), W_ERROR(0x56e)},
359 {NT_STATUS(0xc0000180), W_ERROR(0x3fc)},
360 {NT_STATUS(0xc0000181), W_ERROR(0x3fd)},
361 {NT_STATUS(0xc0000182), W_ERROR(0x57)},
362 {NT_STATUS(0xc0000183), W_ERROR(0x45d)},
363 {NT_STATUS(0xc0000184), W_ERROR(0x16)},
364 {NT_STATUS(0xc0000185), W_ERROR(0x45d)},
365 {NT_STATUS(0xc0000186), W_ERROR(0x45d)},
366 {NT_STATUS(0xc0000188), W_ERROR(0x5de)},
367 {NT_STATUS(0xc0000189), W_ERROR(0x13)},
368 {NT_STATUS(0xc000018a), W_ERROR(0x6fa)},
369 {NT_STATUS(0xc000018b), W_ERROR(0x6fb)},
370 {NT_STATUS(0xc000018c), W_ERROR(0x6fc)},
371 {NT_STATUS(0xc000018d), W_ERROR(0x6fd)},
372 {NT_STATUS(0xc000018e), W_ERROR(0x5dc)},
373 {NT_STATUS(0xc000018f), W_ERROR(0x5dd)},
374 {NT_STATUS(0xc0000190), W_ERROR(0x6fe)},
375 {NT_STATUS(0xc0000192), W_ERROR(0x700)},
376 {NT_STATUS(0xc0000193), W_ERROR(0x701)},
377 {NT_STATUS(0xc0000194), W_ERROR(0x46b)},
378 {NT_STATUS(0xc0000195), W_ERROR(0x4c3)},
379 {NT_STATUS(0xc0000196), W_ERROR(0x4c4)},
380 {NT_STATUS(0xc0000197), W_ERROR(0x5df)},
381 {NT_STATUS(0xc0000198), W_ERROR(0x70f)},
382 {NT_STATUS(0xc0000199), W_ERROR(0x710)},
383 {NT_STATUS(0xc000019a), W_ERROR(0x711)},
384 {NT_STATUS(0xc000019b), W_ERROR(0x712)},
385 {NT_STATUS(0xc0000202), W_ERROR(0x572)},
386 {NT_STATUS(0xc0000203), W_ERROR(0x3b)},
387 {NT_STATUS(0xc0000204), W_ERROR(0x717)},
388 {NT_STATUS(0xc0000205), W_ERROR(0x46a)},
389 {NT_STATUS(0xc0000206), W_ERROR(0x6f8)},
390 {NT_STATUS(0xc0000207), W_ERROR(0x4be)},
391 {NT_STATUS(0xc0000208), W_ERROR(0x4be)},
392 {NT_STATUS(0xc0000209), W_ERROR(0x44)},
393 {NT_STATUS(0xc000020a), W_ERROR(0x34)},
394 {NT_STATUS(0xc000020b), W_ERROR(0x40)},
395 {NT_STATUS(0xc000020c), W_ERROR(0x40)},
396 {NT_STATUS(0xc000020d), W_ERROR(0x40)},
397 {NT_STATUS(0xc000020e), W_ERROR(0x44)},
398 {NT_STATUS(0xc000020f), W_ERROR(0x3b)},
399 {NT_STATUS(0xc0000210), W_ERROR(0x3b)},
400 {NT_STATUS(0xc0000211), W_ERROR(0x3b)},
401 {NT_STATUS(0xc0000212), W_ERROR(0x3b)},
402 {NT_STATUS(0xc0000213), W_ERROR(0x3b)},
403 {NT_STATUS(0xc0000214), W_ERROR(0x3b)},
404 {NT_STATUS(0xc0000215), W_ERROR(0x3b)},
405 {NT_STATUS(0xc0000216), W_ERROR(0x32)},
406 {NT_STATUS(0xc0000217), W_ERROR(0x32)},
407 {NT_STATUS(0xc000021c), W_ERROR(0x17e6)},
408 {NT_STATUS(0xc0000220), W_ERROR(0x46c)},
409 {NT_STATUS(0xc0000221), W_ERROR(0xc1)},
410 {NT_STATUS(0xc0000224), W_ERROR(0x773)},
411 {NT_STATUS(0xc0000225), W_ERROR(0x490)},
412 {NT_STATUS(0xc000022a), W_ERROR(0xc000022a)},
413 {NT_STATUS(0xc000022b), W_ERROR(0xc000022b)},
414 {NT_STATUS(0xc000022d), W_ERROR(0x4d5)},
415 {NT_STATUS(0xc0000230), W_ERROR(0x492)},
416 {NT_STATUS(0xc0000233), W_ERROR(0x774)},
417 {NT_STATUS(0xc0000234), W_ERROR(0x775)},
418 {NT_STATUS(0xc0000235), W_ERROR(0x6)},
419 {NT_STATUS(0xc0000236), W_ERROR(0x4c9)},
420 {NT_STATUS(0xc0000237), W_ERROR(0x4ca)},
421 {NT_STATUS(0xc0000238), W_ERROR(0x4cb)},
422 {NT_STATUS(0xc0000239), W_ERROR(0x4cc)},
423 {NT_STATUS(0xc000023a), W_ERROR(0x4cd)},
424 {NT_STATUS(0xc000023b), W_ERROR(0x4ce)},
425 {NT_STATUS(0xc000023c), W_ERROR(0x4cf)},
426 {NT_STATUS(0xc000023d), W_ERROR(0x4d0)},
427 {NT_STATUS(0xc000023e), W_ERROR(0x4d1)},
428 {NT_STATUS(0xc000023f), W_ERROR(0x4d2)},
429 {NT_STATUS(0xc0000240), W_ERROR(0x4d3)},
430 {NT_STATUS(0xc0000241), W_ERROR(0x4d4)},
431 {NT_STATUS(0xc0000243), W_ERROR(0x4c8)},
432 {NT_STATUS(0xc0000246), W_ERROR(0x4d6)},
433 {NT_STATUS(0xc0000247), W_ERROR(0x4d7)},
434 {NT_STATUS(0xc0000248), W_ERROR(0x4d8)},
435 {NT_STATUS(0xc0000249), W_ERROR(0xc1)},
436 {NT_STATUS(0xc0000253), W_ERROR(0x54f)},
437 {NT_STATUS(0xc0000257), W_ERROR(0x4d0)},
438 {NT_STATUS(0xc0000259), W_ERROR(0x573)},
439 {NT_STATUS(0xc000025e), W_ERROR(0x422)},
440 {NT_STATUS(0xc0000262), W_ERROR(0xb6)},
441 {NT_STATUS(0xc0000263), W_ERROR(0x7f)},
442 {NT_STATUS(0xc0000264), W_ERROR(0x120)},
443 {NT_STATUS(0xc0000265), W_ERROR(0x476)},
444 {NT_STATUS(0xc0000267), W_ERROR(0x10fe)},
445 {NT_STATUS(0xc000026c), W_ERROR(0x7d1)},
446 {NT_STATUS(0xc000026d), W_ERROR(0x4b1)},
447 {NT_STATUS(0xc000026e), W_ERROR(0x15)},
448 {NT_STATUS(0xc0000272), W_ERROR(0x491)},
449 {NT_STATUS(0xc0000275), W_ERROR(0x1126)},
450 {NT_STATUS(0xc0000276), W_ERROR(0x1129)},
451 {NT_STATUS(0xc0000277), W_ERROR(0x112a)},
452 {NT_STATUS(0xc0000278), W_ERROR(0x1128)},
453 {NT_STATUS(0xc0000279), W_ERROR(0x780)},
454 {NT_STATUS(0xc0000280), W_ERROR(0x781)},
455 {NT_STATUS(0xc0000281), W_ERROR(0xa1)},
456 {NT_STATUS(0xc0000283), W_ERROR(0x488)},
457 {NT_STATUS(0xc0000284), W_ERROR(0x489)},
458 {NT_STATUS(0xc0000285), W_ERROR(0x48a)},
459 {NT_STATUS(0xc0000286), W_ERROR(0x48b)},
460 {NT_STATUS(0xc0000287), W_ERROR(0x48c)},
461 {NT_STATUS(0xc000028a), W_ERROR(0x5)},
462 {NT_STATUS(0xc000028b), W_ERROR(0x5)},
463 {NT_STATUS(0xc000028d), W_ERROR(0x5)},
464 {NT_STATUS(0xc000028e), W_ERROR(0x5)},
465 {NT_STATUS(0xc000028f), W_ERROR(0x5)},
466 {NT_STATUS(0xc0000290), W_ERROR(0x5)},
467 {NT_STATUS(0xc0000291), W_ERROR(0x1777)},
468 {NT_STATUS(0xc0000292), W_ERROR(0x1778)},
469 {NT_STATUS(0xc0000293), W_ERROR(0x1772)},
470 {NT_STATUS(0xc0000295), W_ERROR(0x1068)},
471 {NT_STATUS(0xc0000296), W_ERROR(0x1069)},
472 {NT_STATUS(0xc0000297), W_ERROR(0x106a)},
473 {NT_STATUS(0xc0000298), W_ERROR(0x106b)},
474 {NT_STATUS(0xc0000299), W_ERROR(0x201a)},
475 {NT_STATUS(0xc000029a), W_ERROR(0x201b)},
476 {NT_STATUS(0xc000029b), W_ERROR(0x201c)},
477 {NT_STATUS(0xc000029c), W_ERROR(0x1)},
478 {NT_STATUS(0xc000029d), W_ERROR(0x10ff)},
479 {NT_STATUS(0xc000029e), W_ERROR(0x1100)},
480 {NT_STATUS(0xc000029f), W_ERROR(0x494)},
481 {NT_STATUS(0xc00002a1), W_ERROR(0x200a)},
482 {NT_STATUS(0xc00002a2), W_ERROR(0x200b)},
483 {NT_STATUS(0xc00002a3), W_ERROR(0x200c)},
484 {NT_STATUS(0xc00002a4), W_ERROR(0x200d)},
485 {NT_STATUS(0xc00002a5), W_ERROR(0x200e)},
486 {NT_STATUS(0xc00002a6), W_ERROR(0x200f)},
487 {NT_STATUS(0xc00002a7), W_ERROR(0x2010)},
488 {NT_STATUS(0xc00002a8), W_ERROR(0x2011)},
489 {NT_STATUS(0xc00002a9), W_ERROR(0x2012)},
490 {NT_STATUS(0xc00002aa), W_ERROR(0x2013)},
491 {NT_STATUS(0xc00002ab), W_ERROR(0x2014)},
492 {NT_STATUS(0xc00002ac), W_ERROR(0x2015)},
493 {NT_STATUS(0xc00002ad), W_ERROR(0x2016)},
494 {NT_STATUS(0xc00002ae), W_ERROR(0x2017)},
495 {NT_STATUS(0xc00002af), W_ERROR(0x2018)},
496 {NT_STATUS(0xc00002b0), W_ERROR(0x2019)},
497 {NT_STATUS(0xc00002b1), W_ERROR(0x211e)},
498 {NT_STATUS(0xc00002b2), W_ERROR(0x1127)},
499 {NT_STATUS(0xc00002b6), W_ERROR(0x651)},
500 {NT_STATUS(0xc00002b7), W_ERROR(0x49a)},
501 {NT_STATUS(0xc00002b8), W_ERROR(0x49b)},
502 {NT_STATUS(0xc00002c1), W_ERROR(0x2024)},
503 {NT_STATUS(0xc00002c3), W_ERROR(0x575)},
504 {NT_STATUS(0xc00002c5), W_ERROR(0x3e6)},
505 {NT_STATUS(0xc00002c6), W_ERROR(0x1075)},
506 {NT_STATUS(0xc00002c7), W_ERROR(0x1076)},
507 {NT_STATUS(0xc00002ca), W_ERROR(0x10e8)},
508 {NT_STATUS(0xc00002cb), W_ERROR(0x2138)},
509 {NT_STATUS(0xc00002cc), W_ERROR(0x4e3)},
510 {NT_STATUS(0xc00002cd), W_ERROR(0x2139)},
511 {NT_STATUS(0xc00002cf), W_ERROR(0x49d)},
512 {NT_STATUS(0xc00002d0), W_ERROR(0x213a)},
513 {NT_STATUS(0xc00002d4), W_ERROR(0x2141)},
514 {NT_STATUS(0xc00002d5), W_ERROR(0x2142)},
515 {NT_STATUS(0xc00002d6), W_ERROR(0x2143)},
516 {NT_STATUS(0xc00002d7), W_ERROR(0x2144)},
517 {NT_STATUS(0xc00002d8), W_ERROR(0x2145)},
518 {NT_STATUS(0xc00002d9), W_ERROR(0x2146)},
519 {NT_STATUS(0xc00002da), W_ERROR(0x2147)},
520 {NT_STATUS(0xc00002db), W_ERROR(0x2148)},
521 {NT_STATUS(0xc00002dc), W_ERROR(0x2149)},
522 {NT_STATUS(0xc00002dd), W_ERROR(0x32)},
523 {NT_STATUS(0xc00002df), W_ERROR(0x2151)},
524 {NT_STATUS(0xc00002e0), W_ERROR(0x2152)},
525 {NT_STATUS(0xc00002e1), W_ERROR(0x2153)},
526 {NT_STATUS(0xc00002e2), W_ERROR(0x2154)},
527 {NT_STATUS(0xc00002e3), W_ERROR(0x215d)},
528 {NT_STATUS(0xc00002e4), W_ERROR(0x2163)},
529 {NT_STATUS(0xc00002e5), W_ERROR(0x2164)},
530 {NT_STATUS(0xc00002e6), W_ERROR(0x2165)},
531 {NT_STATUS(0xc00002e7), W_ERROR(0x216d)},
532 {NT_STATUS(0xc00002fe), W_ERROR(0x45b)},
533 {NT_STATUS(0xc00002ff), W_ERROR(0x4e7)},
534 {NT_STATUS(0xc0000300), W_ERROR(0x4e6)},
535 {NT_STATUS(0x80000001), W_ERROR(0x80000001)},
536 {NT_STATUS(0x80000002), W_ERROR(0x3e6)},
537 {NT_STATUS(0x80000003), W_ERROR(0x80000003)},
538 {NT_STATUS(0x80000004), W_ERROR(0x80000004)},
539 {NT_STATUS(0x80000005), W_ERROR(0xea)},
540 {NT_STATUS(0x80000006), W_ERROR(0x12)},
541 {NT_STATUS(0x8000000b), W_ERROR(0x56f)},
542 {NT_STATUS(0x8000000d), W_ERROR(0x12b)},
543 {NT_STATUS(0x8000000e), W_ERROR(0x1c)},
544 {NT_STATUS(0x8000000f), W_ERROR(0x15)},
545 {NT_STATUS(0x80000010), W_ERROR(0x15)},
546 {NT_STATUS(0x80000011), W_ERROR(0xaa)},
547 {NT_STATUS(0x80000012), W_ERROR(0x103)},
548 {NT_STATUS(0x80000013), W_ERROR(0xfe)},
549 {NT_STATUS(0x80000014), W_ERROR(0xff)},
550 {NT_STATUS(0x80000015), W_ERROR(0xff)},
551 {NT_STATUS(0x80000016), W_ERROR(0x456)},
552 {NT_STATUS(0x8000001a), W_ERROR(0x103)},
553 {NT_STATUS(0x8000001b), W_ERROR(0x44d)},
554 {NT_STATUS(0x8000001c), W_ERROR(0x456)},
555 {NT_STATUS(0x8000001d), W_ERROR(0x457)},
556 {NT_STATUS(0x8000001e), W_ERROR(0x44c)},
557 {NT_STATUS(0x8000001f), W_ERROR(0x44e)},
558 {NT_STATUS(0x80000021), W_ERROR(0x44f)},
559 {NT_STATUS(0x80000022), W_ERROR(0x450)},
560 {NT_STATUS(0x80000025), W_ERROR(0x962)},
561 {NT_STATUS(0x80000288), W_ERROR(0x48d)},
562 {NT_STATUS(0x80000289), W_ERROR(0x48e)},
563 {NT_STATUS_OK, WERR_OK}};
565 static const struct {
566 WERROR werror;
567 NTSTATUS ntstatus;
568 } werror_to_ntstatus_map[] = {
569 { W_ERROR(0x5), NT_STATUS_ACCESS_DENIED },
570 { WERR_OK, NT_STATUS_OK }
573 /* Mapping between Unix, and NT error numbers */
575 static const struct {
576 int unix_error;
577 NTSTATUS nt_error;
578 } unix_nt_errmap[] = {
579 { EAGAIN, STATUS_MORE_ENTRIES },
580 { EINTR, STATUS_MORE_ENTRIES },
581 { ENOBUFS, STATUS_MORE_ENTRIES },
582 #ifdef EWOULDBLOCK
583 { EWOULDBLOCK, STATUS_MORE_ENTRIES },
584 #endif
585 { EINPROGRESS, NT_STATUS_MORE_PROCESSING_REQUIRED },
586 { EPERM, NT_STATUS_ACCESS_DENIED },
587 { EACCES, NT_STATUS_ACCESS_DENIED },
588 { ENOENT, NT_STATUS_OBJECT_NAME_NOT_FOUND },
589 { ENOTDIR, NT_STATUS_NOT_A_DIRECTORY },
590 { EIO, NT_STATUS_IO_DEVICE_ERROR },
591 { EBADF, NT_STATUS_INVALID_HANDLE },
592 { EINVAL, NT_STATUS_INVALID_PARAMETER },
593 { EEXIST, NT_STATUS_OBJECT_NAME_COLLISION},
594 { ENFILE, NT_STATUS_TOO_MANY_OPENED_FILES },
595 { EMFILE, NT_STATUS_TOO_MANY_OPENED_FILES },
596 { ENOSPC, NT_STATUS_DISK_FULL },
597 { ENOTSOCK, NT_STATUS_INVALID_HANDLE },
598 { EFAULT, NT_STATUS_INVALID_PARAMETER },
599 { EMSGSIZE, NT_STATUS_INVALID_BUFFER_SIZE },
600 { ENOMEM, NT_STATUS_NO_MEMORY },
601 { EISDIR, NT_STATUS_FILE_IS_A_DIRECTORY},
602 #ifdef EPIPE
603 { EPIPE, NT_STATUS_CONNECTION_DISCONNECTED },
604 #endif
605 { EBUSY, NT_STATUS_SHARING_VIOLATION },
606 { ENOSYS, NT_STATUS_INVALID_SYSTEM_SERVICE },
607 #ifdef EOPNOTSUPP
608 { EOPNOTSUPP, NT_STATUS_NOT_SUPPORTED},
609 #endif
610 { EMLINK, NT_STATUS_TOO_MANY_LINKS },
611 { ENOSYS, NT_STATUS_NOT_SUPPORTED },
612 #ifdef ELOOP
613 { ELOOP, NT_STATUS_OBJECT_PATH_NOT_FOUND },
614 #endif
615 #ifdef ENODATA
616 { ENODATA, NT_STATUS_NOT_FOUND },
617 #endif
618 #ifdef EFTYPE
619 { EFTYPE, NT_STATUS_OBJECT_PATH_NOT_FOUND },
620 #endif
621 #ifdef EDQUOT
622 { EDQUOT, NT_STATUS_DISK_FULL }, /* Windows apps need this, not NT_STATUS_QUOTA_EXCEEDED */
623 #endif
624 #ifdef ENOTEMPTY
625 { ENOTEMPTY, NT_STATUS_DIRECTORY_NOT_EMPTY },
626 #endif
627 #ifdef EXDEV
628 { EXDEV, NT_STATUS_NOT_SAME_DEVICE },
629 #endif
630 #ifdef EROFS
631 { EROFS, NT_STATUS_MEDIA_WRITE_PROTECTED },
632 #endif
633 #ifdef ENAMETOOLONG
634 { ENAMETOOLONG, NT_STATUS_NAME_TOO_LONG },
635 #endif
636 #ifdef EFBIG
637 { EFBIG, NT_STATUS_DISK_FULL },
638 #endif
639 #ifdef EADDRINUSE
640 { EADDRINUSE, NT_STATUS_ADDRESS_ALREADY_ASSOCIATED},
641 #endif
642 #ifdef ENETUNREACH
643 { ENETUNREACH, NT_STATUS_NETWORK_UNREACHABLE},
644 #endif
645 #ifdef EHOSTUNREACH
646 { EHOSTUNREACH, NT_STATUS_HOST_UNREACHABLE},
647 #endif
648 #ifdef ECONNREFUSED
649 { ECONNREFUSED, NT_STATUS_CONNECTION_REFUSED},
650 #endif
651 #ifdef EADDRNOTAVAIL
652 { EADDRNOTAVAIL,NT_STATUS_ADDRESS_NOT_ASSOCIATED },
653 #endif
654 #ifdef ETIMEDOUT
655 { ETIMEDOUT, NT_STATUS_IO_TIMEOUT},
656 #endif
657 #ifdef ESOCKTNOSUPPORT
658 { ESOCKTNOSUPPORT,NT_STATUS_INVALID_PARAMETER_MIX },
659 #endif
660 #ifdef EAFNOSUPPORT
661 { EAFNOSUPPORT, NT_STATUS_INVALID_PARAMETER_MIX },
662 #endif
663 #ifdef ECONNABORTED
664 { ECONNABORTED, NT_STATUS_CONNECTION_ABORTED},
665 #endif
666 #ifdef ECONNRESET
667 { ECONNRESET, NT_STATUS_CONNECTION_RESET},
668 #endif
669 #ifdef ENOPROTOOPT
670 { ENOPROTOOPT, NT_STATUS_INVALID_PARAMETER_MIX },
671 #endif
672 #ifdef ENODEV
673 { ENODEV, NT_STATUS_NO_SUCH_DEVICE },
674 #endif
675 #ifdef ENOATTR
676 { ENOATTR, NT_STATUS_NOT_FOUND },
677 #endif
678 #ifdef ECANCELED
679 { ECANCELED, NT_STATUS_CANCELLED},
680 #endif
681 #ifdef ENOTSUP
682 { ENOTSUP, NT_STATUS_NOT_SUPPORTED},
683 #endif
685 { 0, NT_STATUS_UNSUCCESSFUL }
689 /*********************************************************************
690 Map an NT error code from a Unix error code.
691 *********************************************************************/
692 NTSTATUS map_nt_error_from_unix(int unix_error)
694 int i;
696 /* Look through list */
697 for (i=0;i<ARRAY_SIZE(unix_nt_errmap);i++) {
698 if (unix_nt_errmap[i].unix_error == unix_error) {
699 return unix_nt_errmap[i].nt_error;
703 /* Default return */
704 return NT_STATUS_UNSUCCESSFUL;