Windows: improved idle dead time handling
[openafs.git] / src / WINNT / afsd / cm_conn.h
index c138b69..2c7bdfc 100644 (file)
@@ -7,8 +7,8 @@
  * directory or online at http://www.openafs.org/dl/license10.html
  */
 
-#ifndef __CM_CONN_H_ENV__
-#define __CM_CONN_H_ENV__ 1
+#ifndef OPENAFS_WINNT_AFSD_CM_CONN_H
+#define OPENAFS_WINNT_AFSD_CM_CONN_H 1
 
 #define        CM_CONN_DEFAULTRDRTIMEOUT       45
 #ifndef CM_CONN_CONNDEADTIME
 #ifndef CM_CONN_IDLEDEADTIME
 #define CM_CONN_IDLEDEADTIME             0
 #endif
+#ifndef CM_CONN_IDLEDEADTIME_REP
+#define CM_CONN_IDLEDEADTIME_REP         0
+#endif
 #ifndef CM_CONN_NATPINGINTERVAL
 #define CM_CONN_NATPINGINTERVAL          0
 #endif
 
+#define CM_CONN_IFS_HARDDEADTIME       120
+#define CM_CONN_IFS_CONNDEADTIME        60
+#define CM_CONN_IFS_IDLEDEADTIME      1200
+#define CM_CONN_IFS_IDLEDEADTIME_REP   180      /* must be larger than file server hard dead timeout = 120 */
+
 extern unsigned short ConnDeadtimeout;
 extern unsigned short HardDeadtimeout;
 extern DWORD          RDRtimeout;
@@ -41,7 +49,8 @@ typedef struct cm_conn {
        int cryptlevel;                 /* encrytion status */
 } cm_conn_t;
 
-#define CM_CONN_FLAG_FORCE_NEW 1
+#define CM_CONN_FLAG_FORCE_NEW          1
+#define CM_CONN_FLAG_REPLICATION        2
 
 /*
  * structure used for tracking RPC progress
@@ -49,8 +58,8 @@ typedef struct cm_conn {
  * to the cache manager functions.
  */
 typedef struct cm_req {
-    DWORD startTime;           /* Quit before RDR times us out */
-    int rpcError;                      /* RPC error code */
+    DWORD startTime;           /* GetTickCount() when this struct was initialized */
+    int rpcError;              /* RPC error code */
     int volumeError;           /* volume error code */
     int accessError;           /* access error code */
     struct cm_server * tokenIdleErrorServp;  /* server that reported a token/idle error other than expired */
@@ -62,10 +71,13 @@ typedef struct cm_req {
 } cm_req_t;
 
 /* flags in cm_req structure */
-#define        CM_REQ_NORETRY          0x1
-#define CM_REQ_NEW_CONN_FORCED  0x2
-#define CM_REQ_SOURCE_SMB       0x4
-#define CM_REQ_VOLUME_UPDATED   0x8
+#define        CM_REQ_NORETRY          0x01
+#define CM_REQ_NEW_CONN_FORCED  0x02
+#define CM_REQ_SOURCE_SMB       0x04
+#define CM_REQ_VOLUME_UPDATED   0x08
+#define CM_REQ_WOW64            0x10
+#define CM_REQ_SOURCE_REDIR     0x20
+#define CM_REQ_OFFLINE_VOL_CHK  0x40
 
 /*
  * Vice2 error codes
@@ -125,15 +137,16 @@ extern void cm_InitConn(void);
 extern void cm_InitReq(cm_req_t *reqp);
 
 extern int cm_Analyze(cm_conn_t *connp, struct cm_user *up, struct cm_req *reqp,
-       struct cm_fid *fidp,
-       struct AFSVolSync *volInfop,
-        cm_serverRef_t * serversp,
-       struct cm_callbackRequest *cbrp, long code);
+                      struct cm_fid *fidp,
+                      afs_uint32 storeOp,
+                      struct AFSVolSync *volInfop,
+                      cm_serverRef_t * serversp,
+                      struct cm_callbackRequest *cbrp, long code);
 
-extern long cm_ConnByMServers(struct cm_serverRef *, struct cm_user *,
+extern long cm_ConnByMServers(struct cm_serverRef *, afs_uint32, struct cm_user *,
        cm_req_t *, cm_conn_t **);
 
-extern long cm_ConnByServer(struct cm_server *, struct cm_user *, cm_conn_t **);
+extern long cm_ConnByServer(struct cm_server *, struct cm_user *, afs_uint32, cm_conn_t **);
 
 extern long cm_ConnFromFID(struct cm_fid *, struct cm_user *, struct cm_req *,
        cm_conn_t **);
@@ -152,4 +165,4 @@ extern void cm_ForceNewConnections(cm_server_t *serverp);
 
 extern long cm_ServerAvailable(struct cm_fid *fidp, struct cm_user *userp);
 
-#endif /*  __CM_CONN_H_ENV__ */
+#endif /*  OPENAFS_WINNT_AFSD_CM_CONN_H */