mirror of https://gitee.com/openkylin/libvirt.git
vbox: Rewrite vboxNetworkGetXMLDesc
This commit is contained in:
parent
3b12eca667
commit
bde0cb511d
|
@ -808,3 +808,194 @@ int vboxNetworkCreate(virNetworkPtr network)
|
||||||
VIR_FREE(networkNameUtf8);
|
VIR_FREE(networkNameUtf8);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
vboxSocketParseAddrUtf16(vboxGlobalData *data, const PRUnichar *utf16,
|
||||||
|
virSocketAddrPtr addr)
|
||||||
|
{
|
||||||
|
int result = -1;
|
||||||
|
char *utf8 = NULL;
|
||||||
|
|
||||||
|
VBOX_UTF16_TO_UTF8(utf16, &utf8);
|
||||||
|
|
||||||
|
if (virSocketAddrParse(addr, utf8, AF_UNSPEC) < 0) {
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
result = 0;
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
VBOX_UTF8_FREE(utf8);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *vboxNetworkGetXMLDesc(virNetworkPtr network, unsigned int flags)
|
||||||
|
{
|
||||||
|
vboxGlobalData *data = network->conn->privateData;
|
||||||
|
virNetworkDefPtr def = NULL;
|
||||||
|
virNetworkIpDefPtr ipdef = NULL;
|
||||||
|
char *networkNameUtf8 = NULL;
|
||||||
|
PRUnichar *networkInterfaceNameUtf16 = NULL;
|
||||||
|
IHostNetworkInterface *networkInterface = NULL;
|
||||||
|
PRUint32 interfaceType = 0;
|
||||||
|
PRUnichar *networkNameUtf16 = NULL;
|
||||||
|
IDHCPServer *dhcpServer = NULL;
|
||||||
|
vboxIIDUnion vboxnet0IID;
|
||||||
|
IHost *host = NULL;
|
||||||
|
char *ret = NULL;
|
||||||
|
nsresult rc;
|
||||||
|
|
||||||
|
if (!data->vboxObj)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
gVBoxAPI.UIVirtualBox.GetHost(data->vboxObj, &host);
|
||||||
|
if (!host)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
VBOX_IID_INITIALIZE(&vboxnet0IID);
|
||||||
|
virCheckFlags(0, NULL);
|
||||||
|
|
||||||
|
if (VIR_ALLOC(def) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
if (VIR_ALLOC(ipdef) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
def->ips = ipdef;
|
||||||
|
def->nips = 1;
|
||||||
|
|
||||||
|
if (virAsprintf(&networkNameUtf8, "HostInterfaceNetworking-%s", network->name) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
VBOX_UTF8_TO_UTF16(network->name, &networkInterfaceNameUtf16);
|
||||||
|
|
||||||
|
gVBoxAPI.UIHost.FindHostNetworkInterfaceByName(host, networkInterfaceNameUtf16, &networkInterface);
|
||||||
|
|
||||||
|
if (!networkInterface)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
gVBoxAPI.UIHNInterface.GetInterfaceType(networkInterface, &interfaceType);
|
||||||
|
|
||||||
|
if (interfaceType != HostNetworkInterfaceType_HostOnly)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
if (VIR_STRDUP(def->name, network->name) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
rc = gVBoxAPI.UIHNInterface.GetId(networkInterface, &vboxnet0IID);
|
||||||
|
if (NS_FAILED(rc))
|
||||||
|
goto cleanup;
|
||||||
|
vboxIIDToUUID(&vboxnet0IID, def->uuid);
|
||||||
|
|
||||||
|
VBOX_UTF8_TO_UTF16(networkNameUtf8, &networkNameUtf16);
|
||||||
|
|
||||||
|
def->forward.type = VIR_NETWORK_FORWARD_NONE;
|
||||||
|
|
||||||
|
gVBoxAPI.UIVirtualBox.FindDHCPServerByNetworkName(data->vboxObj,
|
||||||
|
networkNameUtf16,
|
||||||
|
&dhcpServer);
|
||||||
|
if (dhcpServer) {
|
||||||
|
ipdef->nranges = 1;
|
||||||
|
if (VIR_ALLOC_N(ipdef->ranges, ipdef->nranges) >= 0) {
|
||||||
|
PRUnichar *ipAddressUtf16 = NULL;
|
||||||
|
PRUnichar *networkMaskUtf16 = NULL;
|
||||||
|
PRUnichar *fromIPAddressUtf16 = NULL;
|
||||||
|
PRUnichar *toIPAddressUtf16 = NULL;
|
||||||
|
bool errorOccurred = false;
|
||||||
|
|
||||||
|
gVBoxAPI.UIDHCPServer.GetIPAddress(dhcpServer, &ipAddressUtf16);
|
||||||
|
gVBoxAPI.UIDHCPServer.GetNetworkMask(dhcpServer, &networkMaskUtf16);
|
||||||
|
gVBoxAPI.UIDHCPServer.GetLowerIP(dhcpServer, &fromIPAddressUtf16);
|
||||||
|
gVBoxAPI.UIDHCPServer.GetUpperIP(dhcpServer, &toIPAddressUtf16);
|
||||||
|
/* Currently virtualbox supports only one dhcp server per network
|
||||||
|
* with contigious address space from start to end
|
||||||
|
*/
|
||||||
|
if (vboxSocketParseAddrUtf16(data, ipAddressUtf16,
|
||||||
|
&ipdef->address) < 0 ||
|
||||||
|
vboxSocketParseAddrUtf16(data, networkMaskUtf16,
|
||||||
|
&ipdef->netmask) < 0 ||
|
||||||
|
vboxSocketParseAddrUtf16(data, fromIPAddressUtf16,
|
||||||
|
&ipdef->ranges[0].start) < 0 ||
|
||||||
|
vboxSocketParseAddrUtf16(data, toIPAddressUtf16,
|
||||||
|
&ipdef->ranges[0].end) < 0) {
|
||||||
|
errorOccurred = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
VBOX_UTF16_FREE(ipAddressUtf16);
|
||||||
|
VBOX_UTF16_FREE(networkMaskUtf16);
|
||||||
|
VBOX_UTF16_FREE(fromIPAddressUtf16);
|
||||||
|
VBOX_UTF16_FREE(toIPAddressUtf16);
|
||||||
|
|
||||||
|
if (errorOccurred) {
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ipdef->nranges = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ipdef->nhosts = 1;
|
||||||
|
if (VIR_ALLOC_N(ipdef->hosts, ipdef->nhosts) >= 0) {
|
||||||
|
if (VIR_STRDUP(ipdef->hosts[0].name, network->name) < 0) {
|
||||||
|
VIR_FREE(ipdef->hosts);
|
||||||
|
ipdef->nhosts = 0;
|
||||||
|
} else {
|
||||||
|
PRUnichar *macAddressUtf16 = NULL;
|
||||||
|
PRUnichar *ipAddressUtf16 = NULL;
|
||||||
|
bool errorOccurred = false;
|
||||||
|
|
||||||
|
gVBoxAPI.UIHNInterface.GetHardwareAddress(networkInterface, &macAddressUtf16);
|
||||||
|
gVBoxAPI.UIHNInterface.GetIPAddress(networkInterface, &ipAddressUtf16);
|
||||||
|
|
||||||
|
VBOX_UTF16_TO_UTF8(macAddressUtf16, &ipdef->hosts[0].mac);
|
||||||
|
|
||||||
|
if (vboxSocketParseAddrUtf16(data, ipAddressUtf16,
|
||||||
|
&ipdef->hosts[0].ip) < 0) {
|
||||||
|
errorOccurred = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
VBOX_UTF16_FREE(macAddressUtf16);
|
||||||
|
VBOX_UTF16_FREE(ipAddressUtf16);
|
||||||
|
|
||||||
|
if (errorOccurred) {
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ipdef->nhosts = 0;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
PRUnichar *networkMaskUtf16 = NULL;
|
||||||
|
PRUnichar *ipAddressUtf16 = NULL;
|
||||||
|
bool errorOccurred = false;
|
||||||
|
|
||||||
|
gVBoxAPI.UIHNInterface.GetNetworkMask(networkInterface, &networkMaskUtf16);
|
||||||
|
gVBoxAPI.UIHNInterface.GetIPAddress(networkInterface, &ipAddressUtf16);
|
||||||
|
|
||||||
|
if (vboxSocketParseAddrUtf16(data, networkMaskUtf16,
|
||||||
|
&ipdef->netmask) < 0 ||
|
||||||
|
vboxSocketParseAddrUtf16(data, ipAddressUtf16,
|
||||||
|
&ipdef->address) < 0) {
|
||||||
|
errorOccurred = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
VBOX_UTF16_FREE(networkMaskUtf16);
|
||||||
|
VBOX_UTF16_FREE(ipAddressUtf16);
|
||||||
|
|
||||||
|
if (errorOccurred) {
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DEBUGIID("Network UUID", &vboxnet0IID);
|
||||||
|
ret = virNetworkDefFormat(def, 0);
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
vboxIIDUnalloc(&vboxnet0IID);
|
||||||
|
VBOX_UTF16_FREE(networkNameUtf16);
|
||||||
|
VBOX_RELEASE(networkInterface);
|
||||||
|
VBOX_UTF16_FREE(networkInterfaceNameUtf16);
|
||||||
|
VBOX_RELEASE(host);
|
||||||
|
virNetworkDefFree(def);
|
||||||
|
VIR_FREE(networkNameUtf8);
|
||||||
|
VBOX_RELEASE(dhcpServer);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
|
@ -838,27 +838,6 @@ static PRUnichar *PRUnicharFromInt(int n) {
|
||||||
|
|
||||||
#endif /* VBOX_API_VERSION >= 3001000 */
|
#endif /* VBOX_API_VERSION >= 3001000 */
|
||||||
|
|
||||||
static int
|
|
||||||
vboxSocketParseAddrUtf16(vboxGlobalData *data, const PRUnichar *utf16,
|
|
||||||
virSocketAddrPtr addr)
|
|
||||||
{
|
|
||||||
int result = -1;
|
|
||||||
char *utf8 = NULL;
|
|
||||||
|
|
||||||
VBOX_UTF16_TO_UTF8(utf16, &utf8);
|
|
||||||
|
|
||||||
if (virSocketAddrParse(addr, utf8, AF_UNSPEC) < 0) {
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
result = 0;
|
|
||||||
|
|
||||||
cleanup:
|
|
||||||
VBOX_UTF8_FREE(utf8);
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
static virDomainState _vboxConvertState(PRUint32 state)
|
static virDomainState _vboxConvertState(PRUint32 state)
|
||||||
{
|
{
|
||||||
switch (state) {
|
switch (state) {
|
||||||
|
@ -2038,171 +2017,6 @@ _registerDomainEvent(virDriverPtr driver)
|
||||||
|
|
||||||
#endif /* !(VBOX_API_VERSION == 2002000 || VBOX_API_VERSION >= 4000000) */
|
#endif /* !(VBOX_API_VERSION == 2002000 || VBOX_API_VERSION >= 4000000) */
|
||||||
|
|
||||||
/**
|
|
||||||
* The Network Functions here on
|
|
||||||
*/
|
|
||||||
|
|
||||||
static char *vboxNetworkGetXMLDesc(virNetworkPtr network,
|
|
||||||
unsigned int flags)
|
|
||||||
{
|
|
||||||
VBOX_OBJECT_HOST_CHECK(network->conn, char *, NULL);
|
|
||||||
virNetworkDefPtr def = NULL;
|
|
||||||
virNetworkIpDefPtr ipdef = NULL;
|
|
||||||
char *networkNameUtf8 = NULL;
|
|
||||||
PRUnichar *networkInterfaceNameUtf16 = NULL;
|
|
||||||
IHostNetworkInterface *networkInterface = NULL;
|
|
||||||
|
|
||||||
virCheckFlags(0, NULL);
|
|
||||||
|
|
||||||
if (VIR_ALLOC(def) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
if (VIR_ALLOC(ipdef) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
def->ips = ipdef;
|
|
||||||
def->nips = 1;
|
|
||||||
|
|
||||||
if (virAsprintf(&networkNameUtf8, "HostInterfaceNetworking-%s", network->name) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
VBOX_UTF8_TO_UTF16(network->name, &networkInterfaceNameUtf16);
|
|
||||||
|
|
||||||
host->vtbl->FindHostNetworkInterfaceByName(host, networkInterfaceNameUtf16, &networkInterface);
|
|
||||||
|
|
||||||
if (networkInterface) {
|
|
||||||
PRUint32 interfaceType = 0;
|
|
||||||
|
|
||||||
networkInterface->vtbl->GetInterfaceType(networkInterface, &interfaceType);
|
|
||||||
|
|
||||||
if (interfaceType == HostNetworkInterfaceType_HostOnly) {
|
|
||||||
if (VIR_STRDUP(def->name, network->name) >= 0) {
|
|
||||||
PRUnichar *networkNameUtf16 = NULL;
|
|
||||||
IDHCPServer *dhcpServer = NULL;
|
|
||||||
vboxIID vboxnet0IID = VBOX_IID_INITIALIZER;
|
|
||||||
|
|
||||||
networkInterface->vtbl->GetId(networkInterface, &vboxnet0IID.value);
|
|
||||||
vboxIIDToUUID(&vboxnet0IID, def->uuid);
|
|
||||||
|
|
||||||
VBOX_UTF8_TO_UTF16(networkNameUtf8, &networkNameUtf16);
|
|
||||||
|
|
||||||
def->forward.type = VIR_NETWORK_FORWARD_NONE;
|
|
||||||
|
|
||||||
data->vboxObj->vtbl->FindDHCPServerByNetworkName(data->vboxObj,
|
|
||||||
networkNameUtf16,
|
|
||||||
&dhcpServer);
|
|
||||||
if (dhcpServer) {
|
|
||||||
ipdef->nranges = 1;
|
|
||||||
if (VIR_ALLOC_N(ipdef->ranges, ipdef->nranges) >= 0) {
|
|
||||||
PRUnichar *ipAddressUtf16 = NULL;
|
|
||||||
PRUnichar *networkMaskUtf16 = NULL;
|
|
||||||
PRUnichar *fromIPAddressUtf16 = NULL;
|
|
||||||
PRUnichar *toIPAddressUtf16 = NULL;
|
|
||||||
bool errorOccurred = false;
|
|
||||||
|
|
||||||
dhcpServer->vtbl->GetIPAddress(dhcpServer, &ipAddressUtf16);
|
|
||||||
dhcpServer->vtbl->GetNetworkMask(dhcpServer, &networkMaskUtf16);
|
|
||||||
dhcpServer->vtbl->GetLowerIP(dhcpServer, &fromIPAddressUtf16);
|
|
||||||
dhcpServer->vtbl->GetUpperIP(dhcpServer, &toIPAddressUtf16);
|
|
||||||
/* Currently virtualbox supports only one dhcp server per network
|
|
||||||
* with contigious address space from start to end
|
|
||||||
*/
|
|
||||||
if (vboxSocketParseAddrUtf16(data, ipAddressUtf16,
|
|
||||||
&ipdef->address) < 0 ||
|
|
||||||
vboxSocketParseAddrUtf16(data, networkMaskUtf16,
|
|
||||||
&ipdef->netmask) < 0 ||
|
|
||||||
vboxSocketParseAddrUtf16(data, fromIPAddressUtf16,
|
|
||||||
&ipdef->ranges[0].start) < 0 ||
|
|
||||||
vboxSocketParseAddrUtf16(data, toIPAddressUtf16,
|
|
||||||
&ipdef->ranges[0].end) < 0) {
|
|
||||||
errorOccurred = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
VBOX_UTF16_FREE(ipAddressUtf16);
|
|
||||||
VBOX_UTF16_FREE(networkMaskUtf16);
|
|
||||||
VBOX_UTF16_FREE(fromIPAddressUtf16);
|
|
||||||
VBOX_UTF16_FREE(toIPAddressUtf16);
|
|
||||||
|
|
||||||
if (errorOccurred) {
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
ipdef->nranges = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
ipdef->nhosts = 1;
|
|
||||||
if (VIR_ALLOC_N(ipdef->hosts, ipdef->nhosts) >= 0) {
|
|
||||||
if (VIR_STRDUP(ipdef->hosts[0].name, network->name) < 0) {
|
|
||||||
VIR_FREE(ipdef->hosts);
|
|
||||||
ipdef->nhosts = 0;
|
|
||||||
} else {
|
|
||||||
PRUnichar *macAddressUtf16 = NULL;
|
|
||||||
PRUnichar *ipAddressUtf16 = NULL;
|
|
||||||
bool errorOccurred = false;
|
|
||||||
|
|
||||||
networkInterface->vtbl->GetHardwareAddress(networkInterface, &macAddressUtf16);
|
|
||||||
networkInterface->vtbl->GetIPAddress(networkInterface, &ipAddressUtf16);
|
|
||||||
|
|
||||||
VBOX_UTF16_TO_UTF8(macAddressUtf16, &ipdef->hosts[0].mac);
|
|
||||||
|
|
||||||
if (vboxSocketParseAddrUtf16(data, ipAddressUtf16,
|
|
||||||
&ipdef->hosts[0].ip) < 0) {
|
|
||||||
errorOccurred = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
VBOX_UTF16_FREE(macAddressUtf16);
|
|
||||||
VBOX_UTF16_FREE(ipAddressUtf16);
|
|
||||||
|
|
||||||
if (errorOccurred) {
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
ipdef->nhosts = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
VBOX_RELEASE(dhcpServer);
|
|
||||||
} else {
|
|
||||||
PRUnichar *networkMaskUtf16 = NULL;
|
|
||||||
PRUnichar *ipAddressUtf16 = NULL;
|
|
||||||
bool errorOccurred = false;
|
|
||||||
|
|
||||||
networkInterface->vtbl->GetNetworkMask(networkInterface, &networkMaskUtf16);
|
|
||||||
networkInterface->vtbl->GetIPAddress(networkInterface, &ipAddressUtf16);
|
|
||||||
|
|
||||||
if (vboxSocketParseAddrUtf16(data, networkMaskUtf16,
|
|
||||||
&ipdef->netmask) < 0 ||
|
|
||||||
vboxSocketParseAddrUtf16(data, ipAddressUtf16,
|
|
||||||
&ipdef->address) < 0) {
|
|
||||||
errorOccurred = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
VBOX_UTF16_FREE(networkMaskUtf16);
|
|
||||||
VBOX_UTF16_FREE(ipAddressUtf16);
|
|
||||||
|
|
||||||
if (errorOccurred) {
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
DEBUGIID("Network UUID", vboxnet0IID.value);
|
|
||||||
vboxIIDUnalloc(&vboxnet0IID);
|
|
||||||
VBOX_UTF16_FREE(networkNameUtf16);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
VBOX_RELEASE(networkInterface);
|
|
||||||
}
|
|
||||||
|
|
||||||
VBOX_UTF16_FREE(networkInterfaceNameUtf16);
|
|
||||||
VBOX_RELEASE(host);
|
|
||||||
|
|
||||||
ret = virNetworkDefFormat(def, 0);
|
|
||||||
|
|
||||||
cleanup:
|
|
||||||
virNetworkDefFree(def);
|
|
||||||
VIR_FREE(networkNameUtf8);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Storage Functions here on
|
* The Storage Functions here on
|
||||||
*/
|
*/
|
||||||
|
@ -5526,6 +5340,24 @@ _hnInterfaceGetId(IHostNetworkInterface *hni, vboxIIDUnion *iidu)
|
||||||
return hni->vtbl->GetId(hni, &IID_MEMBER(value));
|
return hni->vtbl->GetId(hni, &IID_MEMBER(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static nsresult
|
||||||
|
_hnInterfaceGetHardwareAddress(IHostNetworkInterface *hni, PRUnichar **hardwareAddress)
|
||||||
|
{
|
||||||
|
return hni->vtbl->GetHardwareAddress(hni, hardwareAddress);
|
||||||
|
}
|
||||||
|
|
||||||
|
static nsresult
|
||||||
|
_hnInterfaceGetIPAddress(IHostNetworkInterface *hni, PRUnichar **IPAddress)
|
||||||
|
{
|
||||||
|
return hni->vtbl->GetIPAddress(hni, IPAddress);
|
||||||
|
}
|
||||||
|
|
||||||
|
static nsresult
|
||||||
|
_hnInterfaceGetNetworkMask(IHostNetworkInterface *hni, PRUnichar **networkMask)
|
||||||
|
{
|
||||||
|
return hni->vtbl->GetNetworkMask(hni, networkMask);
|
||||||
|
}
|
||||||
|
|
||||||
static nsresult
|
static nsresult
|
||||||
_hnInterfaceEnableStaticIPConfig(IHostNetworkInterface *hni, PRUnichar *IPAddress,
|
_hnInterfaceEnableStaticIPConfig(IHostNetworkInterface *hni, PRUnichar *IPAddress,
|
||||||
PRUnichar *networkMask)
|
PRUnichar *networkMask)
|
||||||
|
@ -5557,6 +5389,30 @@ _hnInterfaceDHCPRediscover(IHostNetworkInterface *hni)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static nsresult
|
||||||
|
_dhcpServerGetIPAddress(IDHCPServer *dhcpServer, PRUnichar **IPAddress)
|
||||||
|
{
|
||||||
|
return dhcpServer->vtbl->GetIPAddress(dhcpServer, IPAddress);
|
||||||
|
}
|
||||||
|
|
||||||
|
static nsresult
|
||||||
|
_dhcpServerGetNetworkMask(IDHCPServer *dhcpServer, PRUnichar **networkMask)
|
||||||
|
{
|
||||||
|
return dhcpServer->vtbl->GetNetworkMask(dhcpServer, networkMask);
|
||||||
|
}
|
||||||
|
|
||||||
|
static nsresult
|
||||||
|
_dhcpServerGetLowerIP(IDHCPServer *dhcpServer, PRUnichar **lowerIP)
|
||||||
|
{
|
||||||
|
return dhcpServer->vtbl->GetLowerIP(dhcpServer, lowerIP);
|
||||||
|
}
|
||||||
|
|
||||||
|
static nsresult
|
||||||
|
_dhcpServerGetUpperIP(IDHCPServer *dhcpServer, PRUnichar **upperIP)
|
||||||
|
{
|
||||||
|
return dhcpServer->vtbl->GetUpperIP(dhcpServer, upperIP);
|
||||||
|
}
|
||||||
|
|
||||||
static nsresult
|
static nsresult
|
||||||
_dhcpServerSetEnabled(IDHCPServer *dhcpServer, PRBool enabled)
|
_dhcpServerSetEnabled(IDHCPServer *dhcpServer, PRBool enabled)
|
||||||
{
|
{
|
||||||
|
@ -5905,12 +5761,19 @@ static vboxUniformedIHNInterface _UIHNInterface = {
|
||||||
.GetStatus = _hnInterfaceGetStatus,
|
.GetStatus = _hnInterfaceGetStatus,
|
||||||
.GetName = _hnInterfaceGetName,
|
.GetName = _hnInterfaceGetName,
|
||||||
.GetId = _hnInterfaceGetId,
|
.GetId = _hnInterfaceGetId,
|
||||||
|
.GetHardwareAddress = _hnInterfaceGetHardwareAddress,
|
||||||
|
.GetIPAddress = _hnInterfaceGetIPAddress,
|
||||||
|
.GetNetworkMask = _hnInterfaceGetNetworkMask,
|
||||||
.EnableStaticIPConfig = _hnInterfaceEnableStaticIPConfig,
|
.EnableStaticIPConfig = _hnInterfaceEnableStaticIPConfig,
|
||||||
.EnableDynamicIPConfig = _hnInterfaceEnableDynamicIPConfig,
|
.EnableDynamicIPConfig = _hnInterfaceEnableDynamicIPConfig,
|
||||||
.DHCPRediscover = _hnInterfaceDHCPRediscover,
|
.DHCPRediscover = _hnInterfaceDHCPRediscover,
|
||||||
};
|
};
|
||||||
|
|
||||||
static vboxUniformedIDHCPServer _UIDHCPServer = {
|
static vboxUniformedIDHCPServer _UIDHCPServer = {
|
||||||
|
.GetIPAddress = _dhcpServerGetIPAddress,
|
||||||
|
.GetNetworkMask = _dhcpServerGetNetworkMask,
|
||||||
|
.GetLowerIP = _dhcpServerGetLowerIP,
|
||||||
|
.GetUpperIP = _dhcpServerGetUpperIP,
|
||||||
.SetEnabled = _dhcpServerSetEnabled,
|
.SetEnabled = _dhcpServerSetEnabled,
|
||||||
.SetConfiguration = _dhcpServerSetConfiguration,
|
.SetConfiguration = _dhcpServerSetConfiguration,
|
||||||
.Start = _dhcpServerStart,
|
.Start = _dhcpServerStart,
|
||||||
|
|
|
@ -488,6 +488,9 @@ typedef struct {
|
||||||
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);
|
nsresult (*GetId)(IHostNetworkInterface *hni, vboxIIDUnion *iidu);
|
||||||
|
nsresult (*GetHardwareAddress)(IHostNetworkInterface *hni, PRUnichar **hardwareAddress);
|
||||||
|
nsresult (*GetIPAddress)(IHostNetworkInterface *hni, PRUnichar **IPAddress);
|
||||||
|
nsresult (*GetNetworkMask)(IHostNetworkInterface *hni, PRUnichar **networkMask);
|
||||||
nsresult (*EnableStaticIPConfig)(IHostNetworkInterface *hni, PRUnichar *IPAddress,
|
nsresult (*EnableStaticIPConfig)(IHostNetworkInterface *hni, PRUnichar *IPAddress,
|
||||||
PRUnichar *networkMask);
|
PRUnichar *networkMask);
|
||||||
nsresult (*EnableDynamicIPConfig)(IHostNetworkInterface *hni);
|
nsresult (*EnableDynamicIPConfig)(IHostNetworkInterface *hni);
|
||||||
|
@ -496,6 +499,10 @@ typedef struct {
|
||||||
|
|
||||||
/* Functions for IDHCPServer */
|
/* Functions for IDHCPServer */
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
nsresult (*GetIPAddress)(IDHCPServer *dhcpServer, PRUnichar **IPAddress);
|
||||||
|
nsresult (*GetNetworkMask)(IDHCPServer *dhcpServer, PRUnichar **networkMask);
|
||||||
|
nsresult (*GetLowerIP)(IDHCPServer *dhcpServer, PRUnichar **lowerIP);
|
||||||
|
nsresult (*GetUpperIP)(IDHCPServer *dhcpServer, PRUnichar **upperIP);
|
||||||
nsresult (*SetEnabled)(IDHCPServer *dhcpServer, PRBool enabled);
|
nsresult (*SetEnabled)(IDHCPServer *dhcpServer, PRBool enabled);
|
||||||
nsresult (*SetConfiguration)(IDHCPServer *dhcpServer, PRUnichar *IPAddress,
|
nsresult (*SetConfiguration)(IDHCPServer *dhcpServer, PRUnichar *IPAddress,
|
||||||
PRUnichar *networkMask, PRUnichar *FromIPAddress,
|
PRUnichar *networkMask, PRUnichar *FromIPAddress,
|
||||||
|
@ -594,6 +601,7 @@ virNetworkPtr vboxNetworkDefineXML(virConnectPtr conn, const char *xml);
|
||||||
int vboxNetworkUndefine(virNetworkPtr network);
|
int vboxNetworkUndefine(virNetworkPtr network);
|
||||||
int vboxNetworkDestroy(virNetworkPtr network);
|
int vboxNetworkDestroy(virNetworkPtr network);
|
||||||
int vboxNetworkCreate(virNetworkPtr network);
|
int vboxNetworkCreate(virNetworkPtr network);
|
||||||
|
char *vboxNetworkGetXMLDesc(virNetworkPtr network, unsigned int flags);
|
||||||
|
|
||||||
/* 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