/usr/include/afs/exporter.h is in libopenafs-dev 1.6.15-1ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | /*
* 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
*/
#ifndef __EXPORTER__
#define __EXPORTER__
#ifdef UID_NOBODY
#define NFS_NOBODY UID_NOBODY
#endif
#ifndef NFS_NOBODY
#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
* the file handle that nfs passes into AFS. The limit is 10 bytes.
* We pass in an array of long of size 2. On a 32 bit system this would be
* 8 bytes. But on a 64 bit system this would be 16 bytes. The first
* element of this array is a pointer so we cannot truncate that. But the
* second element is the AFS_XLATOR_MAGIC, which we can truncate.
* So on a 64 bit system the 10 bytes are used as below
* Bytes 1-8 pointer to vnode
* Bytes 9 and 10 AFS_XLATOR_MAGIC
*
* And hence for 64 bit environments AFS_XLATOR_MAGIC is 8765 which takes
* up 2 bytes
*/
#if defined(AFS_SUN57_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
#define AFS_NFSXLATORREQ(cred) (afs_cr_rgid(cred) == NFSXLATOR_CRED)
#endif
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 */
};
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;
};
/* exp_type values */
#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
#define EXP_REQHANDLER(EXP, CRED, HOST, PAG, EXPP) \
(*(EXP)->exp_op->export_reqhandler)(EXP, CRED, HOST, PAG, EXPP)
#define EXP_HOLD(EXP) \
(*(EXP)->exp_op->export_hold)(EXP)
#define EXP_RELE(EXP) \
(*(EXP)->exp_op->export_rele)(EXP)
#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;
u_short padding;
afs_uint32 Cell;
afs_uint32 Volume;
afs_uint32 Vnode;
afs_uint32 Unique;
};
struct Sfid {
afs_uint32 padding;
afs_uint32 Cell;
afs_uint32 Volume;
afs_uint32 Vnode;
afs_uint32 Unique;
#ifdef AFS_SUN5_ENV
struct cred *credp;
#endif
};
#endif /* __EXPORTER__ */
|