Commit | Line | Data |
---|---|---|
805e021f CE |
1 | /* |
2 | * Copyright 2000, International Business Machines Corporation and others. | |
3 | * All Rights Reserved. | |
4 | * | |
5 | * This software has been released under the terms of the IBM Public | |
6 | * License. For details, see the LICENSE file in the top-level source | |
7 | * directory or online at http://www.openafs.org/dl/license10.html | |
8 | */ | |
9 | ||
10 | #ifndef __AFS_SYSINCLUDESH__ | |
11 | #define __AFS_SYSINCLUDESH__ 1 | |
12 | ||
13 | #include <stdio.h> | |
14 | #include <afs/opr.h> | |
15 | ||
16 | #if !defined(AFS_USR_DARWIN_ENV) && !defined(AFS_USR_FBSD_ENV) && !defined(AFS_USR_DFBSD_ENV) /* must be included after KERNEL undef'd */ | |
17 | #include <errno.h> | |
18 | #endif | |
19 | #include <stdlib.h> | |
20 | #include <string.h> | |
21 | #include <limits.h> | |
22 | #include <assert.h> | |
23 | #include <stdarg.h> | |
24 | ||
25 | #if !defined(AFS_USR_DARWIN_ENV) && !defined(AFS_USR_FBSD_ENV) && !defined(AFS_USR_DFBSD_ENV) /* must be included after KERNEL undef'd */ | |
26 | #include <unistd.h> | |
27 | #include <ctype.h> | |
28 | #include <sys/types.h> | |
29 | #include <dirent.h> | |
30 | #include <setjmp.h> | |
31 | #endif | |
32 | ||
33 | #ifdef AFS_USR_SUN5_ENV | |
34 | #include <signal.h> | |
35 | #include <sys/param.h> | |
36 | #include <sys/socket.h> | |
37 | #include <net/if.h> | |
38 | #include <sys/sockio.h> | |
39 | #include <sys/file.h> | |
40 | #include <sys/stat.h> | |
41 | #include <sys/fcntl.h> | |
42 | #include <netinet/in.h> | |
43 | #include <netdb.h> | |
44 | #include <arpa/inet.h> | |
45 | #endif /* AFS_USR_SUN5_ENV */ | |
46 | ||
47 | ||
48 | #ifdef AFS_USR_AIX_ENV | |
49 | #include <sys/param.h> | |
50 | #include <sys/socket.h> | |
51 | #include <net/if.h> | |
52 | #include <fcntl.h> | |
53 | #include <netinet/in.h> | |
54 | #include <sys/stropts.h> | |
55 | #include <netdb.h> | |
56 | #include <sys/timers.h> | |
57 | #include <arpa/inet.h> | |
58 | #endif /* AFS_USR_AIX_ENV */ | |
59 | ||
60 | #ifdef AFS_USR_SGI_ENV | |
61 | #include <sys/param.h> | |
62 | #include <sys/socket.h> | |
63 | #include <net/if.h> | |
64 | #include <sys/sockio.h> | |
65 | #include <sys/file.h> | |
66 | #include <sys/stat.h> | |
67 | #include <sys/fcntl.h> | |
68 | #include <netinet/in.h> | |
69 | #include <netdb.h> | |
70 | #include <arpa/inet.h> | |
71 | #endif /* AFS_USR_SGI_ENV */ | |
72 | ||
73 | #ifdef AFS_USR_HPUX_ENV | |
74 | #include <sys/param.h> | |
75 | #include <sys/socket.h> | |
76 | #include <net/if.h> | |
77 | #include <sys/file.h> | |
78 | #include <sys/stat.h> | |
79 | #include <sys/fcntl.h> | |
80 | #include <netinet/in.h> | |
81 | #include <netdb.h> | |
82 | #include <arpa/inet.h> | |
83 | #endif /* AFS_USR_HPUX_ENV */ | |
84 | ||
85 | #ifdef AFS_USR_OSF_ENV | |
86 | #ifdef KERNEL | |
87 | #undef KERNEL | |
88 | #define AFS_USR_UNDEF_KERNEL_ENV 1 | |
89 | #endif | |
90 | #include <sys/param.h> | |
91 | #include <sys/socket.h> | |
92 | #include <net/if.h> | |
93 | #include <sys/file.h> | |
94 | #include <sys/ioctl.h> | |
95 | #include <sys/stat.h> | |
96 | #include <sys/fcntl.h> | |
97 | #include <netinet/in.h> | |
98 | #include <netdb.h> | |
99 | #include <arpa/inet.h> | |
100 | #endif /* AFS_USR_OSF_ENV */ | |
101 | ||
102 | #ifdef AFS_USR_LINUX22_ENV | |
103 | #include <sys/ioctl.h> /* _IOW() */ | |
104 | #include <sys/uio.h> /* struct iovec */ | |
105 | #include <sys/time.h> /* struct timeval */ | |
106 | #include <sys/param.h> | |
107 | #include <sys/types.h> | |
108 | #include <sys/socket.h> | |
109 | #include <net/if.h> | |
110 | #include <sys/file.h> | |
111 | #include <sys/stat.h> | |
112 | #include <sys/fcntl.h> | |
113 | #include <netinet/in.h> | |
114 | #include <netdb.h> | |
115 | #include <arpa/inet.h> | |
116 | #define FREAD 0x0001 | |
117 | #endif /* AFS_USR_LINUX22_ENV */ | |
118 | ||
119 | #if defined(AFS_USR_DARWIN_ENV) || defined(AFS_USR_FBSD_ENV) || defined(AFS_USR_DFBSD_ENV) | |
120 | #ifdef _KERNEL | |
121 | #undef _KERNEL | |
122 | #endif | |
123 | #ifdef KERNEL | |
124 | #undef KERNEL | |
125 | #define AFS_USR_UNDEF_KERNEL_ENV 1 | |
126 | #endif | |
127 | #include <errno.h> | |
128 | #include <setjmp.h> | |
129 | #include <sys/param.h> | |
130 | #include <sys/types.h> | |
131 | #include <sys/socket.h> | |
132 | #include <net/if.h> | |
133 | #include <sys/file.h> | |
134 | #include <sys/ioctl.h> | |
135 | #include <sys/stat.h> | |
136 | #include <sys/fcntl.h> | |
137 | #include <sys/uio.h> | |
138 | #include <netinet/in.h> | |
139 | #include <netdb.h> | |
140 | #include <arpa/inet.h> | |
141 | #include <dirent.h> | |
142 | #include <ctype.h> | |
143 | #include <unistd.h> | |
144 | #ifndef O_SYNC | |
145 | #define O_SYNC O_FSYNC | |
146 | #endif | |
147 | #endif /* AFS_USR_DARWIN_ENV || AFS_USR_FBSD_ENV */ | |
148 | ||
149 | #ifdef HAVE_SYS_BITYPES_H | |
150 | #include <sys/bitypes.h> | |
151 | #endif | |
152 | #ifdef HAVE_SYS_STATFS_H | |
153 | #include <sys/statfs.h> | |
154 | #endif | |
155 | #ifdef HAVE_SYS_STATVFS_H | |
156 | #include <sys/statvfs.h> | |
157 | #endif | |
158 | ||
159 | #ifndef HAVE_FSBLKCNT_T | |
160 | typedef unsigned int fsblkcnt_t; | |
161 | #endif | |
162 | ||
163 | #include <arpa/nameser.h> | |
164 | #ifdef HAVE_ARPA_NAMESER_COMPAT_H | |
165 | #include <arpa/nameser_compat.h> | |
166 | #endif | |
167 | #include <resolv.h> | |
168 | ||
169 | /* glibc 2.2 has pthread_attr_setstacksize */ | |
170 | #if (defined(AFS_LINUX22_ENV) && !defined(AFS_USR_LINUX22_ENV)) || (defined(AFS_USR_LINUX22_ENV) && (__GLIBC_MINOR__ < 2)) | |
171 | #define pthread_attr_setstacksize(a,b) 0 | |
172 | #endif | |
173 | ||
174 | #include <sys/stat.h> /* afs_usrops.h uses struct stat in prototypes */ | |
175 | ||
176 | #include <pthread.h> | |
177 | ||
178 | #ifdef AFS_USR_UNDEF_KERNEL_ENV | |
179 | #undef AFS_USR_UNDEF_KERNEL_ENV | |
180 | #define KERNEL 1 | |
181 | #endif | |
182 | ||
183 | /* | |
184 | * User space versions of kernel data structures. | |
185 | */ | |
186 | ||
187 | #ifndef MAXNAMLEN | |
188 | #define MAXNAMLEN 512 | |
189 | #endif | |
190 | ||
191 | /* | |
192 | * This file contains data types and definitions for running | |
193 | * the AFS client in user space. Kernel data structures | |
194 | * are renamed from XXXX to usr_XXXX. | |
195 | */ | |
196 | ||
197 | #ifdef UKERNEL | |
198 | ||
199 | #undef socket | |
200 | #undef flock | |
201 | ||
202 | #if defined(AFS_USR_DARWIN_ENV) || defined(AFS_USR_FBSD_ENV) | |
203 | #undef if_mtu | |
204 | #undef if_metric | |
205 | #endif | |
206 | ||
207 | #define mount usr_mount | |
208 | #define fs usr_fs | |
209 | #define uio usr_uio | |
210 | #define fileops usr_fileops | |
211 | #define vnodeops usr_vnodeops | |
212 | #define vnode usr_vnode | |
213 | #define inode usr_inode | |
214 | #define whymountroot_t usr_whymountroot_t | |
215 | #define vfsops usr_vfsops | |
216 | #define vfs usr_vfs | |
217 | #define vattr usr_vattr | |
218 | #define buf usr_buf | |
219 | #define statfs usr_statfs | |
220 | #define file usr_file | |
221 | #define dirent usr_dirent | |
222 | #define flock usr_flock | |
223 | #define fid usr_fid | |
224 | #define sysent usr_sysent | |
225 | #define ifaddr usr_ifaddr | |
226 | #define ifnet usr_ifnet | |
227 | #define in_ifaddr usr_in_ifaddr | |
228 | #undef socket | |
229 | #define socket usr_socket | |
230 | #define crget usr_crget | |
231 | #define crcopy usr_crcopy | |
232 | #define crhold usr_crhold | |
233 | #define crfree usr_crfree | |
234 | #define vtype_t usr_vtype_t | |
235 | #define vcexcl usr_vcexcl | |
236 | #define m_free usr_m_free | |
237 | #define m_freem usr_m_freem | |
238 | #define m_adj usr_m_adj | |
239 | #define m_pullup usr_m_pullup | |
240 | #define uiomove usr_uiomove | |
241 | #define EXCL usr_EXCL | |
242 | #define NONEXCL usr_NONEXCL | |
243 | #define uio_rw usr_uio_rw | |
244 | #ifdef ino_t | |
245 | #undef ino_t | |
246 | #endif | |
247 | #define ino_t usr_ino_t | |
248 | #define offset_t usr_offset_t | |
249 | #define getpid() usr_getpid() | |
250 | #define setpag(A,B,C,D) usr_setpag((A),(B),(C),(D)) | |
251 | #define osi_getpid() afs_pointer_to_int(usr_thread_self()) | |
252 | #ifdef pid_t | |
253 | #undef pid_t | |
254 | #endif | |
255 | #define pid_t int | |
256 | ||
257 | enum usr_vcexcl { usr_NONEXCL, usr_EXCL }; | |
258 | typedef long offset_t; | |
259 | #ifdef AFS_USR_OSF_ENV | |
260 | typedef int usr_ino_t; | |
261 | #else /* AFS_USR_OSF_ENV */ | |
262 | typedef long usr_ino_t; | |
263 | #endif /* AFS_USR_OSF_ENV */ | |
264 | ||
265 | #if defined(AFS_USR_AIX_ENV) || defined(AFS_USR_SGI_ENV) | |
266 | #define SYS_setgroups 101 | |
267 | #endif | |
268 | ||
269 | #define ioctl() usr_ioctl() | |
270 | ||
271 | #define label_t jmp_buf | |
272 | ||
273 | #ifdef VFSTOM | |
274 | #undef VFSTOM | |
275 | #endif | |
276 | ||
277 | #define VFSTOM(VP) ((struct usr_mount *)(VP)->vfs_mount) | |
278 | ||
279 | #ifdef VINACT | |
280 | #undef VINACT | |
281 | #endif | |
282 | #ifdef VLOCK | |
283 | #undef VLOCK | |
284 | #endif | |
285 | #ifdef VNOMAP | |
286 | #undef VNOMAP | |
287 | #endif | |
288 | #ifdef VROOT | |
289 | #undef VROOT | |
290 | #endif | |
291 | #ifdef VSHARE | |
292 | #undef VSHARE | |
293 | #endif | |
294 | #ifdef VTEXT | |
295 | #undef VTEXT | |
296 | #endif | |
297 | #ifdef VWAIT | |
298 | #undef VWAIT | |
299 | #endif | |
300 | #ifdef VWASMAP | |
301 | #undef VWASMAP | |
302 | #endif | |
303 | #ifdef VXLOCK | |
304 | #undef VXLOCK | |
305 | #endif | |
306 | ||
307 | #define VINACT 0x0001 | |
308 | #define VLOCK 0x0002 | |
309 | #define VNOMAP 0x0004 | |
310 | #define VROOT 0x0008 | |
311 | #define VSHARE 0x0010 | |
312 | #define VTEXT 0x0020 | |
313 | #define VWAIT 0x0040 | |
314 | #define VWASMAP 0x0080 | |
315 | #define VXLOCK 0x0100 | |
316 | ||
317 | #ifdef VNON | |
318 | #undef VNON | |
319 | #endif | |
320 | #ifdef VREG | |
321 | #undef VREG | |
322 | #endif | |
323 | #ifdef VDIR | |
324 | #undef VDIR | |
325 | #endif | |
326 | #ifdef VBLK | |
327 | #undef VBLK | |
328 | #endif | |
329 | #ifdef VCHR | |
330 | #undef VCHR | |
331 | #endif | |
332 | #ifdef VLNK | |
333 | #undef VLNK | |
334 | #endif | |
335 | #ifdef VFIFO | |
336 | #undef VFIFO | |
337 | #endif | |
338 | #ifdef VSOCK | |
339 | #undef VSOCK | |
340 | #endif | |
341 | ||
342 | #define VNON 0 | |
343 | #define VREG S_IFREG | |
344 | #define VDIR S_IFDIR | |
345 | #define VBLK S_IFBLK | |
346 | #define VCHR S_IFCHR | |
347 | #define VLNK S_IFLNK | |
348 | #define VSOCK S_IFSOCK | |
349 | #define VFIFO S_IFIFO | |
350 | ||
351 | typedef int usr_vtype_t; | |
352 | ||
353 | #ifdef VOP_RDWR | |
354 | #undef VOP_RDWR | |
355 | #endif | |
356 | ||
357 | #define VOP_RDWR afs_osi_VOP_RDWR | |
358 | ||
359 | #ifdef NDADDR | |
360 | #undef NDADDR | |
361 | #endif | |
362 | #ifdef NIADDR | |
363 | #undef NIADDR | |
364 | #endif | |
365 | ||
366 | #define NDADDR 12 | |
367 | #define NIADDR 3 | |
368 | ||
369 | #ifdef DTYPE_VNODE | |
370 | #undef DTYPE_VNODE | |
371 | #endif | |
372 | ||
373 | #define DTYPE_VNODE 1 | |
374 | ||
375 | #ifdef IUPD | |
376 | #undef IUPD | |
377 | #endif | |
378 | #ifdef IACC | |
379 | #undef IACC | |
380 | #endif | |
381 | #ifdef IMOD | |
382 | #undef IMOD | |
383 | #endif | |
384 | #ifdef ICHG | |
385 | #undef ICHG | |
386 | #endif | |
387 | #ifdef INOACC | |
388 | #undef INOACC | |
389 | #endif | |
390 | #ifdef IMODTIME | |
391 | #undef IMODTIME | |
392 | #endif | |
393 | #ifdef IREF | |
394 | #undef IREF | |
395 | #endif | |
396 | #ifdef ISYNC | |
397 | #undef ISYNC | |
398 | #endif | |
399 | #ifdef IFASTSYMLNK | |
400 | #undef IFASTSYMLNK | |
401 | #endif | |
402 | #ifdef IMODACC | |
403 | #undef IMODACC | |
404 | #endif | |
405 | #ifdef IATTCHG | |
406 | #undef IATTCHG | |
407 | #endif | |
408 | #ifdef IBDWRITE | |
409 | #undef IBDWRITE | |
410 | #endif | |
411 | #ifdef IBAD | |
412 | #undef IBAD | |
413 | #endif | |
414 | #ifdef IDEL | |
415 | #undef IDEL | |
416 | #endif | |
417 | ||
418 | #define IUPD 0x0001 | |
419 | #define IACC 0x0002 | |
420 | #define IMOD 0x0004 | |
421 | #define ICHG 0x0008 | |
422 | #define INOACC 0x0010 | |
423 | #define IMODTIME 0x0020 | |
424 | #define IREF 0x0040 | |
425 | #define ISYNC 0x0080 | |
426 | #define IFASTSYMLNK 0x0100 | |
427 | #define IMODACC 0x0200 | |
428 | #define IATTCHG 0x0400 | |
429 | #define IBDWRITE 0x0800 | |
430 | #define IBAD 0x1000 | |
431 | #define IDEL 0x2000 | |
432 | ||
433 | #ifdef IFMT | |
434 | #undef IFMT | |
435 | #endif | |
436 | #ifdef IFIFO | |
437 | #undef IFIFO | |
438 | #endif | |
439 | #ifdef IFCHR | |
440 | #undef IFCHR | |
441 | #endif | |
442 | #ifdef IFDIR | |
443 | #undef IFDIR | |
444 | #endif | |
445 | #ifdef IFBLK | |
446 | #undef IFBLK | |
447 | #endif | |
448 | #ifdef IFREG | |
449 | #undef IFREG | |
450 | #endif | |
451 | #ifdef IFLNK | |
452 | #undef IFLNK | |
453 | #endif | |
454 | #ifdef IFSHAD | |
455 | #undef IFSHAD | |
456 | #endif | |
457 | #ifdef IFSOCK | |
458 | #undef IFSOCK | |
459 | #endif | |
460 | ||
461 | #define IFMT 0170000 | |
462 | #define IFIFO 0010000 | |
463 | #define IFCHR 0020000 | |
464 | #define IFDIR 0040000 | |
465 | #define IFBLK 0060000 | |
466 | #define IFREG 0100000 | |
467 | #define IFLNK 0120000 | |
468 | #define IFSHAD 0130000 | |
469 | #define IFSOCK 0140000 | |
470 | ||
471 | #ifdef ISUID | |
472 | #undef ISUID | |
473 | #endif | |
474 | #ifdef ISGID | |
475 | #undef ISGID | |
476 | #endif | |
477 | #ifdef ISVTX | |
478 | #undef ISVTX | |
479 | #endif | |
480 | #ifdef IREAD | |
481 | #undef IREAD | |
482 | #endif | |
483 | #ifdef IWRITE | |
484 | #undef IWRITE | |
485 | #endif | |
486 | #ifdef IEXEC | |
487 | #undef IEXEC | |
488 | #endif | |
489 | ||
490 | #define ISUID 04000 | |
491 | #define ISGID 02000 | |
492 | #define ISVTX 01000 | |
493 | #define IREAD 0400 | |
494 | #define IWRITE 0200 | |
495 | #define IEXEC 0100 | |
496 | ||
497 | #ifdef I_SYNC | |
498 | #undef I_SYNC | |
499 | #endif | |
500 | #ifdef I_DSYNC | |
501 | #undef I_DSYNC | |
502 | #endif | |
503 | #ifdef I_ASYNC | |
504 | #undef I_ASYNC | |
505 | #endif | |
506 | ||
507 | #define I_SYNC 1 | |
508 | #define I_DSYNC 2 | |
509 | #define I_ASYNC 0 | |
510 | ||
511 | #ifdef I_FREE | |
512 | #undef I_FREE | |
513 | #endif | |
514 | #ifdef I_DIR | |
515 | #undef I_DIR | |
516 | #endif | |
517 | #ifdef I_IBLK | |
518 | #undef I_IBLK | |
519 | #endif | |
520 | #ifdef I_CHEAP | |
521 | #undef I_CHEAP | |
522 | #endif | |
523 | #ifdef I_SHAD | |
524 | #undef I_SHAD | |
525 | #endif | |
526 | #ifdef I_QUOTA | |
527 | #undef I_QUOTA | |
528 | #endif | |
529 | ||
530 | #define I_FREE 0x00000001 | |
531 | #define I_DIR 0x00000002 | |
532 | #define I_IBLK 0x00000004 | |
533 | #define I_CHEAP 0x00000008 | |
534 | #define I_SHAD 0x00000010 | |
535 | #define I_QUOTA 0x00000020 | |
536 | ||
537 | #ifdef VTOI | |
538 | #undef VTOI | |
539 | #endif | |
540 | #ifdef ITOV | |
541 | #undef ITOV | |
542 | #endif | |
543 | ||
544 | #define VTOI(VP) ((struct usr_inode *)(VP)->v_data) | |
545 | #define ITOV(IP) ((struct usr_vnode *)&(IP)->i_vnode) | |
546 | ||
547 | #ifdef VN_HOLD | |
548 | #undef VN_HOLD | |
549 | #endif | |
550 | #ifdef VN_RELE | |
551 | #undef VN_RELE | |
552 | #endif | |
553 | ||
554 | #ifdef ROOT_INIT | |
555 | #undef ROOT_INIT | |
556 | #endif | |
557 | #ifdef ROOT_REMOUNT | |
558 | #undef ROOT_REMOUNT | |
559 | #endif | |
560 | #ifdef ROOT_UNMOUNT | |
561 | #undef ROOT_UNMOUNT | |
562 | #endif | |
563 | #ifdef ROOT_FRONTMOUNT | |
564 | #undef ROOT_FRONTMOUNT | |
565 | #endif | |
566 | #ifdef ROOT_BACKMOUNT | |
567 | #undef ROOT_BACKMOUNT | |
568 | #endif | |
569 | ||
570 | #define ROOT_INIT 0x0001 | |
571 | #define ROOT_REMOUNT 0X0002 | |
572 | #define ROOT_UNMOUNT 0x0003 | |
573 | #define ROOT_FRONTMOUNT 0x0004 | |
574 | #define ROOT_BACKMOUNT 0x0005 | |
575 | ||
576 | #ifdef MAXFIDSZ | |
577 | #undef MAXFIDSZ | |
578 | #endif | |
579 | ||
580 | #define MAXFIDSZ 64 | |
581 | ||
582 | #ifdef FSTYPSZ | |
583 | #undef FSTYPSZ | |
584 | #endif | |
585 | ||
586 | #define FSTYPSZ 16 | |
587 | ||
588 | #ifdef VFS_MOUNT | |
589 | #undef VFS_MOUNT | |
590 | #endif | |
591 | #ifdef VFS_UNMOUNT | |
592 | #undef VFS_UNMOUNT | |
593 | #endif | |
594 | #ifdef VFS_ROOT | |
595 | #undef VFS_ROOT | |
596 | #endif | |
597 | #ifdef VFS_STATFS | |
598 | #undef VFS_STATFFS | |
599 | #endif | |
600 | #ifdef VFS_SYNC | |
601 | #undef VFS_SYNC | |
602 | #endif | |
603 | #ifdef VFS_VGET | |
604 | #undef VFS_VGET | |
605 | #endif | |
606 | #ifdef VFS_MOUNTROOT | |
607 | #undef VFS_MOUNTROOT | |
608 | #endif | |
609 | #ifdef VFS_SWAPVP | |
610 | #undef VFS_SWAPVP | |
611 | #endif | |
612 | #ifdef VFS_MOUNT | |
613 | #undef VFS_MOUNT | |
614 | #endif | |
615 | ||
616 | #define VFS_STATFS(vfsp, sp) ((sp)->f_bsize=4096, 0) | |
617 | ||
618 | #ifdef FAPPEND | |
619 | #undef FAPPEND | |
620 | #endif | |
621 | #ifdef FSYNC | |
622 | #undef FSYNC | |
623 | #endif | |
624 | #ifdef FTRUNC | |
625 | #undef FTRUNC | |
626 | #endif | |
627 | #ifdef FWRITE | |
628 | #undef FWRITE | |
629 | #endif | |
630 | #ifdef IO_APPEND | |
631 | #undef IO_APPEND | |
632 | #endif | |
633 | #ifdef IO_SYNC | |
634 | #undef IO_SYNC | |
635 | #endif | |
636 | ||
637 | #define FAPPEND 0x0100 | |
638 | #define IO_APPEND FAPPEND | |
639 | #define FSYNC 0x0200 | |
640 | #define IO_SYNC FSYNC | |
641 | #define FTRUNC 0x0400 | |
642 | #define FWRITE 0x0800 | |
643 | ||
644 | #ifdef F_GETLK | |
645 | #undef F_GETLK | |
646 | #endif | |
647 | #ifdef F_RDLCK | |
648 | #undef F_RDLCK | |
649 | #endif | |
650 | #ifdef F_SETLK | |
651 | #undef F_SETLK | |
652 | #endif | |
653 | #ifdef F_SETLKW | |
654 | #undef F_SETLKW | |
655 | #endif | |
656 | #ifdef F_UNLCK | |
657 | #undef F_UNLCK | |
658 | #endif | |
659 | #ifdef F_WRLCK | |
660 | #undef F_WRLCK | |
661 | #endif | |
662 | ||
663 | #define F_GETLK 0x0001 | |
664 | #define F_RDLCK 0x0002 | |
665 | #define F_SETLK 0x0003 | |
666 | #define F_SETLKW 0x0004 | |
667 | #define F_UNLCK 0x0005 | |
668 | #define F_WRLCK 0x0006 | |
669 | ||
670 | #ifdef LOCK_SH | |
671 | #undef LOCK_SH | |
672 | #endif | |
673 | #ifdef LOCK_EX | |
674 | #undef LOCK_EX | |
675 | #endif | |
676 | #ifdef LOCK_NB | |
677 | #undef LOCK_NB | |
678 | #endif | |
679 | #ifdef LOCK_UN | |
680 | #undef LOCK_UN | |
681 | #endif | |
682 | ||
683 | #define LOCK_SH F_RDLCK | |
684 | #define LOCK_UN F_UNLCK | |
685 | #define LOCK_EX F_WRLCK | |
686 | #define LOCK_NB 0x0007 | |
687 | ||
688 | #ifdef FEXLOCK | |
689 | #undef FEXLOCK | |
690 | #endif | |
691 | #ifdef FSHLOCK | |
692 | #undef FSHLOCK | |
693 | #endif | |
694 | ||
695 | #define FEXLOCK F_WRLCK | |
696 | #define FSHLOCK F_RDLCK | |
697 | ||
698 | #ifdef SSYS | |
699 | #undef SSYS | |
700 | #endif | |
701 | ||
702 | #define SSYS 0x0001 | |
703 | ||
704 | enum usr_uio_rw { USR_UIO_READ, USR_UIO_WRITE }; | |
705 | ||
706 | #ifdef UIO_READ | |
707 | #undef UIO_READ | |
708 | #endif | |
709 | #ifdef UIO_WRITE | |
710 | #undef UIO_WRITE | |
711 | #endif | |
712 | ||
713 | #define UIO_READ 0x0000 | |
714 | #define UIO_WRITE 0x0001 | |
715 | ||
716 | #ifdef UIO_USERSPACE | |
717 | #undef UIO_USERSPACE | |
718 | #endif | |
719 | #ifdef UIO_SYSSPACE | |
720 | #undef UIO_SYSSPACE | |
721 | #endif | |
722 | ||
723 | #define UIO_USERSPACE 0x0000 | |
724 | #define UIO_SYSSPACE 0x0001 | |
725 | ||
726 | #ifdef B_AGE | |
727 | #undef B_AGE | |
728 | #endif | |
729 | #ifdef B_ASYNC | |
730 | #undef B_ASYNC | |
731 | #endif | |
732 | #ifdef B_DELWRI | |
733 | #undef B_DELWRI | |
734 | #endif | |
735 | #ifdef B_DIRTY | |
736 | #undef B_DIRTY | |
737 | #endif | |
738 | #ifdef B_DONE | |
739 | #undef B_DONE | |
740 | #endif | |
741 | #ifdef B_ERROR | |
742 | #undef B_ERROR | |
743 | #endif | |
744 | #ifdef B_FREE | |
745 | #undef B_FREE | |
746 | #endif | |
747 | #ifdef B_NOCACHE | |
748 | #undef B_NOCACHE | |
749 | #endif | |
750 | #ifdef B_PFSTORE | |
751 | #undef B_PFSTORE | |
752 | #endif | |
753 | #ifdef B_READ | |
754 | #undef B_READ | |
755 | #endif | |
756 | #ifdef B_UBC | |
757 | #undef B_UBC | |
758 | #endif | |
759 | #ifdef B_WANTED | |
760 | #undef B_WANTED | |
761 | #endif | |
762 | #ifdef B_WRITE | |
763 | #undef B_WRITE | |
764 | #endif | |
765 | ||
766 | #define B_AGE 0x0001 | |
767 | #define B_ASYNC 0x0002 | |
768 | #define B_DELWRI 0x0004 | |
769 | #define B_DIRTY 0x0008 | |
770 | #define B_DONE 0x0010 | |
771 | #define B_ERROR 0x0020 | |
772 | #define B_FREE 0x0040 | |
773 | #define B_NOCACHE 0x0080 | |
774 | #define B_PFSTORE 0x0100 | |
775 | #define B_READ 0x0200 | |
776 | #define B_UBC 0x0400 | |
777 | #define B_WANTED 0x0800 | |
778 | #define B_WRITE 0x1000 | |
779 | ||
780 | #ifdef MFREE | |
781 | #undef MFREE | |
782 | #endif | |
783 | #ifdef MINUSE | |
784 | #undef MINUSE | |
785 | #endif | |
786 | #ifdef MINTER | |
787 | #undef MINTER | |
788 | #endif | |
789 | #ifdef MUPDATE | |
790 | #undef MUPDATE | |
791 | #endif | |
792 | ||
793 | #define MFREE 0 | |
794 | #define MINUSE 1 | |
795 | #define MINTER 2 | |
796 | #define MUPDATE 4 | |
797 | ||
798 | #ifdef MSIZE | |
799 | #undef MSIZE | |
800 | #endif | |
801 | #ifdef MMAXOFF | |
802 | #undef MMAXOFF | |
803 | #endif | |
804 | ||
805 | #define MSIZE 16384 | |
806 | #define MMAXOFF 16384 | |
807 | ||
808 | #ifdef IA_SIN | |
809 | #undef IA_SIN | |
810 | #endif | |
811 | ||
812 | #define IA_SIN(IA) (&(IA)->ia_addr) | |
813 | ||
814 | #ifdef mtod | |
815 | #undef mtod | |
816 | #endif | |
817 | #ifdef dtom | |
818 | #undef dtom | |
819 | #endif | |
820 | #ifdef mtocl | |
821 | #undef mtocl | |
822 | #endif | |
823 | ||
824 | #define mtod(m,t) ((t)((m)->m_data)) | |
825 | ||
826 | #ifdef NBPG | |
827 | #undef NBPG | |
828 | #endif | |
829 | #define NBPG 4096 | |
830 | ||
831 | static_inline void panic(const char *format, ...) AFS_NORETURN; | |
832 | static_inline void panic(const char *format, ...) | |
833 | { | |
834 | va_list ap; | |
835 | va_start(ap, format); | |
836 | vfprintf(stderr, format, ap); | |
837 | va_end(ap); | |
838 | assert(0); | |
839 | } | |
840 | #define abort() assert(0) | |
841 | #define usr_assert(A) assert(A) | |
842 | ||
843 | ||
844 | /* | |
845 | * Mutex and condition variable used to implement sleep | |
846 | */ | |
847 | extern pthread_mutex_t usr_sleep_mutex; | |
848 | extern pthread_cond_t usr_sleep_cond; | |
849 | ||
850 | #define usr_cond_t pthread_cond_t | |
851 | #define usr_mutex_t pthread_mutex_t | |
852 | #define usr_thread_t pthread_t | |
853 | #define usr_key_t pthread_key_t | |
854 | ||
855 | #define usr_mutex_init(A) opr_Verify(pthread_mutex_init(A,NULL) == 0) | |
856 | #define usr_mutex_destroy(A) opr_Verify(pthread_mutex_destroy(A) == 0) | |
857 | #define usr_mutex_lock(A) opr_Verify(pthread_mutex_lock(A) == 0) | |
858 | #define usr_mutex_trylock(A) ((pthread_mutex_trylock(A)==0)?1:0) | |
859 | #define usr_mutex_unlock(A) opr_Verify(pthread_mutex_unlock(A) == 0) | |
860 | #define usr_cond_init(A) opr_Verify(pthread_cond_init(A,NULL) == 0) | |
861 | #define usr_cond_destroy(A) opr_Verify(pthread_cond_destroy(A) == 0) | |
862 | #define usr_cond_signal(A) opr_Verify(pthread_cond_signal(A) == 0) | |
863 | #define usr_cond_broadcast(A) opr_Verify(pthread_cond_broadcast(A) == 0) | |
864 | #define usr_cond_wait(A,B) pthread_cond_wait(A,B) | |
865 | #define usr_cond_timedwait(A,B,C) pthread_cond_timedwait(A,B,C) | |
866 | ||
867 | #define usr_thread_create(A,B,C) \ | |
868 | do { \ | |
869 | pthread_attr_t attr; \ | |
870 | opr_Verify(pthread_attr_init(&attr) == 0); \ | |
871 | opr_Verify(pthread_attr_setstacksize(&attr, 122880) == 0); \ | |
872 | opr_Verify(pthread_create((A), &attr, (B), (void *)(C)) == 0); \ | |
873 | opr_Verify(pthread_attr_destroy(&attr) == 0); \ | |
874 | } while(0) | |
875 | #define usr_thread_join(A,B) pthread_join(A, B) | |
876 | #define usr_thread_detach(A) pthread_detach(A) | |
877 | #define usr_keycreate(A,B) opr_Verify(pthread_key_create(A,B) == 0) | |
878 | #define usr_setspecific(A,B) pthread_setspecific(A,B) | |
879 | #define usr_getspecific(A,B) (*(B)=pthread_getspecific(A),0) | |
880 | #define usr_thread_self() pthread_self() | |
881 | #define usr_thread_sleep(A) \ | |
882 | { \ | |
883 | struct timespec _sleep_ts; \ | |
884 | struct timeval _sleep_tv; \ | |
885 | gettimeofday(&_sleep_tv, NULL); \ | |
886 | _sleep_ts = *(A); \ | |
887 | _sleep_ts.tv_sec += _sleep_tv.tv_sec; \ | |
888 | _sleep_ts.tv_nsec += _sleep_tv.tv_usec * 1000; \ | |
889 | if (_sleep_ts.tv_nsec >= 1000000000) { \ | |
890 | _sleep_ts.tv_sec += 1; \ | |
891 | _sleep_ts.tv_nsec -= 1000000000; \ | |
892 | } \ | |
893 | opr_Verify(pthread_mutex_lock(&usr_sleep_mutex) == 0); \ | |
894 | pthread_cond_timedwait(&usr_sleep_cond, &usr_sleep_mutex, &_sleep_ts); \ | |
895 | opr_Verify(pthread_mutex_unlock(&usr_sleep_mutex) == 0); \ | |
896 | } | |
897 | ||
898 | #define uprintf printf | |
899 | ||
900 | #define usr_getpid() (int)(usr_thread_self()) | |
901 | #ifdef ISAFS_GLOCK | |
902 | #undef ISAFS_GLOCK | |
903 | #endif | |
904 | #define ISAFS_GLOCK() (usr_thread_self() == afs_global_owner) | |
905 | ||
906 | #define copyin(A,B,C) (memcpy((void *)B,(void *)A,C), 0) | |
907 | #define copyout(A,B,C) (memcpy((void *)B,(void *)A,C), 0) | |
908 | #define copyinstr(A,B,C,D) (strncpy(B,A,C),(*D)=strlen(B), 0) | |
909 | #define copyoutstr(A,B,C,D) (strncpy(B,A,C),(*D)=strlen(B), 0) | |
910 | ||
911 | #define vattr_null(A) usr_vattr_null(A) | |
912 | ||
913 | #define VN_HOLD(vp) \ | |
914 | { \ | |
915 | (vp)->v_count++; \ | |
916 | } | |
917 | ||
918 | #define VN_RELE(vp) \ | |
919 | do { \ | |
920 | AFS_ASSERT_GLOCK(); \ | |
921 | usr_assert((vp)->v_count > 0); \ | |
922 | if (--((vp)->v_count) == 0) \ | |
923 | afs_inactive(VTOAFS(vp), get_user_struct()->u_cred); \ | |
924 | } while(0) | |
925 | ||
926 | struct usr_statfs { | |
927 | unsigned long f_type; | |
928 | unsigned long f_bsize; | |
929 | unsigned long f_frsize; | |
930 | unsigned long f_ffree; | |
931 | unsigned long f_favail; | |
932 | struct { | |
933 | unsigned long val[2]; | |
934 | } f_fsid; | |
935 | char f_basetype[FSTYPSZ]; | |
936 | unsigned long f_flag; | |
937 | unsigned long f_namemax; | |
938 | unsigned long f_blocks; | |
939 | unsigned long f_bfree; | |
940 | unsigned long f_bavail; | |
941 | unsigned long f_files; | |
942 | }; | |
943 | ||
944 | #define ATTR_MODE (1 << 0) | |
945 | #define ATTR_UID (1 << 1) | |
946 | #define ATTR_GID (1 << 2) | |
947 | #define ATTR_MTIME (1 << 3) | |
948 | #define ATTR_SIZE (1 << 4) | |
949 | ||
950 | struct usr_vattr { | |
951 | int va_mask; /* bitmask of ATTR_* values above */ | |
952 | usr_vtype_t va_type; | |
953 | mode_t va_mode; | |
954 | uid_t va_uid; | |
955 | gid_t va_gid; | |
956 | int va_fsid; | |
957 | ino_t va_nodeid; | |
958 | nlink_t va_nlink; | |
959 | afs_size_t va_size; | |
960 | struct timeval va_atime; | |
961 | struct timeval va_mtime; | |
962 | struct timeval va_ctime; | |
963 | dev_t va_rdev; | |
964 | unsigned long va_blocksize; | |
965 | fsblkcnt_t va_blocks; | |
966 | unsigned long va_vcode; | |
967 | }; | |
968 | ||
969 | #ifdef VSUID | |
970 | #undef VSUID | |
971 | #endif | |
972 | #ifdef VSGID | |
973 | #undef VSGID | |
974 | #endif | |
975 | #ifdef VSVTX | |
976 | #undef VSVTX | |
977 | #endif | |
978 | #ifdef VREAD | |
979 | #undef VREAD | |
980 | #endif | |
981 | #ifdef VWRITE | |
982 | #undef VWRITE | |
983 | #endif | |
984 | #ifdef VEXEC | |
985 | #undef VEXEC | |
986 | #endif | |
987 | ||
988 | #define VSUID 04000 | |
989 | #define VSGID 02000 | |
990 | #define VSVTX 01000 | |
991 | #define VREAD 00400 | |
992 | #define VWRITE 00200 | |
993 | #define VEXEC 00100 | |
994 | ||
995 | ||
996 | struct usr_vnode { | |
997 | unsigned short v_flag; | |
998 | unsigned long v_count; | |
999 | struct usr_vnodeops *v_op; | |
1000 | struct usr_vfs *v_vfsp; | |
1001 | long v_type; | |
1002 | unsigned long v_rdev; | |
1003 | char *v_data; | |
1004 | }; | |
1005 | ||
1006 | struct usr_inode { | |
1007 | daddr_t i_db[NDADDR]; | |
1008 | struct usr_vnode *i_devvp; | |
1009 | unsigned long i_dev; | |
1010 | long i_flag; | |
1011 | struct usr_inode *i_freef; | |
1012 | struct usr_inode **i_freeb; | |
1013 | long i_gid; | |
1014 | daddr_t i_ib[NIADDR]; | |
1015 | unsigned short i_mode; | |
1016 | short i_nlink; | |
1017 | unsigned long i_number; | |
1018 | long i_size; | |
1019 | long i_uid; | |
1020 | struct usr_vnode i_vnode; | |
1021 | struct { | |
1022 | unsigned long ic_spare[4]; | |
1023 | } i_ic; | |
1024 | }; | |
1025 | ||
1026 | struct usr_fileops { | |
1027 | int (*vno_rw) (void); | |
1028 | int (*vno_ioctl) (void); | |
1029 | int (*vno_select) (void); | |
1030 | int (*vno_closex) (void); | |
1031 | }; | |
1032 | ||
1033 | struct usr_file { | |
1034 | unsigned short f_flag; | |
1035 | offset_t f_offset; | |
1036 | struct usr_ucred *f_cred; | |
1037 | struct usr_fileops *f_ops; | |
1038 | char *f_data; | |
1039 | long f_type; | |
1040 | }; | |
1041 | ||
1042 | extern struct usr_file *getf(int); | |
1043 | ||
1044 | #ifdef fid_len | |
1045 | #undef fid_len | |
1046 | #endif | |
1047 | #ifdef fid_data | |
1048 | #undef fid_data | |
1049 | #endif | |
1050 | ||
1051 | struct usr_fid { | |
1052 | unsigned short fid_len; | |
1053 | unsigned short fid_reserved; | |
1054 | char fid_data[MAXFIDSZ]; | |
1055 | }; | |
1056 | ||
1057 | struct usr_flock { | |
1058 | short l_type; | |
1059 | short l_whence; | |
1060 | off_t l_start; | |
1061 | off_t l_len; | |
1062 | long l_sysid; | |
1063 | pid_t l_pid; | |
1064 | }; | |
1065 | ||
1066 | extern struct usr_ucred *usr_crget(void); | |
1067 | extern struct usr_ucred *usr_crcopy(struct usr_ucred *); | |
1068 | extern int usr_crhold(struct usr_ucred *); | |
1069 | extern int usr_crfree(struct usr_ucred *); | |
1070 | ||
1071 | struct usr_proc { | |
1072 | unsigned long p_flag; | |
1073 | pid_t p_pid; | |
1074 | pid_t p_ppid; | |
1075 | struct usr_ucred *p_ucred; | |
1076 | char p_cursig; | |
1077 | }; | |
1078 | ||
1079 | struct usr_a { | |
1080 | int fd; | |
1081 | int syscall; | |
1082 | int parm1; | |
1083 | int parm2; | |
1084 | int parm3; | |
1085 | int parm4; | |
1086 | int parm5; | |
1087 | int parm6; | |
1088 | }; | |
1089 | ||
1090 | #ifdef uio_offset | |
1091 | #undef uio_offset | |
1092 | #endif | |
1093 | ||
1094 | struct usr_uio { | |
1095 | struct iovec *uio_iov; | |
1096 | int uio_iovcnt; | |
1097 | long uio_offset; | |
1098 | int uio_segflg; | |
1099 | short uio_fmode; | |
1100 | int uio_resid; | |
1101 | }; | |
1102 | ||
1103 | #ifdef b_blkno | |
1104 | #undef b_blkno | |
1105 | #endif | |
1106 | #ifdef b_vp | |
1107 | #undef b_vp | |
1108 | #endif | |
1109 | ||
1110 | struct usr_buf { | |
1111 | int b_flags; | |
1112 | short b_dev; | |
1113 | unsigned b_bcount; | |
1114 | struct { | |
1115 | char *b_addr; | |
1116 | struct usr_fs *b_fs; | |
1117 | } b_un; | |
1118 | long b_blkno; | |
1119 | unsigned int b_resid; | |
1120 | struct usr_vnode *b_vp; | |
1121 | }; | |
1122 | ||
1123 | struct usr_socket { | |
1124 | int sock; | |
1125 | short port; | |
1126 | }; | |
1127 | ||
1128 | #define NDIRSIZ_LEN(len) \ | |
1129 | ((sizeof (struct usr_dirent)+4 - (MAXNAMLEN+1)) + (((len)+1 + 3) &~ 3)) | |
1130 | ||
1131 | struct vcache; | |
1132 | #define afs_ucred_t struct usr_ucred | |
1133 | #define AFS_FLOCK flock | |
1134 | ||
1135 | ||
1136 | struct usr_vnodeops { | |
1137 | int (*vn_open) (struct vcache **, afs_int32, afs_ucred_t *); | |
1138 | int (*vn_close) (struct vcache *, afs_int32, afs_ucred_t *); | |
1139 | int (*vn_rdwr) (struct usr_vnode *avc, struct usr_uio *uio, | |
1140 | int rw, int io, struct usr_ucred *cred); | |
1141 | int (*vn_ioctl) (void); | |
1142 | int (*vn_select) (void); | |
1143 | int (*vn_getattr) (struct vcache *avc, struct vattr *, afs_ucred_t *); | |
1144 | int (*vn_setattr) (struct vcache *avc, struct vattr *, afs_ucred_t *); | |
1145 | int (*vn_access) (struct vcache *avc, afs_int32, afs_ucred_t *); | |
1146 | int (*vn_lookup) (struct vcache *adp, char *, struct vcache **, | |
1147 | afs_ucred_t *, int); | |
1148 | int (*vn_create) (struct vcache *adp, char *, struct vattr *, | |
1149 | enum vcexcl, int, struct vcache **, afs_ucred_t *); | |
1150 | int (*vn_remove) (struct vcache *adp, char *, afs_ucred_t *); | |
1151 | int (*vn_link) (struct vcache *avc, struct vcache *adp, char *, | |
1152 | afs_ucred_t *); | |
1153 | int (*vn_rename) (struct vcache *aodp, char *, struct vcache *, char *, | |
1154 | afs_ucred_t *); | |
1155 | int (*vn_mkdir) (struct vcache *adp, char *, struct vattr *, | |
1156 | struct vcache **, afs_ucred_t *); | |
1157 | int (*vn_rmdir) (struct vcache *adp, char *, afs_ucred_t *); | |
1158 | int (*vn_readdir) (struct vcache *avc, struct uio *, afs_ucred_t *); | |
1159 | int (*vn_symlink) (struct vcache *adp, char *, struct vattr *, char *, | |
1160 | struct vcache **pvc, afs_ucred_t *); | |
1161 | int (*vn_readlink) (struct vcache *avc, struct uio *, afs_ucred_t *); | |
1162 | int (*vn_fsync) (struct vcache *avc, afs_ucred_t *); | |
1163 | int (*vn_inactive) (struct vcache *avc, afs_ucred_t *acred); | |
1164 | int (*vn_bmap) (void); | |
1165 | int (*vn_strategy) (void); | |
1166 | int (*vn_bread) (void); | |
1167 | int (*vn_brelse) (void); | |
1168 | int (*vn_lockctl) (struct vcache *, struct AFS_FLOCK *, int, | |
1169 | afs_ucred_t *); | |
1170 | int (*vn_fid) (struct vcache *avc, struct fid **); | |
1171 | }; | |
1172 | ||
1173 | struct usr_fs { | |
1174 | int dummy; | |
1175 | }; | |
1176 | ||
1177 | struct usr_mount { | |
1178 | char m_flags; | |
1179 | unsigned long m_dev; | |
1180 | struct usr_inode *m_inodp; | |
1181 | struct usr_buf *m_bufp; | |
1182 | struct usr_vnode *m_mount; | |
1183 | }; | |
1184 | extern struct usr_mount *getmp(unsigned long); | |
1185 | ||
1186 | typedef long usr_whymountroot_t; | |
1187 | ||
1188 | struct usr_vfsops { | |
1189 | int (*vfs_mount) (struct vfs *, char *, void *); | |
1190 | int (*vfs_unmount) (struct vfs *); | |
1191 | int (*vfs_root) (struct vfs *, struct vnode **); | |
1192 | int (*vfs_statfs) (struct vfs *, struct statfs *); | |
1193 | int (*vfs_mountroot) (struct vfs *); | |
1194 | int (*vfs_swapvp) (void); | |
1195 | }; | |
1196 | ||
1197 | struct usr_vfs { | |
1198 | struct usr_vnode *vfs_vnodecovered; | |
1199 | struct { | |
1200 | unsigned long val[2]; | |
1201 | } vfs_fsid; | |
1202 | char *vfs_data; | |
1203 | unsigned long vfs_bsize; | |
1204 | struct usr_mount *vfs_mount; | |
1205 | struct usr_vfsops *vfs_op; | |
1206 | }; | |
1207 | ||
1208 | struct usr_ifnet { | |
1209 | struct usr_ifnet *if_next; | |
1210 | short if_flags; | |
1211 | u_int if_mtu; | |
1212 | u_int if_metric; | |
1213 | struct usr_ifaddr *if_addrlist; | |
1214 | }; | |
1215 | extern struct usr_ifnet *usr_ifnet; | |
1216 | ||
1217 | struct usr_ifaddr { | |
1218 | struct usr_ifaddr *ifa_next; | |
1219 | struct usr_ifnet *ifa_ifp; | |
1220 | struct sockaddr ifa_addr; | |
1221 | }; | |
1222 | ||
1223 | #ifdef ia_ifp | |
1224 | #undef ia_ifp | |
1225 | #endif | |
1226 | #ifdef ia_addr | |
1227 | #undef ia_addr | |
1228 | #endif | |
1229 | ||
1230 | struct usr_in_ifaddr { | |
1231 | struct usr_in_ifaddr *ia_next; | |
1232 | struct usr_ifnet *ia_ifp; | |
1233 | struct sockaddr_in ia_addr; | |
1234 | unsigned long ia_net; | |
1235 | unsigned long ia_netmask; | |
1236 | unsigned long ia_subnet; | |
1237 | unsigned long ia_subnetmask; | |
1238 | struct in_addr ia_netbroadcast; | |
1239 | }; | |
1240 | extern struct usr_in_ifaddr *usr_in_ifaddr; | |
1241 | ||
1242 | #endif /* UKERNEL */ | |
1243 | ||
1244 | struct min_direct { | |
1245 | #if defined(AFS_USR_OSF_ENV) | |
1246 | unsigned int d_fileno; | |
1247 | #else /* AFS_OFS_ENV || AFS_USR_OSF_ENV */ | |
1248 | unsigned long d_fileno; | |
1249 | #endif /* AFS_OFS_ENV || AFS_USR_OSF_ENV */ | |
1250 | unsigned short d_reclen; | |
1251 | unsigned short d_namlen; | |
1252 | }; | |
1253 | ||
1254 | #ifndef NGROUPS | |
1255 | #define NGROUPS NGROUPS_MAX | |
1256 | #endif | |
1257 | #ifndef NOGROUP | |
1258 | #define NOGROUP (-1) | |
1259 | #endif | |
1260 | #ifdef cr_gid | |
1261 | #undef cr_gid | |
1262 | #endif | |
1263 | ||
1264 | struct usr_ucred { | |
1265 | unsigned long cr_ref; | |
1266 | long cr_uid; | |
1267 | long cr_gid; | |
1268 | long cr_ruid; | |
1269 | long cr_rgid; | |
1270 | long cr_suid; | |
1271 | long cr_sgid; | |
1272 | long cr_ngroups; | |
1273 | gid_t cr_groups[NGROUPS]; | |
1274 | }; | |
1275 | ||
1276 | #ifdef u_rval1 | |
1277 | #undef u_rval1 | |
1278 | #endif | |
1279 | ||
1280 | struct usr_user { | |
1281 | int u_error; | |
1282 | int u_prio; | |
1283 | char *u_ap; | |
1284 | int u_rval1; | |
1285 | long u_viceid; | |
1286 | unsigned long u_expiration; | |
1287 | struct usr_proc *u_procp; | |
1288 | struct usr_ucred *u_cred; | |
1289 | struct { | |
1290 | int r_val1; | |
1291 | } u_r; | |
1292 | }; | |
1293 | #define u_rval1 u_r.r_val1 | |
1294 | ||
1295 | extern struct usr_user *get_user_struct(void); | |
1296 | ||
1297 | #define USR_DIRSIZE 2048 | |
1298 | ||
1299 | struct usr_dirent { | |
1300 | unsigned long d_ino; | |
1301 | unsigned long d_off; | |
1302 | unsigned short d_reclen; | |
1303 | char d_name[MAXNAMLEN + 1]; | |
1304 | }; | |
1305 | ||
1306 | typedef struct { | |
1307 | int dd_fd; | |
1308 | int dd_loc; | |
1309 | int dd_size; | |
1310 | int dd_reserved; | |
1311 | char *dd_buf; | |
1312 | } usr_DIR; | |
1313 | ||
1314 | extern unsigned short usr_rx_port; | |
1315 | ||
1316 | #define AFS_LOOKUP_NOEVAL 1 | |
1317 | ||
1318 | #endif /* __AFS_SYSINCLUDESH__ so idempotent */ |