<pre>
...
<bridge name="virbr0" stp="on" delay="5" macTableManager="libvirt"/>
+<mtu size="9000"/>
<domain name="example.com" localOnly="no"/>
<forward mode="nat" dev="eth0"/>
...</pre>
<span class="since">Since 1.2.11, requires kernel 3.17 or
newer</span>
</p>
+ </dd>
-
+ <dt><code>mtu</code></dt>
+ <dd>
+ The <code>size</code> attribute of the <code>mtu></code>
+ element specifies the Maximum Transmission Unit (MTU) for the
+ network. <span class="since">Since 3.1.0</span>. In the case
+ of a libvirt-managed network (one with forward mode
+ of <code>nat</code>, <code>route</code>, <code>open</code>, or
+ no <code>forward</code> element (i.e. an isolated network),
+ this will be the MTU assigned to the bridge device when
+ libvirt creates it, and thereafter also assigned to all tap
+ devices created to connect guest interfaces. Network types not
+ specifically mentioned here don't support having an MTU set in
+ the libvirt network config. If mtu size is unspecified, the
+ default setting for the type of device being used is assumed
+ (usually 1500).
</dd>
+
<dt><code>domain</code></dt>
<dd>
The <code>name</code> attribute on the <code>domain</code>
</change>
<change>
<summary>
- Introduce MTU to domain <interface/>
+ Introduce MTU to domain <interface/> and <network>
</summary>
<description>
- Allow setting MTU size for some types of domain interface.
+ Allow setting MTU size for some types of domain interface
+ and network.
</description>
</change>
</section>
</element>
</optional>
+ <!-- <mtu> element -->
+ <optional>
+ <ref name="mtu"/>
+ </optional>
+
<!-- <mac> element -->
<optional>
<element name="mac">
def->mac_specified = true;
}
+ tmp = virXPathString("string(./mtu/@size)", ctxt);
+ if (tmp) {
+ if (virStrToLong_ui(tmp, NULL, 10, &def->mtu) < 0) {
+ virReportError(VIR_ERR_XML_ERROR,
+ _("Invalid mtu size '%s' in network '%s'"),
+ tmp, def->name);
+ goto error;
+ }
+ }
+ VIR_FREE(tmp);
+
dnsNode = virXPathNode("./dns", ctxt);
if (dnsNode != NULL &&
virNetworkDNSDefParseXML(def->name, dnsNode, ctxt, &def->dns) < 0) {
case VIR_NETWORK_FORWARD_BRIDGE:
if (def->delay || stp) {
virReportError(VIR_ERR_XML_ERROR,
- _("bridge delay/stp options only allowed in route, nat, and isolated mode, not in %s (network '%s')"),
+ _("bridge delay/stp options only allowed in "
+ "route, nat, and isolated mode, not in %s "
+ "(network '%s')"),
virNetworkForwardTypeToString(def->forward.type),
def->name);
goto error;
VIR_FREE(stp);
+ if (def->mtu &&
+ (def->forward.type != VIR_NETWORK_FORWARD_NONE &&
+ def->forward.type != VIR_NETWORK_FORWARD_NAT &&
+ def->forward.type != VIR_NETWORK_FORWARD_ROUTE &&
+ def->forward.type != VIR_NETWORK_FORWARD_OPEN)) {
+ virReportError(VIR_ERR_XML_ERROR,
+ _("mtu size only allowed in open, route, nat, "
+ "and isolated mode, not in %s (network '%s')"),
+ virNetworkForwardTypeToString(def->forward.type),
+ def->name);
+ goto error;
+ }
+
/* Extract custom metadata */
if ((metadataNode = virXPathNode("./metadata[1]", ctxt)) != NULL) {
def->metadata = xmlCopyNode(metadataNode, 1);
virBufferAddLit(buf, "/>\n");
}
+ if (def->mtu)
+ virBufferAsprintf(buf, "<mtu size='%u'/>\n", def->mtu);
+
if (def->mac_specified) {
char macaddr[VIR_MAC_STRING_BUFLEN];
virMacAddrFormat(&def->mac, macaddr);
int domainLocalOnly; /* enum virTristateBool: yes disables dns forwarding */
unsigned long delay; /* Bridge forward delay (ms) */
bool stp; /* Spanning tree protocol */
+ unsigned int mtu; /* MTU for bridge, 0 means "default" i.e. unset in config */
virMacAddr mac; /* mac address of bridge device */
bool mac_specified;
--- /dev/null
+<network ipv6='no'>
+ <name>private</name>
+ <uuid>81ff0d90-c91e-6742-64da-4a736edb9a9b</uuid>
+ <bridge name='virbr2'/>
+ <mtu size='9000'/>
+ <mac address='52:54:00:17:3F:37'/>
+ <ip address="192.168.152.1" netmask="255.255.255.0">
+ <dhcp>
+ <range start="192.168.152.2" end="192.168.152.254"/>
+ </dhcp>
+ </ip>
+</network>
--- /dev/null
+<network>
+ <name>private</name>
+ <uuid>81ff0d90-c91e-6742-64da-4a736edb9a9b</uuid>
+ <bridge name='virbr2' stp='on' delay='0'/>
+ <mtu size='9000'/>
+ <mac address='52:54:00:17:3f:37'/>
+ <ip address='192.168.152.1' netmask='255.255.255.0'>
+ <dhcp>
+ <range start='192.168.152.2' end='192.168.152.254'/>
+ </dhcp>
+ </ip>
+</network>
DO_TEST_PARSE_ERROR("hostdev-duplicate");
DO_TEST_PARSE_ERROR("passthrough-duplicate");
DO_TEST("metadata");
+ DO_TEST("set-mtu");
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}