Windows: RDR Dynamic root Freelance only
[openafs.git] / src / WINNT / afsrdr / user / RDRIoctl.h
index 821431e..d4a1605 100644 (file)
 
 extern void RDR_InitIoctl(void);
 
-extern void RDR_SetupIoctl(ULONG index, cm_fid_t *parentFid, cm_fid_t *rootFid, cm_user_t *userp);
+extern void RDR_ShutdownIoctl(void);
+
+extern void RDR_SetupIoctl(ULONG index, cm_fid_t *parentFid, cm_fid_t *rootFid, cm_user_t *userp, cm_req_t *reqp);
 
 extern void RDR_CleanupIoctl(ULONG index);
 
 extern afs_int32 RDR_IoctlRead(cm_user_t *userp, ULONG RequestId, ULONG BufferLength, void *MappedBuffer,
-                               ULONG *pBytesProcessed, cm_req_t *reqp, afs_uint32 pflags);
+                               ULONG *pBytesProcessed, afs_uint32 pflags);
 
-extern afs_int32 RDR_IoctlWrite(cm_user_t *userp, ULONG RequestId, ULONG BufferLength, void *MappedBuffer,
-                                cm_req_t *reqp);
+extern afs_int32 RDR_IoctlWrite(cm_user_t *userp, ULONG RequestId, ULONG BufferLength, void *MappedBuffer);
 
 #ifdef RDR_IOCTL_PRIVATE
 typedef struct RDR_ioctl {
@@ -49,8 +50,13 @@ typedef struct RDR_ioctl {
     cm_fid_t          rootFid;
     cm_scache_t      *parentScp;
     cm_ioctl_t        ioctl;
+    afs_uint32        flags;
+    afs_int32         refCount;         /* RDR_globalIoctlLock */
+    cm_req_t          req;
 } RDR_ioctl_t;
 
+#define RDR_IOCTL_FLAG_CLEANED   1
+
 /* procedure implementing an ioctl */
 typedef long (RDR_ioctlProc_t)(RDR_ioctl_t *, struct cm_user *userp, afs_uint32 pflags);
 
@@ -60,12 +66,6 @@ extern afs_int32 RDR_IoctlPrepareRead(RDR_ioctl_t *ioctlp, cm_user_t *userp, afs
 
 extern RDR_ioctl_t *RDR_FindIoctl(ULONG index);
 
-extern afs_int32 RDR_ParseIoctlPath(RDR_ioctl_t *ioctlp, cm_user_t *userp, cm_req_t *reqp,
-                                    cm_scache_t **scpp, afs_uint32 flags);
-
-extern afs_int32 RDR_ParseIoctlParent(RDR_ioctl_t *ioctlp, cm_user_t *userp, cm_req_t *reqp,
-                                      cm_scache_t **scpp, wchar_t *leafp);
-
 extern afs_int32
 RDR_IoctlSetToken(struct RDR_ioctl *ioctlp, struct cm_user *userp, afs_uint32 pflags);
 
@@ -195,5 +195,7 @@ extern afs_int32 RDR_IoctlGetVerifyData(RDR_ioctl_t *ioctlp, cm_user_t *userp, a
 
 extern afs_int32 RDR_IoctlSetVerifyData(RDR_ioctl_t *ioctlp, cm_user_t *userp, afs_uint32 pflags);
 
+extern afs_int32 RDR_IoctlGetCallerAccess(RDR_ioctl_t *ioctlp, cm_user_t *userp, afs_uint32 pflags);
+
 #endif