2 * Copyright 2000, International Business Machines Corporation and others.
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
10 #ifndef __AFS_SYSINCLUDESH__
11 #define __AFS_SYSINCLUDESH__ 1
14 #if !defined(AFS_USR_DARWIN_ENV) && !defined(AFS_USR_FBSD_ENV) /* must be included after KERNEL undef'd */
23 #if !defined(AFS_USR_DARWIN_ENV) && !defined(AFS_USR_FBSD_ENV) /* must be included after KERNEL undef'd */
26 #include <sys/types.h>
31 #ifdef AFS_USR_SUN5_ENV
33 #include <sys/param.h>
34 #include <sys/socket.h>
36 #include <sys/sockio.h>
39 #include <sys/fcntl.h>
40 #include <netinet/in.h>
42 #include <arpa/inet.h>
43 #endif /* AFS_USR_SUN5_ENV */
46 #ifdef AFS_USR_AIX_ENV
47 #include <sys/param.h>
48 #include <sys/socket.h>
51 #include <netinet/in.h>
52 #include <sys/stropts.h>
54 #include <sys/timers.h>
55 #include <arpa/inet.h>
56 #endif /* AFS_USR_AIX_ENV */
58 #ifdef AFS_USR_SGI_ENV
59 #include <sys/param.h>
60 #include <sys/socket.h>
62 #include <sys/sockio.h>
65 #include <sys/fcntl.h>
66 #include <netinet/in.h>
68 #include <arpa/inet.h>
69 #endif /* AFS_USR_SGI_ENV */
71 #ifdef AFS_USR_HPUX_ENV
72 #include <sys/param.h>
73 #include <sys/socket.h>
77 #include <sys/fcntl.h>
78 #include <netinet/in.h>
80 #include <arpa/inet.h>
81 #endif /* AFS_USR_HPUX_ENV */
83 #ifdef AFS_USR_OSF_ENV
86 #define AFS_USR_UNDEF_KERNEL_ENV 1
88 #include <sys/param.h>
89 #include <sys/socket.h>
92 #include <sys/ioctl.h>
94 #include <sys/fcntl.h>
95 #include <netinet/in.h>
97 #include <arpa/inet.h>
98 #endif /* AFS_USR_OSF_ENV */
100 #ifdef AFS_USR_LINUX22_ENV
101 #include <sys/ioctl.h> /* _IOW() */
102 #include <sys/uio.h> /* struct iovec */
103 #include <sys/time.h> /* struct timeval */
104 #include <sys/param.h>
105 #include <sys/types.h>
106 #include <sys/socket.h>
108 #include <sys/file.h>
109 #include <sys/stat.h>
110 #include <sys/fcntl.h>
111 #include <netinet/in.h>
113 #include <arpa/inet.h>
115 #endif /* AFS_USR_LINUX22_ENV */
117 #if defined(AFS_USR_DARWIN_ENV) || defined(AFS_USR_FBSD_ENV)
120 #define AFS_USR_UNDEF_KERNEL_ENV 1
124 #include <sys/param.h>
125 #include <sys/types.h>
126 #include <sys/socket.h>
128 #include <sys/file.h>
129 #include <sys/ioctl.h>
130 #include <sys/stat.h>
131 #include <sys/fcntl.h>
133 #include <netinet/in.h>
135 #include <arpa/inet.h>
140 #define O_SYNC O_FSYNC
142 #endif /* AFS_USR_DARWIN_ENV || AFS_USR_FBSD_ENV */
144 #ifdef HAVE_SYS_BITYPES_H
145 #include <sys/bitypes.h>
147 #ifdef HAVE_SYS_STATFS_H
148 #include <sys/statfs.h>
150 #ifdef HAVE_SYS_STATVFS_H
151 #include <sys/statvfs.h>
154 #ifndef HAVE_FSBLKCNT_T
155 typedef unsigned int fsblkcnt_t;
159 #include <arpa/nameser.h>
160 #ifdef HAVE_ARPA_NAMESER_COMPAT_H
161 #include <arpa/nameser_compat.h>
164 #endif /* AFS_AFSDB_ENV */
166 /* glibc 2.2 has pthread_attr_setstacksize */
167 #if (defined(AFS_LINUX22_ENV) && !defined(AFS_USR_LINUX22_ENV)) || (defined(AFS_USR_LINUX22_ENV) && (__GLIBC_MINOR__ < 2))
168 #define pthread_attr_setstacksize(a,b) 0
171 #include <sys/stat.h> /* afs_usrops.h uses struct stat in prototypes */
173 #ifdef NETSCAPE_NSAPI
177 #else /* NETSCAPE_NSAPI */
181 #endif /* NETSCAPE_NSAPI */
183 #ifdef AFS_USR_UNDEF_KERNEL_ENV
184 #undef AFS_USR_UNDEF_KERNEL_ENV
189 * User space versions of kernel data structures.
193 #define MAXNAMLEN 512
197 * This file contains data types and definitions for running
198 * the AFS client in user space. Kernel data structures
199 * are renamed from XXXX to usr_XXXX.
204 #ifdef AFS_USR_SGI_ENV
206 #endif /* AFS_USR_SGI_ENV */
208 #if defined(AFS_USR_DARWIN_ENV) || defined(AFS_USR_FBSD_ENV)
213 #define mount usr_mount
216 #define fileops usr_fileops
217 #define vnodeops usr_vnodeops
218 #define vnode usr_vnode
219 #define inode usr_inode
220 #define whymountroot_t usr_whymountroot_t
221 #define vfsops usr_vfsops
223 #define vattr usr_vattr
225 #define statfs usr_statfs
226 /* #define ucred usr_ucred */
227 #define user usr_user
228 /* #define proc usr_proc */
229 #define file usr_file
230 #define dirent usr_dirent
231 #define flock usr_flock
233 #define sysent usr_sysent
234 #define in_ifaddr usr_in_ifaddr
235 #define ifaddr usr_ifaddr
236 #define ifnet usr_ifnet
237 #define socket usr_socket
238 #define crget usr_crget
239 #define crcopy usr_crcopy
240 #define crhold usr_crhold
241 #define crfree usr_crfree
242 #define vtype_t usr_vtype_t
243 #define vcexcl usr_vcexcl
244 #define m_free usr_m_free
245 #define m_freem usr_m_freem
246 #define m_adj usr_m_adj
247 #define m_pullup usr_m_pullup
248 #define uiomove usr_uiomove
249 #define EXCL usr_EXCL
250 #define NONEXCL usr_NONEXCL
251 #define uio_rw usr_uio_rw
255 #define ino_t usr_ino_t
256 #define offset_t usr_offset_t
257 #define getpid() usr_getpid()
258 #define setpag(A,B,C,D) usr_setpag((A),(B),(C),(D))
259 #define osi_getpid() afs_pointer_to_int(usr_thread_self())
265 enum usr_vcexcl { usr_NONEXCL, usr_EXCL };
266 typedef long offset_t;
267 #ifdef AFS_USR_OSF_ENV
268 typedef int usr_ino_t;
269 #else /* AFS_USR_OSF_ENV */
270 typedef long usr_ino_t;
271 #endif /* AFS_USR_OSF_ENV */
273 #if defined(AFS_USR_AIX_ENV) || defined(AFS_USR_SGI_ENV)
274 #define SYS_setgroups 101
277 #define ioctl() usr_ioctl()
279 #define label_t jmp_buf
285 #define VFSTOM(VP) ((struct usr_mount *)(VP)->vfs_mount)
315 #define VINACT 0x0001
317 #define VNOMAP 0x0004
319 #define VSHARE 0x0010
322 #define VWASMAP 0x0080
323 #define VXLOCK 0x0100
367 typedef int usr_vtype_t;
373 #define VOP_RDWR afs_osi_VOP_RDWR
389 #define DTYPE_VNODE 1
438 #define INOACC 0x0010
439 #define IMODTIME 0x0020
442 #define IFASTSYMLNK 0x0100
443 #define IMODACC 0x0200
444 #define IATTCHG 0x0400
445 #define IBDWRITE 0x0800
478 #define IFIFO 0010000
479 #define IFCHR 0020000
480 #define IFDIR 0040000
481 #define IFBLK 0060000
482 #define IFREG 0100000
483 #define IFLNK 0120000
484 #define IFSHAD 0130000
485 #define IFSOCK 0140000
546 #define I_FREE 0x00000001
547 #define I_DIR 0x00000002
548 #define I_IBLK 0x00000004
549 #define I_CHEAP 0x00000008
550 #define I_SHAD 0x00000010
551 #define I_QUOTA 0x00000020
560 #define VTOI(VP) ((struct usr_inode *)(VP)->v_data)
561 #define ITOV(IP) ((struct usr_vnode *)&(IP)->i_vnode)
579 #ifdef ROOT_FRONTMOUNT
580 #undef ROOT_FRONTMOUNT
582 #ifdef ROOT_BACKMOUNT
583 #undef ROOT_BACKMOUNT
586 #define ROOT_INIT 0x0001
587 #define ROOT_REMOUNT 0X0002
588 #define ROOT_UNMOUNT 0x0003
589 #define ROOT_FRONTMOUNT 0x0004
590 #define ROOT_BACKMOUNT 0x0005
632 #define VFS_STATFS(vfsp, sp) ((sp)->f_bsize=4096, 0)
653 #define FAPPEND 0x0100
654 #define IO_APPEND FAPPEND
656 #define IO_SYNC FSYNC
657 #define FTRUNC 0x0400
658 #define FWRITE 0x0800
679 #define F_GETLK 0x0001
680 #define F_RDLCK 0x0002
681 #define F_SETLK 0x0003
682 #define F_SETLKW 0x0004
683 #define F_UNLCK 0x0005
684 #define F_WRLCK 0x0006
699 #define LOCK_SH F_RDLCK
700 #define LOCK_UN F_UNLCK
701 #define LOCK_EX F_WRLCK
702 #define LOCK_NB 0x0007
711 #define FEXLOCK F_WRLCK
712 #define FSHLOCK F_RDLCK
720 enum usr_uio_rw { USR_UIO_READ, USR_UIO_WRITE };
729 #define UIO_READ 0x0000
730 #define UIO_WRITE 0x0001
739 #define UIO_USERSPACE 0x0000
740 #define UIO_SYSSPACE 0x0001
783 #define B_ASYNC 0x0002
784 #define B_DELWRI 0x0004
785 #define B_DIRTY 0x0008
786 #define B_DONE 0x0010
787 #define B_ERROR 0x0020
788 #define B_FREE 0x0040
789 #define B_NOCACHE 0x0080
790 #define B_PFSTORE 0x0100
791 #define B_READ 0x0200
793 #define B_WANTED 0x0800
794 #define B_WRITE 0x1000
822 #define MMAXOFF 16384
828 #define IA_SIN(IA) (&(IA)->ia_addr)
840 #define mtod(m,t) ((t)((m)->m_data))
847 #define panic(S) do{fprintf(stderr, "%s", S);assert(0);}while(0)
848 #define abort() assert(0)
849 #define usr_assert(A) assert(A)
851 #ifdef NETSCAPE_NSAPI
854 * All CONDVARs created with the same CRITICAL end up being the
855 * same CONDVAR, not a new one. If we want to use more than
856 * one usr_cond_t with the same usr_mutex_t, then we need a CRITICAL
857 * for each CONDVAR, otherwise we cannot know which thread we are
858 * waking when we do the signal.
866 #define usr_mutex_t CRITICAL
867 #define usr_thread_t SYS_THREAD
868 #define usr_key_t int
870 #define usr_mutex_init(A) (*(A)=crit_init(), 0)
871 #define usr_mutex_destroy(A) (crit_terminate(*(A)), 0)
872 #define usr_mutex_lock(A) crit_enter(*(A))
873 #define usr_mutex_trylock(A) (crit_enter(*(A)),1)
874 #define usr_mutex_unlock(A) crit_exit(*(A))
876 #define usr_cond_init(A) \
878 (A)->lock = crit_init(), \
879 (A)->cond = condvar_init((A)->lock), 0)
881 #define usr_cond_destroy(A) \
882 (condvar_terminate((A)->cond), \
883 crit_terminate((A)->lock), 0)
885 #define usr_cond_signal(A) \
887 crit_enter((A)->lock); \
888 if ((A)->waiters != 0) { \
889 condvar_notify((A)->cond);\
892 crit_exit((A)->lock); \
895 #define usr_cond_broadcast(A) \
897 crit_enter((A)->lock); \
898 while ((A)->waiters != 0) { \
899 condvar_notify((A)->cond); \
902 crit_exit((A)->lock); \
905 #define usr_cond_wait(A,B) \
906 (crit_enter((A)->lock), \
909 condvar_wait((A)->cond), \
910 crit_exit((A)->lock), \
913 #define usr_thread_create(A,B,C) \
914 ((*(A)=systhread_start(SYSTHREAD_DEFAULT_PRIORITY, \
915 0,B,C))==SYS_THREAD_ERROR)
916 #define usr_thread_detach(A) 0
917 #define usr_keycreate(A,B) (*(A)=systhread_newkey(),0)
918 #define usr_setspecific(A,B) (systhread_setdata(A,B),0)
919 #define usr_getspecific(A,B) (*(B)=systhread_getdata(A),0)
920 #define usr_thread_self() systhread_current()
921 #ifdef AFS_USR_SUN5_ENV
922 #define usr_thread_sleep(A) \
923 poll(0, 0, (A)->tv_sec*1000+(A)->tv_nsec/1000000)
924 #else /* AFS_USR_SUN5_ENV */
925 #define usr_thread_sleep(A) \
926 systhread_sleep((A)->tv_sec*1000+(A)->tv_nsec/1000000)
927 #endif /* AFS_USR_SUN5_ENV */
929 #define uprintf printf
931 #define usr_getpid() (int)(usr_thread_self())
933 #define ISAFS_GLOCK() (usr_thread_self() == afs_global_owner)
935 #else /* NETSCAPE_NSAPI */
938 * Mutex and condition variable used to implement sleep
940 extern pthread_mutex_t usr_sleep_mutex;
941 extern pthread_cond_t usr_sleep_cond;
943 #define usr_cond_t pthread_cond_t
944 #define usr_mutex_t pthread_mutex_t
945 #define usr_thread_t pthread_t
946 #define usr_key_t pthread_key_t
948 #define usr_mutex_init(A) assert(pthread_mutex_init(A,NULL) == 0)
949 #define usr_mutex_destroy(A) assert(pthread_mutex_destroy(A) == 0)
950 #define usr_mutex_lock(A) assert(pthread_mutex_lock(A) == 0)
951 #define usr_mutex_trylock(A) ((pthread_mutex_trylock(A)==0)?1:0)
952 #define usr_mutex_unlock(A) assert(pthread_mutex_unlock(A) == 0)
953 #define usr_cond_init(A) assert(pthread_cond_init(A,NULL) == 0)
954 #define usr_cond_destroy(A) assert(pthread_cond_destroy(A) == 0)
955 #define usr_cond_signal(A) assert(pthread_cond_signal(A) == 0)
956 #define usr_cond_broadcast(A) assert(pthread_cond_broadcast(A) == 0)
957 #define usr_cond_wait(A,B) pthread_cond_wait(A,B)
958 #define usr_cond_timedwait(A,B,C) pthread_cond_timedwait(A,B,C)
960 #define usr_thread_create(A,B,C) \
962 pthread_attr_t attr; \
963 assert(pthread_attr_init(&attr) == 0); \
964 assert(pthread_attr_setstacksize(&attr, 124288) == 0); \
965 assert(pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED) == 0); \
966 assert(pthread_create((A), &attr, (B), (void *)(C)) == 0); \
967 assert(pthread_attr_destroy(&attr) == 0); \
969 #define usr_thread_detach(A) pthread_detach(A)
970 #define usr_keycreate(A,B) assert(pthread_key_create(A,B) == 0)
971 #define usr_setspecific(A,B) pthread_setspecific(A,B)
972 #define usr_getspecific(A,B) (*(B)=pthread_getspecific(A),0)
973 #define usr_thread_self() pthread_self()
974 #define usr_thread_sleep(A) \
976 struct timespec _sleep_ts; \
977 struct timeval _sleep_tv; \
978 gettimeofday(&_sleep_tv, NULL); \
980 _sleep_ts.tv_sec += _sleep_tv.tv_sec; \
981 _sleep_ts.tv_nsec += _sleep_tv.tv_usec * 1000; \
982 if (_sleep_ts.tv_nsec >= 1000000000) { \
983 _sleep_ts.tv_sec += 1; \
984 _sleep_ts.tv_nsec -= 1000000000; \
986 assert(pthread_mutex_lock(&usr_sleep_mutex) == 0); \
987 pthread_cond_timedwait(&usr_sleep_cond, &usr_sleep_mutex, &_sleep_ts); \
988 assert(pthread_mutex_unlock(&usr_sleep_mutex) == 0); \
991 #define uprintf printf
993 #define usr_getpid() (int)(usr_thread_self())
997 #define ISAFS_GLOCK() (usr_thread_self() == afs_global_owner)
999 #endif /* NETSCAPE_NSAPI */
1001 #define copyin(A,B,C) (memcpy((void *)B,(void *)A,C), 0)
1002 #define copyout(A,B,C) (memcpy((void *)B,(void *)A,C), 0)
1003 #define copyinstr(A,B,C,D) (strncpy(B,A,C),(*D)=strlen(B), 0)
1004 #define copyoutstr(A,B,C,D) (strncpy(B,A,C),(*D)=strlen(B), 0)
1006 #define vattr_null(A) usr_vattr_null(A)
1008 #define VN_HOLD(vp) \
1013 #define VN_RELE(vp) \
1015 AFS_ASSERT_GLOCK(); \
1016 usr_assert((vp)->v_count > 0); \
1017 if (--((vp)->v_count) == 0) \
1018 afs_inactive(VTOAFS(vp), u.u_cred); \
1022 unsigned long f_type;
1023 unsigned long f_bsize;
1024 unsigned long f_frsize;
1025 unsigned long f_ffree;
1026 unsigned long f_favail;
1028 unsigned long val[2];
1030 char f_basetype[FSTYPSZ];
1031 unsigned long f_flag;
1032 unsigned long f_namemax;
1033 unsigned long f_blocks;
1034 unsigned long f_bfree;
1035 unsigned long f_bavail;
1036 unsigned long f_files;
1039 #define ATTR_MODE (1 << 0)
1040 #define ATTR_UID (1 << 1)
1041 #define ATTR_GID (1 << 2)
1042 #define ATTR_MTIME (1 << 3)
1043 #define ATTR_SIZE (1 << 4)
1046 int va_mask; /* bitmask of ATTR_* values above */
1047 usr_vtype_t va_type;
1055 struct timeval va_atime;
1056 struct timeval va_mtime;
1057 struct timeval va_ctime;
1059 unsigned long va_blocksize;
1060 fsblkcnt_t va_blocks;
1061 unsigned long va_vcode;
1087 #define VWRITE 00200
1092 unsigned short v_flag;
1093 unsigned long v_count;
1094 struct usr_vnodeops *v_op;
1095 struct usr_vfs *v_vfsp;
1097 unsigned long v_rdev;
1102 daddr_t i_db[NDADDR];
1103 struct usr_vnode *i_devvp;
1104 unsigned long i_dev;
1106 struct usr_inode *i_freef;
1107 struct usr_inode **i_freeb;
1109 daddr_t i_ib[NIADDR];
1110 unsigned short i_mode;
1112 unsigned long i_number;
1115 struct usr_vnode i_vnode;
1117 unsigned long ic_spare[4];
1121 struct usr_fileops {
1122 int (*vno_rw) (void);
1123 int (*vno_ioctl) (void);
1124 int (*vno_select) (void);
1125 int (*vno_closex) (void);
1129 unsigned short f_flag;
1131 struct usr_ucred *f_cred;
1132 struct usr_fileops *f_ops;
1137 extern struct usr_file *getf(int);
1147 unsigned short fid_len;
1148 unsigned short fid_reserved;
1149 char fid_data[MAXFIDSZ];
1161 extern struct usr_ucred *usr_crget(void);
1162 extern struct usr_ucred *usr_crcopy(struct usr_ucred *);
1163 extern int usr_crhold(struct usr_ucred *);
1164 extern int usr_crfree(struct usr_ucred *);
1165 extern struct usr_ucred *afs_global_ucredp;
1168 unsigned long p_flag;
1171 struct usr_ucred *p_ucred;
1191 struct iovec *uio_iov;
1212 struct usr_fs *b_fs;
1215 unsigned int b_resid;
1216 struct usr_vnode *b_vp;
1224 #define NDIRSIZ_LEN(len) \
1225 ((sizeof (struct usr_dirent)+4 - (MAXNAMLEN+1)) + (((len)+1 + 3) &~ 3))
1228 #define afs_ucred_t struct usr_ucred
1229 #define AFS_FLOCK flock
1232 struct usr_vnodeops {
1233 int (*vn_open) (struct vcache **, afs_int32, afs_ucred_t *);
1234 int (*vn_close) (struct vcache *, afs_int32, afs_ucred_t *);
1235 int (*vn_rdwr) (struct usr_vnode *avc, struct usr_uio *uio,
1236 int rw, int io, struct usr_ucred *cred);
1237 int (*vn_ioctl) (void);
1238 int (*vn_select) (void);
1239 int (*vn_getattr) (struct vcache *avc, struct vattr *, afs_ucred_t *);
1240 int (*vn_setattr) (struct vcache *avc, struct vattr *, afs_ucred_t *);
1241 int (*vn_access) (struct vcache *avc, afs_int32, afs_ucred_t *);
1242 int (*vn_lookup) (struct vcache *adp, char *, struct vcache **,
1243 afs_ucred_t *, int);
1244 int (*vn_create) (struct vcache *adp, char *, struct vattr *,
1245 enum vcexcl, int, struct vcache **, afs_ucred_t *);
1246 int (*vn_remove) (struct vcache *adp, char *, afs_ucred_t *);
1247 int (*vn_link) (struct vcache *avc, struct vcache *adp, char *,
1249 int (*vn_rename) (struct vcache *aodp, char *, struct vcache *, char *,
1251 int (*vn_mkdir) (struct vcache *adp, char *, struct vattr *,
1252 struct vcache **, afs_ucred_t *);
1253 int (*vn_rmdir) (struct vcache *adp, char *, afs_ucred_t *);
1254 int (*vn_readdir) (struct vcache *avc, struct uio *, afs_ucred_t *);
1255 int (*vn_symlink) (struct vcache *adp, char *, struct vattr *, char *,
1257 int (*vn_readlink) (struct vcache *avc, struct uio *, afs_ucred_t *);
1258 int (*vn_fsync) (struct vcache *avc, afs_ucred_t *);
1259 int (*vn_inactive) (struct vcache *avc, afs_ucred_t *acred);
1260 int (*vn_bmap) (void);
1261 int (*vn_strategy) (void);
1262 int (*vn_bread) (void);
1263 int (*vn_brelse) (void);
1264 int (*vn_lockctl) (struct vcache *, struct AFS_FLOCK *, int,
1266 int (*vn_fid) (struct vcache *avc, struct fid **);
1275 unsigned long m_dev;
1276 struct usr_inode *m_inodp;
1277 struct usr_buf *m_bufp;
1278 struct usr_vnode *m_mount;
1280 extern struct usr_mount *getmp(unsigned long);
1282 typedef long usr_whymountroot_t;
1285 int (*vfs_mount) (struct vfs *, char *, void *);
1286 int (*vfs_unmount) (struct vfs *);
1287 int (*vfs_root) (struct vfs *, struct vnode **);
1288 int (*vfs_statfs) (struct vfs *, struct statfs *);
1289 int (*vfs_mountroot) (struct vfs *);
1290 int (*vfs_swapvp) (void);
1294 struct usr_vnode *vfs_vnodecovered;
1296 unsigned long val[2];
1299 unsigned long vfs_bsize;
1300 struct usr_mount *vfs_mount;
1301 struct usr_vfsops *vfs_op;
1306 int (*sy_call) (void);
1308 extern struct usr_sysent usr_sysent[];
1311 struct usr_ifnet *if_next;
1315 struct usr_ifaddr *if_addrlist;
1317 extern struct usr_ifnet *usr_ifnet;
1320 struct usr_ifaddr *ifa_next;
1321 struct usr_ifnet *ifa_ifp;
1322 struct sockaddr ifa_addr;
1332 struct usr_in_ifaddr {
1333 struct usr_in_ifaddr *ia_next;
1334 struct usr_ifnet *ia_ifp;
1335 struct sockaddr_in ia_addr;
1336 unsigned long ia_net;
1337 unsigned long ia_netmask;
1338 unsigned long ia_subnet;
1339 unsigned long ia_subnetmask;
1340 struct in_addr ia_netbroadcast;
1342 extern struct usr_in_ifaddr *usr_in_ifaddr;
1344 extern usr_key_t afs_global_u_key; /* for per thread authentication */
1346 #if defined(AFS_USR_OSF_ENV)
1352 #endif /* UKERNEL */
1355 #if defined(AFS_OFS_ENV) || defined(AFS_USR_OSF_ENV)
1356 unsigned int d_fileno;
1357 #else /* AFS_OFS_ENV || AFS_USR_OSF_ENV */
1358 unsigned long d_fileno;
1359 #endif /* AFS_OFS_ENV || AFS_USR_OSF_ENV */
1360 unsigned short d_reclen;
1361 unsigned short d_namlen;
1365 #define NGROUPS NGROUPS_MAX
1368 #define NOGROUP (-1)
1375 unsigned long cr_ref;
1383 gid_t cr_groups[NGROUPS];
1396 unsigned long u_expiration;
1397 struct usr_proc *u_procp;
1398 struct usr_ucred *u_cred;
1403 #define u_rval1 u_r.r_val1
1404 #define u (*(get_user_struct()))
1406 extern struct usr_user *get_user_struct(void);
1408 #define USR_DIRSIZE 2048
1411 unsigned long d_ino;
1412 unsigned long d_off;
1413 unsigned short d_reclen;
1414 char d_name[MAXNAMLEN + 1];
1425 extern unsigned short usr_rx_port;
1427 #define AFS_LOOKUP_NOEVAL 1
1429 #endif /* __AFS_SYSINCLUDESH__ so idempotent */