[libvirt] [PATCH 7/8] parallels: add routed pseudo network
Daniel Veillard
veillard at redhat.com
Tue Dec 11 14:44:52 UTC 2012
On Tue, Dec 11, 2012 at 02:59:48PM +0400, Dmitry Guryanov wrote:
> 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 at parallels.com>
> ---
> src/parallels/parallels_network.c | 43 +++++++++++++++++++++++++++++++++++++
> src/parallels/parallels_utils.h | 2 +
> 2 files changed, 45 insertions(+), 0 deletions(-)
>
> diff --git a/src/parallels/parallels_network.c b/src/parallels/parallels_network.c
> index 64e5351..d6452bf 100644
> --- a/src/parallels/parallels_network.c
> +++ b/src/parallels/parallels_network.c
> @@ -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->forwardType = VIR_NETWORK_FORWARD_ROUTE;
similar problem as for patch 6
> + 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:
> diff --git a/src/parallels/parallels_utils.h b/src/parallels/parallels_utils.h
> index aca3ee2..0010f85 100644
> --- a/src/parallels/parallels_utils.h
> +++ b/src/parallels/parallels_utils.h
> @@ -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;
and similar fix:
diff --git a/src/parallels/parallels_network.c b/src/parallels/parallels_network.c
index 19af19a..aacceca 100644
--- a/src/parallels/parallels_network.c
+++ b/src/parallels/parallels_network.c
@@ -260,7 +260,7 @@ parallelsAddRoutedNetwork(parallelsConnPtr privconn)
if (VIR_ALLOC(def) < 0)
goto no_memory;
- def->forwardType = VIR_NETWORK_FORWARD_ROUTE;
+ def->forward.type = VIR_NETWORK_FORWARD_ROUTE;
if (!(def->name = strdup(PARALLELS_ROUTED_NETWORK_NAME)))
goto no_memory;
Daniel
--
Daniel Veillard | Open Source and Standards, Red Hat
veillard at redhat.com | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
http://veillard.com/ | virtualization library http://libvirt.org/
More information about the libvir-list
mailing list