mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-11-08 14:29:56 +00:00
vbox: Rewrite vboxNetworkLookupByName
This commit is contained in:
parent
e4f24f892f
commit
ee951b9fe7
@ -364,3 +364,52 @@ virNetworkPtr vboxNetworkLookupByUUID(virConnectPtr conn, const unsigned char *u
|
|||||||
vboxIIDUnalloc(&iid);
|
vboxIIDUnalloc(&iid);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virNetworkPtr vboxNetworkLookupByName(virConnectPtr conn, const char *name)
|
||||||
|
{
|
||||||
|
vboxGlobalData *data = conn->privateData;
|
||||||
|
PRUnichar *nameUtf16 = NULL;
|
||||||
|
IHostNetworkInterface *networkInterface = NULL;
|
||||||
|
PRUint32 interfaceType = 0;
|
||||||
|
unsigned char uuid[VIR_UUID_BUFLEN];
|
||||||
|
vboxIIDUnion iid;
|
||||||
|
IHost *host = NULL;
|
||||||
|
virNetworkPtr ret = NULL;
|
||||||
|
nsresult rc;
|
||||||
|
|
||||||
|
if (!data->vboxObj)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
gVBoxAPI.UIVirtualBox.GetHost(data->vboxObj, &host);
|
||||||
|
if (!host)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
VBOX_IID_INITIALIZE(&iid);
|
||||||
|
VBOX_UTF8_TO_UTF16(name, &nameUtf16);
|
||||||
|
|
||||||
|
gVBoxAPI.UIHost.FindHostNetworkInterfaceByName(host, nameUtf16, &networkInterface);
|
||||||
|
|
||||||
|
if (!networkInterface)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
gVBoxAPI.UIHNInterface.GetInterfaceType(networkInterface, &interfaceType);
|
||||||
|
|
||||||
|
if (interfaceType != HostNetworkInterfaceType_HostOnly)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
rc = gVBoxAPI.UIHNInterface.GetId(networkInterface, &iid);
|
||||||
|
if (NS_FAILED(rc))
|
||||||
|
goto cleanup;
|
||||||
|
vboxIIDToUUID(&iid, uuid);
|
||||||
|
ret = virGetNetwork(conn, name, uuid);
|
||||||
|
|
||||||
|
VIR_DEBUG("Network Name: %s", name);
|
||||||
|
DEBUGIID("Network UUID", &iid);
|
||||||
|
vboxIIDUnalloc(&iid);
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
VBOX_RELEASE(networkInterface);
|
||||||
|
VBOX_UTF16_FREE(nameUtf16);
|
||||||
|
VBOX_RELEASE(host);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
@ -2060,44 +2060,6 @@ _registerDomainEvent(virDriverPtr driver)
|
|||||||
* The Network Functions here on
|
* The Network Functions here on
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static virNetworkPtr
|
|
||||||
vboxNetworkLookupByName(virConnectPtr conn, const char *name)
|
|
||||||
{
|
|
||||||
VBOX_OBJECT_HOST_CHECK(conn, virNetworkPtr, NULL);
|
|
||||||
PRUnichar *nameUtf16 = NULL;
|
|
||||||
IHostNetworkInterface *networkInterface = NULL;
|
|
||||||
|
|
||||||
VBOX_UTF8_TO_UTF16(name, &nameUtf16);
|
|
||||||
|
|
||||||
host->vtbl->FindHostNetworkInterfaceByName(host, nameUtf16, &networkInterface);
|
|
||||||
|
|
||||||
if (networkInterface) {
|
|
||||||
PRUint32 interfaceType = 0;
|
|
||||||
|
|
||||||
networkInterface->vtbl->GetInterfaceType(networkInterface, &interfaceType);
|
|
||||||
|
|
||||||
if (interfaceType == HostNetworkInterfaceType_HostOnly) {
|
|
||||||
unsigned char uuid[VIR_UUID_BUFLEN];
|
|
||||||
vboxIID iid = VBOX_IID_INITIALIZER;
|
|
||||||
|
|
||||||
networkInterface->vtbl->GetId(networkInterface, &iid.value);
|
|
||||||
vboxIIDToUUID(&iid, uuid);
|
|
||||||
ret = virGetNetwork(conn, name, uuid);
|
|
||||||
VIR_DEBUG("Network Name: %s", name);
|
|
||||||
|
|
||||||
DEBUGIID("Network UUID", iid.value);
|
|
||||||
vboxIIDUnalloc(&iid);
|
|
||||||
}
|
|
||||||
|
|
||||||
VBOX_RELEASE(networkInterface);
|
|
||||||
}
|
|
||||||
|
|
||||||
VBOX_UTF16_FREE(nameUtf16);
|
|
||||||
VBOX_RELEASE(host);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static virNetworkPtr
|
static virNetworkPtr
|
||||||
vboxNetworkDefineCreateXML(virConnectPtr conn, const char *xml, bool start)
|
vboxNetworkDefineCreateXML(virConnectPtr conn, const char *xml, bool start)
|
||||||
{
|
{
|
||||||
@ -5860,6 +5822,14 @@ _hostFindHostNetworkInterfaceById(IHost *host, vboxIIDUnion *iidu,
|
|||||||
networkInterface);
|
networkInterface);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static nsresult
|
||||||
|
_hostFindHostNetworkInterfaceByName(IHost *host, PRUnichar *name,
|
||||||
|
IHostNetworkInterface **networkInterface)
|
||||||
|
{
|
||||||
|
return host->vtbl->FindHostNetworkInterfaceByName(host, name,
|
||||||
|
networkInterface);
|
||||||
|
}
|
||||||
|
|
||||||
static nsresult
|
static nsresult
|
||||||
_hnInterfaceGetInterfaceType(IHostNetworkInterface *hni, PRUint32 *interfaceType)
|
_hnInterfaceGetInterfaceType(IHostNetworkInterface *hni, PRUint32 *interfaceType)
|
||||||
{
|
{
|
||||||
@ -5878,6 +5848,12 @@ _hnInterfaceGetName(IHostNetworkInterface *hni, PRUnichar **name)
|
|||||||
return hni->vtbl->GetName(hni, name);
|
return hni->vtbl->GetName(hni, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static nsresult
|
||||||
|
_hnInterfaceGetId(IHostNetworkInterface *hni, vboxIIDUnion *iidu)
|
||||||
|
{
|
||||||
|
return hni->vtbl->GetId(hni, &IID_MEMBER(value));
|
||||||
|
}
|
||||||
|
|
||||||
static bool _machineStateOnline(PRUint32 state)
|
static bool _machineStateOnline(PRUint32 state)
|
||||||
{
|
{
|
||||||
return ((state >= MachineState_FirstOnline) &&
|
return ((state >= MachineState_FirstOnline) &&
|
||||||
@ -6183,12 +6159,14 @@ static vboxUniformedIDisplay _UIDisplay = {
|
|||||||
|
|
||||||
static vboxUniformedIHost _UIHost = {
|
static vboxUniformedIHost _UIHost = {
|
||||||
.FindHostNetworkInterfaceById = _hostFindHostNetworkInterfaceById,
|
.FindHostNetworkInterfaceById = _hostFindHostNetworkInterfaceById,
|
||||||
|
.FindHostNetworkInterfaceByName = _hostFindHostNetworkInterfaceByName,
|
||||||
};
|
};
|
||||||
|
|
||||||
static vboxUniformedIHNInterface _UIHNInterface = {
|
static vboxUniformedIHNInterface _UIHNInterface = {
|
||||||
.GetInterfaceType = _hnInterfaceGetInterfaceType,
|
.GetInterfaceType = _hnInterfaceGetInterfaceType,
|
||||||
.GetStatus = _hnInterfaceGetStatus,
|
.GetStatus = _hnInterfaceGetStatus,
|
||||||
.GetName = _hnInterfaceGetName,
|
.GetName = _hnInterfaceGetName,
|
||||||
|
.GetId = _hnInterfaceGetId,
|
||||||
};
|
};
|
||||||
|
|
||||||
static uniformedMachineStateChecker _machineStateChecker = {
|
static uniformedMachineStateChecker _machineStateChecker = {
|
||||||
|
@ -470,6 +470,8 @@ typedef struct {
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
nsresult (*FindHostNetworkInterfaceById)(IHost *host, vboxIIDUnion *iidu,
|
nsresult (*FindHostNetworkInterfaceById)(IHost *host, vboxIIDUnion *iidu,
|
||||||
IHostNetworkInterface **networkInterface);
|
IHostNetworkInterface **networkInterface);
|
||||||
|
nsresult (*FindHostNetworkInterfaceByName)(IHost *host, PRUnichar *name,
|
||||||
|
IHostNetworkInterface **networkInterface);
|
||||||
} vboxUniformedIHost;
|
} vboxUniformedIHost;
|
||||||
|
|
||||||
/* Functions for IHostNetworkInterface */
|
/* Functions for IHostNetworkInterface */
|
||||||
@ -477,6 +479,7 @@ typedef struct {
|
|||||||
nsresult (*GetInterfaceType)(IHostNetworkInterface *hni, PRUint32 *interfaceType);
|
nsresult (*GetInterfaceType)(IHostNetworkInterface *hni, PRUint32 *interfaceType);
|
||||||
nsresult (*GetStatus)(IHostNetworkInterface *hni, PRUint32 *status);
|
nsresult (*GetStatus)(IHostNetworkInterface *hni, PRUint32 *status);
|
||||||
nsresult (*GetName)(IHostNetworkInterface *hni, PRUnichar **name);
|
nsresult (*GetName)(IHostNetworkInterface *hni, PRUnichar **name);
|
||||||
|
nsresult (*GetId)(IHostNetworkInterface *hni, vboxIIDUnion *iidu);
|
||||||
} vboxUniformedIHNInterface;
|
} vboxUniformedIHNInterface;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@ -560,6 +563,7 @@ int vboxConnectListNetworks(virConnectPtr conn, char **const names, int nnames);
|
|||||||
int vboxConnectNumOfDefinedNetworks(virConnectPtr conn);
|
int vboxConnectNumOfDefinedNetworks(virConnectPtr conn);
|
||||||
int vboxConnectListDefinedNetworks(virConnectPtr conn, char **const names, int nnames);
|
int vboxConnectListDefinedNetworks(virConnectPtr conn, char **const names, int nnames);
|
||||||
virNetworkPtr vboxNetworkLookupByUUID(virConnectPtr conn, const unsigned char *uuid);
|
virNetworkPtr vboxNetworkLookupByUUID(virConnectPtr conn, const unsigned char *uuid);
|
||||||
|
virNetworkPtr vboxNetworkLookupByName(virConnectPtr conn, const char *name);
|
||||||
|
|
||||||
/* Version specified functions for installing uniformed API */
|
/* Version specified functions for installing uniformed API */
|
||||||
void vbox22InstallUniformedAPI(vboxUniformedAPI *pVBoxAPI);
|
void vbox22InstallUniformedAPI(vboxUniformedAPI *pVBoxAPI);
|
||||||
|
Loading…
Reference in New Issue
Block a user