mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-24 04:12:20 +00:00
parallels: add routed pseudo network
Historically if traffic from the adapter is routed to LAN without NAT, it isn't connected to any virtual networks, but has a 'type' instead. Sinse libvirt has special virtual network type for such case, let's add pseudo network 'routed' to fit libvirt's API well. Signed-off-by: Dmitry Guryanov <dguryanov@parallels.com>
This commit is contained in:
parent
56494d2b57
commit
84f0a0b8f2
@ -30,6 +30,7 @@
|
||||
#include "parallels_utils.h"
|
||||
|
||||
#define VIR_FROM_THIS VIR_FROM_PARALLELS
|
||||
#define PARALLELS_ROUTED_NETWORK_UUID "eb593dd1-6846-45b0-84a0-de0729286982"
|
||||
|
||||
#define parallelsParseError() \
|
||||
virReportErrorHelper(VIR_FROM_TEST, VIR_ERR_OPERATION_FAILED, __FILE__, \
|
||||
@ -250,6 +251,45 @@ cleanup:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static virNetworkObjPtr
|
||||
parallelsAddRoutedNetwork(parallelsConnPtr privconn)
|
||||
{
|
||||
virNetworkObjPtr net;
|
||||
virNetworkDefPtr def;
|
||||
|
||||
if (VIR_ALLOC(def) < 0)
|
||||
goto no_memory;
|
||||
|
||||
def->forward.type = VIR_NETWORK_FORWARD_ROUTE;
|
||||
|
||||
if (!(def->name = strdup(PARALLELS_ROUTED_NETWORK_NAME)))
|
||||
goto no_memory;
|
||||
|
||||
if (virUUIDParse(PARALLELS_ROUTED_NETWORK_UUID, def->uuid) < 0) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("Can't parse UUID"));
|
||||
goto cleanup;
|
||||
}
|
||||
def->uuid_specified = 1;
|
||||
|
||||
if (!(net = virNetworkAssignDef(&privconn->networks, def, false))) {
|
||||
virNetworkDefFree(def);
|
||||
goto cleanup;
|
||||
}
|
||||
net->active = 1;
|
||||
net->persistent = 1;
|
||||
net->autostart = 1;
|
||||
virNetworkObjUnlock(net);
|
||||
|
||||
return net;
|
||||
|
||||
no_memory:
|
||||
virReportOOMError();
|
||||
cleanup:
|
||||
virNetworkDefFree(def);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static int parallelsLoadNetworks(parallelsConnPtr privconn)
|
||||
{
|
||||
virJSONValuePtr jobj, jobj2;
|
||||
@ -283,6 +323,9 @@ static int parallelsLoadNetworks(parallelsConnPtr privconn)
|
||||
|
||||
}
|
||||
|
||||
if (!parallelsAddRoutedNetwork(privconn))
|
||||
goto cleanup;
|
||||
|
||||
ret = 0;
|
||||
|
||||
cleanup:
|
||||
|
@ -35,6 +35,8 @@
|
||||
virReportErrorHelper(VIR_FROM_TEST, VIR_ERR_OPERATION_FAILED, __FILE__, \
|
||||
__FUNCTION__, __LINE__, _("Can't parse prlctl output"))
|
||||
|
||||
# define PARALLELS_ROUTED_NETWORK_NAME "Routed"
|
||||
|
||||
struct _parallelsConn {
|
||||
virMutex lock;
|
||||
virDomainObjList domains;
|
||||
|
Loading…
x
Reference in New Issue
Block a user