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
14 #define NFS_NOBODY UID_NOBODY
17 #define NFS_NOBODY -2 /* maps Nfs's "nobody" but since not declared by some systems (i.e. Ultrix) we use a constant */
19 #define RMTUSER_REQ 0xabc
22 * There is a limitation on the number of bytes that can be passed into
23 * the file handle that nfs passes into AFS. The limit is 10 bytes.
24 * We pass in an array of long of size 2. On a 32 bit system this would be
25 * 8 bytes. But on a 64 bit system this would be 16 bytes. The first
26 * element of this array is a pointer so we cannot truncate that. But the
27 * second element is the AFS_XLATOR_MAGIC, which we can truncate.
28 * So on a 64 bit system the 10 bytes are used as below
29 * Bytes 1-8 pointer to vnode
30 * Bytes 9 and 10 AFS_XLATOR_MAGIC
32 * And hence for 64 bit environments AFS_XLATOR_MAGIC is 8765 which takes
36 #if defined(AFS_SUN57_64BIT_ENV) || defined(AFS_OSF_ENV) || (defined(AFS_SGI61_ENV) && (_MIPS_SZPTR==64)) || defined(AFS_LINUX_64BIT_KERNEL)
37 #define AFS_XLATOR_MAGIC 0x8765 /* XXX */
39 #define AFS_XLATOR_MAGIC 0x87654321
42 #if defined(AFS_DARWIN_ENV) || defined(AFS_FBSD_ENV)
43 #define AFS_NFSXLATORREQ(cred) 0
46 #define AFS_NFSXLATORREQ(cred) ((cred)->cr_ruid == NFSXLATOR_CRED)
48 #define AFS_NFSXLATORREQ(cred) ((cred)->cr_rgid == NFSXLATOR_CRED)
53 int (*export_reqhandler)();
56 int (*export_sysname)();
57 int (*export_garbagecollect)();
58 int (*export_statistics)();
61 struct exporterstats {
62 afs_int32 calls; /* # of calls to the exporter */
63 afs_int32 rejectedcalls; /* # of afs rejected calls */
64 afs_int32 nopag; /* # of unpagged remote calls */
65 afs_int32 invalidpag; /* # of invalid pag calls */
69 struct afs_exporter *exp_next;
70 struct exporterops *exp_op;
73 struct exporterstats exp_stats;
78 #define EXP_NULL 0 /* Undefined */
79 #define EXP_NFS 1 /* Nfs/Afs translator */
81 /* exp_states values */
82 #define EXP_EXPORTED 1
83 #define EXP_UNIXMODE 2
85 #define EXP_SUBMOUNTS 8
88 #define AFS_NFSFULLFID 1
90 #define EXP_REQHANDLER(EXP, CRED, HOST, PAG, EXPP) \
91 (*(EXP)->exp_op->export_reqhandler)(EXP, CRED, HOST, PAG, EXPP)
92 #define EXP_HOLD(EXP) \
93 (*(EXP)->exp_op->export_hold)(EXP)
94 #define EXP_RELE(EXP) \
95 (*(EXP)->exp_op->export_rele)(EXP)
96 #define EXP_SYSNAME(EXP, INNAME, OUTNAME) \
97 (*(EXP)->exp_op->export_sysname)(EXP, INNAME, OUTNAME)
98 #define EXP_GC(EXP, param) \
99 (*(EXP)->exp_op->export_garbagecollect)(EXP, param)
100 #define EXP_STATISTICS(EXP) \
101 (*(EXP)->exp_op->export_statistics)(EXP)
124 #endif /* __EXPORTER__ */