]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
windows-addr-change-mods-20060509
authorJeffrey Altman <jaltman@secure-endpoints.com>
Tue, 9 May 2006 06:18:08 +0000 (06:18 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Tue, 9 May 2006 06:18:08 +0000 (06:18 +0000)
When the client changes IP addresses, in order to obtain optimal
performance it must:

(1) force the replacement of all existing rx connections

(2) ping all up and down servers

src/WINNT/afsd/cm_daemon.c
src/WINNT/afsd/cm_server.c
src/WINNT/afsd/cm_server.h

index 08918369b3b7b24da167af43c1387429afdc517a..ac210e19818c25a741e568efe075c92cb9b2b6bc 100644 (file)
@@ -59,7 +59,8 @@ void cm_IpAddrDaemon(long parm)
        if (Result == NO_ERROR && daemon_ShutdownFlag == 0) {
            osi_Log0(afsd_logp, "cm_IpAddrDaemon CheckDownServers");
            Sleep(2500);
-            cm_CheckServers(CM_FLAG_CHECKDOWNSERVERS, NULL);
+           cm_ForceNewConnectionsAllServers();
+            cm_CheckServers(CM_FLAG_CHECKUPSERVERS | CM_FLAG_CHECKDOWNSERVERS, NULL);
            smb_CheckVCs();
        }       
     }
index e94e3480d78a806e343980122be1b94c6c771444..3d29d271cb25a79f0e1e2d6ca4a39bb35168e848 100644 (file)
@@ -29,6 +29,20 @@ osi_rwlock_t cm_serverLock;
 
 cm_server_t *cm_allServersp;
 
+void
+cm_ForceNewConnectionsAllServers(void)
+{
+    cm_server_t *tsp;
+
+    lock_ObtainRead(&cm_serverLock);
+    for (tsp = cm_allServersp; tsp; tsp = tsp->allNextp) {
+        cm_GetServerNoLock(tsp);
+       cm_ForceNewConnections(tsp);
+        cm_PutServerNoLock(tsp);
+    }
+    lock_ReleaseRead(&cm_serverLock);
+}
+
 void 
 cm_PingServer(cm_server_t *tsp)
 {
index 0212f0f794928f3b654aa2597635f05fcf2a182e..9182a2aad47d419ece8509c890af6ca884edbabb 100644 (file)
@@ -103,4 +103,6 @@ extern void cm_FreeServer(cm_server_t* server);
 
 extern void cm_FreeServerList(cm_serverRef_t** list);
 
+extern void cm_ForceNewConnectionsAllServers(void);
+
 #endif /*  __CM_SERVER_H_ENV__ */