/*
* Copyright 2000, International Business Machines Corporation and others.
* All Rights Reserved.
- *
+ *
* This software has been released under the terms of the IBM Public
* License. For details, see the LICENSE file in the top-level source
* directory or online at http://www.openafs.org/dl/license10.html
#define NFS_NOBODY -2 /* maps Nfs's "nobody" but since not declared by some systems (i.e. Ultrix) we use a constant */
#endif
#define RMTUSER_REQ 0xabc
+#define RMTUSER_REQ_PRIV 0xabe
/**
* There is a limitation on the number of bytes that can be passed into
* up 2 bytes
*/
-#if defined(AFS_SUN57_64BIT_ENV) || defined(AFS_OSF_ENV) || (defined(AFS_SGI61_ENV) && (_MIPS_SZPTR==64)) || defined(AFS_LINUX_64BIT_KERNEL)
-#define AFS_XLATOR_MAGIC 0x8765 /* XXX */
+#if defined(AFS_SUN5_64BIT_ENV) || (defined(AFS_SGI61_ENV) && (_MIPS_SZPTR==64)) || defined(AFS_LINUX_64BIT_KERNEL)
+#define AFS_XLATOR_MAGIC 0x8765 /* XXX */
#else
#define AFS_XLATOR_MAGIC 0x87654321
#endif
#if defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV)
#define AFS_NFSXLATORREQ(cred) 0
#else
-#ifdef AFS_OSF_ENV
-#define AFS_NFSXLATORREQ(cred) ((cred)->cr_ruid == NFSXLATOR_CRED)
-#else
-#define AFS_NFSXLATORREQ(cred) ((cred)->cr_rgid == NFSXLATOR_CRED)
-#endif
+#define AFS_NFSXLATORREQ(cred) (afs_cr_rgid(cred) == NFSXLATOR_CRED)
#endif
-struct exporterops {
- int (*export_reqhandler)();
- int (*export_hold)();
- int (*export_rele)();
- int (*export_sysname)();
- int (*export_garbagecollect)();
- int (*export_statistics)();
+struct afs_exporter;
+
+struct exporterops {
+ int (*export_reqhandler) (struct afs_exporter *exp,
+ afs_ucred_t **cred,
+ afs_uint32 host,
+ afs_int32 *pag,
+ struct afs_exporter **expp);
+ void (*export_hold) (struct afs_exporter *exp);
+ void (*export_rele) (struct afs_exporter *exp);
+ int (*export_sysname) (struct afs_exporter *exp,
+ char *inname,
+ char ***outname,
+ int *num,
+ int allpags);
+ void (*export_garbagecollect) (struct afs_exporter *exp,
+ afs_int32 param);
+ int (*export_statistics) (struct afs_exporter *exp);
+ int (*export_checkhost) (struct afs_exporter *exp, afs_uint32 host);
+ afs_uint32 (*export_gethost) (struct afs_exporter *exp);
};
struct exporterstats {
- afs_int32 calls; /* # of calls to the exporter */
- afs_int32 rejectedcalls; /* # of afs rejected calls */
- afs_int32 nopag; /* # of unpagged remote calls */
- afs_int32 invalidpag; /* # of invalid pag calls */
+ afs_int32 calls; /* # of calls to the exporter */
+ afs_int32 rejectedcalls; /* # of afs rejected calls */
+ afs_int32 nopag; /* # of unpagged remote calls */
+ afs_int32 invalidpag; /* # of invalid pag calls */
};
struct afs_exporter {
- struct afs_exporter *exp_next;
- struct exporterops *exp_op;
- afs_int32 exp_states;
- afs_int32 exp_type;
- struct exporterstats exp_stats;
- char *exp_data;
+ struct afs_exporter *exp_next;
+ struct exporterops *exp_op;
+ afs_int32 exp_states;
+ afs_int32 exp_type;
+ struct exporterstats exp_stats;
+ char *exp_data;
};
/* exp_type values */
-#define EXP_NULL 0 /* Undefined */
-#define EXP_NFS 1 /* Nfs/Afs translator */
+#define EXP_NULL 0 /* Undefined */
+#define EXP_NFS 1 /* Nfs/Afs translator */
/* exp_states values */
#define EXP_EXPORTED 1
#define EXP_UNIXMODE 2
#define EXP_PWSYNC 4
#define EXP_SUBMOUNTS 8
+#define EXP_CLIPAGS 16
+#define EXP_CALLBACK 32
#define AFS_NFSFULLFID 1
(*(EXP)->exp_op->export_hold)(EXP)
#define EXP_RELE(EXP) \
(*(EXP)->exp_op->export_rele)(EXP)
-#define EXP_SYSNAME(EXP, INNAME, OUTNAME) \
- (*(EXP)->exp_op->export_sysname)(EXP, INNAME, OUTNAME)
+#define EXP_SYSNAME(EXP, INNAME, OUTNAME, NUM, ALLPAGS) \
+ (*(EXP)->exp_op->export_sysname)(EXP, INNAME, OUTNAME, NUM, ALLPAGS)
#define EXP_GC(EXP, param) \
(*(EXP)->exp_op->export_garbagecollect)(EXP, param)
#define EXP_STATISTICS(EXP) \
(*(EXP)->exp_op->export_statistics)(EXP)
+#define EXP_CHECKHOST(EXP, HOST) \
+ (*(EXP)->exp_op->export_checkhost)(EXP, HOST)
+#define EXP_GETHOST(EXP) \
+ (*(EXP)->exp_op->export_gethost)(EXP)
struct afs3_fid {
u_short len;