1b019a157ec03066c64f67a74060e22ebcdd27dd
[openafs.git] / src / config / venus.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 #if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS)
11 #endif
12 /* /usr/andrew/include/vice/ioctl.h
13
14 Definitions of Venus-specific ioctls for Venus 2.
15  */
16
17 #ifndef AFS_VENUS_H
18 #define AFS_VENUS_H
19
20 #if !defined(UKERNEL)
21
22 #ifndef _IOW
23 #include <sys/ioctl.h>
24 #endif
25
26 #ifndef _VICEIOCTL
27 #include <afs/vice.h>
28 #endif
29
30 /* some structures used with CM pioctls */
31
32 /* structs for Get/Set server preferences pioctl
33  */
34 struct spref {
35         struct in_addr server;
36         unsigned short rank;
37 };
38
39 struct sprefrequest_33 {
40         unsigned short offset;
41         unsigned short num_servers;
42 };
43
44 struct sprefrequest {             /* new struct for 3.4 */
45         unsigned short offset;
46         unsigned short num_servers;
47         unsigned short flags;
48 };
49 #define DBservers 1
50
51 struct sprefinfo {
52         unsigned short next_offset;
53         unsigned short num_servers;
54         struct spref servers[1];                /* we overrun this array intentionally...*/
55 };
56
57 struct setspref {
58         unsigned short flags;
59         unsigned short num_servers;
60         struct spref servers[1];                /* we overrun this array intentionally...*/
61 };
62 /* struct for GAG pioctl
63  */
64 struct gaginfo {
65         afs_uint32 showflags, logflags, logwritethruflag, spare[3];
66         unsigned char spare2[128];
67 };
68 #define GAGUSER    1
69 #define GAGCONSOLE 2
70 #define logwritethruON  1
71
72
73 struct rxparams {
74         afs_int32 rx_initReceiveWindow, rx_maxReceiveWindow,
75               rx_initSendWindow, rx_maxSendWindow, rxi_nSendFrags,
76               rxi_nRecvFrags, rxi_OrphanFragSize;
77         afs_int32 rx_maxReceiveSize, rx_MyMaxSendSize;
78         afs_uint32 spare[21];
79       };
80
81 /* struct for checkservers */
82
83 struct chservinfo
84 {
85         int magic;
86         char tbuffer[128];
87         int tsize;
88         afs_int32 tinterval;
89         afs_int32 tflags;
90 };
91
92 struct sbstruct {
93   int sb_thisfile;
94   int sb_default;
95 };
96  
97 /* CM inititialization parameters. What CM actually used after calculations
98  * based on passed in arguments.
99  */
100 #define CMI_VERSION 1 /* increment when adding new fields. */
101 struct cm_initparams {
102     int cmi_version;
103     int cmi_nChunkFiles;
104     int cmi_nStatCaches;
105     int cmi_nDataCaches;
106     int cmi_nVolumeCaches;
107     int cmi_firstChunkSize;
108     int cmi_otherChunkSize;
109     int cmi_cacheSize;  /* The original cache size, in 1K blocks. */
110     unsigned cmi_setTime:1;
111     unsigned cmi_memCache:1;
112     int spare[16-9]; /* size of struct is 16 * 4 = 64 bytes */
113 };
114
115 #endif /* !defined(UKERNEL) */
116                 
117 /* IOCTLS to Venus.  Apply these to open file decriptors. */
118 #define VIOCCLOSEWAIT           _VICEIOCTL(1)   /* Force close to wait for store */
119 #define VIOCABORT               _VICEIOCTL(2)   /* Abort close on this fd */
120 #define VIOCIGETCELL            _VICEIOCTL(3)   /* ioctl to get cell name */
121
122 /* PIOCTLS to Venus.  Apply these to path names with pioctl. */
123 #define VIOCSETAL               _VICEIOCTL(1)   /* Set access control list */
124 #define VIOCGETAL               _VICEIOCTL(2)   /* Get access control list */
125 #define VIOCSETTOK              _VICEIOCTL(3)   /* Set authentication tokens */
126 #define VIOCGETVOLSTAT          _VICEIOCTL(4)   /* Get volume status */
127 #define VIOCSETVOLSTAT          _VICEIOCTL(5)   /* Set volume status */
128 #define VIOCFLUSH               _VICEIOCTL(6)   /* Invalidate cache entry */
129 #define VIOCSTAT                _VICEIOCTL(7)   /* Get file status */
130 #define VIOCGETTOK              _VICEIOCTL(8)   /* Get authentication tokens */
131 #define VIOCUNLOG               _VICEIOCTL(9)   /* Invalidate tokens */
132 #define VIOCCKSERV              _VICEIOCTL(10)  /* Check that servers are up */
133 #define VIOCCKBACK              _VICEIOCTL(11)  /* Check backup volume mappings */
134 #define VIOCCKCONN              _VICEIOCTL(12)  /* Check connections for a user */
135 #define VIOCGETTIME             _VICEIOCTL(13)  /* Do a vice gettime for performance testing */
136 #define VIOCWHEREIS             _VICEIOCTL(14)  /* Find out where a volume is located */
137 #define VIOCPREFETCH            _VICEIOCTL(15)  /* Prefetch a file */
138 #define VIOCNOP                 _VICEIOCTL(16)  /* Do nothing (more preformance) */
139 #define VIOCENGROUP             _VICEIOCTL(17)  /* Enable group access for a group */
140 #define VIOCDISGROUP            _VICEIOCTL(18)  /* Disable group access */
141 #define VIOCLISTGROUPS          _VICEIOCTL(19)  /* List enabled and disabled groups */
142 #define VIOCACCESS              _VICEIOCTL(20)  /* Access using PRS_FS bits */
143 #define VIOCUNPAG               _VICEIOCTL(21)  /* Invalidate pag */
144 #define VIOCGETFID              _VICEIOCTL(22)  /* Get file ID quickly */
145 #define VIOCWAITFOREVER         _VICEIOCTL(23)  /* Wait for dead servers forever */
146 #define VIOCSETCACHESIZE        _VICEIOCTL(24)  /* Set venus cache size in 1k units */
147 #define VIOCFLUSHCB             _VICEIOCTL(25)  /* Flush callback only */
148 #define VIOCNEWCELL             _VICEIOCTL(26)  /* Configure new cell */
149 #define VIOCGETCELL             _VICEIOCTL(27)  /* Get cell info */
150 #define VIOC_AFS_DELETE_MT_PT   _VICEIOCTL(28)  /* [AFS] Delete mount point */
151 #define VIOC_AFS_STAT_MT_PT     _VICEIOCTL(29)  /* [AFS] Stat mount point */
152 #define VIOC_FILE_CELL_NAME     _VICEIOCTL(30)  /* Get cell in which file lives */
153 #define VIOC_GET_WS_CELL        _VICEIOCTL(31)  /* Get cell in which workstation lives */
154 #define VIOC_AFS_MARINER_HOST   _VICEIOCTL(32)  /* [AFS] Get/set mariner host */
155 #define VIOC_GET_PRIMARY_CELL   _VICEIOCTL(33)  /* Get primary cell for caller */
156 #define VIOC_VENUSLOG           _VICEIOCTL(34)  /* Enable/Disable venus logging */
157 #define VIOC_GETCELLSTATUS      _VICEIOCTL(35)  /* get cell status info */
158 #define VIOC_SETCELLSTATUS      _VICEIOCTL(36)  /* set corresponding info */
159 #define VIOC_FLUSHVOLUME        _VICEIOCTL(37)  /* flush whole volume's data */
160 #define VIOC_AFS_SYSNAME        _VICEIOCTL(38)  /* Change @sys value */
161 #define VIOC_EXPORTAFS          _VICEIOCTL(39)  /* Export afs to nfs clients */
162 #define VIOCGETCACHEPARMS       _VICEIOCTL(40)  /* Get cache stats */
163 #define VIOCGETVCXSTATUS        _VICEIOCTL(41)  
164 #define VIOC_SETSPREFS33        _VICEIOCTL(42)  /* Set server ranks */
165 #define VIOC_GETSPREFS          _VICEIOCTL(43)  /* Get server ranks */
166 #define VIOC_GAG                _VICEIOCTL(44)  /* silence CM */
167 #define VIOC_TWIDDLE            _VICEIOCTL(45)  /* adjust RX knobs */
168 #define VIOC_SETSPREFS          _VICEIOCTL(46)  /* Set server ranks */
169 #define VIOC_STORBEHIND         _VICEIOCTL(47)  /* adjust store asynchrony */
170 #define VIOC_GCPAGS             _VICEIOCTL(48)  /* disable automatic pag gc-ing */
171 #define VIOC_GETINITPARAMS      _VICEIOCTL(49)  /* get initial cm params */
172 #define VIOC_GETCPREFS          _VICEIOCTL(50)  /* Get client interface */
173 #define VIOC_SETCPREFS          _VICEIOCTL(51)  /* Set client interface */
174 #define VIOC_AFS_FLUSHMOUNT     _VICEIOCTL(52)  /* Flush mount symlink data */
175 #define VIOC_RXSTAT_PROC        _VICEIOCTL(53)  /* Control process RX stats */
176 #define VIOC_RXSTAT_PEER        _VICEIOCTL(54)  /* Control peer RX stats */
177 #define VIOC_GETRXKCRYPT        _VICEIOCTL(55)  /* Set rxkad enc flag */
178 #define VIOC_SETRXKCRYPT        _VICEIOCTL(56)  /* Set rxkad enc flag */
179
180 #endif /* AFS_VENUS_H */