Add OpenAFS build machinery for libhcrypto
[openafs.git] / src / config / afs_args.h
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 /*
11  * AFS system call opcodes
12  */
13
14 #ifndef _AFS_ARGS_H_
15 #define _AFS_ARGS_H_
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
23 #define AFSOP_ADDCELL             5     /* parm 2 = cell str */
24 #define AFSOP_CACHEINIT           6     /* parms 2-4 -> cache sizes */
25 #define AFSOP_CACHEINFO           7     /* the cacheinfo file */
26 #define AFSOP_VOLUMEINFO          8     /* the volumeinfo file */
27 #define AFSOP_CACHEFILE           9     /* a random cache file (V*) */
28 #define AFSOP_CACHEINODE         10     /* random cache file by inode */
29 #define AFSOP_AFSLOG             11     /* output log file */
30 #define AFSOP_ROOTVOLUME         12     /* non-standard root volume name */
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
54 /* The range 20-30 is reserved for AFS system offsets in the afs_syscall */
55 #define AFSCALL_PIOCTL          20
56 #define AFSCALL_SETPAG          21
57 #define AFSCALL_IOPEN           22
58 #define AFSCALL_ICREATE         23
59 #define AFSCALL_IREAD           24
60 #define AFSCALL_IWRITE          25
61 #define AFSCALL_IINC            26
62 #define AFSCALL_IDEC            27
63 #define AFSCALL_CALL            28
64
65 #define AFSCALL_ICL             30
66
67 /* 64 bit versions of inode system calls. */
68 #define AFSCALL_IOPEN64         41
69 #define AFSCALL_ICREATE64       42
70 #define AFSCALL_IINC64          43
71 #define AFSCALL_IDEC64          44
72 #define AFSCALL_ILISTINODE64    45      /* Used by ListViceInodes */
73 #define AFSCALL_ICREATENAME64   46      /* pass in platform specific pointer
74                                          * used to create a name in in a
75                                          * directory.
76                                          */
77 #ifdef AFS_SGI_VNODE_GLUE
78 #define AFSCALL_INIT_KERNEL_CONFIG 47   /* set vnode glue ops. */
79 #endif
80
81 #ifdef  AFS_SGI53_ENV
82 #define AFSOP_NFSSTATICADDR      32     /* to contents addr of nfs kernel addr */
83 #define AFSOP_NFSSTATICADDRPTR   33     /* pass addr of variable containing
84                                          * address into kernel. */
85 #define AFSOP_NFSSTATICADDR2     34     /* pass address in as hyper. */
86 #define AFSOP_SBLOCKSTATICADDR2  35     /* for sblock and sbunlock */
87 #endif
88 #define AFSOP_GETMASK            42     /* stand-in for SIOCGIFNETMASK */
89 /* For SGI, this can't interfere with any of the 64 bit inode calls. */
90 #define AFSOP_RXLISTENER_DAEMON  48     /* starts kernel RX listener */
91
92 /* skip 64 bit calls */
93 #define AFSOP_CACHEBASEDIR       50     /* cache base dir */
94 #define AFSOP_CACHEDIRS          51     /* number of files per dir */
95 #define AFSOP_CACHEFILES         52     /* number of files */
96
97 #define AFSOP_SETINT             60     /* we should just set key/value pairs
98                                           for things which are just ints */
99
100 /* these are for initialization flags */
101
102 #define AFSCALL_INIT_MEMCACHE 0x1
103
104 /* flags for rxstats pioctl */
105
106 #define AFSCALL_RXSTATS_MASK    0x7     /* Valid flag bits */
107 #define AFSCALL_RXSTATS_ENABLE  0x1     /* Enable RX stats */
108 #define AFSCALL_RXSTATS_DISABLE 0x2     /* Disable RX stats */
109 #define AFSCALL_RXSTATS_CLEAR   0x4     /* Clear RX stats */
110
111 #define AFSOP_GO                100     /* whether settime is being done */
112 /* not for initialization: debugging assist */
113 #define AFSOP_CHECKLOCKS        200     /* dump lock state */
114 #define AFSOP_SHUTDOWN          201     /* Totally shutdown afs (deallocate all) */
115
116 /* The following aren't used by afs_initState but by afs_termState! */
117 #define AFSOP_STOP_RXCALLBACK   210     /* Stop CALLBACK process */
118 #define AFSOP_STOP_AFS          211     /* Stop AFS process */
119 #define AFSOP_STOP_CS           216     /* Stop CheckServer daemon. */
120 #define AFSOP_STOP_BKG          212     /* Stop BKG process */
121 #define AFSOP_STOP_TRUNCDAEMON  213     /* Stop cache truncate daemon */
122 /* #define AFSOP_STOP_RXEVENT   214     defined in osi.h              */
123 /* #define AFSOP_STOP_COMPLETE     215  defined in osi.h              */
124 /* #define AFSOP_STOP_RXK_LISTENER   217     defined in osi.h         */
125 #define AFSOP_STOP_AFSDB        218     /* Stop AFSDB handler */
126 #define AFSOP_STOP_NETIF        219     /* Stop Netif poller */
127
128 /* Main afs syscall entry; this number may vary per system (i.e. defined in afs/param.h) */
129 #ifndef AFS_SYSCALL
130 #define AFS_SYSCALL             31
131 #endif
132
133 /* arguments passed by afsd */
134 #define IDTYPE_UID 0
135
136 /* We don't necessarily have VenusFid here */
137 struct afs_umv_param {
138     afs_int32 id;
139     afs_int32 idtype;
140     afs_int32 sCell;
141     afs_int32 sVolume;
142     afs_int32 sVnode;
143     afs_int32 sUnique;
144     afs_int32 dCell;
145     afs_int32 dVolume;
146     afs_int32 dVnode;
147     afs_int32 dUnique;
148 };
149
150 #define AFS_USPC_UMV 1
151
152 struct afs_uspc_param {
153     afs_int32 retval;
154     afs_int32 ts; /* brequest ts - always unique */
155     afs_int32 bufSz;
156     afs_int32 reqtype;
157     union {
158         struct afs_umv_param umv;
159     } req;
160 };
161
162 struct afs_cacheParams {
163     afs_int32 cacheScaches;
164     afs_int32 cacheFiles;
165     afs_int32 cacheBlocks;
166     afs_int32 cacheDcaches;
167     afs_int32 cacheVolumes;
168     afs_int32 chunkSize;
169     afs_int32 setTimeFlag;
170     afs_int32 memCacheFlag;
171     afs_int32 inodes;
172     afs_int32 users;
173     afs_int32 dynamic_vcaches;
174 };
175
176 /*
177  * Note that the AFS_*ALLOCSIZ values should be multiples of sizeof(void*) to
178  * accomodate pointer alignment.
179  */
180 /* Used in rx.c as well as afs directory. */
181 #if     defined(AFS_AIX32_ENV) || defined(AFS_HPUX_ENV)
182 /* XXX Because of rxkad_cprivate... XXX */
183 #define AFS_MDALLOCSIZ  (127*sizeof(void *))    /* "Medium" allocated size */
184 #define AFS_MALLOC_LOW_WATER    50      /* Min free blocks before allocating more */
185 #define AFS_SMALLOCSIZ  (38*sizeof(void *))     /* "Small" allocated size */
186 #else
187 #define AFS_SMALLOCSIZ  (64*sizeof(void *))     /*  "Small" allocated size */
188 #endif
189
190 /* Cache configuration available through the client callback interface */
191 typedef struct cm_initparams_v1 {
192     afs_uint32 nChunkFiles;
193     afs_uint32 nStatCaches;
194     afs_uint32 nDataCaches;
195     afs_uint32 nVolumeCaches;
196     afs_uint32 firstChunkSize;
197     afs_uint32 otherChunkSize;
198     afs_uint32 cacheSize;
199     afs_uint32 setTime;
200     afs_uint32 memCache;
201 } cm_initparams_v1;
202
203 /*
204  * If you need to change afs_cacheParams, you should probably create a brand
205  * new structure.  Keeping the old structure will allow backwards compatibility
206  * with old clients (even if it is only used to calculate allocation size).
207  * If you do change the size or the format, you'll need to bump
208  * AFS_CLIENT_CONFIG_RETRIEVAL_VERSION.  This allows some primitive form
209  * of versioning a la rxdebug.
210  */
211
212 #define AFS_CLIENT_RETRIEVAL_VERSION            1       /* latest version */
213 #define AFS_CLIENT_RETRIEVAL_FIRST_EDITION      1       /* first version */
214
215 /* Defines and structures for the AFS proc replacement layer for the original syscall (AFS_SYSCALL) strategy */
216
217 #ifdef AFS_LINUX20_ENV
218
219 #define PROC_FSDIRNAME "openafs"
220 #define PROC_SYSCALL_NAME "afs_ioctl"
221 #define PROC_SYSCALL_FNAME "/proc/fs/openafs/afs_ioctl"
222 #define PROC_SYSCALL_ARLA_FNAME "/proc/fs/nnpfs/afs_ioctl"
223 #define PROC_CELLSERVDB_NAME "CellServDB"
224 #define PROC_PEER_NAME "rx_peer"
225 #define PROC_CONN_NAME "rx_conn"
226 #define PROC_CALL_NAME "rx_call"
227 #define PROC_RX_NAME "rx"
228 #define PROC_SERVICES_NAME "rx_services"
229 #define PROC_RXSTATS_NAME "rx_stats"
230 #define VIOC_SYSCALL_TYPE 'C'
231 #define VIOC_SYSCALL _IOW(VIOC_SYSCALL_TYPE,1,void *)
232 #define VIOC_SYSCALL32 _IOW(VIOC_SYSCALL_TYPE,1,int)
233
234 struct afsprocdata {
235   long param4;
236   long param3;
237   long param2;
238   long param1;
239   long syscall;
240 };
241
242 struct afsprocdata32 {
243   unsigned int param4;
244   unsigned int param3;
245   unsigned int param2;
246   unsigned int param1;
247   unsigned int syscall;
248 };
249
250 #endif
251
252 #ifdef AFS_DARWIN80_ENV
253 struct afssysargs {
254     unsigned int syscall;
255     unsigned int param1;
256     unsigned int param2;
257     unsigned int param3;
258     unsigned int param4;
259     unsigned int param5;
260     unsigned int param6;
261     unsigned int retval;
262 };
263
264 /* args reordered to avoid alignment issues */
265 struct afssysargs64 {
266     user_addr_t param1;
267     user_addr_t param2;
268     user_addr_t param3;
269     user_addr_t param4;
270     user_addr_t param5;
271     user_addr_t param6;
272     unsigned int syscall;
273     unsigned int retval;
274 };
275 #define VIOC_SYSCALL_TYPE 'C'
276 #define VIOC_SYSCALL _IOWR(VIOC_SYSCALL_TYPE,1,struct afssysargs)
277 #define VIOC_SYSCALL64 _IOWR(VIOC_SYSCALL_TYPE,2,struct afssysargs64)
278 #define SYSCALL_DEV_FNAME "/dev/openafs_ioctl"
279 #endif
280
281 #ifdef AFS_CACHE_VNODE_PATH
282 #define AFS_CACHE_CELLS_INODE -2
283 #define AFS_CACHE_ITEMS_INODE -3
284 #define AFS_CACHE_VOLUME_INODE -4
285 #endif
286
287 #endif /* _AFS_ARGS_H_ */