[libvirt] [PATCH 01/10] linkstate: XML for modification of interface's link state.

Daniel P. Berrange berrange at redhat.com
Thu Aug 11 16:57:19 UTC 2011


On Thu, Aug 11, 2011 at 05:27:39PM +0200, Peter Krempa wrote:
> Adds a optional element to XML definition of domains for
> modification of link state of network interfaces.
> ---
>  docs/formatdomain.html.in |   21 +++++++++++++++++++++
>  docs/schemas/domain.rng   |   11 +++++++++++
>  2 files changed, 32 insertions(+), 0 deletions(-)
> 
> diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
> index 7d2ba8a..dc4cecb 100644
> --- a/docs/formatdomain.html.in
> +++ b/docs/formatdomain.html.in
> @@ -1997,6 +1997,27 @@ qemu-kvm -net nic,model=? /dev/null
>        <span class="since">Since 0.9.4</span>
>      </p>
> 
> +    <h5><a name="elementLink">Modyfing virtual link state</a></h5>
> +<pre>
> +  ...
> +  <devices>
> +    <interface type='network'>
> +      <source network='default'/>
> +      <target dev='vnet0'/>
> +      <b><link state='down'/></b>
> +    </interface>
> +  <devices>
> +  ...</pre>
> +
> +    <p>
> +      This element provides means of setting state of the virtual network link.
> +      Possible values for atrribute <code>state</code> are <code>up</code> and
> +      <code>down</code>. If <code>down</code> is specified as the value, the interface
> +      behaves as if it had the network cable disconnected. Default behaviour, if this
> +      element is unspecified is to have the link state <code>up</code>.
> +      <span class="since">Since 0.9.5</span>
> +    </p>
> +
>      <h4><a name="elementsInput">Input devices</a></h4>
> 
>      <p>
> diff --git a/docs/schemas/domain.rng b/docs/schemas/domain.rng
> index 6ccbeed..a4282eb 100644
> --- a/docs/schemas/domain.rng
> +++ b/docs/schemas/domain.rng
> @@ -1192,6 +1192,17 @@
>        <optional>
>          <ref name="bandwidth"/>
>        </optional>
> +      <optional>
> +        <element name="link">
> +          <attribute name="state">
> +            <choice>
> +              <value>up</value>
> +              <value>down</value>
> +            </choice>
> +          </attribute>
> +          <empty/>
> +        </element>
> +      </optional>
>      </interleave>
>    </define>
>    <!--

Once we add link state to the XML, it ought to be possible to enable
changes of the link state using the existing virDomainUpdateDevice()
API call. We already use this for changing CDROM media, changing the
VNC/SPICE graphics configuration, etc, so IMHO it should also be used
for NIC device configuration changes. This lets you do more than just
change link state. It will be possible to actually change the NIC
device backend entirely.

For example, you might want to take a guest with bridged
networking and disconnect it entirely

  <interface type='bridge'>
    <source bridge='br0'/>
    <link state='up'/>
  </interface>

By changing to type=none (does not exist yet, but could) issuing
this to the virDomaniUpdateDevice:

  <interface type='none'>
    <link state='down'/>
  </interface>

We'd do this by using the monitor to set the link state
down, and then remove the network device backend, leaving
only the guest device.

Some time later we might want to connect the guest to a
new LAN, but issuing virDomainUpdateDevice with:

  <interface type='network'>
    <source network='default'/>
    <link state='up'/>
  </interface>

So I think it is more flexible todo this via virDomainUpdateDevice
than to have special case APIs for link state.

Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list