mirror of
https://github.com/libvirt/libvirt.git
synced 2026-08-02 01:28:00 -05:00
conf: add backend element to interfaces
For tuning the network, alternative devices for creating tap and vhost devices can be specified via: <backend tap='/dev/net/tun' vhost='/dev/net-vhost'/>
This commit is contained in:
@@ -3969,6 +3969,26 @@ qemu-kvm -net nic,model=? /dev/null
|
|||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
|
<h5><a name="elementsBackendOptions">Setting network backend-specific options</a></h5>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
...
|
||||||
|
<devices>
|
||||||
|
<interface type='network'>
|
||||||
|
<source network='default'/>
|
||||||
|
<target dev='vnet1'/>
|
||||||
|
<model type='virtio'/>
|
||||||
|
<b><backend tap='/dev/net/tun' vhost='/dev/net-vhost'/></b>
|
||||||
|
<driver name='vhost' txmode='iothread' ioeventfd='on' event_idx='off' queues='5'/>
|
||||||
|
</interface>
|
||||||
|
</devices>
|
||||||
|
...</pre>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
For tuning the backend of the network, the <code>backend</code> element
|
||||||
|
can be used. Supported attributes are <code>tap</code> and <code>vhost</code>,
|
||||||
|
allowing to override the default devices for creating tap and vhost devices.
|
||||||
|
</p>
|
||||||
<h5><a name="elementsNICSTargetOverride">Overriding the target element</a></h5>
|
<h5><a name="elementsNICSTargetOverride">Overriding the target element</a></h5>
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
|
|||||||
@@ -2346,6 +2346,16 @@
|
|||||||
<empty/>
|
<empty/>
|
||||||
</element>
|
</element>
|
||||||
</optional>
|
</optional>
|
||||||
|
<optional>
|
||||||
|
<element name="backend">
|
||||||
|
<attribute name='tap'>
|
||||||
|
<ref name='absFilePath'/>
|
||||||
|
</attribute>
|
||||||
|
<attribute name='vhost'>
|
||||||
|
<ref name='absFilePath'/>
|
||||||
|
</attribute>
|
||||||
|
</element>
|
||||||
|
</optional>
|
||||||
<optional>
|
<optional>
|
||||||
<element name="driver">
|
<element name="driver">
|
||||||
<choice>
|
<choice>
|
||||||
|
|||||||
@@ -1415,6 +1415,8 @@ void virDomainNetDefFree(virDomainNetDefPtr def)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VIR_FREE(def->backend.tap);
|
||||||
|
VIR_FREE(def->backend.vhost);
|
||||||
VIR_FREE(def->virtPortProfile);
|
VIR_FREE(def->virtPortProfile);
|
||||||
VIR_FREE(def->script);
|
VIR_FREE(def->script);
|
||||||
VIR_FREE(def->ifname);
|
VIR_FREE(def->ifname);
|
||||||
@@ -7049,6 +7051,9 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlopt,
|
|||||||
} else if (xmlStrEqual(cur->name, BAD_CAST "vlan")) {
|
} else if (xmlStrEqual(cur->name, BAD_CAST "vlan")) {
|
||||||
if (virNetDevVlanParse(cur, ctxt, &def->vlan) < 0)
|
if (virNetDevVlanParse(cur, ctxt, &def->vlan) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
} else if (xmlStrEqual(cur->name, BAD_CAST "backend")) {
|
||||||
|
def->backend.tap = virXMLPropString(cur, "tap");
|
||||||
|
def->backend.vhost = virXMLPropString(cur, "vhost");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cur = cur->next;
|
cur = cur->next;
|
||||||
@@ -16700,6 +16705,12 @@ virDomainNetDefFormat(virBufferPtr buf,
|
|||||||
VIR_FREE(str);
|
VIR_FREE(str);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (def->backend.tap || def->backend.vhost) {
|
||||||
|
virBufferAddLit(buf, "<backend");
|
||||||
|
virBufferEscapeString(buf, " tap='%s'", def->backend.tap);
|
||||||
|
virBufferEscapeString(buf, " vhost='%s'", def->backend.vhost);
|
||||||
|
virBufferAddLit(buf, "/>\n");
|
||||||
|
}
|
||||||
if (def->filter) {
|
if (def->filter) {
|
||||||
if (virNWFilterFormatParamAttributes(buf, def->filterparams,
|
if (virNWFilterFormatParamAttributes(buf, def->filterparams,
|
||||||
def->filter) < 0)
|
def->filter) < 0)
|
||||||
|
|||||||
@@ -897,6 +897,10 @@ struct _virDomainNetDef {
|
|||||||
unsigned int queues; /* Multiqueue virtio-net */
|
unsigned int queues; /* Multiqueue virtio-net */
|
||||||
} virtio;
|
} virtio;
|
||||||
} driver;
|
} driver;
|
||||||
|
struct {
|
||||||
|
char *tap;
|
||||||
|
char *vhost;
|
||||||
|
} backend;
|
||||||
union {
|
union {
|
||||||
struct {
|
struct {
|
||||||
char *dev;
|
char *dev;
|
||||||
|
|||||||
@@ -0,0 +1,52 @@
|
|||||||
|
<domain type='qemu'>
|
||||||
|
<name>test</name>
|
||||||
|
<uuid>bba65c0e-c049-934f-b6aa-4e2c0582acdf</uuid>
|
||||||
|
<memory unit='KiB'>1048576</memory>
|
||||||
|
<currentMemory unit='KiB'>1048576</currentMemory>
|
||||||
|
<vcpu placement='static'>1</vcpu>
|
||||||
|
<os>
|
||||||
|
<type arch='x86_64' machine='pc-0.13'>hvm</type>
|
||||||
|
<boot dev='cdrom'/>
|
||||||
|
<boot dev='hd'/>
|
||||||
|
<bootmenu enable='yes'/>
|
||||||
|
</os>
|
||||||
|
<clock offset='utc'/>
|
||||||
|
<on_poweroff>destroy</on_poweroff>
|
||||||
|
<on_reboot>restart</on_reboot>
|
||||||
|
<on_crash>restart</on_crash>
|
||||||
|
<devices>
|
||||||
|
<emulator>/usr/bin/qemu</emulator>
|
||||||
|
<disk type='file' device='disk'>
|
||||||
|
<driver name='qemu' type='qcow2' event_idx='on'/>
|
||||||
|
<source file='/var/lib/libvirt/images/f14.img'/>
|
||||||
|
<target dev='vda' bus='virtio'/>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
|
||||||
|
</disk>
|
||||||
|
<disk type='file' device='cdrom'>
|
||||||
|
<driver name='qemu' type='raw'/>
|
||||||
|
<source file='/var/lib/libvirt/Fedora-14-x86_64-Live-KDE.iso'/>
|
||||||
|
<target dev='hdc' bus='ide'/>
|
||||||
|
<readonly/>
|
||||||
|
<address type='drive' controller='0' bus='1' target='0' unit='0'/>
|
||||||
|
</disk>
|
||||||
|
<controller type='usb' index='0'/>
|
||||||
|
<controller type='virtio-serial' index='0'>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
|
||||||
|
</controller>
|
||||||
|
<controller type='ide' index='0'/>
|
||||||
|
<controller type='pci' index='0' model='pci-root'/>
|
||||||
|
<interface type='user'>
|
||||||
|
<mac address='52:54:00:e5:48:58'/>
|
||||||
|
<model type='virtio'/>
|
||||||
|
<driver name='vhost' queues='5'/>
|
||||||
|
<backend tap='/dev/null' vhost='/dev/zero'/>
|
||||||
|
</interface>
|
||||||
|
<serial type='pty'>
|
||||||
|
<target port='0'/>
|
||||||
|
</serial>
|
||||||
|
<console type='pty'>
|
||||||
|
<target type='serial' port='0'/>
|
||||||
|
</console>
|
||||||
|
<memballoon model='virtio'/>
|
||||||
|
</devices>
|
||||||
|
</domain>
|
||||||
@@ -399,6 +399,8 @@ mymain(void)
|
|||||||
|
|
||||||
DO_TEST("bios-nvram");
|
DO_TEST("bios-nvram");
|
||||||
|
|
||||||
|
DO_TEST("tap-vhost");
|
||||||
|
|
||||||
virObjectUnref(driver.caps);
|
virObjectUnref(driver.caps);
|
||||||
virObjectUnref(driver.xmlopt);
|
virObjectUnref(driver.xmlopt);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user