mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-20 11:48:28 -06:00
Update interface.rng and xml test files to match netcf 0.1.5
The RNG now supports IPv6 and bonds attached to bridges, along with some other minor tweaks. All test files from netcf have been copied to the test directory and added to the xml2xml and schema tests (and they all pass, of course ;-)
This commit is contained in:
parent
0022995555
commit
77dd67087b
@ -1,7 +1,13 @@
|
||||
<!-- A Relax NG schema for network interfaces -->
|
||||
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
|
||||
xmlns:v="http://netcf.org/xml/version/1.0"
|
||||
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
||||
<start>
|
||||
<!-- Versions for this schema are simple integers that are incremented
|
||||
everytime a changed (but backwards compatible) version
|
||||
is released. The current version is indicated with the v:serial
|
||||
attribute on the start element.
|
||||
-->
|
||||
<start v:serial="4">
|
||||
<choice>
|
||||
<ref name="ethernet-interface"/>
|
||||
<ref name="bridge-interface"/>
|
||||
@ -109,12 +115,17 @@
|
||||
<ref name="on-or-off"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
<oneOrMore>
|
||||
<!-- Bridge forward delay (see 'brctl setfd') -->
|
||||
<optional v:since="2">
|
||||
<attribute name="delay"><ref name="timeval"/></attribute>
|
||||
</optional>
|
||||
<zeroOrMore>
|
||||
<choice>
|
||||
<ref name="bare-ethernet-interface"/>
|
||||
<ref name="bare-vlan-interface"/>
|
||||
<ref v:since="2" name="bare-bond-interface"/>
|
||||
</choice>
|
||||
</oneOrMore>
|
||||
</zeroOrMore>
|
||||
</element>
|
||||
</element>
|
||||
</define>
|
||||
@ -125,15 +136,14 @@
|
||||
<!--
|
||||
Bonds
|
||||
-->
|
||||
<define name="bond-interface">
|
||||
<element name="interface">
|
||||
<define name="bond-interface-common">
|
||||
<attribute name="type">
|
||||
<value>bond</value>
|
||||
</attribute>
|
||||
<ref name="name-attr"/>
|
||||
<ref name="startmode"/>
|
||||
<ref name="mtu"/>
|
||||
<ref name="interface-addressing"/>
|
||||
</define>
|
||||
|
||||
<define name="bond-element">
|
||||
<element name="bond">
|
||||
<optional>
|
||||
<attribute name="mode">
|
||||
@ -209,6 +219,22 @@
|
||||
<ref name="bare-ethernet-interface"/>
|
||||
</oneOrMore>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="bare-bond-interface">
|
||||
<element name="interface">
|
||||
<ref name="bond-interface-common"/>
|
||||
<ref name="bond-element"/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="bond-interface">
|
||||
<element name="interface">
|
||||
<ref name="bond-interface-common"/>
|
||||
<ref name="startmode"/>
|
||||
<ref name="mtu"/>
|
||||
<ref name="interface-addressing"/>
|
||||
<ref name="bond-element"/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
@ -245,32 +271,33 @@
|
||||
different protocols
|
||||
-->
|
||||
<define name="interface-addressing">
|
||||
<choice>
|
||||
<group>
|
||||
<optional>
|
||||
<element name="protocol">
|
||||
<ref name="protocol-ipv4"/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional v:since="3">
|
||||
<ref name="protocol-ipv6"/>
|
||||
</optional>
|
||||
</group>
|
||||
<group>
|
||||
<optional v:since="3">
|
||||
<ref name="protocol-ipv6"/>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="protocol-ipv4"/>
|
||||
</optional>
|
||||
</group>
|
||||
</choice>
|
||||
</define>
|
||||
|
||||
<define name="protocol-ipv4">
|
||||
<element name="protocol">
|
||||
<attribute name="family">
|
||||
<value>ipv4</value>
|
||||
</attribute>
|
||||
<choice>
|
||||
<element name="dhcp">
|
||||
<optional>
|
||||
<attribute name="peerdns">
|
||||
<ref name="yes-or-no"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
</element>
|
||||
<!-- FIXME: This format should be good enough for IPv4 and IPv6, i.e.
|
||||
|
||||
ipaddr="192.168.0.5/24"
|
||||
ipaddr="2001:DB8:ABCD::1/64"
|
||||
|
||||
but will cause some backend pain
|
||||
-->
|
||||
<ref name="dhcp-element"/>
|
||||
<group>
|
||||
<element name="ip">
|
||||
<attribute name="address"><ref name="ipv4-addr"/></attribute>
|
||||
@ -285,7 +312,46 @@
|
||||
</optional>
|
||||
</group>
|
||||
</choice>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="protocol-ipv6">
|
||||
<element name="protocol">
|
||||
<attribute name="family">
|
||||
<value>ipv6</value>
|
||||
</attribute>
|
||||
<optional>
|
||||
<element name="autoconf"><empty/></element>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="dhcp-element"/>
|
||||
</optional>
|
||||
<zeroOrMore>
|
||||
<element name="ip">
|
||||
<attribute name="address"><ref name="ipv6-addr"/></attribute>
|
||||
<optional>
|
||||
<attribute name="prefix"><ref name="ipv6-prefix"/></attribute>
|
||||
</optional>
|
||||
</element>
|
||||
</zeroOrMore>
|
||||
<optional>
|
||||
<element name="route">
|
||||
<attribute name="gateway"><ref name="ipv6-addr"/></attribute>
|
||||
</element>
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="dhcp-element">
|
||||
<element name="dhcp">
|
||||
<optional>
|
||||
<attribute name="peerdns">
|
||||
<ref name="yes-or-no"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<!-- Jim Fehlig (<jfehlig@novell.com>) suggest the
|
||||
following additions to DHCP:
|
||||
|
||||
@ -342,6 +408,12 @@
|
||||
</data>
|
||||
</define>
|
||||
|
||||
<define name="timeval">
|
||||
<data type="double">
|
||||
<param name="minInclusive">0</param>
|
||||
</data>
|
||||
</define>
|
||||
|
||||
<define name='device-name'>
|
||||
<data type='string'>
|
||||
<param name="pattern">[a-zA-Z0-9_\.\-:/]+</param>
|
||||
@ -367,13 +439,27 @@
|
||||
|
||||
<define name='ipv4-addr'>
|
||||
<data type='string'>
|
||||
<param name="pattern">([0-2]?[0-9]?[0-9]\.){3}[0-2]?[0-9]?[0-9]</param>
|
||||
<param name="pattern">(((25[0-5])|(1[0-9]{2})|(2[0-4][0-9])|([0-9]{1,2}))\.){3}((25[0-5])|(1[0-9]{2})|(2[0-4][0-9])|([0-9]{1,2}))</param>
|
||||
</data>
|
||||
</define>
|
||||
|
||||
<define name='ipv4-prefix'>
|
||||
<data type='unsignedInt'>
|
||||
<param name="maxInclusive">32</param>
|
||||
</data>
|
||||
</define>
|
||||
|
||||
<!-- Based on http://blog.mes-stats.fr/2008/10/09/regex-ipv4-et-ipv6 -->
|
||||
<define name='ipv6-addr'>
|
||||
<data type='string'>
|
||||
<param name="pattern">[1-9]|[12][0-9]|3[0-2]</param>
|
||||
<!-- To understand this better, take apart the toplevel '|'s -->
|
||||
<param name="pattern">(([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((((25[0-5])|(1[0-9]{2})|(2[0-4][0-9])|([0-9]{1,2})))\.){3}(((25[0-5])|(1[0-9]{2})|(2[0-4][0-9])|([0-9]{1,2}))))|(([0-9A-Fa-f]{1,4}:){0,5}:((((25[0-5])|(1[0-9]{2})|(2[0-4][0-9])|([0-9]{1,2})))\.){3}(((25[0-5])|(1[0-9]{2})|(2[0-4][0-9])|([0-9]{1,2}))))|(::([0-9A-Fa-f]{1,4}:){0,5}((((25[0-5])|(1[0-9]{2})|(2[0-4][0-9])|([0-9]{1,2})))\.){3}(((25[0-5])|(1[0-9]{2})|(2[0-4][0-9])|([0-9]{1,2}))))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:)</param>
|
||||
</data>
|
||||
</define>
|
||||
|
||||
<define name='ipv6-prefix'>
|
||||
<data type='unsignedInt'>
|
||||
<param name="maxInclusive">128</param>
|
||||
</data>
|
||||
</define>
|
||||
|
||||
|
@ -6,7 +6,9 @@
|
||||
</protocol>
|
||||
<bond mode='active-backup'>
|
||||
<arpmon interval='100' target='192.168.50.1' validate='active'/>
|
||||
<interface type='ethernet' name='eth1'/>
|
||||
<interface type='ethernet' name='eth0'/>
|
||||
<interface type='ethernet' name='eth1'>
|
||||
</interface>
|
||||
<interface type='ethernet' name='eth0'>
|
||||
</interface>
|
||||
</bond>
|
||||
</interface>
|
||||
|
@ -6,7 +6,9 @@
|
||||
</protocol>
|
||||
<bond mode='active-backup'>
|
||||
<miimon freq='100' updelay='10' carrier='ioctl'/>
|
||||
<interface type='ethernet' name='eth1'/>
|
||||
<interface type='ethernet' name='eth0'/>
|
||||
<interface type='ethernet' name='eth1'>
|
||||
</interface>
|
||||
<interface type='ethernet' name='eth0'>
|
||||
</interface>
|
||||
</bond>
|
||||
</interface>
|
||||
|
17
tests/interfaceschemadata/bridge-bond.xml
Normal file
17
tests/interfaceschemadata/bridge-bond.xml
Normal file
@ -0,0 +1,17 @@
|
||||
<interface type='bridge' name='br0'>
|
||||
<start mode='onboot'/>
|
||||
<mtu size='1500'/>
|
||||
<bridge stp='off'>
|
||||
<interface type='ethernet' name='eth2'>
|
||||
</interface>
|
||||
<interface type='bond' name='bond0'>
|
||||
<bond mode='active-backup'>
|
||||
<miimon freq='100' updelay='10' carrier='ioctl'/>
|
||||
<interface type='ethernet' name='eth1'>
|
||||
</interface>
|
||||
<interface type='ethernet' name='eth0'>
|
||||
</interface>
|
||||
</bond>
|
||||
</interface>
|
||||
</bridge>
|
||||
</interface>
|
6
tests/interfaceschemadata/bridge-empty.xml
Normal file
6
tests/interfaceschemadata/bridge-empty.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<interface type='bridge' name='br0'>
|
||||
<start mode='onboot'/>
|
||||
<mtu size='1500'/>
|
||||
<bridge stp='off'>
|
||||
</bridge>
|
||||
</interface>
|
@ -5,6 +5,7 @@
|
||||
<interface type='ethernet' name='eth0'>
|
||||
<mac address='ab:bb:cc:dd:ee:ff'/>
|
||||
</interface>
|
||||
<interface type='ethernet' name='eth1'/>
|
||||
<interface type='ethernet' name='eth1'>
|
||||
</interface>
|
||||
</bridge>
|
||||
</interface>
|
||||
|
@ -4,10 +4,11 @@
|
||||
<protocol family='ipv4'>
|
||||
<dhcp/>
|
||||
</protocol>
|
||||
<bridge stp='off'>
|
||||
<bridge stp='off' delay='0.01'>
|
||||
<interface type='ethernet' name='eth0'>
|
||||
<mac address='ab:bb:cc:dd:ee:ff'/>
|
||||
</interface>
|
||||
<interface type='ethernet' name='eth1'/>
|
||||
<interface type='ethernet' name='eth1'>
|
||||
</interface>
|
||||
</bridge>
|
||||
</interface>
|
||||
|
@ -2,6 +2,7 @@
|
||||
<start mode='onboot'/>
|
||||
<mtu size='1500'/>
|
||||
<bridge stp='off'>
|
||||
<interface type='ethernet' name='eth42'/>
|
||||
<interface type='ethernet' name='eth42'>
|
||||
</interface>
|
||||
</bridge>
|
||||
</interface>
|
||||
|
7
tests/interfaceschemadata/ipv6-autoconf-dhcp.xml
Normal file
7
tests/interfaceschemadata/ipv6-autoconf-dhcp.xml
Normal file
@ -0,0 +1,7 @@
|
||||
<interface type='ethernet' name='eth0'>
|
||||
<start mode='onboot'/>
|
||||
<protocol family='ipv6'>
|
||||
<autoconf/>
|
||||
<dhcp/>
|
||||
</protocol>
|
||||
</interface>
|
6
tests/interfaceschemadata/ipv6-autoconf.xml
Normal file
6
tests/interfaceschemadata/ipv6-autoconf.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<interface type='ethernet' name='eth0'>
|
||||
<start mode='onboot'/>
|
||||
<protocol family='ipv6'>
|
||||
<autoconf/>
|
||||
</protocol>
|
||||
</interface>
|
6
tests/interfaceschemadata/ipv6-dhcp.xml
Normal file
6
tests/interfaceschemadata/ipv6-dhcp.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<interface type='ethernet' name='eth0'>
|
||||
<start mode='onboot'/>
|
||||
<protocol family='ipv6'>
|
||||
<dhcp/>
|
||||
</protocol>
|
||||
</interface>
|
5
tests/interfaceschemadata/ipv6-local.xml
Normal file
5
tests/interfaceschemadata/ipv6-local.xml
Normal file
@ -0,0 +1,5 @@
|
||||
<interface type='ethernet' name='eth0'>
|
||||
<start mode='onboot'/>
|
||||
<protocol family='ipv6'>
|
||||
</protocol>
|
||||
</interface>
|
8
tests/interfaceschemadata/ipv6-static-multi.xml
Normal file
8
tests/interfaceschemadata/ipv6-static-multi.xml
Normal file
@ -0,0 +1,8 @@
|
||||
<interface type='ethernet' name='eth0'>
|
||||
<start mode='onboot'/>
|
||||
<protocol family='ipv6'>
|
||||
<ip address='3ffe:ffff:0:5::1' prefix='128'/>
|
||||
<ip address='3ffe:ffff:0:5::3' prefix='128'/>
|
||||
<ip address='3ffe:ffff:0:5::5' prefix='128'/>
|
||||
</protocol>
|
||||
</interface>
|
7
tests/interfaceschemadata/ipv6-static.xml
Normal file
7
tests/interfaceschemadata/ipv6-static.xml
Normal file
@ -0,0 +1,7 @@
|
||||
<interface type='ethernet' name='eth0'>
|
||||
<start mode='onboot'/>
|
||||
<protocol family='ipv6'>
|
||||
<ip address='3ffe:ffff:0:5::1' prefix='128'/>
|
||||
<route gateway='3ffe:ffff:1234:5678::1'/>
|
||||
</protocol>
|
||||
</interface>
|
@ -83,11 +83,20 @@ mymain(int argc, char **argv)
|
||||
DO_TEST("ethernet-static-no-prefix");
|
||||
DO_TEST("bridge");
|
||||
DO_TEST("bridge42");
|
||||
DO_TEST("bridge-bond");
|
||||
DO_TEST("bridge-empty");
|
||||
DO_TEST("bridge-no-address");
|
||||
DO_TEST("bridge-vlan");
|
||||
DO_TEST("bridge-no-address");
|
||||
DO_TEST("vlan");
|
||||
DO_TEST("bond");
|
||||
DO_TEST("bond-arp");
|
||||
DO_TEST("ipv6-autoconf-dhcp");
|
||||
DO_TEST("ipv6-autoconf");
|
||||
DO_TEST("ipv6-dhcp");
|
||||
DO_TEST("ipv6-local");
|
||||
DO_TEST("ipv6-static-multi");
|
||||
DO_TEST("ipv6-static");
|
||||
|
||||
return (ret==0 ? EXIT_SUCCESS : EXIT_FAILURE);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user