[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