Import Upstream version 1.8.5
[hcoop/debian/openafs.git] / src / config / afs_args.h
CommitLineData
805e021f
CE
1/*
2 * Copyright 2000, International Business Machines Corporation and others.
3 * All Rights Reserved.
4 *
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
8 */
9
10#ifndef _AFS_ARGS_H_
11#define _AFS_ARGS_H_
12
13/*
14 * AFS system call opcodes
15 */
16
17#define AFSOP_START_RXCALLBACK 0 /* no aux parms */
18#define AFSOP_START_AFS 1 /* no aux parms */
19#define AFSOP_START_BKG 2 /* no aux parms */
20#define AFSOP_START_TRUNCDAEMON 3 /* no aux parms */
21#define AFSOP_START_CS 4 /* no aux parms */
22#define AFSOP_ADDCELL 5 /* parm 2 = cell str */
23#define AFSOP_CACHEINIT 6 /* parms 2-4 -> cache sizes */
24#define AFSOP_CACHEINFO 7 /* the cacheinfo file */
25#define AFSOP_VOLUMEINFO 8 /* the volumeinfo file */
26#define AFSOP_CACHEFILE 9 /* a random cache file (V*) */
27#define AFSOP_CACHEINODE 10 /* random cache file by inode */
28#define AFSOP_AFSLOG 11 /* output log file */
29#define AFSOP_ROOTVOLUME 12 /* non-standard root volume name */
30
31#define AFSOP_STARTLOG 14 /* temporary: Start afs logging */
32#define AFSOP_ENDLOG 15 /* temporary: End afs logging */
33#define AFSOP_AFS_VFSMOUNT 16 /* vfsmount cover for hpux */
34#define AFSOP_ADVISEADDR 17 /* to init rx cid generator */
35#define AFSOP_CLOSEWAIT 18 /* make all closes synchronous */
36#define AFSOP_RXEVENT_DAEMON 19 /* rxevent daemon */
37#define AFSOP_GETMTU 20 /* stand-in for SIOCGIFMTU, for now */
38#define AFSOP_GETIFADDRS 21 /* get machine's ethernet interfaces */
39
40#define AFSOP_ADDCELL2 29 /* 2nd add cell protocol interface */
41#define AFSOP_AFSDB_HANDLER 30 /* userspace AFSDB lookup handler */
42#define AFSOP_SET_DYNROOT 31 /* enable/disable dynroot support */
43#define AFSOP_ADDCELLALIAS 32 /* create alias for existing cell */
44#define AFSOP_SET_FAKESTAT 33 /* enable/disable fakestat support */
45#define AFSOP_CELLINFO 34 /* set the cellinfo file name */
46#define AFSOP_SET_THISCELL 35 /* set the primary cell */
47#define AFSOP_BASIC_INIT 36 /* used to be part of START_AFS */
48#define AFSOP_SET_BACKUPTREE 37 /* enable backup tree support */
49#define AFSOP_SET_RXPCK 38 /* set rx_extraPackets*/
50#define AFSOP_BUCKETPCT 39 /* bucket percentage */
51#define AFSOP_SET_RXMAXMTU 40 /* set rx_MyMaxSendSize,rx_maxReceiveSizeUser,rx_maxReceiveSize */
52#define AFSOP_BKG_HANDLER 41 /* userspace-capable Bkg daemon */
53#define AFSOP_GETMASK 42 /* stand-in for SIOCGIFNETMASK */
54#define AFSOP_SET_RXMAXFRAGS 43 /* set rxi_nSendFrags, rxi_nRecvFrags */
55#define AFSOP_SET_RMTSYS_FLAG 44 /* set flag if rmtsys is enabled */
56#define AFSOP_SEED_ENTROPY 45 /* Give the kernel hcrypto entropy */
57#define AFSOP_SET_INUMCALC 46 /* set inode number calculation method */
58#define AFSOP_SET_VOLUME_TTL 47 /* set the vldb cache timeout */
59
60#define AFSOP_RXLISTENER_DAEMON 48 /* starts kernel RX listener */
61
62#define AFSOP_CACHEBASEDIR 50 /* cache base dir */
63#define AFSOP_CACHEDIRS 51 /* number of files per dir */
64#define AFSOP_CACHEFILES 52 /* number of files */
65
66#define AFSOP_SETINT 60 /* set key/value pairs for ints */
67
68#define AFSOP_GO 100 /* whether settime is being done */
69
70#define AFSOP_CHECKLOCKS 200 /* dump lock state */
71#define AFSOP_SHUTDOWN 201 /* Totally shutdown afs (deallocate all) */
72
73#define AFSOP_STOP_RXCALLBACK 210 /* Stop CALLBACK process */
74#define AFSOP_STOP_AFS 211 /* Stop AFS process */
75#define AFSOP_STOP_BKG 212 /* Stop BKG process */
76#define AFSOP_STOP_TRUNCDAEMON 213 /* Stop cache truncate daemon */
77/* AFSOP_STOP_RXEVENT 214 defined in osi.h */
78/* AFSOP_STOP_COMPLETE 215 defined in osi.h */
79#define AFSOP_STOP_CS 216 /* Stop CheckServer daemon */
80/* AFSOP_STOP_RXK_LISTENER 217 defined in osi.h */
81#define AFSOP_STOP_AFSDB 218 /* Stop AFSDB handler */
82#define AFSOP_STOP_NETIF 219 /* Stop Netif poller */
83
84#define AFSOP_MAX_OPCODE AFSOP_STOP_NETIF /* Largest defined opcode. */
85
86/*
87 * AFS system call types and flags.
88 */
89
90/* The range 20-30 is reserved for AFS system offsets in the afs_syscall */
91#define AFSCALL_PIOCTL 20
92#define AFSCALL_SETPAG 21
93#define AFSCALL_IOPEN 22
94#define AFSCALL_ICREATE 23
95#define AFSCALL_IREAD 24
96#define AFSCALL_IWRITE 25
97#define AFSCALL_IINC 26
98#define AFSCALL_IDEC 27
99#define AFSCALL_CALL 28
100
101#define AFSCALL_ICL 30
102
103/* 64 bit versions of inode system calls. */
104#define AFSCALL_IOPEN64 41
105#define AFSCALL_ICREATE64 42
106#define AFSCALL_IINC64 43
107#define AFSCALL_IDEC64 44
108#define AFSCALL_ILISTINODE64 45 /* Used by ListViceInodes */
109#define AFSCALL_ICREATENAME64 46 /* pass in platform specific pointer
110 * used to create a name in in a
111 * directory.
112 */
113#ifdef AFS_SGI_VNODE_GLUE
114#define AFSCALL_INIT_KERNEL_CONFIG 47 /* set vnode glue ops. */
115#endif
116
117/* these are for initialization flags */
118
119#define AFSCALL_INIT_MEMCACHE 0x1
120
121/* flags for rxstats pioctl */
122
123#define AFSCALL_RXSTATS_MASK 0x7 /* Valid flag bits */
124#define AFSCALL_RXSTATS_ENABLE 0x1 /* Enable RX stats */
125#define AFSCALL_RXSTATS_DISABLE 0x2 /* Disable RX stats */
126#define AFSCALL_RXSTATS_CLEAR 0x4 /* Clear RX stats */
127
128/* arguments passed by afsd */
129#define IDTYPE_UID 0
130
131/* We don't necessarily have VenusFid here */
132struct afs_umv_param {
133 afs_int32 id;
134 afs_int32 idtype;
135 afs_int32 sCell;
136 afs_int32 sVolume;
137 afs_int32 sVnode;
138 afs_int32 sUnique;
139 afs_int32 dCell;
140 afs_int32 dVolume;
141 afs_int32 dVnode;
142 afs_int32 dUnique;
143};
144
145#define AFS_USPC_UMV 1
146
147struct afs_uspc_param {
148 afs_int32 retval;
149 afs_int32 ts; /* brequest ts - always unique */
150 afs_int32 bufSz;
151 afs_int32 reqtype;
152 union {
153 struct afs_umv_param umv;
154 } req;
155};
156
157struct afs_cacheParams {
158 afs_int32 cacheScaches;
159 afs_int32 cacheFiles;
160 afs_int32 cacheBlocks;
161 afs_int32 cacheDcaches;
162 afs_int32 cacheVolumes;
163 afs_int32 chunkSize;
164 afs_int32 setTimeFlag;
165 afs_int32 memCacheFlag;
166 afs_int32 inodes;
167 afs_int32 users;
168 afs_int32 dynamic_vcaches;
169};
170
171/* Supported values for AFSOP_SET_INUMCALC. */
172enum {
173 AFS_INUMCALC_COMPAT = 0,
174 AFS_INUMCALC_MD5 = 1
175};
176
177/* Supported volume ttl range. */
178#define AFS_MIN_VOLUME_TTL 600
179#define AFS_MAX_VOLUME_TTL MAX_AFS_INT32
180
181/*
182 * Note that the AFS_*ALLOCSIZ values should be multiples of sizeof(void*) to
183 * accomodate pointer alignment.
184 */
185/* Used in rx.c as well as afs directory. */
186#if defined(AFS_AIX32_ENV) || defined(AFS_HPUX_ENV)
187/* XXX Because of rxkad_cprivate... XXX */
188#define AFS_SMALLOCSIZ (38*sizeof(void *)) /* "Small" allocated size */
189#else
190#define AFS_SMALLOCSIZ (64*sizeof(void *)) /* "Small" allocated size */
191#endif
192#define AFS_LRALLOCSIZ 4096 /* "Large" allocated size */
193
194/* Cache configuration available through the client callback interface */
195typedef struct cm_initparams_v1 {
196 afs_uint32 nChunkFiles;
197 afs_uint32 nStatCaches;
198 afs_uint32 nDataCaches;
199 afs_uint32 nVolumeCaches;
200 afs_uint32 firstChunkSize;
201 afs_uint32 otherChunkSize;
202 afs_uint32 cacheSize;
203 afs_uint32 setTime;
204 afs_uint32 memCache;
205} cm_initparams_v1;
206
207/*
208 * If you need to change afs_cacheParams, you should probably create a brand
209 * new structure. Keeping the old structure will allow backwards compatibility
210 * with old clients (even if it is only used to calculate allocation size).
211 * If you do change the size or the format, you'll need to bump
212 * AFS_CLIENT_CONFIG_RETRIEVAL_VERSION. This allows some primitive form
213 * of versioning a la rxdebug.
214 */
215
216#define AFS_CLIENT_RETRIEVAL_VERSION 1 /* latest version */
217#define AFS_CLIENT_RETRIEVAL_FIRST_EDITION 1 /* first version */
218
219/* Defines and structures for the AFS proc replacement layer for the original syscall (AFS_SYSCALL) strategy */
220
221#ifdef AFS_LINUX20_ENV
222
223#define PROC_FSDIRNAME "openafs"
224#define PROC_SYSCALL_NAME "afs_ioctl"
225#define PROC_SYSCALL_FNAME "/proc/fs/openafs/afs_ioctl"
226#define PROC_SYSCALL_ARLA_FNAME "/proc/fs/nnpfs/afs_ioctl"
227#define PROC_CELLSERVDB_NAME "CellServDB"
228#define PROC_PEER_NAME "rx_peer"
229#define PROC_CONN_NAME "rx_conn"
230#define PROC_CALL_NAME "rx_call"
231#define PROC_RX_NAME "rx"
232#define PROC_SERVICES_NAME "rx_services"
233#define PROC_RXSTATS_NAME "rx_stats"
234#define VIOC_SYSCALL_TYPE 'C'
235#define VIOC_SYSCALL _IOW(VIOC_SYSCALL_TYPE,1,void *)
236#define VIOC_SYSCALL32 _IOW(VIOC_SYSCALL_TYPE,1,int)
237
238struct afsprocdata {
239 long param4;
240 long param3;
241 long param2;
242 long param1;
243 long syscall;
244};
245
246struct afsprocdata32 {
247 unsigned int param4;
248 unsigned int param3;
249 unsigned int param2;
250 unsigned int param1;
251 unsigned int syscall;
252};
253
254#endif
255
256#ifdef AFS_DARWIN80_ENV
257struct afssysargs {
258 unsigned int syscall;
259 unsigned int param1;
260 unsigned int param2;
261 unsigned int param3;
262 unsigned int param4;
263 unsigned int param5;
264 unsigned int param6;
265 unsigned int retval;
266};
267
268/* args reordered to avoid alignment issues */
269struct afssysargs64 {
270 user_addr_t param1;
271 user_addr_t param2;
272 user_addr_t param3;
273 user_addr_t param4;
274 user_addr_t param5;
275 user_addr_t param6;
276 unsigned int syscall;
277 unsigned int retval;
278};
279#define VIOC_SYSCALL_TYPE 'C'
280#define VIOC_SYSCALL _IOWR(VIOC_SYSCALL_TYPE,1,struct afssysargs)
281#define VIOC_SYSCALL64 _IOWR(VIOC_SYSCALL_TYPE,2,struct afssysargs64)
282#define SYSCALL_DEV_FNAME "/dev/openafs_ioctl"
283#endif
284
285#ifdef AFS_SUN511_ENV
286# define VIOC_SYSCALL_TYPE 'C'
287# define VIOC_SYSCALL _IOW(VIOC_SYSCALL_TYPE, 1, struct afssysargs)
288# define VIOC_SYSCALL32 _IOW(VIOC_SYSCALL_TYPE, 2, struct afssysargs32)
289# define SYSCALL_DEV_FNAME "/dev/afs"
290
291struct afssysargs {
292 afs_uint64 param6;
293 afs_uint64 param5;
294 afs_uint64 param4;
295 afs_uint64 param3;
296 afs_uint64 param2;
297 afs_uint64 param1;
298 afs_uint32 syscall;
299};
300
301struct afssysargs32 {
302 afs_uint32 param6;
303 afs_uint32 param5;
304 afs_uint32 param4;
305 afs_uint32 param3;
306 afs_uint32 param2;
307 afs_uint32 param1;
308 afs_uint32 syscall;
309};
310#endif /* AFS_SUN511_ENV */
311
312#ifdef AFS_CACHE_VNODE_PATH
313#define AFS_CACHE_CELLS_INODE -2
314#define AFS_CACHE_ITEMS_INODE -3
315#define AFS_CACHE_VOLUME_INODE -4
316#endif
317
318#endif /* _AFS_ARGS_H_ */