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
43 #define AFS_NFSXLATORREQ(cred) ((cred)->cr_ruid == NFSXLATOR_CRED)
45 #define AFS_NFSXLATORREQ(cred) ((cred)->cr_rgid == NFSXLATOR_CRED)
49 int (*export_reqhandler)();
52 int (*export_sysname)();
53 int (*export_garbagecollect)();
54 int (*export_statistics)();
57 struct exporterstats {
58 afs_int32 calls; /* # of calls to the exporter */
59 afs_int32 rejectedcalls; /* # of afs rejected calls */
60 afs_int32 nopag; /* # of unpagged remote calls */
61 afs_int32 invalidpag; /* # of invalid pag calls */
65 struct afs_exporter *exp_next;
66 struct exporterops *exp_op;
69 struct exporterstats exp_stats;
74 #define EXP_NULL 0 /* Undefined */
75 #define EXP_NFS 1 /* Nfs/Afs translator */
77 /* exp_states values */
78 #define EXP_EXPORTED 1
79 #define EXP_UNIXMODE 2
81 #define EXP_SUBMOUNTS 8
84 #define AFS_NFSFULLFID 1
86 #define EXP_REQHANDLER(EXP, CRED, HOST, PAG, EXPP) \
87 (*(EXP)->exp_op->export_reqhandler)(EXP, CRED, HOST, PAG, EXPP)
88 #define EXP_HOLD(EXP) \
89 (*(EXP)->exp_op->export_hold)(EXP)
90 #define EXP_RELE(EXP) \
91 (*(EXP)->exp_op->export_rele)(EXP)
92 #define EXP_SYSNAME(EXP, INNAME, OUTNAME) \
93 (*(EXP)->exp_op->export_sysname)(EXP, INNAME, OUTNAME)
94 #define EXP_GC(EXP, param) \
95 (*(EXP)->exp_op->export_garbagecollect)(EXP, param)
96 #define EXP_STATISTICS(EXP) \
97 (*(EXP)->exp_op->export_statistics)(EXP)
120 #endif /* __EXPORTER__ */