[libvirt] [PATCH v4 3/7] parallels: better bridge network interface support
Michal Privoznik
mprivozn at redhat.com
Wed Mar 18 17:34:21 UTC 2015
On 18.03.2015 09:33, Maxim Nestratov wrote:
> In order to support 'bridge' network adapters in parallels
> driver we need to plug our veth devices into corresponding
> linux bridges.
> We are going to do this by reusing our abstraction of
> Virtual Networks in terms of PCS. On a domain creation, we
> create a new Virtual Network naming it with the same name
> as a source bridge for each network interface.
> Having done this, we plug PCS veth interfaces created with names of
> target dev into specified bridges using our standard PCS procedures
>
> Signed-off-by: Maxim Nestratov <mnestratov at parallels.com>
> ---
> src/parallels/parallels_sdk.c | 99 +++++++++++++++++++++++++++++++++++-----
> 1 files changed, 86 insertions(+), 13 deletions(-)
>
> diff --git a/src/parallels/parallels_sdk.c b/src/parallels/parallels_sdk.c
> index d3fb5d4..58c52a8 100644
> --- a/src/parallels/parallels_sdk.c
> +++ b/src/parallels/parallels_sdk.c
> @@ -691,9 +691,6 @@ prlsdkGetNetInfo(PRL_HANDLE netAdapter, virDomainNetDefPtr net, bool isCt)
>
> /* use device name, shown by prlctl as target device
> * for identifying network adapter in virDomainDefineXML */
> - pret = PrlVmDev_GetIndex(netAdapter, &netAdapterIndex);
> - prlsdkCheckRetGoto(pret, cleanup);
> -
> pret = PrlVmDevNet_GetHostInterfaceName(netAdapter, NULL, &buflen);
> prlsdkCheckRetGoto(pret, cleanup);
>
> @@ -703,6 +700,9 @@ prlsdkGetNetInfo(PRL_HANDLE netAdapter, virDomainNetDefPtr net, bool isCt)
> pret = PrlVmDevNet_GetHostInterfaceName(netAdapter, net->ifname, &buflen);
> prlsdkCheckRetGoto(pret, cleanup);
>
> + pret = PrlVmDev_GetIndex(netAdapter, &netAdapterIndex);
> + prlsdkCheckRetGoto(pret, cleanup);
> +
> if (isCt && netAdapterIndex == (PRL_UINT32) -1) {
> /* venet devices don't have mac address and
> * always up */
> @@ -740,6 +740,16 @@ prlsdkGetNetInfo(PRL_HANDLE netAdapter, virDomainNetDefPtr net, bool isCt)
> net->data.network.name,
> &buflen);
> prlsdkCheckRetGoto(pret, cleanup);
> +
> + /*
> + * We use VIR_DOMAIN_NET_TYPE_NETWORK for all network adapters
> + * except those whose Virtual Network Id differ from Parallels
> + * predefined ones such as PARALLELS_DOMAIN_BRIDGED_NETWORK_NAME
> + * and PARALLELS_DONAIN_ROUTED_NETWORK_NAME
> + */
> + if (!STREQ(net->data.network.name, PARALLELS_DOMAIN_BRIDGED_NETWORK_NAME))
s/!STREQ/STRNEQ/
I'll fix that when pushing.
Michal
More information about the libvir-list
mailing list