int initLocalServerHost() { LocalServerHost = ServerHostHead = ( rodsServerHost_t* )malloc( sizeof( rodsServerHost_t ) ); memset( ServerHostHead, 0, sizeof( rodsServerHost_t ) ); LocalServerHost->localFlag = LOCAL_HOST; LocalServerHost->zoneInfo = ZoneInfoHead; int status = matchHostConfig( LocalServerHost ); queHostName( ServerHostHead, "localhost", 0 ); char myHostName[MAX_NAME_LEN]; status = gethostname( myHostName, MAX_NAME_LEN ); if ( status < 0 ) { status = SYS_GET_HOSTNAME_ERR - errno; rodsLog( LOG_NOTICE, "initLocalServerHost: gethostname error, status = %d", status ); return status; } status = queHostName( ServerHostHead, myHostName, 0 ); if ( status < 0 ) { return status; } status = queAddr( ServerHostHead, myHostName ); if ( status < 0 ) { /* some configuration may not be able to resolve myHostName. So don't * exit. Just print out warning */ rodsLog( LOG_NOTICE, "initLocalServerHost: queAddr error, status = %d", status ); status = 0; } if ( ProcessType == SERVER_PT ) { printServerHost( LocalServerHost ); } return status; }
rodsServerHost_t* mkServerHost(char *myHostAddr, char *zoneName) { if (NULL == myHostAddr || NULL == zoneName) { irods::log(ERROR(SYS_INTERNAL_NULL_INPUT_ERR, "bad params.")); return NULL; } rodsServerHost_t* tmpRodsServerHost{(rodsServerHost_t*)malloc(sizeof(rodsServerHost_t))}; memset(tmpRodsServerHost, 0, sizeof(rodsServerHost_t)); /* XXXXX need to lookup the zone table when available */ int status{queueHostName(tmpRodsServerHost, myHostAddr, 0)}; if (status < 0) { irods::log(ERROR(status, "queueHostName failed")); free(tmpRodsServerHost); return NULL; } tmpRodsServerHost->localFlag = UNKNOWN_HOST_LOC; status = queueAddr(tmpRodsServerHost, myHostAddr); if (status < 0) { irods::log(ERROR(status, "queueAddr failed")); free( tmpRodsServerHost ); return NULL; } status = matchHostConfig(tmpRodsServerHost); if (status < 0) { irods::log(ERROR(status, "matchHostConfig failed")); free( tmpRodsServerHost ); return NULL; } status = getZoneInfo(zoneName, (zoneInfo_t**)(static_cast<void*>(&tmpRodsServerHost->zoneInfo))); if(status < 0) { irods::log(ERROR(status, "getZoneInfo failed")); free( tmpRodsServerHost ); return NULL; } return tmpRodsServerHost; }