<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 attribute <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 behavior 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>
<optional>
<ref name="bandwidth"/>
</optional>
+ <optional>
+ <element name="link">
+ <attribute name="state">
+ <choice>
+ <value>up</value>
+ <value>down</value>
+ </choice>
+ </attribute>
+ <empty/>
+ </element>
+ </optional>
<!-- <ip> element -->
<zeroOrMore>
"iothread",
"timer")
+VIR_ENUM_IMPL(virDomainNetInterfaceLinkState, VIR_DOMAIN_NET_INTERFACE_LINK_STATE_LAST,
+ "default",
+ "up",
+ "down")
+
VIR_ENUM_IMPL(virDomainChrChannelTarget,
VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_LAST,
"guestfwd",
char *internal = NULL;
char *devaddr = NULL;
char *mode = NULL;
+ char *linkstate = NULL;
virNWFilterHashTablePtr filterparams = NULL;
virVirtualPortProfileParamsPtr virtPort = NULL;
virDomainActualNetDefPtr actual = NULL;
/* An auto-generated target name, blank it out */
VIR_FREE(ifname);
}
+ } else if ((linkstate == NULL) &&
+ xmlStrEqual(cur->name, BAD_CAST "link")) {
+ linkstate = virXMLPropString(cur, "state");
} else if ((script == NULL) &&
(def->type == VIR_DOMAIN_NET_TYPE_ETHERNET ||
def->type == VIR_DOMAIN_NET_TYPE_BRIDGE) &&
}
}
+ def->linkstate = VIR_DOMAIN_NET_INTERFACE_LINK_STATE_DEFAULT;
+ if (linkstate != NULL) {
+ if ((def->linkstate = virDomainNetInterfaceLinkStateTypeFromString(linkstate)) <= 0) {
+ virDomainReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("unknown interface link state '%s'"),
+ linkstate);
+ goto error;
+ }
+ }
+
if (filter != NULL) {
switch (def->type) {
case VIR_DOMAIN_NET_TYPE_ETHERNET:
VIR_FREE(internal);
VIR_FREE(devaddr);
VIR_FREE(mode);
+ VIR_FREE(linkstate);
virNWFilterHashTableFree(filterparams);
return def;
virBufferAddLit(buf, " </tune>\n");
}
+ if (def->linkstate)
+ virBufferAsprintf(buf, " <link state='%s'/>\n",
+ virDomainNetInterfaceLinkStateTypeToString(def->linkstate));
+
if (virBandwidthDefFormat(buf, def->bandwidth, " ") < 0)
return -1;
VIR_DOMAIN_NET_VIRTIO_TX_MODE_LAST,
};
+/* link interface states */
+enum virDomainNetInterfaceLinkState {
+ VIR_DOMAIN_NET_INTERFACE_LINK_STATE_DEFAULT = 0, /* Default link state (up) */
+ VIR_DOMAIN_NET_INTERFACE_LINK_STATE_UP, /* Link is up. ("cable" connected) */
+ VIR_DOMAIN_NET_INTERFACE_LINK_STATE_DOWN , /* Link is down. ("cable" disconnected) */
+
+ VIR_DOMAIN_NET_INTERFACE_LINK_STATE_LAST
+};
+
/* Config that was actually used to bring up interface, after
* resolving network reference. This is private data, only used within
* libvirt, but still must maintain backward compatibility, because
char *filter;
virNWFilterHashTablePtr filterparams;
virBandwidthPtr bandwidth;
+ int linkstate;
};
/* Used for prefix of ifname of any network name generated dynamically
VIR_ENUM_DECL(virDomainNet)
VIR_ENUM_DECL(virDomainNetBackend)
VIR_ENUM_DECL(virDomainNetVirtioTxMode)
+VIR_ENUM_DECL(virDomainNetInterfaceLinkState)
VIR_ENUM_DECL(virDomainChrDevice)
VIR_ENUM_DECL(virDomainChrChannelTarget)
VIR_ENUM_DECL(virDomainChrConsoleTarget)