namespace rng = "http://relaxng.org/ns/structure/1.0" namespace xsd = "http://www/w3/org/2001/XMLSchema-datatypes" namespace xml = "http://www.w3.org/XML/1998/namespace" namespace cal = "http://example.org/ns/cal" default namespace = "http://example.org/ns/dhcp" start = element-dhcp element-dhcp = element dhcp { global-timer-elements, element-subnet*, element-shared-network* } global-timer-elements = ( element default-lease-time { xsd:unsignedInt }?, element max-lease-time { xsd:unsignedInt }? ) element-shared-network = element shared-network { attribute name { token }, element-subnet+ } element-subnet = element subnet { element-network, element-prefix-length, element-range?, element-dhcp-options?, element max-lease-time { xsd:unsignedInt }?, element leases { element-lease* }?, element-interface-filter? } element-network = element network { ipv4-address-content } element-prefix-length = element prefix-length { xsd:short { minInclusive = "0" maxInclusive = "32" } } element-range = element range { element dynamic-bootp { empty }?, element low { ipv4-address-content }, element high { ipv4-address-content } } element-dhcp-options = element dhcp-options { element-router-list-option?, element-domain-list-option?, element-custom-option*, element cal:timezone { token }? } element-lease = element lease { attribute ip-address { ipv4-address-content }, element starts { xsd:dateTime }, element ends { xsd:dateTime }, element mac-address { mac-address-content } } element-router-list-option = element router-list { element router { ipv4-address-content }+ } element-domain-list-option = element domain-list { element domain { token }+ } element-custom-option = element custom { attribute option { xsd:unsignedByte }, ( element ip-address { ipv4-address-content } | element string { string } ) } element-interface-filter = element interface-filter { element interface { token }+ } ipv4-address-content = xsd:token { pattern = "((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])" } mac-address-content = xsd:token { pattern = "(([0-9a-fA-F]{2}):?){5}[0-9a-fA-F]{2}" }