Hi, I wrote up a basic Relax NG schema for the network XML. It would be nice if those who know these things could look over/expand on the comments on what the various elements do. David
<!-- A Relax NG schema for the libvirt network XML format --> <element name="network" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> <!-- The name of the network, used to refer to it through the API and in virsh --> <element name="name"><text/></element> <optional> <element name="uuid"><text/></element> </optional> <optional> <!-- The name of the network to be set up; this will back the network on the host --> <element name="bridge"> <optional> <attribute name="name"><text/></attribute> </optional> <optional> <attribute name="stp"> <choice> <value>on</value> <value>off</value> </choice> </attribute> </optional> <optional> <attribute name="delay"><data type="integer"/></attribute> </optional> </element> </optional> <optional> <!-- The IP element sets up NAT'ing and an optional DHCP server local to the host. --> <!-- FIXME: address, netmask and the start and end of the ranges are IP addresses, and should be validated as such in the scheme --> <element name="ip"> <optional> <attribute name="address"><text/></attribute> </optional> <optional> <attribute name="netmask"><text/></attribute> </optional> <!-- Define the range(s) of IP addresses that the DHCP server should hand out --> <element name="dhcp"> <zeroOrMore> <element name="range"> <attribute name="start"><text/></attribute> <attribute name="end"><text/></attribute> </element> </zeroOrMore> </element> </element> </optional> <optional> <!-- The device through which the bridge is connected to the rest of the network --> <element name="forward"> <optional><attribute name="dev"><text/></attribute></optional> </element> </optional> </element>