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 * AFS system call opcodes
16 * When adding new opcodes, please also update afsd_init_syscall_opcodes()
17 * for syscall tracing.
20 #define AFSOP_START_RXCALLBACK 0 /* no aux parms */
21 #define AFSOP_START_AFS 1 /* no aux parms */
22 #define AFSOP_START_BKG 2 /* no aux parms */
23 #define AFSOP_START_TRUNCDAEMON 3 /* no aux parms */
24 #define AFSOP_START_CS 4 /* no aux parms */
25 #define AFSOP_ADDCELL 5 /* parm 2 = cell str */
26 #define AFSOP_CACHEINIT 6 /* parms 2-4 -> cache sizes */
27 #define AFSOP_CACHEINFO 7 /* the cacheinfo file */
28 #define AFSOP_VOLUMEINFO 8 /* the volumeinfo file */
29 #define AFSOP_CACHEFILE 9 /* a random cache file (V*) */
30 #define AFSOP_CACHEINODE 10 /* random cache file by inode */
31 #define AFSOP_AFSLOG 11 /* output log file */
32 #define AFSOP_ROOTVOLUME 12 /* non-standard root volume name */
34 #define AFSOP_STARTLOG 14 /* temporary: Start afs logging */
35 #define AFSOP_ENDLOG 15 /* temporary: End afs logging */
36 #define AFSOP_AFS_VFSMOUNT 16 /* vfsmount cover for hpux */
37 #define AFSOP_ADVISEADDR 17 /* to init rx cid generator */
38 #define AFSOP_CLOSEWAIT 18 /* make all closes synchronous */
39 #define AFSOP_RXEVENT_DAEMON 19 /* rxevent daemon */
40 #define AFSOP_GETMTU 20 /* stand-in for SIOCGIFMTU, for now */
41 #define AFSOP_GETIFADDRS 21 /* get machine's ethernet interfaces */
43 #define AFSOP_ADDCELL2 29 /* 2nd add cell protocol interface */
44 #define AFSOP_AFSDB_HANDLER 30 /* userspace AFSDB lookup handler */
45 #define AFSOP_SET_DYNROOT 31 /* enable/disable dynroot support */
46 #define AFSOP_ADDCELLALIAS 32 /* create alias for existing cell */
47 #define AFSOP_SET_FAKESTAT 33 /* enable/disable fakestat support */
48 #define AFSOP_CELLINFO 34 /* set the cellinfo file name */
49 #define AFSOP_SET_THISCELL 35 /* set the primary cell */
50 #define AFSOP_BASIC_INIT 36 /* used to be part of START_AFS */
51 #define AFSOP_SET_BACKUPTREE 37 /* enable backup tree support */
52 #define AFSOP_SET_RXPCK 38 /* set rx_extraPackets*/
53 #define AFSOP_BUCKETPCT 39 /* bucket percentage */
54 #define AFSOP_SET_RXMAXMTU 40 /* set rx_MyMaxSendSize,rx_maxReceiveSizeUser,rx_maxReceiveSize */
55 #define AFSOP_BKG_HANDLER 41 /* userspace-capable Bkg daemon */
56 #define AFSOP_GETMASK 42 /* stand-in for SIOCGIFNETMASK */
57 #define AFSOP_SET_RXMAXFRAGS 43 /* set rxi_nSendFrags, rxi_nRecvFrags */
58 #define AFSOP_SET_RMTSYS_FLAG 44 /* set flag if rmtsys is enabled */
59 #define AFSOP_SEED_ENTROPY 45 /* Give the kernel hcrypto entropy */
60 #define AFSOP_SET_INUMCALC 46 /* set inode number calculation method */
61 #define AFSOP_SET_VOLUME_TTL 47 /* set the vldb cache timeout */
63 #define AFSOP_RXLISTENER_DAEMON 48 /* starts kernel RX listener */
65 #define AFSOP_CACHEBASEDIR 50 /* cache base dir */
66 #define AFSOP_CACHEDIRS 51 /* number of files per dir */
67 #define AFSOP_CACHEFILES 52 /* number of files */
69 #define AFSOP_SETINT 60 /* set key/value pairs for ints */
71 #define AFSOP_GO 100 /* whether settime is being done */
73 #define AFSOP_CHECKLOCKS 200 /* dump lock state */
74 #define AFSOP_SHUTDOWN 201 /* Totally shutdown afs (deallocate all) */
76 #define AFSOP_STOP_RXCALLBACK 210 /* Stop CALLBACK process */
77 #define AFSOP_STOP_AFS 211 /* Stop AFS process */
78 #define AFSOP_STOP_BKG 212 /* Stop BKG process */
79 #define AFSOP_STOP_TRUNCDAEMON 213 /* Stop cache truncate daemon */
80 /* AFSOP_STOP_RXEVENT 214 defined in osi.h */
81 /* AFSOP_STOP_COMPLETE 215 defined in osi.h */
82 #define AFSOP_STOP_CS 216 /* Stop CheckServer daemon */
83 /* AFSOP_STOP_RXK_LISTENER 217 defined in osi.h */
84 #define AFSOP_STOP_AFSDB 218 /* Stop AFSDB handler */
85 #define AFSOP_STOP_NETIF 219 /* Stop Netif poller */
86 #define AFSOP_SOCKPROXY_HANDLER 220 /* Userspace socket handler */
87 #define AFSOP_STOP_SOCKPROXY 221 /* Stop socket proxy daemon */
89 #define AFSOP_MAX_OPCODE AFSOP_STOP_SOCKPROXY /* Largest defined opcode. */
92 * AFS system call types and flags.
95 /* The range 20-30 is reserved for AFS system offsets in the afs_syscall */
96 #define AFSCALL_PIOCTL 20
97 #define AFSCALL_SETPAG 21
98 #define AFSCALL_IOPEN 22
99 #define AFSCALL_ICREATE 23
100 #define AFSCALL_IREAD 24
101 #define AFSCALL_IWRITE 25
102 #define AFSCALL_IINC 26
103 #define AFSCALL_IDEC 27
104 #define AFSCALL_CALL 28
106 #define AFSCALL_ICL 30
108 /* 64 bit versions of inode system calls. */
109 #define AFSCALL_IOPEN64 41
110 #define AFSCALL_ICREATE64 42
111 #define AFSCALL_IINC64 43
112 #define AFSCALL_IDEC64 44
113 #define AFSCALL_ILISTINODE64 45 /* Used by ListViceInodes */
114 #define AFSCALL_ICREATENAME64 46 /* pass in platform specific pointer
115 * used to create a name in in a
118 #ifdef AFS_SGI_VNODE_GLUE
119 #define AFSCALL_INIT_KERNEL_CONFIG 47 /* set vnode glue ops. */
122 /* these are for initialization flags */
124 #define AFSCALL_INIT_MEMCACHE 0x1
126 /* flags for rxstats pioctl */
128 #define AFSCALL_RXSTATS_MASK 0x7 /* Valid flag bits */
129 #define AFSCALL_RXSTATS_ENABLE 0x1 /* Enable RX stats */
130 #define AFSCALL_RXSTATS_DISABLE 0x2 /* Disable RX stats */
131 #define AFSCALL_RXSTATS_CLEAR 0x4 /* Clear RX stats */
133 /* arguments passed by afsd */
136 /* We don't necessarily have VenusFid here */
137 struct afs_umv_param {
150 struct afs_usp_param {
151 afs_int32 idx; /* process index */
152 afs_int32 addr; /* ipv4 addr (net order) to be bound to the socket */
153 afs_int32 port; /* port (net order) to be bound to the socket */
154 afs_int32 npkts; /* number of packets */
157 #ifdef AFS_DARWIN_ENV
158 # define AFS_USPC_UMV 1
160 #define AFS_USPC_SHUTDOWN 2
161 #define AFS_USPC_NOOP 3
163 #ifdef AFS_SOCKPROXY_ENV
164 # define AFS_USPC_SOCKPROXY_START 4
165 # define AFS_USPC_SOCKPROXY_SEND 5
166 # define AFS_USPC_SOCKPROXY_RECV 6
169 struct afs_uspc_param {
171 afs_int32 ts; /* brequest ts - always unique */
175 struct afs_umv_param umv;
176 struct afs_usp_param usp;
180 struct afs_cacheParams {
181 afs_int32 cacheScaches;
182 afs_int32 cacheFiles;
183 afs_int32 cacheBlocks;
184 afs_int32 cacheDcaches;
185 afs_int32 cacheVolumes;
187 afs_int32 setTimeFlag;
188 afs_int32 memCacheFlag;
191 afs_int32 dynamic_vcaches;
194 /* Supported values for AFSOP_SET_INUMCALC. */
196 AFS_INUMCALC_COMPAT = 0,
200 /* Supported volume ttl range. */
201 #define AFS_MIN_VOLUME_TTL 600
202 #define AFS_MAX_VOLUME_TTL MAX_AFS_INT32
205 * Note that the AFS_*ALLOCSIZ values should be multiples of sizeof(void*) to
206 * accomodate pointer alignment.
208 /* Used in rx.c as well as afs directory. */
209 #if defined(AFS_AIX32_ENV) || defined(AFS_HPUX_ENV)
210 /* XXX Because of rxkad_cprivate... XXX */
211 #define AFS_SMALLOCSIZ (38*sizeof(void *)) /* "Small" allocated size */
213 #define AFS_SMALLOCSIZ (64*sizeof(void *)) /* "Small" allocated size */
215 #define AFS_LRALLOCSIZ 4096 /* "Large" allocated size */
217 /* Cache configuration available through the client callback interface */
218 typedef struct cm_initparams_v1 {
219 afs_uint32 nChunkFiles;
220 afs_uint32 nStatCaches;
221 afs_uint32 nDataCaches;
222 afs_uint32 nVolumeCaches;
223 afs_uint32 firstChunkSize;
224 afs_uint32 otherChunkSize;
225 afs_uint32 cacheSize;
231 * If you need to change afs_cacheParams, you should probably create a brand
232 * new structure. Keeping the old structure will allow backwards compatibility
233 * with old clients (even if it is only used to calculate allocation size).
234 * If you do change the size or the format, you'll need to bump
235 * AFS_CLIENT_CONFIG_RETRIEVAL_VERSION. This allows some primitive form
236 * of versioning a la rxdebug.
239 #define AFS_CLIENT_RETRIEVAL_VERSION 1 /* latest version */
240 #define AFS_CLIENT_RETRIEVAL_FIRST_EDITION 1 /* first version */
242 /* Defines and structures for the AFS proc replacement layer for the original syscall (AFS_SYSCALL) strategy */
244 #ifdef AFS_LINUX20_ENV
246 #define PROC_FSDIRNAME "openafs"
247 #define PROC_SYSCALL_NAME "afs_ioctl"
248 #define PROC_SYSCALL_FNAME "/proc/fs/openafs/afs_ioctl"
249 #define PROC_SYSCALL_ARLA_FNAME "/proc/fs/nnpfs/afs_ioctl"
250 #define PROC_CELLSERVDB_NAME "CellServDB"
251 #define PROC_PEER_NAME "rx_peer"
252 #define PROC_CONN_NAME "rx_conn"
253 #define PROC_CALL_NAME "rx_call"
254 #define PROC_RX_NAME "rx"
255 #define PROC_SERVICES_NAME "rx_services"
256 #define PROC_RXSTATS_NAME "rx_stats"
257 #define VIOC_SYSCALL_TYPE 'C'
258 #define VIOC_SYSCALL _IOW(VIOC_SYSCALL_TYPE,1,void *)
259 #define VIOC_SYSCALL32 _IOW(VIOC_SYSCALL_TYPE,1,int)
269 struct afsprocdata32 {
274 unsigned int syscall;
279 #ifdef AFS_DARWIN80_ENV
281 unsigned int syscall;
291 /* args reordered to avoid alignment issues */
292 struct afssysargs64 {
299 unsigned int syscall;
302 #define VIOC_SYSCALL_TYPE 'C'
303 #define VIOC_SYSCALL _IOWR(VIOC_SYSCALL_TYPE,1,struct afssysargs)
304 #define VIOC_SYSCALL64 _IOWR(VIOC_SYSCALL_TYPE,2,struct afssysargs64)
305 #define SYSCALL_DEV_FNAME "/dev/openafs_ioctl"
308 #ifdef AFS_SUN511_ENV
309 # define VIOC_SYSCALL_TYPE 'C'
310 # define VIOC_SYSCALL _IOW(VIOC_SYSCALL_TYPE, 1, struct afssysargs)
311 # define VIOC_SYSCALL32 _IOW(VIOC_SYSCALL_TYPE, 2, struct afssysargs32)
312 # define SYSCALL_DEV_FNAME "/dev/afs"
324 struct afssysargs32 {
333 #endif /* AFS_SUN511_ENV */
335 #ifdef AFS_CACHE_VNODE_PATH
336 #define AFS_CACHE_CELLS_INODE -2
337 #define AFS_CACHE_ITEMS_INODE -3
338 #define AFS_CACHE_VOLUME_INODE -4
341 #ifdef AFS_SOCKPROXY_ENV
342 # define AFS_SOCKPROXY_PAYLOAD_MAX 8192 /* max payload supported by libafs */
343 # define AFS_SOCKPROXY_PKT_MAX 1024 /* max number of packets supported by libafs */
344 # define AFS_SOCKPROXY_NPROCS 4 /* number of processes */
346 afs_uint32 addr; /* ipv4 address (net order) */
347 afs_uint32 port; /* port (net order) */
348 afs_uint32 size; /* size of payload */
349 afs_uint32 pad; /* spare field, must be 0 */
350 void *payload; /* data to be sent or received */
354 #endif /* _AFS_ARGS_H_ */