windows-fs-chown-chgrp-20090701
[openafs.git] / src / WINNT / afsd / smb_ioctl.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 #ifndef __SMB_IOCTL_H_ENV__
11 #define __SMB_IOCTL_H_ENV__ 1
12
13 #include <cm_ioctl.h>
14 #include <smb_iocons.h>
15
16 /* magic file name for ioctl opens */
17 #define SMB_IOCTL_FILENAME         CM_IOCTL_FILENAME
18 #define SMB_IOCTL_FILENAME_NOSLASH CM_IOCTL_FILENAME_NOSLASH
19
20 /* max parms for ioctl, in either direction */
21 #define SMB_IOCTL_MAXDATA          CM_IOCTL_MAXDATA
22 #define SMB_IOCTL_MAXPROCS         CM_IOCTL_MAXPROCS
23
24 struct smb_fid;
25 struct smb_user;
26 struct smb_vc;
27
28 /* ioctl parameter, while being assembled and/or processed */
29 typedef struct smb_ioctl {
30     /* fid pointer */
31     struct smb_fid *fidp;
32
33     /* uid pointer */
34     struct smb_user *uidp;
35
36     /* pathname associated with the Tree ID */
37     clientchar_t *tidPathp;
38     
39     /* prefix for subst drives */
40     cm_space_t *prefix;
41
42     cm_ioctl_t  ioctl;
43 } smb_ioctl_t;
44
45 /* procedure implementing an ioctl */
46 typedef long (smb_ioctlProc_t)(smb_ioctl_t *, struct cm_user *userp);
47
48 extern void
49 smb_InitIoctl(void);
50
51 extern void
52 smb_SetupIoctlFid(struct smb_fid *fidp, cm_space_t *prefix);
53
54 extern afs_int32
55 smb_IoctlRead(struct smb_fid *fidp, struct smb_vc *vcp,
56               struct smb_packet *inp, struct smb_packet *outp);
57
58 extern afs_int32
59 smb_IoctlWrite(struct smb_fid *fidp, struct smb_vc *vcp,
60                struct smb_packet *inp, struct smb_packet *outp);
61
62 extern afs_int32
63 smb_IoctlV3Write(struct smb_fid *fidp, struct smb_vc *vcp,
64                  struct smb_packet *inp, struct smb_packet *outp);
65
66 extern afs_int32
67 smb_IoctlV3Read(struct smb_fid *fidp, struct smb_vc *vcp,
68                 struct smb_packet *inp, struct smb_packet *outp);
69
70 extern afs_int32
71 smb_IoctlReadRaw(struct smb_fid *fidp, struct smb_vc *vcp,
72                  struct smb_packet *inp, struct smb_packet *outp);
73
74 extern afs_int32
75 smb_IoctlPrepareRead(struct smb_fid *fidp, smb_ioctl_t *ioctlp, cm_user_t *userp);
76
77 extern afs_int32
78 smb_ParseIoctlPath(smb_ioctl_t *ioctlp, cm_user_t *userp, cm_req_t *reqp,
79                    cm_scache_t **scpp, afs_uint32 flags);
80
81 extern afs_int32
82 smb_ParseIoctlParent(smb_ioctl_t *ioctlp, cm_user_t *userp, cm_req_t *reqp,
83                      cm_scache_t **scpp, clientchar_t *leafp);
84
85 extern afs_int32 
86 smb_IoctlSetToken(struct smb_ioctl *ioctlp, struct cm_user *userp);
87
88 extern afs_int32
89 smb_IoctlGetSMBName(smb_ioctl_t *ioctlp, cm_user_t *userp);
90
91 extern afs_int32 smb_IoctlGetACL(smb_ioctl_t *ioctlp, cm_user_t *userp);
92
93 extern afs_int32 smb_IoctlGetFileCellName(smb_ioctl_t *ioctlp, cm_user_t *userp);
94
95 extern afs_int32 smb_IoctlSetACL(smb_ioctl_t *ioctlp, cm_user_t *userp);
96
97 extern afs_int32 smb_IoctlFlushAllVolumes(smb_ioctl_t *ioctlp, cm_user_t *userp);
98
99 extern afs_int32 smb_IoctlFlushVolume(smb_ioctl_t *ioctlp, cm_user_t *userp);
100
101 extern afs_int32 smb_IoctlFlushFile(smb_ioctl_t *ioctlp, cm_user_t *userp);
102
103 extern afs_int32 smb_IoctlSetVolumeStatus(smb_ioctl_t *ioctlp, cm_user_t *userp);
104
105 extern afs_int32 smb_IoctlGetVolumeStatus(smb_ioctl_t *ioctlp, cm_user_t *userp);
106
107 extern afs_int32 smb_IoctlGetFid(smb_ioctl_t *ioctlp, cm_user_t *userp);
108
109 extern afs_int32 smb_IoctlGetOwner(smb_ioctl_t *ioctlp, cm_user_t *userp);
110
111 extern afs_int32 smb_IoctlWhereIs(smb_ioctl_t *ioctlp, cm_user_t *userp);
112
113 extern afs_int32 smb_IoctlStatMountPoint(smb_ioctl_t *ioctlp, cm_user_t *userp);
114
115 extern afs_int32 smb_IoctlDeleteMountPoint(smb_ioctl_t *ioctlp, cm_user_t *userp);
116
117 extern afs_int32 smb_IoctlCheckServers(smb_ioctl_t *ioctlp, cm_user_t *userp);
118
119 extern afs_int32 smb_IoctlGag(smb_ioctl_t *ioctlp, cm_user_t *userp);
120
121 extern afs_int32 smb_IoctlCheckVolumes(smb_ioctl_t *ioctlp, cm_user_t *userp);
122
123 extern afs_int32 smb_IoctlSetCacheSize(smb_ioctl_t *ioctlp, cm_user_t *userp);
124
125 extern afs_int32 smb_IoctlGetCacheParms(smb_ioctl_t *ioctlp, cm_user_t *userp);
126
127 extern afs_int32 smb_IoctlGetCell(smb_ioctl_t *ioctlp, cm_user_t *userp);
128
129 extern afs_int32 smb_IoctlNewCell(smb_ioctl_t *ioctlp, cm_user_t *userp);
130
131 extern afs_int32 smb_IoctlGetWsCell(smb_ioctl_t *ioctlp, cm_user_t *userp);
132
133 extern afs_int32 smb_IoctlSysName(smb_ioctl_t *ioctlp, cm_user_t *userp);
134
135 extern afs_int32 smb_IoctlGetCellStatus(smb_ioctl_t *ioctlp, cm_user_t *userp);
136
137 extern afs_int32 smb_IoctlSetCellStatus(smb_ioctl_t *ioctlp, cm_user_t *userp);
138
139 extern afs_int32 smb_IoctlSetSPrefs(smb_ioctl_t *ioctlp, cm_user_t *userp);
140
141 extern afs_int32 smb_IoctlGetSPrefs(smb_ioctl_t *ioctlp, cm_user_t *userp);
142
143 extern afs_int32 smb_IoctlStoreBehind(smb_ioctl_t *ioctlp, cm_user_t *userp);
144
145 extern afs_int32 smb_IoctlCreateMountPoint(smb_ioctl_t *ioctlp, cm_user_t *userp);
146
147 extern afs_int32 cm_CleanFile(cm_scache_t *scp, cm_user_t *userp, cm_req_t *reqp);
148
149 extern afs_int32 cm_FlushFile(cm_scache_t *scp, cm_user_t *userp, cm_req_t *reqp);
150
151 extern afs_int32 cm_FlushVolume(cm_user_t *, cm_req_t *reqp, afs_uint32 cell, afs_uint32 volume);
152
153 extern afs_int32 cm_FlushParent(cm_scache_t *scp, cm_user_t *userp, cm_req_t *reqp);
154
155 extern afs_int32 smb_IoctlTraceControl(smb_ioctl_t *ioctlp, cm_user_t *userp);
156
157 extern afs_int32 smb_IoctlSetToken(smb_ioctl_t *ioctlp, cm_user_t *userp);
158
159 extern afs_int32 smb_IoctlGetTokenIter(smb_ioctl_t *ioctlp, cm_user_t *userp);
160
161 extern afs_int32 smb_IoctlGetToken(smb_ioctl_t *ioctlp, cm_user_t *userp);
162
163 extern afs_int32 smb_IoctlDelToken(smb_ioctl_t *ioctlp, cm_user_t *userp);
164
165 extern afs_int32 smb_IoctlDelAllToken(smb_ioctl_t *ioctlp, cm_user_t *userp);
166
167 extern afs_int32 smb_IoctlSymlink(smb_ioctl_t *ioctlp, cm_user_t *userp);
168
169 extern afs_int32 smb_IoctlIslink(smb_ioctl_t *ioctlp, cm_user_t *userp);
170
171 extern afs_int32 smb_IoctlListlink(smb_ioctl_t *ioctlp, cm_user_t *userp);
172
173 extern afs_int32 smb_IoctlDeletelink(smb_ioctl_t *ioctlp, cm_user_t *userp);
174
175 extern afs_int32 smb_IoctlMakeSubmount(smb_ioctl_t *ioctlp, cm_user_t *userp);
176
177 extern afs_int32 smb_IoctlGetRxkcrypt(smb_ioctl_t *ioctlp, cm_user_t *userp);
178
179 extern afs_int32 smb_IoctlSetRxkcrypt(smb_ioctl_t *ioctlp, cm_user_t *userp);
180
181 extern afs_int32 smb_IoctlShutdown(smb_ioctl_t *ioctlp, cm_user_t *userp);
182
183 extern afs_int32 smb_IoctlFreemountAddCell(smb_ioctl_t *ioctlp, cm_user_t *userp);
184
185 extern afs_int32 smb_IoctlFreemountRemoveCell(smb_ioctl_t *ioctlp, cm_user_t *userp);
186
187 extern afs_int32 smb_IoctlMemoryDump(smb_ioctl_t *ioctlp, cm_user_t *userp);
188
189 extern afs_int32 smb_IoctlRxStatProcess(smb_ioctl_t *ioctlp, cm_user_t *userp);
190
191 extern afs_int32 smb_IoctlRxStatPeer(smb_ioctl_t *ioctlp, cm_user_t *userp);
192
193 extern afs_int32 smb_IoctlUUIDControl(struct smb_ioctl * ioctlp, struct cm_user *userp);
194
195 extern afs_int32 smb_IoctlPathAvailability(struct smb_ioctl * ioctlp, struct cm_user *userp);
196
197 extern afs_int32 smb_IoctlGetFileType(smb_ioctl_t *ioctlp, cm_user_t *userp);
198
199 extern afs_int32 smb_IoctlVolStatTest(struct smb_ioctl *ioctlp, struct cm_user *userp);
200
201 extern afs_int32 smb_IoctlUnicodeControl(struct smb_ioctl *ioctlp, struct cm_user * userp);
202
203 extern afs_int32 smb_IoctlSetOwner(struct smb_ioctl *ioctlp, struct cm_user *userp);
204
205 extern afs_int32 smb_IoctlSetGroup(struct smb_ioctl *ioctlp, struct cm_user *userp);
206
207 #endif /*  __SMB_IOCTL_H_ENV__ */