diff --git a/src/WINNT/afsd/cm_server.c b/src/WINNT/afsd/cm_server.c index aceb08d423..e3e366c09a 100644 --- a/src/WINNT/afsd/cm_server.c +++ b/src/WINNT/afsd/cm_server.c @@ -1081,7 +1081,21 @@ afs_int32 cm_PutServerRef(cm_serverRef_t *tsrp, int locked) return refCount; } +afs_uint32 +cm_ServerListSize(cm_serverRef_t* serversp) +{ + afs_uint32 count = 0; + cm_serverRef_t *tsrp; + lock_ObtainRead(&cm_serverLock); + for (tsrp = serversp; tsrp; tsrp=tsrp->next) { + if (tsrp->status == srv_deleted) + continue; + count++; + } + lock_ReleaseRead(&cm_serverLock); + return count; +} LONG_PTR cm_ChecksumServerList(cm_serverRef_t *serversp) { diff --git a/src/WINNT/afsd/cm_server.h b/src/WINNT/afsd/cm_server.h index aa568b2758..8d13aef5c7 100644 --- a/src/WINNT/afsd/cm_server.h +++ b/src/WINNT/afsd/cm_server.h @@ -131,6 +131,8 @@ extern void cm_RandomizeServer(cm_serverRef_t** list); extern void cm_FreeServer(cm_server_t* server); +extern afs_uint32 cm_ServerListSize(cm_serverRef_t* list); + #define CM_FREESERVERLIST_DELETE 1 extern void cm_FreeServerList(cm_serverRef_t** list, afs_uint32 flags);