<p dir="ltr"></p>
<p dir="ltr">25 Авг 2016 г. 8:58 пользователь "Laine Stump" <<a href="mailto:laine@laine.org">laine@laine.org</a>> написал:<br>
><br>
> The linkstate setting of an <interface> is only meant to change the<br>
> online status reported to the guest system by the emulated network<br>
> device driver in qemu,</p>
<p dir="ltr">I need to set host side status of interface. Without this live migration with dinamic routing software (ospf with quagga or bird) bring packet drops. Because on dest interface in up state and kernel try to forward packets to it, but guest  CPU is not running. Also host side status needed for easy blackhole traffic to guest ip.<br></p>
<p dir="ltr">> but when support for auto-creating tap devices<br>
> for <interface type='ethernet'> was added in commit 9717d6, a chunk of<br>
> code was also added to qemuDomainChangeNetLinkState() that sets the<br>
> online status of the tap device (i.e. the *host* side of the<br>
> interface) for type='ethernet'. This was never done for tap devices<br>
> used in type='bridge' or type='network' interfaces, nor was it done in<br>
> the past for tap devices created by external scripts for<br>
> type='ethernet', so we shouldn't be doing it now.<br>
><br>
> This patch removes the bit of code in qemuDomainChangeNetLinkState()<br>
> that modifies online status of the tap device.<br>
> ---<br>
>  src/qemu/qemu_hotplug.c | 15 ---------------<br>
>  1 file changed, 15 deletions(-)<br>
><br>
> diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c<br>
> index 00e4a75..5300bc1 100644<br>
> --- a/src/qemu/qemu_hotplug.c<br>
> +++ b/src/qemu/qemu_hotplug.c<br>
> @@ -2324,21 +2324,6 @@ int qemuDomainChangeNetLinkState(virQEMUDriverPtr driver,<br>
>      if (ret < 0)<br>
>          goto cleanup;<br>
><br>
> -    if (virDomainNetGetActualType(dev) == VIR_DOMAIN_NET_TYPE_ETHERNET) {<br>
> -        switch (linkstate) {<br>
> -            case VIR_DOMAIN_NET_INTERFACE_LINK_STATE_UP:<br>
> -            case VIR_DOMAIN_NET_INTERFACE_LINK_STATE_DEFAULT:<br>
> -                if ((ret = virNetDevSetOnline(dev->ifname, true)) < 0)<br>
> -                    goto cleanup;<br>
> -                break;<br>
> -<br>
> -            case VIR_DOMAIN_NET_INTERFACE_LINK_STATE_DOWN:<br>
> -                if ((ret = virNetDevSetOnline(dev->ifname, false)) < 0)<br>
> -                    goto cleanup;<br>
> -                break;<br>
> -            }<br>
> -    }<br>
> -<br>
>      /* modify the device configuration */<br>
>      dev->linkstate = linkstate;<br>
><br>
> --<br>
> 2.7.4<br>
></p>