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
20 #define RMTUSER_REQ_PRIV 0xabe
23 * There is a limitation on the number of bytes that can be passed into
24 * the file handle that nfs passes into AFS. The limit is 10 bytes.
25 * We pass in an array of long of size 2. On a 32 bit system this would be
26 * 8 bytes. But on a 64 bit system this would be 16 bytes. The first
27 * element of this array is a pointer so we cannot truncate that. But the
28 * second element is the AFS_XLATOR_MAGIC, which we can truncate.
29 * So on a 64 bit system the 10 bytes are used as below
30 * Bytes 1-8 pointer to vnode
31 * Bytes 9 and 10 AFS_XLATOR_MAGIC
33 * And hence for 64 bit environments AFS_XLATOR_MAGIC is 8765 which takes
37 #if defined(AFS_SUN5_64BIT_ENV) || (defined(AFS_SGI61_ENV) && (_MIPS_SZPTR==64)) || defined(AFS_LINUX_64BIT_KERNEL)
38 #define AFS_XLATOR_MAGIC 0x8765 /* XXX */
40 #define AFS_XLATOR_MAGIC 0x87654321
43 #if defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV)
44 #define AFS_NFSXLATORREQ(cred) 0
46 #define AFS_NFSXLATORREQ(cred) (afs_cr_rgid(cred) == NFSXLATOR_CRED)
52 int (*export_reqhandler
) (struct afs_exporter
*exp
,
56 struct afs_exporter
**expp
);
57 void (*export_hold
) (struct afs_exporter
*exp
);
58 void (*export_rele
) (struct afs_exporter
*exp
);
59 int (*export_sysname
) (struct afs_exporter
*exp
,
64 void (*export_garbagecollect
) (struct afs_exporter
*exp
,
66 int (*export_statistics
) (struct afs_exporter
*exp
);
67 int (*export_checkhost
) (struct afs_exporter
*exp
, afs_uint32 host
);
68 afs_uint32 (*export_gethost
) (struct afs_exporter
*exp
);
71 struct exporterstats
{
72 afs_int32 calls
; /* # of calls to the exporter */
73 afs_int32 rejectedcalls
; /* # of afs rejected calls */
74 afs_int32 nopag
; /* # of unpagged remote calls */
75 afs_int32 invalidpag
; /* # of invalid pag calls */
79 struct afs_exporter
*exp_next
;
80 struct exporterops
*exp_op
;
83 struct exporterstats exp_stats
;
88 #define EXP_NULL 0 /* Undefined */
89 #define EXP_NFS 1 /* Nfs/Afs translator */
91 /* exp_states values */
92 #define EXP_EXPORTED 1
93 #define EXP_UNIXMODE 2
95 #define EXP_SUBMOUNTS 8
96 #define EXP_CLIPAGS 16
97 #define EXP_CALLBACK 32
100 #define AFS_NFSFULLFID 1
102 #define EXP_REQHANDLER(EXP, CRED, HOST, PAG, EXPP) \
103 (*(EXP)->exp_op->export_reqhandler)(EXP, CRED, HOST, PAG, EXPP)
104 #define EXP_HOLD(EXP) \
105 (*(EXP)->exp_op->export_hold)(EXP)
106 #define EXP_RELE(EXP) \
107 (*(EXP)->exp_op->export_rele)(EXP)
108 #define EXP_SYSNAME(EXP, INNAME, OUTNAME, NUM, ALLPAGS) \
109 (*(EXP)->exp_op->export_sysname)(EXP, INNAME, OUTNAME, NUM, ALLPAGS)
110 #define EXP_GC(EXP, param) \
111 (*(EXP)->exp_op->export_garbagecollect)(EXP, param)
112 #define EXP_STATISTICS(EXP) \
113 (*(EXP)->exp_op->export_statistics)(EXP)
114 #define EXP_CHECKHOST(EXP, HOST) \
115 (*(EXP)->exp_op->export_checkhost)(EXP, HOST)
116 #define EXP_GETHOST(EXP) \
117 (*(EXP)->exp_op->export_gethost)(EXP)
140 #endif /* __EXPORTER__ */