} /*afs_CountServers */
+void
+ForceAllNewConnections()
+{
+ int srvAddrCount;
+ struct srvAddr **addrs;
+ struct srvAddr *sa;
+ afs_int32 i, j;
+
+ ObtainReadLock(&afs_xserver); /* Necessary? */
+ ObtainReadLock(&afs_xsrvAddr);
+
+ srvAddrCount = 0;
+ for (i = 0; i < NSERVERS; i++) {
+ for (sa = afs_srvAddrs[i]; sa; sa = sa->next_bkt) {
+ srvAddrCount++;
+ }
+ }
+
+ addrs = afs_osi_Alloc(srvAddrCount * sizeof(*addrs));
+ j = 0;
+ for (i = 0; i < NSERVERS; i++) {
+ for (sa = afs_srvAddrs[i]; sa; sa = sa->next_bkt) {
+ if (j >= srvAddrCount)
+ break;
+ addrs[j++] = sa;
+ }
+ }
+
+ ReleaseReadLock(&afs_xsrvAddr);
+ ReleaseReadLock(&afs_xserver);
+ for (i = 0; i < j; i++) {
+ sa = addrs[i];
+ ForceNewConnections(sa);
+ }
+}
+
/* check down servers (if adown), or running servers (if !adown) */
void
afs_CheckServers(int adown, struct cell *acellp)
#elif defined(AFS_DARWIN80_ENV)
{
errno_t t;
- int cnt=0;
- ifaddr_t *addresses, address;
- t = ifnet_get_address_list_family(NULL, &addresses, AF_INET);
- if (t == 0) {
- while(addresses[cnt] != NULL) {
- afsi_SetServerIPRank(sa, address);
- cnt++;
+ unsigned int count;
+ int cnt=0, m, j;
+ ifaddr_t *ifads;
+ ifnet_t *ifn;
+
+ if (!ifnet_list_get(AF_INET, &ifn, &count)) {
+ for (m = 0; m < count; m++) {
+ if (!ifnet_get_address_list(ifn[m], &ifads)) {
+ for (j = 0; ifads[j] != NULL && cnt < ADDRSPERSITE; j++) {
+ afsi_SetServerIPRank(sa, ifads[j]);
+ cnt++;
+ }
+ ifnet_free_address_list(ifads);
+ }
}
- ifnet_free_address_list(addresses);
+ ifnet_list_free(ifn);
}
}
#elif defined(AFS_DARWIN60_ENV)
/* Compute preference values and resort */
if (!newsa->sa_iprank) {
- if (aport == fsport) {
- afs_SetServerPrefs(newsa); /* new fileserver rank */
- } else {
- newsa->sa_iprank = 10000 + afs_randomMod127(); /* new vlserver rank */
- }
+ afs_SetServerPrefs(newsa); /* new server rank */
}
}
afs_SortOneServer(newts); /* Sort by rank */