X-Git-Url: https://git.openafs.org/?p=openafs.git;a=blobdiff_plain;f=src%2Fvenus%2Fcacheout.c;h=176c148f6420b8277f02c3a4a46759829f0a684b;hp=7ddde1f45f627e6bc1d64310c4bea385c11f79c8;hb=8a641dbdf6a1d198ceb878c69c45495590e7296e;hpb=50ee992c314f5b05a1c8d15fbf8cc9e8f169f81e diff --git a/src/venus/cacheout.c b/src/venus/cacheout.c index 7ddde1f..176c148 100644 --- a/src/venus/cacheout.c +++ b/src/venus/cacheout.c @@ -160,37 +160,62 @@ not actually be configured as file servers in the cell. afs_int32 ListServers() { - afs_int32 code; - struct rx_connection *conn; - struct rx_call *call; - int i; - int byte_count; - - afs_int32 Handle=0; - afs_int32 spare2=0; - struct VLCallBack spare3; - - bulkaddrs addrs; - afs_uint32 *p; + afs_int32 code; + struct rx_connection *conn; + struct rx_call *call; + int i; + int byte_count; + int nentries; + afs_int32 base, index; + + afs_int32 Handle=0; + afs_int32 spare2=0; + struct VLCallBack spare3; + + bulkaddrs addrs, m_addrs; + ListAddrByAttributes m_attrs; + afs_int32 m_unique, m_nentries; + afs_uint32 *p; + + /* get list of file servers in NW byte order */ + memset(&addrs, 0, sizeof(addrs)); + memset(&spare3, 0, sizeof(spare3)); + code=ubik_Call(VL_GetAddrs,client,0,Handle,spare2,&spare3, + &server_count,&addrs); + if(code) + { + printf("Fatal error: could not get list of file servers\n"); + return 1; + } - /* get list of file servers in NW byte order */ - memset(&addrs, 0, sizeof(addrs)); - memset(&spare3, 0, sizeof(spare3)); - code=ubik_Call(VL_GetAddrs,client,0,Handle,spare2,&spare3, - &server_count,&addrs); - if(code) - { - printf("Fatal error: could not get list of \ -file servers\n"); - return 1; + for(i=0,p=addrs.bulkaddrs_val;i= 0) && (base <= VL_MAX_ADDREXTBLKS) && + (index >= 1) && (index <= VL_MHSRV_PERBLK) ) { + m_attrs.Mask = VLADDR_INDEX; + m_attrs.index = (base * VL_MHSRV_PERBLK) + index; + m_nentries = 0; + m_addrs.bulkaddrs_val = 0; + m_addrs.bulkaddrs_len = 0; + code = ubik_Call(VL_GetAddrsU, client, 0, + &m_attrs, &m_uuid, &m_unique, &m_nentries, &m_addrs); + if (vcode) + return code; + + m_addrp = (afs_int32 *)m_addrs.bulkaddrs_val; + for (j=0; j