X-Git-Url: https://git.openafs.org/?p=openafs.git;a=blobdiff_plain;f=src%2FWINNT%2Fafsd%2Fcm_cell.c;h=12bbbf52ed0805ce59cbbf9062c9bb2842abc8cb;hp=a2a012af39c90aae97805696060ddf56c4e1336a;hb=22a932c40a3ecabae8110db21572a4cae2ba1fae;hpb=c8ccb887882bc4affef02a8193e9b1ed01f885f5 diff --git a/src/WINNT/afsd/cm_cell.c b/src/WINNT/afsd/cm_cell.c index a2a012a..12bbbf5 100644 --- a/src/WINNT/afsd/cm_cell.c +++ b/src/WINNT/afsd/cm_cell.c @@ -28,7 +28,7 @@ osi_rwlock_t cm_cellLock; * * At the present time the return value is ignored by the caller. */ -long cm_AddCellProc(void *rockp, struct sockaddr_in *addrp, char *hostnamep) +long cm_AddCellProc(void *rockp, struct sockaddr_in *addrp, char *hostnamep, unsigned short ipRank) { cm_server_t *tsp; cm_serverRef_t *tsrp; @@ -54,6 +54,8 @@ long cm_AddCellProc(void *rockp, struct sockaddr_in *addrp, char *hostnamep) else tsp = cm_NewServer(addrp, CM_SERVER_VLDB, cellp, NULL, probe ? 0 : CM_FLAG_NOPROBE); + tsp->ipRank = ipRank; + /* Insert the vlserver into a sorted list, sorted by server rank */ tsrp = cm_NewServerRef(tsp, 0); cm_InsertServerList(&cellp->vlServersp, tsrp); @@ -99,7 +101,9 @@ cm_cell_t *cm_UpdateCell(cm_cell_t * cp, afs_uint32 flags) rock.cellp = cp; rock.flags = flags; - code = cm_SearchCellFileEx(cp->name, NULL, cp->linkedName, cm_AddCellProc, &rock); + code = cm_SearchCellRegistry(1, cp->name, NULL, cp->linkedName, cm_AddCellProc, &rock); + if (code && code != CM_ERROR_FORCE_DNS_LOOKUP) + code = cm_SearchCellFileEx(cp->name, NULL, cp->linkedName, cm_AddCellProc, &rock); if (code == 0) { lock_ObtainMutex(&cp->mx); cp->timeout = time(0) + 7200; @@ -271,7 +275,9 @@ cm_cell_t *cm_GetCell_Gen(char *namep, char *newnamep, afs_uint32 flags) rock.cellp = cp; rock.flags = flags; - code = cm_SearchCellFileEx(namep, fullname, linkedName, cm_AddCellProc, &rock); + code = cm_SearchCellRegistry(1, namep, fullname, linkedName, cm_AddCellProc, &rock); + if (code && code != CM_ERROR_FORCE_DNS_LOOKUP) + code = cm_SearchCellFileEx(namep, fullname, linkedName, cm_AddCellProc, &rock); if (code) { osi_Log4(afsd_logp,"in cm_GetCell_gen cm_SearchCellFileEx(%s) returns code= %d fullname= %s linkedName= %s", osi_LogSaveString(afsd_logp,namep), code, osi_LogSaveString(afsd_logp,fullname),