mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-11-03 11:51:11 +00:00
vbox: Rewrite vboxConnectNumOfDefinedNetworks
This commit is contained in:
parent
ce1cef1c57
commit
638afcf5c9
@ -197,3 +197,48 @@ int vboxConnectListNetworks(virConnectPtr conn, char **const names, int nnames)
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int vboxConnectNumOfDefinedNetworks(virConnectPtr conn)
|
||||
{
|
||||
vboxGlobalData *data = conn->privateData;
|
||||
vboxArray networkInterfaces = VBOX_ARRAY_INITIALIZER;
|
||||
IHost *host = NULL;
|
||||
size_t i = 0;
|
||||
int ret = -1;
|
||||
|
||||
if (!data->vboxObj)
|
||||
return ret;
|
||||
|
||||
gVBoxAPI.UIVirtualBox.GetHost(data->vboxObj, &host);
|
||||
if (!host)
|
||||
return ret;
|
||||
|
||||
gVBoxAPI.UArray.vboxArrayGet(&networkInterfaces, host,
|
||||
gVBoxAPI.UArray.handleHostGetNetworkInterfaces(host));
|
||||
|
||||
ret = 0;
|
||||
for (i = 0; i < networkInterfaces.count; i++) {
|
||||
IHostNetworkInterface *networkInterface = networkInterfaces.items[i];
|
||||
PRUint32 status = HostNetworkInterfaceStatus_Unknown;
|
||||
PRUint32 interfaceType = 0;
|
||||
|
||||
if (!networkInterface)
|
||||
continue;
|
||||
|
||||
gVBoxAPI.UIHNInterface.GetInterfaceType(networkInterface, &interfaceType);
|
||||
if (interfaceType != HostNetworkInterfaceType_HostOnly)
|
||||
continue;
|
||||
|
||||
gVBoxAPI.UIHNInterface.GetStatus(networkInterface, &status);
|
||||
|
||||
if (status == HostNetworkInterfaceStatus_Down)
|
||||
ret++;
|
||||
}
|
||||
|
||||
gVBoxAPI.UArray.vboxArrayRelease(&networkInterfaces);
|
||||
|
||||
VBOX_RELEASE(host);
|
||||
|
||||
VIR_DEBUG("numActive: %d", ret);
|
||||
return ret;
|
||||
}
|
||||
|
@ -2060,40 +2060,6 @@ _registerDomainEvent(virDriverPtr driver)
|
||||
* The Network Functions here on
|
||||
*/
|
||||
|
||||
static int vboxConnectNumOfDefinedNetworks(virConnectPtr conn)
|
||||
{
|
||||
VBOX_OBJECT_HOST_CHECK(conn, int, 0);
|
||||
vboxArray networkInterfaces = VBOX_ARRAY_INITIALIZER;
|
||||
size_t i = 0;
|
||||
|
||||
vboxArrayGet(&networkInterfaces, host, host->vtbl->GetNetworkInterfaces);
|
||||
|
||||
for (i = 0; i < networkInterfaces.count; i++) {
|
||||
IHostNetworkInterface *networkInterface = networkInterfaces.items[i];
|
||||
|
||||
if (networkInterface) {
|
||||
PRUint32 interfaceType = 0;
|
||||
|
||||
networkInterface->vtbl->GetInterfaceType(networkInterface, &interfaceType);
|
||||
if (interfaceType == HostNetworkInterfaceType_HostOnly) {
|
||||
PRUint32 status = HostNetworkInterfaceStatus_Unknown;
|
||||
|
||||
networkInterface->vtbl->GetStatus(networkInterface, &status);
|
||||
|
||||
if (status == HostNetworkInterfaceStatus_Down)
|
||||
ret++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
vboxArrayRelease(&networkInterfaces);
|
||||
|
||||
VBOX_RELEASE(host);
|
||||
|
||||
VIR_DEBUG("numActive: %d", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int vboxConnectListDefinedNetworks(virConnectPtr conn, char **const names, int nnames) {
|
||||
VBOX_OBJECT_HOST_CHECK(conn, int, 0);
|
||||
vboxArray networkInterfaces = VBOX_ARRAY_INITIALIZER;
|
||||
|
@ -550,6 +550,7 @@ virDrvOpenStatus vboxNetworkOpen(virConnectPtr conn,
|
||||
int vboxNetworkClose(virConnectPtr conn);
|
||||
int vboxConnectNumOfNetworks(virConnectPtr conn);
|
||||
int vboxConnectListNetworks(virConnectPtr conn, char **const names, int nnames);
|
||||
int vboxConnectNumOfDefinedNetworks(virConnectPtr conn);
|
||||
|
||||
/* Version specified functions for installing uniformed API */
|
||||
void vbox22InstallUniformedAPI(vboxUniformedAPI *pVBoxAPI);
|
||||
|
Loading…
Reference in New Issue
Block a user