mirror of https://gitee.com/openkylin/libvirt.git
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:
parent
0ece766bd2
commit
af8b4a2e6f
|
@ -3969,6 +3969,26 @@ qemu-kvm -net nic,model=? /dev/null
|
|||
</dd>
|
||||
</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>
|
||||
|
||||
<pre>
|
||||
|
|
|
@ -2346,6 +2346,16 @@
|
|||
<empty/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="backend">
|
||||
<attribute name='tap'>
|
||||
<ref name='absFilePath'/>
|
||||
</attribute>
|
||||
<attribute name='vhost'>
|
||||
<ref name='absFilePath'/>
|
||||
</attribute>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="driver">
|
||||
<choice>
|
||||
|
|
|
@ -1415,6 +1415,8 @@ void virDomainNetDefFree(virDomainNetDefPtr def)
|
|||
break;
|
||||
}
|
||||
|
||||
VIR_FREE(def->backend.tap);
|
||||
VIR_FREE(def->backend.vhost);
|
||||
VIR_FREE(def->virtPortProfile);
|
||||
VIR_FREE(def->script);
|
||||
VIR_FREE(def->ifname);
|
||||
|
@ -7049,6 +7051,9 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlopt,
|
|||
} else if (xmlStrEqual(cur->name, BAD_CAST "vlan")) {
|
||||
if (virNetDevVlanParse(cur, ctxt, &def->vlan) < 0)
|
||||
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;
|
||||
|
@ -16700,6 +16705,12 @@ virDomainNetDefFormat(virBufferPtr buf,
|
|||
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 (virNWFilterFormatParamAttributes(buf, def->filterparams,
|
||||
def->filter) < 0)
|
||||
|
|
|
@ -897,6 +897,10 @@ struct _virDomainNetDef {
|
|||
unsigned int queues; /* Multiqueue virtio-net */
|
||||
} virtio;
|
||||
} driver;
|
||||
struct {
|
||||
char *tap;
|
||||
char *vhost;
|
||||
} backend;
|
||||
union {
|
||||
struct {
|
||||
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("tap-vhost");
|
||||
|
||||
virObjectUnref(driver.caps);
|
||||
virObjectUnref(driver.xmlopt);
|
||||
|
||||
|
|
Loading…
Reference in New Issue