conf: add passt XML additions to schema

Initial support for network devices using passt (https://passt.top)
for the backend connection will require:

* new attributes of the <backend> subelement:
  * "type" that can have the value "passt" (to differentiate from
    slirp, because both slirp and passt will use <interface
    type='user'>)
  * "logFile" (a path to a file that passt should use for its logging)
  * "upstream" (a netdev name, e.g. "eth0").

* a new subelement <portForward> (described in more detail later)

Signed-off-by: Laine Stump <laine@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Laine Stump 2022-11-11 15:24:57 -05:00
parent efd286a760
commit 63fbe529fc
2 changed files with 122 additions and 0 deletions

View File

@ -3584,6 +3584,7 @@
</element>
</optional>
<ref name="interface-ip-info"/>
<ref name="interface-port-forwards"/>
<optional>
<element name="script">
<attribute name="path">
@ -3620,6 +3621,13 @@
</optional>
<optional>
<element name="backend">
<optional>
<attribute name="type">
<choice>
<value>passt</value>
</choice>
</attribute>
</optional>
<optional>
<attribute name="tap">
<ref name="absFilePath"/>
@ -3630,6 +3638,16 @@
<ref name="absFilePath"/>
</attribute>
</optional>
<optional>
<attribute name="logFile">
<ref name="absFilePath"/>
</attribute>
</optional>
<optional>
<attribute name="upstream">
<ref name="deviceName"/>
</attribute>
</optional>
</element>
</optional>
<optional>
@ -3846,6 +3864,53 @@
</interleave>
</define>
<define name="interface-port-forwards">
<zeroOrMore>
<element name="portForward">
<attribute name="proto">
<choice>
<value>tcp</value>
<value>udp</value>
</choice>
</attribute>
<optional>
<attribute name="address">
<ref name="ipAddr"/>
</attribute>
</optional>
<optional>
<attribute name="dev">
<ref name="deviceName"/>
</attribute>
</optional>
<interleave>
<zeroOrMore>
<element name="range">
<attribute name="start">
<ref name="PortNumber"/>
</attribute>
<optional>
<attribute name="end">
<ref name="PortNumber"/>
</attribute>
</optional>
<optional>
<attribute name="to">
<ref name="PortNumber"/>
</attribute>
</optional>
<optional>
<attribute name="exclude">
<ref name="virYesNo"/>
</attribute>
</optional>
</element>
</zeroOrMore>
</interleave>
</element>
</zeroOrMore>
</define>
<define name="teaming">
<element name="teaming">
<choice>

View File

@ -0,0 +1,57 @@
<domain type='qemu'>
<name>QEMUGuest1</name>
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
<memory unit='KiB'>219136</memory>
<currentMemory unit='KiB'>219136</currentMemory>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='x86_64' machine='pc'>hvm</type>
<boot dev='hd'/>
</os>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
<disk type='block' device='disk'>
<driver name='qemu' type='raw'/>
<source dev='/dev/HostVG/QEMUGuest1'/>
<target dev='hda' bus='ide'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<controller type='usb' index='0' model='none'/>
<controller type='ide' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller>
<controller type='pci' index='0' model='pci-root'/>
<interface type='user'>
<mac address='00:11:22:33:44:55'/>
<ip address='172.17.2.0' family='ipv4' prefix='24'/>
<ip address='2001:db8:ac10:fd01::feed' family='ipv6'/>
<portForward proto='tcp' address='2001:db8:ac10:fd01::1:10'>
<range start='22' to='2022'/>
<range start='1000' end='1050'/>
<range start='1020' exclude='yes'/>
<range start='1030' end='1040' exclude='yes'/>
</portForward>
<portForward proto='udp' address='1.2.3.4' dev='eth0'>
<range start='5000' end='5020' to='6000'/>
<range start='5010' end='5015' exclude='yes'/>
</portForward>
<portForward proto='tcp'>
<range start='80'/>
</portForward>
<portForward proto='tcp'>
<range start='443' to='344'/>
</portForward>
<model type='rtl8139'/>
<backend type='passt' logFile='/var/log/loglaw.blog' upstream='eth42'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</interface>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<audio id='1' type='none'/>
<memballoon model='none'/>
</devices>
</domain>