diff options
author | Isaku Yamahata <yamahata@valinux.co.jp> | 2013-03-07 18:00:45 +0900 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2013-03-08 07:20:58 +0900 |
commit | df5de86b1f53cb9170c0982444b6f573d3211819 (patch) | |
tree | e0cb37bffc65172ae844b8fbd1a38dd0a56d4568 | |
parent | cf8520eefc7e2c852e01e76b927196053fc4751b (diff) |
of_config: import XML schema files for OF config.
Import XML schema files for OF config. They are stolen from flowflowarding of_config.
NOTE: They adds operation attribute where they accepts.
When we supports another OF-config capable switch, they needs to be updated.
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r-- | ryu/lib/of_config/README.rst | 7 | ||||
-rw-r--r-- | ryu/lib/of_config/ietf-inet-types.xsd | 389 | ||||
-rw-r--r-- | ryu/lib/of_config/ietf-yang-types.xsd | 408 | ||||
-rw-r--r-- | ryu/lib/of_config/of-config-1.0.xsd | 432 | ||||
-rw-r--r-- | ryu/lib/of_config/of-config-1.1.1.xsd | 2009 | ||||
-rw-r--r-- | ryu/lib/of_config/of-config-1.1.xsd | 738 | ||||
-rw-r--r-- | ryu/lib/of_config/xmldsig-core-schema.xsd | 318 |
7 files changed, 4301 insertions, 0 deletions
diff --git a/ryu/lib/of_config/README.rst b/ryu/lib/of_config/README.rst new file mode 100644 index 00000000..68734f76 --- /dev/null +++ b/ryu/lib/of_config/README.rst @@ -0,0 +1,7 @@ +XML schema for OFConfig +======================= +Those files of XML schema for OFConfig are stolen from LINC. +It supports only part of it so that its schema files are limited as operation +attributes are allowed only in several places. +Once tested with other OFConfig switches , the schema files should be updasted +to allow more operation attribute. diff --git a/ryu/lib/of_config/ietf-inet-types.xsd b/ryu/lib/of_config/ietf-inet-types.xsd new file mode 100644 index 00000000..1acb9290 --- /dev/null +++ b/ryu/lib/of_config/ietf-inet-types.xsd @@ -0,0 +1,389 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" + xmlns:yin="urn:ietf:params:xml:schema:yang:yin:1" + targetNamespace="urn:ietf:params:xml:ns:yang:ietf-inet-types" + xmlns="urn:ietf:params:xml:ns:yang:ietf-inet-types" + elementFormDefault="qualified" + attributeFormDefault="unqualified" + version="2010-09-24" + xml:lang="en" + xmlns:inet="urn:ietf:params:xml:ns:yang:ietf-inet-types"> + + <xs:annotation> + <xs:documentation> + This schema was generated from the YANG module ietf-inet-types + by pyang version 1.0. + + The schema describes an instance document consisting + of the entire configuration data store, operational + data, rpc operations, and notifications. + This schema can thus NOT be used as-is to + validate NETCONF PDUs. + </xs:documentation> + </xs:annotation> + + <xs:annotation> + <xs:documentation> + This module contains a collection of generally useful derived + YANG data types for Internet addresses and related things. + + Copyright (c) 2010 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, is permitted pursuant to, and subject to the license + terms contained in, the Simplified BSD License set forth in Section + 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents + (http://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 6021; see + the RFC itself for full legal notices. + </xs:documentation> + </xs:annotation> + + <!-- YANG typedefs --> + + <xs:simpleType name="ip-version"> + <xs:annotation> + <xs:documentation> + This value represents the version of the IP protocol. + + In the value set and its semantics, this type is equivalent + to the InetVersion textual convention of the SMIv2. + </xs:documentation> + </xs:annotation> + + <xs:restriction base="xs:string"> + <xs:enumeration value="unknown"/> + <xs:enumeration value="ipv4"/> + <xs:enumeration value="ipv6"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="dscp"> + <xs:annotation> + <xs:documentation> + The dscp type represents a Differentiated Services Code-Point + that may be used for marking packets in a traffic stream. + + In the value set and its semantics, this type is equivalent + to the Dscp textual convention of the SMIv2. + </xs:documentation> + </xs:annotation> + + <xs:restriction base="xs:unsignedByte"> + <xs:minInclusive value="0"/> + <xs:maxInclusive value="63"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="ipv6-flow-label"> + <xs:annotation> + <xs:documentation> + The flow-label type represents flow identifier or Flow Label + in an IPv6 packet header that may be used to discriminate + traffic flows. + + In the value set and its semantics, this type is equivalent + to the IPv6FlowLabel textual convention of the SMIv2. + </xs:documentation> + </xs:annotation> + + <xs:restriction base="xs:unsignedInt"> + <xs:minInclusive value="0"/> + <xs:maxInclusive value="1048575"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="port-number"> + <xs:annotation> + <xs:documentation> + The port-number type represents a 16-bit port number of an + Internet transport layer protocol such as UDP, TCP, DCCP, or + SCTP. Port numbers are assigned by IANA. A current list of + all assignments is available from <http://www.iana.org/>. + + Note that the port number value zero is reserved by IANA. In + situations where the value zero does not make sense, it can + be excluded by subtyping the port-number type. + + In the value set and its semantics, this type is equivalent + to the InetPortNumber textual convention of the SMIv2. + </xs:documentation> + </xs:annotation> + + <xs:restriction base="xs:unsignedShort"> + <xs:minInclusive value="0"/> + <xs:maxInclusive value="65535"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="as-number"> + <xs:annotation> + <xs:documentation> + The as-number type represents autonomous system numbers + which identify an Autonomous System (AS). An AS is a set + of routers under a single technical administration, using + an interior gateway protocol and common metrics to route + packets within the AS, and using an exterior gateway + protocol to route packets to other ASs'. IANA maintains + the AS number space and has delegated large parts to the + regional registries. + + Autonomous system numbers were originally limited to 16 + bits. BGP extensions have enlarged the autonomous system + number space to 32 bits. This type therefore uses an uint32 + base type without a range restriction in order to support + a larger autonomous system number space. + + In the value set and its semantics, this type is equivalent + to the InetAutonomousSystemNumber textual convention of + the SMIv2. + </xs:documentation> + </xs:annotation> + + <xs:restriction base="xs:unsignedInt"> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="ip-address"> + <xs:annotation> + <xs:documentation> + The ip-address type represents an IP address and is IP + version neutral. The format of the textual representations + implies the IP version. + </xs:documentation> + </xs:annotation> + + <xs:union memberTypes="inet:ipv4-address inet:ipv6-address"> + </xs:union> + </xs:simpleType> + + <xs:simpleType name="ipv4-address"> + <xs:annotation> + <xs:documentation> + The ipv4-address type represents an IPv4 address in + dotted-quad notation. The IPv4 address may include a zone + index, separated by a % sign. + + The zone index is used to disambiguate identical address + values. For link-local addresses, the zone index will + typically be the interface index number or the name of an + interface. If the zone index is not present, the default + zone of the device will be used. + + The canonical format for the zone index is the numerical + format + </xs:documentation> + </xs:annotation> + + <xs:restriction base="xs:string"> + <xs:pattern value="(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\p{N}\p{L}]+)?"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="ipv6-address"> + <xs:annotation> + <xs:documentation> + The ipv6-address type represents an IPv6 address in full, + mixed, shortened, and shortened-mixed notation. The IPv6 + address may include a zone index, separated by a % sign. + + The zone index is used to disambiguate identical address + values. For link-local addresses, the zone index will + typically be the interface index number or the name of an + interface. If the zone index is not present, the default + zone of the device will be used. + + The canonical format of IPv6 addresses uses the compressed + format described in RFC 4291, Section 2.2, item 2 with the + following additional rules: the :: substitution must be + applied to the longest sequence of all-zero 16-bit chunks + in an IPv6 address. If there is a tie, the first sequence + of all-zero 16-bit chunks is replaced by ::. Single + all-zero 16-bit chunks are not compressed. The canonical + format uses lowercase characters and leading zeros are + not allowed. The canonical format for the zone index is + the numerical format as described in RFC 4007, Section + 11.2. + </xs:documentation> + </xs:annotation> + + <xs:restriction base="xs:string"> + <xs:pattern value="(((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\p{N}\p{L}]+)?)|((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(%.+)?)"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="ip-prefix"> + <xs:annotation> + <xs:documentation> + The ip-prefix type represents an IP prefix and is IP + version neutral. The format of the textual representations + implies the IP version. + </xs:documentation> + </xs:annotation> + + <xs:union memberTypes="inet:ipv4-prefix inet:ipv6-prefix"> + </xs:union> + </xs:simpleType> + + <xs:simpleType name="ipv4-prefix"> + <xs:annotation> + <xs:documentation> + The ipv4-prefix type represents an IPv4 address prefix. + The prefix length is given by the number following the + slash character and must be less than or equal to 32. + + A prefix length value of n corresponds to an IP address + mask that has n contiguous 1-bits from the most + significant bit (MSB) and all other bits set to 0. + + The canonical format of an IPv4 prefix has all bits of + the IPv4 address set to zero that are not part of the + IPv4 prefix. + </xs:documentation> + </xs:annotation> + + <xs:restriction base="xs:string"> + <xs:pattern value="(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])/(([0-9])|([1-2][0-9])|(3[0-2]))"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="ipv6-prefix"> + <xs:annotation> + <xs:documentation> + The ipv6-prefix type represents an IPv6 address prefix. + The prefix length is given by the number following the + slash character and must be less than or equal 128. + + A prefix length value of n corresponds to an IP address + mask that has n contiguous 1-bits from the most + significant bit (MSB) and all other bits set to 0. + + The IPv6 address should have all bits that do not belong + to the prefix set to zero. + + The canonical format of an IPv6 prefix has all bits of + the IPv6 address set to zero that are not part of the + IPv6 prefix. Furthermore, IPv6 address is represented + in the compressed format described in RFC 4291, Section + 2.2, item 2 with the following additional rules: the :: + substitution must be applied to the longest sequence of + all-zero 16-bit chunks in an IPv6 address. If there is + a tie, the first sequence of all-zero 16-bit chunks is + replaced by ::. Single all-zero 16-bit chunks are not + compressed. The canonical format uses lowercase + characters and leading zeros are not allowed. + </xs:documentation> + </xs:annotation> + + <xs:restriction base="xs:string"> + <xs:pattern value="(((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8]))))|((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(/.+))"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="domain-name"> + <xs:annotation> + <xs:documentation> + The domain-name type represents a DNS domain name. The + name SHOULD be fully qualified whenever possible. + + Internet domain names are only loosely specified. Section + 3.5 of RFC 1034 recommends a syntax (modified in Section + 2.1 of RFC 1123). The pattern above is intended to allow + for current practice in domain name use, and some possible + future expansion. It is designed to hold various types of + domain names, including names used for A or AAAA records + (host names) and other records, such as SRV records. Note + that Internet host names have a stricter syntax (described + in RFC 952) than the DNS recommendations in RFCs 1034 and + 1123, and that systems that want to store host names in + schema nodes using the domain-name type are recommended to + adhere to this stricter standard to ensure interoperability. + + The encoding of DNS names in the DNS protocol is limited + to 255 characters. Since the encoding consists of labels + prefixed by a length bytes and there is a trailing NULL + byte, only 253 characters can appear in the textual dotted + notation. + + The description clause of schema nodes using the domain-name + type MUST describe when and how these names are resolved to + IP addresses. Note that the resolution of a domain-name value + may require to query multiple DNS records (e.g., A for IPv4 + and AAAA for IPv6). The order of the resolution process and + which DNS record takes precedence can either be defined + explicitely or it may depend on the configuration of the + resolver. + + Domain-name values use the US-ASCII encoding. Their canonical + format uses lowercase US-ASCII characters. Internationalized + domain names MUST be encoded in punycode as described in RFC + 3492 + </xs:documentation> + </xs:annotation> + + <xs:restriction base="t0"> + <xs:minLength value="1"/> + <xs:maxLength value="253"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="host"> + <xs:annotation> + <xs:documentation> + The host type represents either an IP address or a DNS + domain name. + </xs:documentation> + </xs:annotation> + + <xs:union memberTypes="inet:ip-address inet:domain-name"> + </xs:union> + </xs:simpleType> + + <xs:simpleType name="uri"> + <xs:annotation> + <xs:documentation> + The uri type represents a Uniform Resource Identifier + (URI) as defined by STD 66. + + Objects using the uri type MUST be in US-ASCII encoding, + and MUST be normalized as described by RFC 3986 Sections + 6.2.1, 6.2.2.1, and 6.2.2.2. All unnecessary + percent-encoding is removed, and all case-insensitive + characters are set to lowercase except for hexadecimal + digits, which are normalized to uppercase as described in + Section 6.2.2.1. + + The purpose of this normalization is to help provide + unique URIs. Note that this normalization is not + sufficient to provide uniqueness. Two URIs that are + textually distinct after this normalization may still be + equivalent. + + Objects using the uri type may restrict the schemes that + they permit. For example, 'data:' and 'urn:' schemes + might not be appropriate. + + A zero-length URI is not a valid URI. This can be used to + express 'URI absent' where required. + + In the value set and its semantics, this type is equivalent + to the Uri SMIv2 textual convention defined in RFC 5017. + </xs:documentation> + </xs:annotation> + + <xs:restriction base="xs:string"> + </xs:restriction> + </xs:simpleType> + + + <!-- locally generated simpleType helpers --> + + <xs:simpleType name="t0"> + <xs:restriction base="xs:string"> + <xs:pattern value="((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)|\."/> + </xs:restriction> + </xs:simpleType> + +</xs:schema> diff --git a/ryu/lib/of_config/ietf-yang-types.xsd b/ryu/lib/of_config/ietf-yang-types.xsd new file mode 100644 index 00000000..4d9caa19 --- /dev/null +++ b/ryu/lib/of_config/ietf-yang-types.xsd @@ -0,0 +1,408 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" + xmlns:yin="urn:ietf:params:xml:schema:yang:yin:1" + targetNamespace="urn:ietf:params:xml:ns:yang:ietf-yang-types" + xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-types" + elementFormDefault="qualified" + attributeFormDefault="unqualified" + version="2010-09-24" + xml:lang="en" + xmlns:yang="urn:ietf:params:xml:ns:yang:ietf-yang-types"> + + <xs:annotation> + <xs:documentation> + This schema was generated from the YANG module ietf-yang-types + by pyang version 1.0. + + The schema describes an instance document consisting + of the entire configuration data store, operational + data, rpc operations, and notifications. + This schema can thus NOT be used as-is to + validate NETCONF PDUs. + </xs:documentation> + </xs:annotation> + + <xs:annotation> + <xs:documentation> + This module contains a collection of generally useful derived + YANG data types. + + Copyright (c) 2010 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, is permitted pursuant to, and subject to the license + terms contained in, the Simplified BSD License set forth in Section + 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents + (http://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 6021; see + the RFC itself for full legal notices. + </xs:documentation> + </xs:annotation> + + <!-- YANG typedefs --> + + <xs:simpleType name="counter32"> + <xs:annotation> + <xs:documentation> + The counter32 type represents a non-negative integer + that monotonically increases until it reaches a + maximum value of 2^32-1 (4294967295 decimal), when it + wraps around and starts increasing again from zero. + + Counters have no defined 'initial' value, and thus, a + single value of a counter has (in general) no information + content. Discontinuities in the monotonically increasing + value normally occur at re-initialization of the + management system, and at other times as specified in the + description of a schema node using this type. If such + other times can occur, for example, the creation of + a schema node of type counter32 at times other than + re-initialization, then a corresponding schema node + should be defined, with an appropriate type, to indicate + the last discontinuity. + + The counter32 type should not be used for configuration + schema nodes. A default statement SHOULD NOT be used in + combination with the type counter32. + + In the value set and its semantics, this type is equivalent + to the Counter32 type of the SMIv2. + </xs:documentation> + </xs:annotation> + + <xs:restriction base="xs:unsignedInt"> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="zero-based-counter32"> + <xs:annotation> + <xs:documentation> + The zero-based-counter32 type represents a counter32 + that has the defined 'initial' value zero. + + A schema node of this type will be set to zero (0) on creation + and will thereafter increase monotonically until it reaches + a maximum value of 2^32-1 (4294967295 decimal), when it + wraps around and starts increasing again from zero. + + Provided that an application discovers a new schema node + of this type within the minimum time to wrap, it can use the + 'initial' value as a delta. It is important for a management + station to be aware of this minimum time and the actual time + between polls, and to discard data if the actual time is too + long or there is no defined minimum time. + + In the value set and its semantics, this type is equivalent + to the ZeroBasedCounter32 textual convention of the SMIv2. + </xs:documentation> + </xs:annotation> + + <xs:restriction base="yang:counter32"> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="counter64"> + <xs:annotation> + <xs:documentation> + The counter64 type represents a non-negative integer + that monotonically increases until it reaches a + maximum value of 2^64-1 (18446744073709551615 decimal), + when it wraps around and starts increasing again from zero. + + Counters have no defined 'initial' value, and thus, a + single value of a counter has (in general) no information + content. Discontinuities in the monotonically increasing + value normally occur at re-initialization of the + management system, and at other times as specified in the + description of a schema node using this type. If such + other times can occur, for example, the creation of + a schema node of type counter64 at times other than + re-initialization, then a corresponding schema node + should be defined, with an appropriate type, to indicate + the last discontinuity. + + The counter64 type should not be used for configuration + schema nodes. A default statement SHOULD NOT be used in + combination with the type counter64. + + In the value set and its semantics, this type is equivalent + to the Counter64 type of the SMIv2. + </xs:documentation> + </xs:annotation> + + <xs:restriction base="xs:unsignedLong"> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="zero-based-counter64"> + <xs:annotation> + <xs:documentation> + The zero-based-counter64 type represents a counter64 that + has the defined 'initial' value zero. + + A schema node of this type will be set to zero (0) on creation + and will thereafter increase monotonically until it reaches + a maximum value of 2^64-1 (18446744073709551615 decimal), + when it wraps around and starts increasing again from zero. + + Provided that an application discovers a new schema node + of this type within the minimum time to wrap, it can use the + 'initial' value as a delta. It is important for a management + station to be aware of this minimum time and the actual time + between polls, and to discard data if the actual time is too + long or there is no defined minimum time. + + In the value set and its semantics, this type is equivalent + to the ZeroBasedCounter64 textual convention of the SMIv2. + </xs:documentation> + </xs:annotation> + + <xs:restriction base="yang:counter64"> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="gauge32"> + <xs:annotation> + <xs:documentation> + The gauge32 type represents a non-negative integer, which + may increase or decrease, but shall never exceed a maximum + value, nor fall below a minimum value. The maximum value + cannot be greater than 2^32-1 (4294967295 decimal), and + the minimum value cannot be smaller than 0. The value of + a gauge32 has its maximum value whenever the information + being modeled is greater than or equal to its maximum + value, and has its minimum value whenever the information + being modeled is smaller than or equal to its minimum value. + If the information being modeled subsequently decreases + below (increases above) the maximum (minimum) value, the + gauge32 also decreases (increases). + + In the value set and its semantics, this type is equivalent + to the Gauge32 type of the SMIv2. + </xs:documentation> + </xs:annotation> + + <xs:restriction base="xs:unsignedInt"> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="gauge64"> + <xs:annotation> + <xs:documentation> + The gauge64 type represents a non-negative integer, which + may increase or decrease, but shall never exceed a maximum + value, nor fall below a minimum value. The maximum value + cannot be greater than 2^64-1 (18446744073709551615), and + the minimum value cannot be smaller than 0. The value of + a gauge64 has its maximum value whenever the information + being modeled is greater than or equal to its maximum + value, and has its minimum value whenever the information + being modeled is smaller than or equal to its minimum value. + If the information being modeled subsequently decreases + below (increases above) the maximum (minimum) value, the + gauge64 also decreases (increases). + + In the value set and its semantics, this type is equivalent + to the CounterBasedGauge64 SMIv2 textual convention defined + in RFC 2856 + </xs:documentation> + </xs:annotation> + + <xs:restriction base="xs:unsignedLong"> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="object-identifier"> + <xs:annotation> + <xs:documentation> + The object-identifier type represents administratively + assigned names in a registration-hierarchical-name tree. + + Values of this type are denoted as a sequence of numerical + non-negative sub-identifier values. Each sub-identifier + value MUST NOT exceed 2^32-1 (4294967295). Sub-identifiers + are separated by single dots and without any intermediate + whitespace. + + The ASN.1 standard restricts the value space of the first + sub-identifier to 0, 1, or 2. Furthermore, the value space + of the second sub-identifier is restricted to the range + 0 to 39 if the first sub-identifier is 0 or 1. Finally, + the ASN.1 standard requires that an object identifier + has always at least two sub-identifier. The pattern + captures these restrictions. + + Although the number of sub-identifiers is not limited, + module designers should realize that there may be + implementations that stick with the SMIv2 limit of 128 + sub-identifiers. + + This type is a superset of the SMIv2 OBJECT IDENTIFIER type + since it is not restricted to 128 sub-identifiers. Hence, + this type SHOULD NOT be used to represent the SMIv2 OBJECT + IDENTIFIER type, the object-identifier-128 type SHOULD be + used instead. + </xs:documentation> + </xs:annotation> + + <xs:restriction base="xs:string"> + <xs:pattern value="(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))(\.(0|([1-9]\d*)))*"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="object-identifier-128"> + <xs:annotation> + <xs:documentation> + This type represents object-identifiers restricted to 128 + sub-identifiers. + + In the value set and its semantics, this type is equivalent + to the OBJECT IDENTIFIER type of the SMIv2. + </xs:documentation> + </xs:annotation> + + <xs:restriction base="object-identifier"> + <xs:pattern value="\d*(\.\d*){1,127}"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="date-and-time"> + <xs:annotation> + <xs:documentation> + The date-and-time type is a profile of the ISO 8601 + standard for representation of dates and times using the + Gregorian calendar. The profile is defined by the + date-time production in Section 5.6 of RFC 3339. + + The date-and-time type is compatible with the dateTime XML + schema type with the following notable exceptions: + + (a) The date-and-time type does not allow negative years. + + (b) The date-and-time time-offset -00:00 indicates an unknown + time zone (see RFC 3339) while -00:00 and +00:00 and Z all + represent the same time zone in dateTime. + + (c) The canonical format (see below) of data-and-time values + differs from the canonical format used by the dateTime XML + schema type, which requires all times to be in UTC using the + time-offset 'Z'. + + This type is not equivalent to the DateAndTime textual + convention of the SMIv2 since RFC 3339 uses a different + separator between full-date and full-time and provides + higher resolution of time-secfrac. + + The canonical format for date-and-time values with a known time + zone uses a numeric time zone offset that is calculated using + the device's configured known offset to UTC time. A change of + the device's offset to UTC time will cause date-and-time values + to change accordingly. Such changes might happen periodically + in case a server follows automatically daylight saving time + (DST) time zone offset changes. The canonical format for + date-and-time values with an unknown time zone (usually referring + to the notion of local time) uses the time-offset -00:00. + </xs:documentation> + </xs:annotation> + + <xs:restriction base="xs:string"> + <xs:pattern value="\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[\+\-]\d{2}:\d{2})"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="timeticks"> + <xs:annotation> + <xs:documentation> + The timeticks type represents a non-negative integer that + represents the time, modulo 2^32 (4294967296 decimal), in + hundredths of a second between two epochs. When a schema + node is defined that uses this type, the description of + the schema node identifies both of the reference epochs. + + In the value set and its semantics, this type is equivalent + to the TimeTicks type of the SMIv2. + </xs:documentation> + </xs:annotation> + + <xs:restriction base="xs:unsignedInt"> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="timestamp"> + <xs:annotation> + <xs:documentation> + The timestamp type represents the value of an associated + timeticks schema node at which a specific occurrence happened. + The specific occurrence must be defined in the description + of any schema node defined using this type. When the specific + occurrence occurred prior to the last time the associated + timeticks attribute was zero, then the timestamp value is + zero. Note that this requires all timestamp values to be + reset to zero when the value of the associated timeticks + attribute reaches 497+ days and wraps around to zero. + + The associated timeticks schema node must be specified + in the description of any schema node using this type. + + In the value set and its semantics, this type is equivalent + to the TimeStamp textual convention of the SMIv2. + </xs:documentation> + </xs:annotation> + + <xs:restriction base="yang:timeticks"> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="phys-address"> + <xs:annotation> + <xs:documentation> + Represents media- or physical-level addresses represented + as a sequence octets, each octet represented by two hexadecimal + numbers. Octets are separated by colons. The canonical + representation uses lowercase characters. + + In the value set and its semantics, this type is equivalent + to the PhysAddress textual convention of the SMIv2. + </xs:documentation> + </xs:annotation> + + <xs:restriction base="xs:string"> + <xs:pattern value="([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="mac-address"> + <xs:annotation> + <xs:documentation> + The mac-address type represents an IEEE 802 MAC address. + The canonical representation uses lowercase characters. + + In the value set and its semantics, this type is equivalent + to the MacAddress textual convention of the SMIv2. + </xs:documentation> + </xs:annotation> + + <xs:restriction base="xs:string"> + <xs:pattern value="[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="xpath1.0"> + <xs:annotation> + <xs:documentation> + This type represents an XPATH 1.0 expression. + + When a schema node is defined that uses this type, the + description of the schema node MUST specify the XPath + context in which the XPath expression is evaluated. + </xs:documentation> + </xs:annotation> + + <xs:restriction base="xs:string"> + </xs:restriction> + </xs:simpleType> + + +</xs:schema> diff --git a/ryu/lib/of_config/of-config-1.0.xsd b/ryu/lib/of_config/of-config-1.0.xsd new file mode 100644 index 00000000..baf12587 --- /dev/null +++ b/ryu/lib/of_config/of-config-1.0.xsd @@ -0,0 +1,432 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" + elementFormDefault="qualified" + targetNamespace="urn:onf:params:xml:ns:onf:of12:config" + xmlns="urn:onf:params:xml:ns:onf:of12:config" + xmlns:of12-config="urn:onf:params:xml:ns:onf:of12:config" + xmlns:inet="urn:ietf:params:xml:ns:yang:ietf-inet-types"> + <xs:import namespace="urn:ietf:params:xml:ns:yang:ietf-inet-types" + schemaLocation="ietf-inet-types.xsd"/> + <xs:element name="capable-switch" type="OFCapableSwitchType"> + <xs:annotation> + <xs:documentation>The OpenFlow Capable Switch and its configuration points, logical + switches and resources available to logical switches. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:simpleType name="OFConfigID"> + <xs:restriction base="xs:string"/> + </xs:simpleType> + <xs:complexType name="OFCapableSwitchType"> + <xs:annotation> + <xs:documentation>Representation of an OpenFlow Capable Switch.</xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="id" type="OFConfigID"> + <xs:annotation> + <xs:documentation>An unique but locally arbitrary identifier that identifies a + Capable Switch towards management systems and that is persistent across + reboots of the system. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="configuration-points" type="OFConfigurationPointListType"> + <xs:annotation> + <xs:documentation>The list of all configuration points known to the OpenFlow + Capable Switch that may manage it using OF-CONFIG. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="resources" type="OFCapableSwitchResourceListType"> + <xs:annotation> + <xs:documentation>This element contains lists of all resources of the OpenFlow + Capable Switch that can be used by OpenFlow Logical Switches. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="logical-switches" type="OFLogicalSwitchListType"> + <xs:annotation> + <xs:documentation>List of all OpenFlow Logical Switches available on the + OpenFlow Capable Switch. </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:complexType name="OFConfigurationPointListType"> + <xs:annotation> + <xs:documentation/> + </xs:annotation> + <xs:sequence> + <xs:element name="configuration-point" type="OFConfigurationPointType" + maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="OFCapableSwitchResourceListType"> + <xs:sequence> + <xs:element name="port" type="OFPortType" maxOccurs="unbounded"/> + <xs:element name="queue" type="OFQueueType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="OFLogicalSwitchListType"> + <xs:sequence> + <xs:element name="logical-switch" type="OFLogicalSwitchType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="OFConfigurationPointType"> + <xs:annotation> + <xs:documentation>Representation of an OpenFlow Configuration Point. </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="id" type="OFConfigID"> + <xs:annotation> + <xs:documentation>An identifier that identifies a Configuration Point of the + OpenFlow Capable Switch. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="uri" type="inet:uri"> + <xs:annotation> + <xs:documentation>A locator of the Configuration Point. This element MAY contain + a locator of the configuration point including, for example, an IP address + and a port number. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="protocol" type="OFConfigurationPointProtocolType"> + <xs:annotation> + <xs:documentation>The transport protocol that the Configuration Point uses when + communicating via NETCONF with the OpenFlow Capable Switch. + </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:simpleType name="OFConfigurationPointProtocolType"> + <xs:annotation> + <xs:documentation>The mappings of NETCONF to different transport protocols are defined + in RFC 6242 for SSH, RFC 4743 for SOAP, RFC 4744 for BEEP, and RFC 5539 for TLS. + </xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:enumeration value="ssh"/> + <xs:enumeration value="soap"/> + <xs:enumeration value="tls"/> + <xs:enumeration value="beep"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="OFLogicalSwitchType"> + <xs:annotation> + <xs:documentation>The representation of an OpenFlow Logical Switch </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="id" type="OFConfigID"> + <xs:annotation> + <xs:documentation>An unique but locally arbitrary identifier that identifies an + OpenFlow Logical Switch within an OpenFlow Capable Switch. It is persistent + across reboots of the system. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="datapath-id" type="OFConfigID"> + <xs:annotation> + <xs:documentation>A unique identifier that identifiers an OpenFlow Logical + Switch within the context of an OpenFlow Controller. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="enabled" type="xs:boolean"/> + <xs:element name="lost-connection-behavior" + type="OFLogicalSwitchLostConnnectionBehavior"/> + <xs:element name="controllers" type="OFControllerListType"> + <xs:annotation> + <xs:documentation>The list of controllers that are assigned to the OpenFlow + Logical Switch. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="resources" type="OFLogicalSwitchResourceListType"> + <xs:annotation> + <xs:documentation>The list of references to all resources of the OpenFlow + Capable Switch that the OpenFlow Logical Switch has exclusive access to. + </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:simpleType name="OFLogicalSwitchLostConnnectionBehavior"> + <xs:restriction base="xs:string"> + <xs:enumeration value="failSecureMode"/> + <xs:enumeration value="failStandaloneMode"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="OFControllerListType"> + <xs:sequence> + <xs:element name="controller" type="OFControllerType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="OFLogicalSwitchResourceListType"> + <xs:sequence> + <xs:element name="port" type="OFConfigID" maxOccurs="unbounded"/> + <xs:element name="queue" type="OFConfigID" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="OFControllerType"> + <xs:annotation> + <xs:documentation>Representation of an OpenFlow Controller </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="id" type="OFConfigID"> + <xs:annotation> + <xs:documentation>An unique but locally arbitrary identifier that identifies an + OpenFlow Controller within the context of an OpenFlow Capable Switch. It is + persistent across reboots of the system. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="role" type="OFControllerRoleType"> + <xs:annotation> + <xs:documentation>The predefined role of the controller. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ip-address" type="inet:ip-prefix"> + <xs:annotation> + <xs:documentation>The remote IP of the controller to connect + to.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="port" type="inet:port-number"> + <xs:annotation> + <xs:documentation>The port number the controller listens on. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="local-ip-address" type="inet:ip-address"> + <xs:annotation> + <xs:documentation>This specifies the source IP for packets sent to this + controller and overrides the default IP used. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="local-port" type="inet:port-number"> + <xs:annotation> + <xs:documentation>The port number the controller listens on. If 0 the port is + chosen dynamically. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="protocol" type="OFControllerProtocolType"> + <xs:annotation> + <xs:documentation>The protocol used for connecting to the controller. Both sides + must support the chosen protocol for a successful establishment of a + connection. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="state" type="OFControllerOpenFlowStateType"> + <xs:annotation> + <xs:documentation>This element represents the state of the OpenFlow protocol + connection to the controller. </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:simpleType name="OFControllerRoleType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="master"/> + <xs:enumeration value="slave"/> + <xs:enumeration value="equal"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="OFControllerProtocolType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="tcp"/> + <xs:enumeration value="tls"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="OFControllerOpenFlowStateType"> + <xs:sequence> + <xs:element name="connection-state" type="OFControllerConnectionStateType"> + <xs:annotation> + <xs:documentation>This element represents the run-time state of the OpenFlow + connection to the Contoller. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="current-version" type="OFOpenFlowVersionType"> + <xs:annotation> + <xs:documentation>This element denotes the version of OpenFlow that Contoller is + currently communicating with. It is only relevant when the connection-state + element is set to "up". </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="supported-versions" type="OFOpenFlowSupportedVersionsType"> + <xs:annotation> + <xs:documentation>This element denotes all of the versions of the OpenFlow + protocol that the contoller supports. </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:simpleType name="OFControllerConnectionStateType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="up"/> + <xs:enumeration value="down"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="OFOpenFlowSupportedVersionsType"> + <xs:sequence> + <xs:element name="version" type="OFOpenFlowVersionType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:simpleType name="OFOpenFlowVersionType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="1.2"/> + <xs:enumeration value="1.1"/> + <xs:enumeration value="1.0"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="OFResourceType"> + <xs:annotation> + <xs:documentation>A Base Class for OpenFlow Resources. </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="resource-id" type="OFConfigID"> + <xs:annotation> + <xs:documentation>An unique but locally arbitrary identifier that identifies a + resource within the context of and OpenFlow Capable Switch and is persistent + across reboots of the system. </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:complexType name="OFPortType"> + <xs:complexContent> + <xs:extension base="OFResourceType"> + <xs:sequence> + <xs:element name="number" type="xs:unsignedInt"/> + <xs:element name="name" type="xs:string"/> + <xs:element name="current-rate" type="xs:unsignedLong"/> + <xs:element name="max-rate" type="xs:unsignedLong"/> + <xs:element name="configuration" type="OFPortConfigurationType"/> + <xs:element name="state" type="OFPortStateType"/> + <xs:element name="features" type="OFPortFeatureMasterList"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="OFPortFeatureMasterList"> + <xs:sequence> + <xs:element name="current" type="OFPortCurrentFeatureListType"/> + <xs:element name="advertised" type="OFPortOtherFeatureListType"/> + <xs:element name="supported" type="OFPortOtherFeatureListType"/> + <xs:element name="advertised-peer" type="OFPortOtherFeatureListType"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="OFPortConfigurationType"> + <xs:sequence> + <xs:element name="admin-state" type="OFPortStateOptionsType"/> + <xs:element name="no-receive" type="xs:boolean"/> + <xs:element name="no-forward" type="xs:boolean"/> + <xs:element name="no-packet-in" type="xs:boolean"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="OFPortStateType"> + <xs:sequence> + <xs:element name="oper-state" type="OFPortStateOptionsType"/> + <xs:element name="blocked" type="xs:boolean"/> + <xs:element name="live" type="xs:boolean"/> + </xs:sequence> + </xs:complexType> + <xs:simpleType name="OFPortStateOptionsType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="up"/> + <xs:enumeration value="down"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="OFPortCurrentFeatureListType"> + <xs:sequence> + <xs:element name="rate" type="OFPortRateType"/> + <xs:element name="auto-negotiate" type="OFPortAutoNegotiateType"/> + <xs:element name="medium" type="OFPortMediumType"/> + <xs:element name="pause" type="OFPortPauseType"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="OFPortOtherFeatureListType"> + <xs:sequence> + <xs:element name="rate" type="OFPortRateType" maxOccurs="unbounded"/> + <xs:element name="auto-negotiate" type="OFPortAutoNegotiateType"/> + <xs:element name="medium" type="OFPortMediumType" maxOccurs="unbounded"/> + <xs:element name="pause" type="OFPortPauseType"/> + </xs:sequence> + </xs:complexType> + <xs:simpleType name="OFPortRateType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="10Mb-HD"/> + <xs:enumeration value="10Mb-FD"/> + <xs:enumeration value="100Mb-HD"/> + <xs:enumeration value="100Mb-FD"/> + <xs:enumeration value="1Gb-HD"/> + <xs:enumeration value="1Gb-FD"/> + <xs:enumeration value="1 Tb"/> + <xs:enumeration value="Other"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="OFPortAutoNegotiateType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="enabled"/> + <xs:enumeration value="disabled"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="OFPortMediumType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="copper"/> + <xs:enumeration value="fiber"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="OFPortPauseType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="unsupported"/> + <xs:enumeration value="symmetric"/> + <xs:enumeration value="asymmetric"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="OFQueueType"> + <xs:complexContent> + <xs:extension base="OFResourceType"> + <xs:sequence maxOccurs="1" minOccurs="1"> + <xs:element name="id" type="OFConfigID"> + <xs:annotation> + <xs:documentation>An unique but locally arbitrary number that identifies + a queue within the context of and OpenFlow Logical Switch and is + persistent across reboots of the system. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="port" type="OFConfigID"> + <xs:annotation> + <xs:documentation>Port in the context of the same Logical Switch which + this Queue is associated with. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="properties" type="OFQueuePropertiesType"> + <xs:annotation> + <xs:documentation>Properties of the Queue. </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="OFQueuePropertiesType"> + <xs:sequence> + <xs:element name="min-rate" type="OFQueueMinRateType" maxOccurs="1"> + <xs:annotation> + <xs:documentation>The minimal rate that is reserved for this queue in 1/10 of a + percent of the actual rate. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="max-rate" type="OFQueueMaxRateType"> + <xs:annotation> + <xs:documentation>The maximum rate that is reserved for this queue in 1/10 of a + percent of the actual rate. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element maxOccurs="unbounded" name="experimenter" type="xs:unsignedLong"> + <xs:annotation> + <xs:documentation>Experimental Properties</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:simpleType name="OFQueueMinRateType"> + <xs:restriction base="xs:integer"/> + </xs:simpleType> + <xs:simpleType name="OFQueueMaxRateType"> + <xs:restriction base="xs:integer"/> + </xs:simpleType> +</xs:schema> diff --git a/ryu/lib/of_config/of-config-1.1.1.xsd b/ryu/lib/of_config/of-config-1.1.1.xsd new file mode 100644 index 00000000..9f10f703 --- /dev/null +++ b/ryu/lib/of_config/of-config-1.1.1.xsd @@ -0,0 +1,2009 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xs:schema + xmlns:xs="http://www.w3.org/2001/XMLSchema" + xmlns:yin="urn:ietf:params:xml:schema:yang:yin:1" + targetNamespace="urn:onf:of111:config:yang" + xmlns="urn:onf:of111:config:yang" + elementFormDefault="qualified" + attributeFormDefault="unqualified" + version="2011-12-07" + xml:lang="en" + xmlns:yang="urn:ietf:params:xml:ns:yang:ietf-yang-types" + xmlns:inet="urn:ietf:params:xml:ns:yang:ietf-inet-types" + xmlns:of11-config="urn:onf:of111:config:yang"> + <xs:annotation> + <xs:documentation> This schema was generated from the YANG module of-config1.1.1 by pyang + version 1.2. The schema describes an instance document consisting of the entire + configuration data store, operational data, rpc operations, and notifications. This + schema can thus NOT be used as-is to validate NETCONF PDUs. </xs:documentation> + </xs:annotation> + <xs:annotation> + <xs:documentation> NETCONF Operational Considerations Elements that are configurable, + optional and have a default value MAY be reported by replies to NETCONF + <get-config> requests. All non-configurable values SHOULD be reported by replies + to NETCONF <get> requests. Attemps to modify non-configurable elements with a + NETCONF <edit-config> operation MUST result in an 'operation-not-supported' error + with type 'application'. When validating an <edit‐config> operation the following + errors MUST be detected: * Delete requests for non-existent data. In this case a + 'data-missing' error is returned. * Create requests for existent data. In this case a + 'data-exists' error is returned. * If the NETCONF operation creates data nodes under a + 'choice', any existing nodes from other branches are deleted. </xs:documentation> + </xs:annotation> + <!-- YANG typedefs --> + <xs:simpleType name="OFConfigId"> + <xs:annotation> + <xs:documentation> Generic type of an identifier in OF-CONFIG </xs:documentation> + </xs:annotation> + <xs:restriction base="inet:uri"> </xs:restriction> + </xs:simpleType> + <xs:simpleType name="OFConfigurationPointProtocolType"> + <xs:annotation> + <xs:documentation> Possible protocols to connect ot an OF Configuration Point + </xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:enumeration value="ssh"/> + <xs:enumeration value="soap"/> + <xs:enumeration value="tls"/> + <xs:enumeration value="beep"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="OFOpenFlowVersionType"> + <xs:annotation> + <xs:documentation> This enumeration contains the all OpenFlow versions released so far. + </xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:enumeration value="not-applicable"/> + <xs:enumeration value="1.0"/> + <xs:enumeration value="1.0.1"/> + <xs:enumeration value="1.1"/> + <xs:enumeration value="1.2"/> + <xs:enumeration value="1.3"/> + <xs:enumeration value="1.3.1"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="datapath-id-type"> + <xs:annotation> + <xs:documentation> The datapath-id type represents an OpenFlow datapath identifier. + </xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:pattern value="[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){7}"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="OFTenthOfAPercentType"> + <xs:annotation> + <xs:documentation> This type defines a value in tenth of a percent. </xs:documentation> + </xs:annotation> + <xs:restriction base="xs:unsignedShort"> + <xs:minInclusive value="0"/> + <xs:maxInclusive value="1000"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="OFUpDownStateType"> + <xs:annotation> + <xs:documentation> Type to specify state information for a port or a connection. + </xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:enumeration value="up"/> + <xs:enumeration value="down"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="OFPortRateType"> + <xs:annotation> + <xs:documentation> Type to specify the rate of a port including the duplex transmission + feature. Possible rates are 10Mb, 100Mb, 1Gb, 10Gb, 40Gb, 100Gb, 1Tb or other. Rates + of 10Mb, 100Mb and 1 Gb can support half or full duplex transmission. + </xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:enumeration value="10Mb-HD"/> + <xs:enumeration value="10Mb-FD"/> + <xs:enumeration value="100Mb-HD"/> + <xs:enumeration value="100Mb-FD"/> + <xs:enumeration value="1Gb-HD"/> + <xs:enumeration value="1Gb-FD"/> + <xs:enumeration value="10Gb"/> + <xs:enumeration value="40Gb"/> + <xs:enumeration value="100Gb"/> + <xs:enumeration value="1Tb"/> + <xs:enumeration value="other"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="OFActionType"> + <xs:annotation> + <xs:documentation> The types of actions defined in OpenFlow Switch Specification + versions 1.2, 1.3, and 1.3.1</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:enumeration value="output"/> + <xs:enumeration value="copy-ttl-out"/> + <xs:enumeration value="copy-ttl-in"/> + <xs:enumeration value="set-mpls-ttl"/> + <xs:enumeration value="dec-mpls-ttl"/> + <xs:enumeration value="push-vlan"/> + <xs:enumeration value="pop-vlan"/> + <xs:enumeration value="push-mpls"/> + <xs:enumeration value="pop-mpls"/> + <xs:enumeration value="set-queue"/> + <xs:enumeration value="group"/> + <xs:enumeration value="set-nw-ttl"/> + <xs:enumeration value="dec-nw-ttl"/> + <xs:enumeration value="set-field"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="OFInstructionType"> + <xs:annotation> + <xs:documentation> The types of instructions defined in OpenFlow Switch Specification + versions 1.2, 1.3, and 1.3.1. </xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:enumeration value="apply-actions"/> + <xs:enumeration value="clear-actions"/> + <xs:enumeration value="write-actions"/> + <xs:enumeration value="write-metadata"/> + <xs:enumeration value="goto-table"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="OFMatchFieldType"> + <xs:annotation> + <xs:documentation> The types of match field defined in OpenFlow Switch Specification + versions 1.2, 1.3, and 1.3.1. </xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:enumeration value="input-port"/> + <xs:enumeration value="physical-input-port"/> + <xs:enumeration value="metadata"/> + <xs:enumeration value="ethernet-dest"/> + <xs:enumeration value="ethernet-src"/> + <xs:enumeration value="ethernet-frame-type"/> + <xs:enumeration value="vlan-id"/> + <xs:enumeration value="vlan-priority"/> + <xs:enumeration value="ip-dscp"/> + <xs:enumeration value="ip-ecn"/> + <xs:enumeration value="ip-protocol"/> + <xs:enumeration value="ipv4-src"/> + <xs:enumeration value="ipv4-dest"/> + <xs:enumeration value="tcp-src"/> + <xs:enumeration value="tcp-dest"/> + <xs:enumeration value="udp-src"/> + <xs:enumeration value="udp-dest"/> + <xs:enumeration value="sctp-src"/> + <xs:enumeration value="sctp-dest"/> + <xs:enumeration value="icmpv4-type"/> + <xs:enumeration value="icmpv4-code"/> + <xs:enumeration value="arp-op"/> + <xs:enumeration value="arp-src-ip-address"/> + <xs:enumeration value="arp-target-ip-address"/> + <xs:enumeration value="arp-src-hardware-address"/> + <xs:enumeration value="arp-target-hardware-address"/> + <xs:enumeration value="ipv6-src"/> + <xs:enumeration value="ipv6-dest"/> + <xs:enumeration value="ipv6-flow-label"/> + <xs:enumeration value="icmpv6-type"/> + <xs:enumeration value="icmpv6-code"/> + <xs:enumeration value="ipv6-nd-target"/> + <xs:enumeration value="ipv6-nd-source-link-layer"/> + <xs:enumeration value="ipv6-nd-target-link-layer"/> + <xs:enumeration value="mpls-label"/> + <xs:enumeration value="mpls-tc"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="hex-binary"> + <xs:annotation> + <xs:documentation> hex binary encoded string </xs:documentation> + </xs:annotation> + <xs:restriction base="xs:base64Binary"> </xs:restriction> + </xs:simpleType> + <!-- YANG groupings --> + <xs:group name="OFPortCurrentFeatureListType"> + <xs:annotation> + <xs:documentation> The current features of a port. Elements in the type + OFPortCurrentFeatureListType are not configurable and can only be retrieved by + NETCONF <get> operations. Attemps to modify this element and its children with + a NETCONF <edit-config> operation MUST result in an 'operation-not-supported' + error with type 'application'. </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="rate" type="OFPortRateType"> + <xs:annotation> + <xs:documentation> The transmission rate that is currently used. The value MUST + indicate a valid forwarding rate. The current Port Feature set MUST contain + this element exactly once. The other Port Feature sets MAY contain this + element more than once. If this element appears more than once in a Port + Feature set than the value MUST be unique within the Port Feature set. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="auto-negotiate" type="xs:boolean"> + <xs:annotation> + <xs:documentation> Specifies the administrative state of the forwarding rate + auto-negotiation protocol at this OpenFlow Port. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="medium"> + <xs:annotation> + <xs:documentation> This element MUST indicate a valid physical medium used by + the OpenFlow Port. The current Port Feature set MUST contain this element + exactly once. The other Port Feature sets MAY contain this element more than + once. If this element appears more than once in a Port Feature set than the + value MUST be unique within the Port Feature set. </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="copper"/> + <xs:enumeration value="fiber"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="pause"> + <xs:annotation> + <xs:documentation> Specifies if pausing of transmission is supported at all and + if yes if it is asymmetric or symmetric. </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="unsupported"/> + <xs:enumeration value="symmetric"/> + <xs:enumeration value="asymmetric"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="OFPortOtherFeatureListType"> + <xs:annotation> + <xs:documentation> The features of a port that are supported or advertised. If the + elements in the OFPortOtherFeatureListType ares used as configurable elements the + NETCONF <edit-config> operations MUST be implemented as follows: * The + 'resource-id' element MUST be present in the path or in the filter at all + <edit-config> operations to identify the resource. * If the operation is + 'merge' or 'replace', the element is created if it does not exist, and its value is + set to the value found in the XML RPC data. * If the operation is 'create', the + element is created if it does not exist. If the element already exists, a + 'data‑exists' error is returned. * If the operation is 'delete', the element is + deleted if it exists. If the element does not exist, a 'data‑missing' error is + returned. If elements in the type OFPortOtherFeatureListType are used in an + non-configurable way, they only be retrieved by NETCONF <get> operations. + Attemps to modify this element and its children with a NETCONF <edit-config> + operation MUST result in an 'operation-not-supported' error with type 'application'. + </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="rate" type="OFPortRateType" minOccurs="0"> + <xs:annotation> + <xs:documentation> The transmission rate that is supported or advertised. + Multiple transmissions rates are allowed. At least one element MUST be + present in the NETCONF data store. If none of this elements is are present + in a NETCONF <edit-config> operation 'create', 'merge' or 'replace' + and the parent element does not exist, a 'data-missing' error is returned. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="auto-negotiate" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:documentation> Specifies if auto-negotiation of transmission parameters is + enabled for the port. This element is optional. If this element is not + present it defaults to 'true'. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="medium" minOccurs="0"> + <xs:annotation> + <xs:documentation> The transmission medium used by the port. Multiple media are + allowed. At least one element MUST be present in the NETCONF data store. If + none of this elements is are present in a NETCONF <edit-config> + operation 'create', 'merge' or 'replace' and the parent element does not + exist, a 'data-missing' error is returned. </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="copper"/> + <xs:enumeration value="fiber"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="pause" minOccurs="0"> + <xs:annotation> + <xs:documentation> Specifies if pausing of transmission is supported at all and + if yes if it is asymmetric or symmetric. This element MUST be present in the + NETCONF data store. If this element is not present in a NETCONF + <edit-config> operation 'create', 'merge' or 'replace' and the parent + element does not exist, a 'data-missing' error is returned. + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="unsupported"/> + <xs:enumeration value="symmetric"/> + <xs:enumeration value="asymmetric"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="DSAKeyValueType"> + <xs:annotation> + <xs:documentation> DSA keys and the DSA signature algorithm are specified in 'FIPS PUB + 186-2, Digital Signature Standard (DSS), U.S. Department of Commerce/National + Institute of Standards and Technology, + http://csrc.nist.gov/publications/fips/fips186-2/fips186-2.pdf'. DSA public key + values can have the following fields: P a prime modulus meeting the requirements of + the standard above Q an integer in the range 2**159 < Q < 2**160 which is a + prime divisor of P-1 G an integer with certain properties with respect to P and Q J + (P - 1) / Q Y G**X mod P (where X is part of the private key and not made public) + seed a DSA prime generation seed pgenCounter a DSA prime generation counter + Parameter J is avilable for inclusion solely for efficiency as it is calculatable + from P and Q. Parameters seed and pgenCounter are used in the DSA prime number + generation algorithm specified in the above standard. As such, they are optional but + MUST either both be present or both be absent. This prime generation algorithm is + designed to provide assurance that a weak prime is not being used and it yields a P + and Q value. Parameters P, Q, and G can be public and common to a group of users. + They might be known from application context. As such, they are optional but P and Q + MUST either both appear or both be absent. If all of P, Q, seed, and pgenCounter are + present, implementations are not required to check if they are consistent and are + free to use either P and Q or seed and pgenCounter. All parameters are encoded as + base64 values. </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="P" type="xs:base64Binary"> + <xs:annotation> + <xs:documentation> This element is optional. It MUST be present in the NETCONF + data store, if the element 'Q' is present. If element 'Q' is present in a + NETCONF <edit-config> operation 'create', 'merge' or 'replace' and + this element is missing, a 'data-missing' error is returned. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Q" type="xs:base64Binary"> + <xs:annotation> + <xs:documentation> This element is optional. It MUST be present in the NETCONF + data store, if the element 'P' is present. If element 'P' is present in a + NETCONF <edit-config> operation 'create', 'merge' or 'replace' and + this element is missing, a 'data-missing' error is returned. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="J" type="xs:base64Binary"> + <xs:annotation> + <xs:documentation> This element is optional. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="G" type="xs:base64Binary"> + <xs:annotation> + <xs:documentation> This element is optional. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Y" type="xs:base64Binary"> + <xs:annotation> + <xs:documentation> This element MUST be present in the NETCONF data store. If + this element is not present in a NETCONF <edit-config> operation + 'create', 'merge' or 'replace' and the parent element does not exist, a + 'data-missing' error is returned. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Seed" type="xs:base64Binary"> + <xs:annotation> + <xs:documentation> This element is optional. It MUST be present in the NETCONF + data store, if the element 'PgenCounter' is present. If element + 'PgenCounter' is present in a NETCONF <edit-config> operation + 'create', 'merge' or 'replace' and this element is missing, a 'data-missing' + error is returned. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="PgenCounter" type="xs:base64Binary"> + <xs:annotation> + <xs:documentation> This element is optional. It MUST be present in the NETCONF + data store, if the element 'Seed' is present. If element 'Seed' is present + in a NETCONF <edit-config> operation 'create', 'merge' or 'replace' + and this element is missing, a 'data-missing' error is returned. + </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="OFPortBaseTunnelType"> + <xs:annotation> + <xs:documentation> A group of common elements that are included in every supported + tunnel type. Tunnels are modeled as logical ports. One pair of local/remote + endpoints must exist for a tunnel configuration. Only elements from one choice must + exist at a time. </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:choice> + <xs:sequence> + <xs:element name="local-endpoint-ipv4-address" type="inet:ipv4-address"> + <xs:annotation> + <xs:documentation> The IPv4 address of the local tunnel endpoint. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="remote-endpoint-ipv4-address" type="inet:ipv4-address"> + <xs:annotation> + <xs:documentation> The IPv4 address of the remote tunnel endpoint. + </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + <xs:sequence> + <xs:element name="local-endpoint-ipv6-address" type="inet:ipv6-address"> + <xs:annotation> + <xs:documentation> The IPv6 address of the local tunnel endpoint. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="remote-endpoint-ipv6-address" type="inet:ipv6-address"> + <xs:annotation> + <xs:documentation> The IPv6 address of the remote tunnel endpoint. + </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + <xs:sequence> + <xs:element name="local-endpoint-mac-adress" type="yang:mac-address"> + <xs:annotation> + <xs:documentation> The MAC address of the local tunnel endpoint. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="remote-endpoint-mac-adress" type="yang:mac-address"> + <xs:annotation> + <xs:documentation> The MAC address of the remote tunnel endpoint. + </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:choice> + </xs:sequence> + </xs:group> + <xs:group name="OFPortIPGRETunnelType"> + <xs:annotation> + <xs:documentation> Properties of a IP-in-GRE tunnel with key, checksum, and sequence + number information. </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:group ref="OFPortBaseTunnelType"/> + <xs:element name="checksum-present" type="xs:boolean"> + <xs:annotation> + <xs:documentation> Indicates presence of the GRE checksum. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="key-present" type="xs:boolean"> + <xs:annotation> + <xs:documentation> Indicates presence of the GRE key. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="key" type="xs:unsignedInt"> + <xs:annotation> + <xs:documentation> The (optional) key of the GRE tunnel. It MAY be used to set + the OXM_OF_TUNNEL_ID match field metadata in the OpenFlow protocol + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="sequence-number-present" type="xs:boolean"> + <xs:annotation> + <xs:documentation> Indicates presence of the GRE sequence number. + </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="OFPortNVGRETunnelType"> + <xs:annotation> + <xs:documentation> Properties of a NVGRE tunnel. </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:group ref="OFPortBaseTunnelType"/> + <xs:element name="tni" type="xs:unsignedInt"> + <xs:annotation> + <xs:documentation> Specifies the tenant network identifier assigned to all + packets sent on the tunnel </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="tni-resv" type="xs:unsignedInt"> + <xs:annotation> + <xs:documentation> Used to set the reserved user-defined bits of the GRE key + field </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="tni-multicast-group" type="inet:ip-address"> + <xs:annotation> + <xs:documentation> If IP multicast is used to support broadcast on the tunnel + this element specifies the corresponding multicast IP address + </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="OFQueueType"> + <xs:annotation> + <xs:documentation> This grouping specifies all properties of a queue resource. NETCONF + <edit-config> operations MUST be implemented as follows: * The 'resource-id' + element of OFResoureType MUST be present at all <edit-config> operations to + identify the port. * If the operation is 'merge' or 'replace', the element is + created if it does not exist, and its value is set to the value found in the XML RPC + data. * If the operation is 'create', the element is created if it does not exist. + If the element already exists, a 'data‑exists' error is returned. * If the operation + is 'delete', the element is deleted if it exists. If the element does not exist, a + 'data‑missing' error is returned. </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:group ref="OFResourceType"/> + <xs:element name="id" type="xs:unsignedLong" minOccurs="0"> + <xs:annotation> + <xs:documentation> This id identifies the OpenFlow Queue to OpenFlow + Controllers. It is assigned to an OpenFlow Queue latest when the OpenFlow + Queue is associated with and OpenFlow Logical Switch. If the OpenFlow Queue + is associated with an OpenFlow Logical Switch, this element MUST be unique + within the context of the OpenFlow Logical Switch. OpenFlow Capable Switch + implementations may choose to assign values to OpenFlow Queues that are + unique within the context of the OpenFlow Logical Switch. These id can be + used independent of assignments to OpenFlow Logical Switches. Other + implementations may assign values to this element only if the OpenFlow Queue + is assigned to an OpenFlow Logical Switch. If no value is currently assigned + to this element then this element MUST NOT be included in replies to NETCONF + <get> requests. Since this element is not configurable with the + NETCONF protocol it MUST NOT be included in replies to NETCONF + <get-config> requests. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="port" minOccurs="0"> + <xs:annotation> + <xs:documentation> Reference to port resources in the Capable Switch. This + element associates an OpenFlow Queue with an OpenFlow Port. If the OpenFlow + Queue is associated with an OpenFlow Logical Switch S and this element is + present, then it MUST be set to the value of element resource-id of an + OpenFlow Port which is associated with the OpenFlow Logical Switch S. The + element MUST refer to an element at the following path: + /capable-switch/resources/port/resource-id </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="inet:uri"> </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="properties" minOccurs="0"> + <xs:annotation> + <xs:documentation> The queue properties currently configured. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="min-rate" minOccurs="0" type="OFTenthOfAPercentType"> + <xs:annotation> + <xs:documentation> The minimal rate that is reserved for this queue + in 1/10 of a percent of the actual rate. This element is + optional. If not present a min-rate is not set. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="max-rate" minOccurs="0" type="OFTenthOfAPercentType"> + <xs:annotation> + <xs:documentation> The maximum rate that is reserved for this queue + in 1/10 of a percent of the actual rate. This element is + optional. If not present the max-rate is not set. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="experimenter" minOccurs="0" maxOccurs="unbounded" + type="xs:unsignedInt"> + <xs:annotation> + <xs:documentation> A list of experimenter identifiers of queue + properties used. This element is optional. </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="OFOwnedCertificateType"> + <xs:annotation> + <xs:documentation> This grouping specifies a certificate and a private key. It can be + used by an OpenFlow Logical Switch for authenticating itself to a controller when a + TLS connection is established. </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:group ref="OFResourceType"/> + <xs:element name="certificate" type="xs:string"> + <xs:annotation> + <xs:documentation> An X.509 certificate in DER format base64 encoded. This + element MUST be present in the NETCONF data store. If this element is not + present in a NETCONF <edit-config> operation 'create', 'merge' or + 'replace' and the parent element does not exist, a 'data-missing' error is + returned. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="private-key"> + <xs:annotation> + <xs:documentation> This element contains the private key corresponding to the + certificate. The private key is encoded as specified in XML-Signature Syntax + and Processing (http://www.w3.org/TR/2001/PR-xmldsig-core-20010820/). + Currently the specification only support DSA and RSA keys. This element MUST + be present in the NETCONF data store. If this element is not present in a + NETCONF <edit-config> operation 'create', 'merge' or 'replace' and the + parent element does not exist, a 'data-missing' error is returned. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:group ref="KeyValueType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="OFExternalCertificateType"> + <xs:annotation> + <xs:documentation> This grouping specifies a certificate that can be used by an OpenFlow + Logical Switch for authenticating a controller when a TLS connection is established. + </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:group ref="OFResourceType"/> + <xs:element name="certificate" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:documentation> An X.509 certificate in DER format base64 encoded. This + element MUST be present in the NETCONF data store. If this element is not + present in a NETCONF <edit-config> operation 'create', 'merge' or + 'replace' and the parent element does not exist, a 'data-missing' error is + returned. </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="OFConfigurationPointType"> + <xs:annotation> + <xs:documentation> Representation of an OpenFlow Configuration Point. Instances of the + Configuration Point class SHOULD be stored persistently across reboots of the + OpenFlow Capable Switch. When a connection is established between an OpenFlow + Capable Switch and a Configuration Point the switch MUST store the connection + information in an instance of the Configuration Point class. If such an instance + does not exist, the OpenFlow Capable Switch MUST create an instance where it then + stores the connection information. An OpenFlow Capable Switch that cannot initiate a + connection to a configuration point does not have to implement the Configuration + Point class. It SHOULD block attempts to write to instances of the Configuration + Point class with NETCONF <edit-config> operations. NETCONF <edit-config> + operations MUST be implemented as follows: * The 'id' element MUST be present at all + <edit-config> operations to identify the configuration point. * If the + operation is 'merge' or 'replace', the element is created if it does not exist, and + its value is set to the value found in the XML RPC data. * If the operation is + 'create', the element is created if it does not exist. If the element already + exists, a 'data‑exists' error is returned. * If the operation is 'delete', the + element is deleted if it exists. If the element does not exist, a 'data‑missing' + error is returned. </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="id" type="OFConfigId"> + <xs:annotation> + <xs:documentation> A unique but locally arbitrary identifier that identifies a + Configuration Point within the context of an OpenFlow Capable Switch. This + element MUST be present to identify the configuration point. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="uri" type="inet:uri"> + <xs:annotation> + <xs:documentation> A locator of the Configuration Point. It identifies the + location of the Configuration Point as a service resource and MUST include + all information necessary for the OpenFlow Capable Switch to connect to the + Configuration Point or re-connect to it should it become disconnected. Such + information MAY include, for example, protocol, fully qualified domain name, + IP address, port number, etc. This element MUST be present in the NETCONF + data store. If this element is not present in a NETCONF <edit-config> + operation 'create', 'merge' or 'replace' and the parent element does not + exist, a 'data-missing' error is returned. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="protocol" type="OFConfigurationPointProtocolType" minOccurs="0"> + <xs:annotation> + <xs:documentation> The transport protocol that the Configuration Point uses when + communicating via NETCONF with the OpenFlow Capable Switch. This element is + optional. If it is not present its value defaults to 'ssh'. + </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="RSAKeyValueType"> + <xs:annotation> + <xs:documentation> RSA key values have two fields: Modulus and Exponent. + </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="Modulus" type="xs:base64Binary"> + <xs:annotation> + <xs:documentation> This element MUST be present in the NETCONF data store. If + this element is not present in a NETCONF <edit-config> operation + 'create', 'merge' or 'replace' and the parent element does not exist, a + 'data-missing' error is returned. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Exponent" type="xs:base64Binary"> + <xs:annotation> + <xs:documentation> This element MUST be present in the NETCONF data store. If + this element is not present in a NETCONF <edit-config> operation + 'create', 'merge' or 'replace' and the parent element does not exist, a + 'data-missing' error is returned. </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="OFFlowTableType"> + <xs:annotation> + <xs:documentation> Representation of an OpenFlow Flow Table Resource. Elements in the + type OFFlowTableType are not configurable and can only be retrieved by NETCONF + <get> operations. Attemps to modify this element and its children with a + NETCONF <edit-config> operation MUST result in an 'operation-not-supported' + error with type 'application'. </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:group ref="OFResourceType"/> + <xs:element name="max-entries" type="xs:unsignedByte" minOccurs="0"> + <xs:annotation> + <xs:documentation> The maximum number of flow entries supported by the flow + table. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="next-tables" minOccurs="0"> + <xs:annotation> + <xs:documentation> An array of resource-ids of all flow tables that can be + directly reached from this table using the 'goto-table' instruction. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="table-id" maxOccurs="unbounded" type="inet:uri"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="instructions" minOccurs="0"> + <xs:annotation> + <xs:documentation> The list of all instruction types supported by the flow + table. </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="type" maxOccurs="unbounded" type="OFInstructionType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="matches" minOccurs="0"> + <xs:annotation> + <xs:documentation> The list of all match types supported by the flow table. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="type" maxOccurs="unbounded" type="OFMatchFieldType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="write-actions" minOccurs="0"> + <xs:annotation> + <xs:documentation> The list of all write action types supported by the flow + table. </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="type" maxOccurs="unbounded" type="OFActionType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="apply-actions" minOccurs="0"> + <xs:annotation> + <xs:documentation> The list of all apply action types supported by the flow + table. </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="type" maxOccurs="unbounded" type="OFActionType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="write-setfields" minOccurs="0"> + <xs:annotation> + <xs:documentation> The list of all 'set-field' action types supported by the + table using write actions. </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="type" maxOccurs="unbounded" type="OFMatchFieldType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="apply-setfields" minOccurs="0"> + <xs:annotation> + <xs:documentation> The list of all 'set-field' action types supported by the + table using apply actions. </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="type" maxOccurs="unbounded" type="OFMatchFieldType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="wildcards" minOccurs="0"> + <xs:annotation> + <xs:documentation> The list of all fields for which the table supports + wildcarding. </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="type" maxOccurs="unbounded" type="OFMatchFieldType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="metadata-match" type="hex-binary" minOccurs="0"> + <xs:annotation> + <xs:documentation> This element indicates the bits of the metadata field on + which the flow table can match. It is represented as 64-bit integer in + hexadecimal digits([0-9a-fA-F]) format. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="metadata-write" type="hex-binary" minOccurs="0"> + <xs:annotation> + <xs:documentation> This element indicates the bits of the metadata field on + which flow table can write using the 'write-metadata' instruction. It is + represented as 64-bit integer in hexadecimal digits([0-9a-fA-F]) format. + </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="OFLogicalSwitchType"> + <xs:annotation> + <xs:documentation> This grouping specifies all properties of an OpenFlow Logical Switch. + Elements of type OFLogicalSwitchType cannot be created or deleted with NETCONF + <edit-config> operations 'create' or 'delete'. The other NETCONF + <edit-config> operations MUST be implemented as follows: * The 'id' element + MUST be present at all <edit-config> operations to identify the OpenFlow + Logical Switch. * If the operation is 'merge' or 'replace', and the element does not + exist, a 'data-missing' error is returned. If the element exists its value is set to + the value found in the XML RPC data. * If the operation is 'create', a + 'operation-not-supported' error with type 'application' is returned. * If the + operation is 'delete', 'operation-not-supported' error with type 'application' is + returned. </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="id" type="OFConfigId"> + <xs:annotation> + <xs:documentation> A unique but locally arbitrary identifier that identifies a + Logical Switch within the context of an OpenFlow Capable Switch. It MUST be + persistent across reboots of the OpenFlow Capable Switch. This element MUST + be present to identify the OpenFlow Logical Switch. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="capabilities" minOccurs="0"> + <xs:annotation> + <xs:documentation> This element contains all capability items that an OpenFlow + Logical Switch MAY implement. This element and its children can only be + retrieved by NETCONF <get> operation since it contain no configuration + data. </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:group ref="OFLogicalSwitchCapabilitiesType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="datapath-id" type="datapath-id-type" minOccurs="0"> + <xs:annotation> + <xs:documentation> The datapath identifier of the Logical Switch that uniquely + identifies this Logical Switch within the context of all OpenFlow + Controllers associated with the OpenFlow Logical Switch. The datapath + identifier is a string value that MUST be formatted as a sequence of 8 + 2-digit hexadecimal numbers that are separated by colons, for example, + '01:23:45:67:89:ab:cd:ef'. When processing a datapath identifier, the case + of the decimal digits MUST be ignored. This element MUST be present in the + NETCONF data store. If this element is not present in a NETCONF + <edit-config> operation 'create', 'merge' or 'replace' and the parent + element does not exist, a 'data-missing' error is returned. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="enabled" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:documentation> This element indicates the administrative state of the + OpenFlow Logical Switch. A value of 'false' means the OpenFlow Logical + Switch MUST NOT communicate with any OpenFlow Controllers, MUST NOT conduct + any OpenFlow processing, and SHOULD NOT be utilizing computational or + network resources of the underlying platform. This element is optional. If + this element is not present it defaults to 'false'. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="check-controller-certificate" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:documentation> This element indicates the behavior of the OpenFlow Logical + Switch when connecting to an OpenFlow Controller. If set to value 'false', + the logical switch will connect to a controller without checking any + controller certificate. If set to value 'true', then the logical switch will + connect to a controller with element <protocol> set to 'TLS', only if + the controller provides a certificate that can be verified with one of the + certificates stored in the list called external-certificates in the OpenFlow + Capable Switch. If a certificate cannot be validated, the OpenFlow Logical + Switch MUST terminate communication with the corresponding OpenFlow + Controller, MUST NOT conduct any OpenFlow processing on requests of this + OpenFlow controller, and SHOULD NOT further utilize any computational or + network resources of for dealing with this connection. If set to value + 'true', the OpenFlow Logical Switch MUST NOT connect to any OpenFlow + Controller that does not provide a certificate. This implies that it cannot + connect to an OpenFlow controller that has the value of element protocol set + to 'TCP'. Only connections with protocol 'TLS' are possible in this case. + This element is optional. If this element is not present it defaults to + 'false'. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="lost-connection-behavior" minOccurs="0"> + <xs:annotation> + <xs:documentation> This element indicates the the behavior of the OpenFlow + Logical Switch in case it loses contact with all OpenFlow Controllers. There + are two alternative modes in such a case: fails secure mode and fail + standalone mode as defined by the OpenFlow protocol specification version + 1.2, section 6.4. These are the only allowed values for this element. + Default is the fail secure mode. This element is optional. If this element + is not present it defaults to 'failSecureMode'. </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="failSecureMode"/> + <xs:enumeration value="failStandaloneMode"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="controllers" minOccurs="0"> + <xs:annotation> + <xs:documentation> The list of controllers for this Logical switch. The element + 'id' of OFControllerType MUST be unique within this list. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="controller" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation> The list of OpenFlow Controllers that are + assigned to the OpenFlow Logical Switch. The switch MUST NOT + connect to any OpenFlow Controller that is not contained in this + list. NETCONF <edit-config> operations MUST be implemented + as follows: * The 'id' element MUST be present at all + <editconfig> operations to identify the controller. * If + the operation is 'merge' or 'replace', the element is created if + it does not exist, and its value is set to the value found in + the XML RPC data. * If the operation is 'create', the element is + created if it does not exist. If the element already exists, a + 'data‑exists' error is returned. * If the operation is 'delete', + the element is deleted if it exists. If the element does not + exist, a 'data‑missing' error is returned. </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:group ref="OFControllerType"/> + </xs:sequence> + <xs:attribute name="operation" type="xs:string"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:key name="key_controllers_controller"> + <xs:selector xpath="of11-config:controller"/> + <xs:field xpath="of11-config:id"/> + </xs:key> + </xs:element> + <xs:element name="resources" minOccurs="0"> + <xs:annotation> + <xs:documentation> The list of identifiers of all resources of the OpenFlow + Capable Switch that the OpenFlow Logical Switch has exclusive or + non-exclusive access to. A resource is identified by the value of its + resource-identifier element. For each resource identifier value in this + list, there MUST be an element with a matching resource identifier value in + the resources list of the OpenFlow Capable Switch. Identifiers of this list + are contained in elements indicating the type of resource: 'port', 'queue', + 'certificate', or 'flow-table'. Depending on the type, different constraints + apply. These are specified in separate descriptions per type. At present the + elements in this lists are not configurable and can only be retrieved by + NETCONF <get> or <getconfig> operations. Attemps to modify this + element and its children with a NETCONF <edit-config> operation MUST + result in an 'operation-not-supported' error with type 'application'. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="port" minOccurs="0" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation> A resource identifier of a port of the OpenFlow + Capable Switch that the OpenFlow Logical Switch has exclusive + access to. The elements in this list MUST refer to elements at + the following path: /capable-switch/resources/port/resource-id + Elements in this list MUST be unique. This means each port + element can only be referenced once. </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="inet:uri"> </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="queue" minOccurs="0" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation> A resource identifier of a queue of the OpenFlow + Capable Switch that the OpenFlow Logical Switch has exclusive + access to. The elements in this list MUST refer to elements at + the following path: /capable-switch/resources/queue/resource-id + Elements in this list MUST be unique. This means each queue + element can only be referenced once. </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="inet:uri"> </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="certificate" minOccurs="0"> + <xs:annotation> + <xs:documentation> The resource identifier of the owned certificate + in the OpenFlow Capable Switch that the OpenFlow Logical Switch + uses to identify itself. This element MUST NOT occur more than + once in an OpenFlow Logical Switch's resource list. If no such + element is in an OpenFlow Logical Switch's resource list, then + the OpenFlow Logical Switch does not authenticate itself towards + an OpenFloe Controller with a certificate. If this element is + present, then the OpenFlow Logical Switch MUST provide this + certificate for authentication to an OpenFlow Controller when + setting up a TLS connection. For TCP connections this element is + irrelevant. The element MUST refer to an element at the + following path: + /capable-switch/resources/owned-certificate/resource-id + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="inet:uri"> </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="flow-table" minOccurs="0" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation> A resource identifier of a flow table of the + OpenFlow Capable Switch that the OpenFlow Logical Switch has + exclusive access to. The elements in this list MUST refer to + elements at the following path: + /capable-switch/resources/flow-table/resource-id Elements in + this list MUST be unique. This means each flow-table element can + only be referenced once. </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="inet:uri"> </xs:restriction> + </xs:simpleType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="KeyValueType"> + <xs:annotation> + <xs:documentation> The KeyValue element contains a single public key that may be useful + in validating the signature. NETCONF <edit-config> operations MUST be + implemented as follows: * Exactly one of the elemenst 'DSAKeyValue' or 'RSAKeyValue' + all <edit-config> operations. * If the operation is 'merge' or 'replace', the + element is created if it does not exist, and its value is set to the value found in + the XML RPC data. * If the operation is 'create', the element is created if it does + not exist. If the element already exists, a 'data‑exists' error is returned. * If + the operation is 'delete', the element is deleted if it exists. If the element does + not exist, a 'data‑missing' error is returned. </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:choice> + <xs:sequence> + <xs:element name="DSAKeyValue"> + <xs:complexType> + <xs:sequence> + <xs:group ref="DSAKeyValueType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:sequence> + <xs:element name="RSAKeyValue"> + <xs:complexType> + <xs:sequence> + <xs:group ref="RSAKeyValueType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:choice> + </xs:sequence> + </xs:group> + <xs:group name="OFLogicalSwitchCapabilitiesType"> + <xs:annotation> + <xs:documentation> This grouping specifies all properties of an OpenFlow logical + switch's capabilities. Elements in the type OFLogicalSwitchCapabilitiesType are not + configurable and can only be retrieved by NETCONF <get> operations. Attemps to + modify this element and its children with a NETCONF <edit-config> operation + MUST result in an 'operation-not-supported' error with type 'application'. + </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="max-buffered-packets" type="xs:unsignedInt"> + <xs:annotation> + <xs:documentation> The maximum number of packets the logical switch can buffer + when sending packets to the controller using packet-in messages. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="max-tables" type="xs:unsignedByte"> + <xs:annotation> + <xs:documentation> The number of flow tables supported by the logical switch. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="max-ports" type="xs:unsignedInt"> + <xs:annotation> + <xs:documentation> The number of flow tables supported by the logical switch. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="flow-statistics" type="xs:boolean"> + <xs:annotation> + <xs:documentation> Specifies if the logical switch supports flow statistics. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="table-statistics" type="xs:boolean"> + <xs:annotation> + <xs:documentation> Specifies if the logical switch supports table statistics. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="port-statistics" type="xs:boolean"> + <xs:annotation> + <xs:documentation> Specifies if the logical switch supports port statistics. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="group-statistics" type="xs:boolean"> + <xs:annotation> + <xs:documentation> Specifies if the logical switch supports group statistics. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="queue-statistics" type="xs:boolean"> + <xs:annotation> + <xs:documentation> Specifies if the logical switch supports queue statistics. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="reassemble-ip-fragments" type="xs:boolean"> + <xs:annotation> + <xs:documentation> Specifies if the logical switch supports reassemble IP + fragments. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="block-looping-ports" type="xs:boolean"> + <xs:annotation> + <xs:documentation> 'true' indicates that a switch protocol outside of OpenFlow, + such as 802.1D Spanning Tree, will detect topology loops and block ports to + prevent packet loops. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="reserved-port-types"> + <xs:annotation> + <xs:documentation> Specify generic forwarding actions such as sending to the + controller, flooding, or forwarding using non-OpenFlow methods, such as + 'normal' switch processing. </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="type" minOccurs="0" maxOccurs="unbounded"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="all"/> + <xs:enumeration value="controller"/> + <xs:enumeration value="table"/> + <xs:enumeration value="inport"/> + <xs:enumeration value="any"/> + <xs:enumeration value="normal"/> + <xs:enumeration value="flood"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="group-types"> + <xs:annotation> + <xs:documentation> Specify the group types supported by the logical switch. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="type" minOccurs="0" maxOccurs="unbounded"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="all"/> + <xs:enumeration value="select"/> + <xs:enumeration value="indirect"/> + <xs:enumeration value="fast-failover"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="group-capabilities"> + <xs:annotation> + <xs:documentation> Specify the group capabilities supported by the logical + switch. </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="capability" minOccurs="0" maxOccurs="unbounded"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="select-weight"/> + <xs:enumeration value="select-liveness"/> + <xs:enumeration value="chaining"/> + <xs:enumeration value="chaining-check"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="action-types"> + <xs:annotation> + <xs:documentation> Specify the action types supported by the logical switch. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="type" minOccurs="0" maxOccurs="unbounded" + type="OFActionType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="instruction-types"> + <xs:annotation> + <xs:documentation> Specify the instruction types supported by the logical + switch. </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="type" minOccurs="0" maxOccurs="unbounded" + type="OFInstructionType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="OFPortType"> + <xs:annotation> + <xs:documentation> This element specifies all properties of an OpenFlow resource of type + OpenFlow Port. It represent a physical port or a logical port of the OpenFlow + Capable Switch and can be assigned for exclusive use to an OpenFlow Logical Switch. + A logical port represents a tunnel endpoint as described in the OpenFlow protocol + specification versions 1.3 - 1.3.1. NETCONF <edit-config> operations MUST be + implemented as follows: * The 'resource-id' element of OFResoureType MUST be present + at all <edit-config> operations to identify the port. * If the operation is + 'merge' or 'replace', the element is created if it does not exist, and its value is + set to the value found in the XML RPC data. * If the operation is 'create', the + element is created if it does not exist. If the element already exists, a + 'data‑exists' error is returned. * If the operation is 'delete', the element is + deleted if it exists. If the element does not exist, a 'data‑missing' error is + returned. </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:group ref="OFResourceType"/> + <xs:element name="number" type="xs:unsignedLong" minOccurs="0"> + <xs:annotation> + <xs:documentation> This number identifies the OpenFlow Port to OpenFlow + Controllers. It is assigned to an OpenFlow Port latest when the OpenFlow + Port is associated with and OpenFlow Logical Switch. If the OpenFlow Port is + associated with an OpenFlow Logical Switch, this element MUST be unique + within the context of the OpenFlow Logical Switch. OpenFlow Capable Switch + implementations may choose to assign values to OpenFlow Ports that are + unique within the context of the OpenFlow Logical Switch. These numbers can + be used independent of assignments to OpenFlow Logical Switches. Other + implementations may assign values to this element only if the OpenFlow Port + is assigned to an OpenFlow Logical Switch. If no value is currently assigned + to this element then this element MUST NOT be included in replies to NETCONF + <get> requests. Since this element is not configurable with the + NETCONF protocol it MUST NOT be included in replies to NETCONF + <get-config> requests. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="name" minOccurs="0"> + <xs:annotation> + <xs:documentation> This element assists OpenFlow Controllers in identifying + OpenFlow Ports. This element is not to be set by the OP-CONFIG protocol, but + it is set by the switch implementation. It may be set at start-up time of an + OpenFlow Capable Switch or when the OpenFlow Port is assigned to an OpenFlow + Logical Switch. It MAY also be not set at all. If this element is set to a + value other than the empty string when being assigned to an OpenFlow Logical + Switch, then the value of this element MUST be unique within the context of + the OpenFlow Logical Switch. If no value or the empty string is currently + assigned to this element then this element MUST not be included in replies + to NETCONF <get> requests. Since this element is not configurable with + the NETCONF protocol it MUST NOT be included in replies to NETCONF + <get-config> requests. </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + <xs:maxLength value="16"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="current-rate" type="xs:unsignedInt" minOccurs="0"> + <xs:annotation> + <xs:documentation> This element indicates the current bit rate of the port. Its + values is to be provided in units of kilobit per second (kbps). This element + is only valid if the element called 'rate' in the current Port Features has + a value of 'other'. Since this element is not configurable with the NETCONF + protocol it MUST NOT be included in replies to NETCONF <get-config> + requests. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="max-rate" type="xs:unsignedInt" minOccurs="0"> + <xs:annotation> + <xs:documentation> This element indicates the maximum bit rate of the port. Its + values is to be provided in units of kilobit per second (kbps). This element + is only valid if the element called 'rate' in the current Port Features has + a value of 'other'. Since this element is not configurable with the NETCONF + protocol it MUST NOT be included in replies to NETCONF <get-config> + requests. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="configuration" minOccurs="0"> + <xs:annotation> + <xs:documentation> This element represents the general adminitrative + configuration of the OpenFlow Port. </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="admin-state" minOccurs="0" type="OFUpDownStateType"> + <xs:annotation> + <xs:documentation> The administrative state of the port. If true, + the port has been administratively brought down and SHOULD not + be used by OpenFlow. This element is optional. If this element + is not present it defaults to 'up'. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="no-receive" minOccurs="0" type="xs:boolean"> + <xs:annotation> + <xs:documentation> If true, packets received at this OpenFlow port + SHOULD be dropped. This element is optional. If this element is + not present it defaults to 'false'. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="no-forward" minOccurs="0" type="xs:boolean"> + <xs:annotation> + <xs:documentation> If true, packets forwarded to this OpenFlow port + SHOULD be dropped. This element is optional. If this element is + not present it defaults to 'false'. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="no-packet-in" minOccurs="0" type="xs:boolean"> + <xs:annotation> + <xs:documentation> If true, packets received on that port that + generate a table miss should never trigger a packet-in message + to the OpenFlow Controller. This element is optional. If this + element is not present it defaults to 'false'. + </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + <xs:attribute name="operation" type="xs:string"/> + </xs:complexType> + </xs:element> + <xs:element name="state" minOccurs="0"> + <xs:annotation> + <xs:documentation> This element represents the general operational state of the + OpenFlow Port. Children of this element are not configurable and can only be + retrieved by NETCONF <get> operations. Attemps to modify this element + and its children with a NETCONF <edit-config> operation MUST result in + an 'operation-not-supported' error with type 'application'. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="oper-state" minOccurs="0" type="OFUpDownStateType"> + <xs:annotation> + <xs:documentation> If the value of this element is 'down', it + indicates that there is no physical link present. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="blocked" minOccurs="0" type="xs:boolean"> + <xs:annotation> + <xs:documentation> If the value of this element is 'true', it + indicates that a switch protocol outside of OpenFlow, such as + 802.1D Spanning Tree, is preventing the use of this OpenFlow + port for OpenFlow flooding. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="live" minOccurs="0" type="xs:boolean"> + <xs:annotation> + <xs:documentation> If the value of this element is 'true', it + indicates that this OpenFlow Port is live and can be used for + fast failover. </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:choice minOccurs="0"> + <xs:element name="features" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="current" minOccurs="0"> + <xs:annotation> + <xs:documentation> The features (rates, duplex, etc.) of the + port, that are currently in use. Children of this element + are not configurable and can only be retrieved by NETCONF + <get> operations. Attemps to modify this element and + its children with a NETCONF <edit-config> operation + MUST result in an 'operation-not-supported' error with type + 'application'. </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:group ref="OFPortCurrentFeatureListType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="advertised" minOccurs="0"> + <xs:annotation> + <xs:documentation> The features (rates, duplex, etc.) of the + port, that are advertised to the peer port. NETCONF + <edit-config> operations MUST be implemented as + follows: * The 'resource-id' element of OFResoureType MUST + be present in the path or in the filter at all + <edit-config> operations to identify the port. * If + the operation is 'merge' or 'replace', the element is + created if it does not exist, and its value is set to the + value found in the XML RPC data. * If the operation is + 'create', the element is created if it does not exist. If + the element already exists, a 'data‑exists' error is + returned. * If the operation is 'delete', the element is + deleted if it exists. If the element does not exist, a + 'data‑missing' error is returned. </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:group minOccurs="0" ref="OFPortOtherFeatureListType"/> + </xs:sequence> + <xs:attribute name="operation" type="xs:string"/> + </xs:complexType> + </xs:element> + <xs:element name="supported" minOccurs="0"> + <xs:annotation> + <xs:documentation> The features (rates, duplex, etc.) of the + port, that are supported on the port. Children of this + element are not configurable and can only be retrieved by + NETCONF <get> operations. Attemps to modify this + element and its children with a NETCONF <edit-config> + operation MUST result in an 'operation-not-supported' error + with type 'application'. </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:group ref="OFPortOtherFeatureListType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="advertised-peer" minOccurs="0"> + <xs:annotation> + <xs:documentation> The features (rates, duplex, etc.) that are + currently advertised by the peer port. Children of this + element are not configurable and can only be retrieved by + NETCONF <get> operations. Attemps to modify this + element and its children with a NETCONF <edit-config> + operation MUST result in an 'operation-not-supported' error + with type 'application'. </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:group ref="OFPortOtherFeatureListType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:choice> + <xs:annotation> + <xs:documentation> Tunnels are modeled as logical ports. Elements in this + choice are not configurable and can only be retrieved by NETCONF + <get> operations. Attemps to modify this element and its children + with a NETCONF <edit-config> operation MUST result in an + 'operation-not-supported' error with type 'application'. Only elements + from one choice must exist at a time. </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="tunnel" minOccurs="0"> + <xs:annotation> + <xs:documentation> Properties of a basic IP-in-GRE tunnel. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:group ref="OFPortBaseTunnelType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:sequence> + <xs:element name="ipgre-tunnel" minOccurs="0"> + <xs:annotation> + <xs:documentation> Properties of a IP-in-GRE tunnel. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:group ref="OFPortIPGRETunnelType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:sequence> + <xs:element name="vxlan-tunnel" minOccurs="0"> + <xs:annotation> + <xs:documentation> Properties of a VxLAN tunnel. </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:group ref="OFPortVXLANTunnelType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:sequence> + <xs:element name="nvgre-tunnel" minOccurs="0"> + <xs:annotation> + <xs:documentation> Properties of a NVGRE tunnel. </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:group ref="OFPortNVGRETunnelType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:choice> + </xs:choice> + </xs:sequence> + </xs:group> + <xs:group name="OFResourceType"> + <xs:annotation> + <xs:documentation> This element specifies a generic OpenFlow resource that is used as a + basis for specific resources. Even though this element is not used on its own the + following rules for NETCONF operations MUST be obeyed also by elemnts using this + element. NETCONF <edit-config> operations MUST be implemented as follows: * + The 'id' element MUST be present at all <edit-config> operations to identify + the resource. * If the operation is 'merge' or 'replace', the element is created if + it does not exist, and its value is set to the value found in the XML RPC data. * If + the operation is 'create', the element is created if it does not exist. If the + element already exists, a 'data‑exists' error is returned. * If the operation is + 'delete', the element is deleted if it exists. If the element does not exist, a + 'data‑missing' error is returned. </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="resource-id" type="inet:uri"> + <xs:annotation> + <xs:documentation> A unique but locally arbitrary identifier that uniquely + identifies an OpenFlow Port within the context of an OpenFlow Logical + Switch. It MUST be persistent across reboots of the OpenFlow Capable Switch. + This element MUST be present to identify the OpenFlow resource. + </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="OFPortVXLANTunnelType"> + <xs:annotation> + <xs:documentation> Properties of a VxLAN tunnel. </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:group ref="OFPortBaseTunnelType"/> + <xs:element name="vni-valid" type="xs:boolean"> + <xs:annotation> + <xs:documentation> Indicates how the corresponding flag should be set in packets + sent on the tunnel. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="vni" type="xs:unsignedInt"> + <xs:annotation> + <xs:documentation> Virtual network identifier assigned to all packets sent on + the tunnel. A VxLAN implementation MAY use the this element to set the + OXM_OF_TUNNEL_ID match field metadata in the OpenFlow protocol. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="vni-multicast-group" type="inet:ip-address"> + <xs:annotation> + <xs:documentation> If IP multicast is used to support broadcast on the tunnel + this specifies the corresponding multicast IP address </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="udp-source-port" type="inet:port-number"> + <xs:annotation> + <xs:documentation> Specifies the outer UDP source port number. If this element + is absent, the port number MAY be chosen dynamically. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="udp-dest-port" type="inet:port-number"> + <xs:annotation> + <xs:documentation> Specifies the outer UDP destination port number. It is + intended to reserve a port number for VxLAN at IANA. As soon as this has + been reserved, the reserved number SHOULD become the default value for this + element. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="udp-checksum" type="xs:boolean"> + <xs:annotation> + <xs:documentation> Boolean flag to indicate whether or not the outer UDP + checksum should be set </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="OFControllerType"> + <xs:annotation> + <xs:documentation> This grouping specifies all properties of an OpenFlow Logical Switch + Controller. NETCONF <edit-config> operations MUST be implemented as follows: * + The 'id' element MUST be present at all <edit-config> operations to identify + the controller. * If the operation is 'merge' or 'replace', the element is created + if it does not exist, and its value is set to the value found in the XML RPC data. * + If the operation is 'create', the element is created if it does not exist. If the + element already exists, a 'data‑exists' error is returned. * If the operation is + 'delete', the element is deleted if it exists. If the element does not exist, a + 'data‑missing' error is returned. </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="id" type="OFConfigId"> + <xs:annotation> + <xs:documentation> A unique but locally arbitrary identifier that uniquely + identifies an OpenFlow Controller within the context of an OpenFlow Capable + Switch. It MUST be persistent across reboots of the OpenFlow Capable Switch. + This element MUST be present to identify the OpenFlow controller. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="role" minOccurs="0"> + <xs:annotation> + <xs:documentation> This element indicates the role of the OpenFlow Controller. + Semantics of these roles are specified in the OpenFlow specifications 1.0 - + 1.3.1. It is RECOMMENDED that the roles of controllers are not configured by + OF-CONFIG 1.1.1 but determined using the OpenFlow protocol. OpenFlow + Controllers configured by OF-CONFIG 1.1.1 have the default role 'equal'. A + role other than 'equal' MAY be assigned to a controller. Roles 'slave' and + 'equal' MAY be assigned to multiple controllers. Role 'master' MUST NOT be + assigned to more than one controller. This element is optional. If this + element is not present it defaults to 'equal'. </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="master"/> + <xs:enumeration value="slave"/> + <xs:enumeration value="equal"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="ip-address" type="inet:ip-address" minOccurs="0"> + <xs:annotation> + <xs:documentation> The IP address of the OpenFlow Controller. This IP address is + used by the OpenFlow Logical Switch when connecting to the OpenFlow + Controller. This element MUST be present in the NETCONF data store. If this + element is not present in a NETCONF <edit-config> operation 'create', + 'merge' or 'replace' and the parent element does not exist, a 'data-missing' + error is returned. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="port" type="inet:port-number" minOccurs="0"> + <xs:annotation> + <xs:documentation> The TCP port number at the OpenFlow Controller. This port + number is used by the OpenFlow Logical Switch when connecting to the + OpenFlow Controller using TCP or TLS. The default value is 6633. This + element is optional. If this element is not present it defaults to 6633. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="local-ip-address" type="inet:ip-address" minOccurs="0"> + <xs:annotation> + <xs:documentation> The local IP address of the OpenFlow Logical Switch when + connecting to this OpenFlow Controller. It is the source IP address of + packets sent to this OpenFlow Controller. If present, this element overrides + any default IP address. This element is optional. Attempts to set this + element to an IP address that cannot be used by the OpenFlow Logical Switch + MUST result in an 'bad-element' error with type 'application'. The + <error-info> element MUST contain the name of this element in the + <bad-element> element. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="local-port" type="inet:port-number" minOccurs="0"> + <xs:annotation> + <xs:documentation> The local TCP port number of the OpenFlow Logical Switch when + connecting to this OpenFlow Controller. It is the source TCP port number of + packets sent to this OpenFlow Controller. If this element is not present, + then the port number is chosen arbitrarily by the OpenFlow Logical Switch. + This element is optional. Attempts to set this element to a port number that + cannot be used by the OpenFlow Logical Switch MUST result in an + 'bad-element' error with type 'application'. The <error-info> element + MUST contain the name of this element in the <bad-element> element. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="protocol" minOccurs="0"> + <xs:annotation> + <xs:documentation> The default protocol tha the OpenFlow Logical Switch uses to + connect to this OpenFlow Controller. 'tls' is the default value. This + element is optional. If this element is not present it defaults to 'tls'. + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="tcp"/> + <xs:enumeration value="tls"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="state" minOccurs="0"> + <xs:annotation> + <xs:documentation> This container holds connection state information that + indicate the connection state of the OpenFlow Logical Switch and the + OpenFlow protocol version used for the connection. Children of this element + are not configurable and can only be retrieved by NETCONF <get> + operations. Attemps to modify this element and its children with a NETCONF + <edit-config> operation MUST result in an 'operation-not-supported' + error with type 'application'. </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="connection-state" minOccurs="0" type="OFUpDownStateType"> + <xs:annotation> + <xs:documentation> This object indicates the connections state of + the OpenFlow Logical Switch to this controller. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="current-version" minOccurs="0" + type="OFOpenFlowVersionType"> + <xs:annotation> + <xs:documentation> This object indicates the version of the OpenFlow + protocol used between the OpenFlow Logical Switch and this + Controller. If element connection-state has value 'up', then + this element indicates the actual version in use. If element + connection-state has value 'down', then this element indicates + the version number of the last established connection with this + OpenFlow Controller. The value of this element MAY be persistent + across reboots of the OpenFlow Logical Switch in such a case. If + element connection-state has value 'down'and there is no + information about previous connections to this OpenFlow + controller, then this element is not present or has the value + '0'. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="supported-versions" minOccurs="0" maxOccurs="unbounded" + type="OFOpenFlowVersionType"> + <xs:annotation> + <xs:documentation> This list of elements includes one entry for each + OpenFlow protocol version that this OpenFlow controller + supports. It SHOULD contain all </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="local-ip-address-in-use" minOccurs="0" + type="inet:ip-address"> + <xs:annotation> + <xs:documentation> The local IP address of the OpenFlow Logical + Switch when connecting to this OpenFlow Controller. It is the + source IP address of packets sent to this OpenFlow Controller. + If present, this element overrides any default IP address. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="local-port-in-use" minOccurs="0" type="inet:port-number"> + <xs:annotation> + <xs:documentation> The local TCP port number of the OpenFlow Logical + Switch. If element connection-state has value 'up', then this + element indicates the actual port number in use. If element + connection-state has value 'down', then this element indicates + the port number used for the last attempt to establish a + connection with this OpenFlow Controller.??? When connecting to + this OpenFlow Controller, it is the source TCP port number of + packets sent to this OpenFlow Controller. If this element has + its defaqult value 0, then port number is chosen arbitrarily by + the OpenFlow Logical Switch. </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:group> + <xs:element name="capable-switch"> + <xs:annotation> + <xs:documentation> The OpenFlow Capable Switch serves as the root element for an + OpenFlow configuration. It contains logical switches and resources that can be + assigned to logical switches. It may have relations to OpenFlow Configuration + Points. </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="id" type="inet:uri"> + <xs:annotation> + <xs:documentation> A unique but locally arbitrary identifier that uniquely + identifies a Capable Switch within the context of potential OpenFlow + Configuration Points. It MUST be persistent across reboots of the + OpenFlow Capable Switch. This element MUST be present in the NETCONF + data store. If this element is not present in a NETCONF + <edit-config> operation 'create', 'merge' or 'replace' and the + parent element does not exist, a 'data-missing' error is returned. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="config-version" minOccurs="0" type="xs:string"> + <xs:annotation> + <xs:documentation> The maximum supported OF-CONFIG version that is supported + by the OpenFlow Capable Switch. For switches implementing this version + of the OF-CONFIG protocol this MUST always be 1.1.1. This object can be + used to identify the OF-CONFIG version a capable switch supports + beginning with version 1.1.1 of OF-CONFIG. In addtion the supported + version can be determined by the namespace the OpenFlow Capable Switch + returns to configuration request of an element (like capable-switch) + that is present in all OF-CONFIG versions specified so far. This is the + only possiblity to identify OF-CONFIG versions prior to OF-CONFIG 1.1.1. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="configuration-points" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="configuration-point" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation> The list of all Configuration Points known to + the OpenFlow Capable Switch that may manage it using + OF-CONFIG. The element 'id' of OFConfigurationType MUST be + unique within this list. </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:group ref="OFConfigurationPointType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:key name="key_configuration-points_capableswitch_configuration-point"> + <xs:selector xpath="of11-config:configuration-point"/> + <xs:field xpath="of11-config:id"/> + </xs:key> + </xs:element> + <xs:element name="resources" minOccurs="0"> + <xs:annotation> + <xs:documentation> A lists containing all resources of the OpenFlow Capable + Switch that can be used by OpenFlow Logical Switches. Resources are + listed here independent of their actual assignment to OpenFlow Logical + Switches. They may be available to be assigned to an OpenFlow Logical + Switch or already in use by an OpenFlow Logical Switch. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="port" minOccurs="0" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation> The list contains all port resources of the + OpenFlow Capable Switch. The element 'resource-id' of + OFPortType MUST be unique within this list. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:group ref="OFPortType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="queue" minOccurs="0" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation> The list contains all queue resources of the + OpenFlow Capable Switch. The element 'resource-id' of + OFQueueType MUST be unique within this list. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:group ref="OFQueueType"/> + </xs:sequence> + <xs:attribute name="operation" type="xs:string"/> + </xs:complexType> + </xs:element> + <xs:element name="owned-certificate" minOccurs="0" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation> The list contains all owned certificate + resources of the OpenFlow Capable Switch. The element + 'resource-id' of OFOwnedCertificateType MUST be unique + within this list. </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:group ref="OFOwnedCertificateType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="external-certificate" minOccurs="0" + maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation> The list contains all external certificate + resources of the OpenFlow Capable Switch. The element + 'resource-id' of OFExternalCertificateType MUST be unique + within this list. </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:group ref="OFExternalCertificateType"/> + </xs:sequence> + <xs:attribute name="operation" type="xs:string"/> + </xs:complexType> + </xs:element> + <xs:element name="flow-table" minOccurs="0" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation> The list contains all flow table resources of + the OpenFlow Capable Switch. The element 'resource-id' of + OFFlowTableType MUST be unique within this list. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:group ref="OFFlowTableType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:key name="key_resources_capable-switch_port"> + <xs:selector xpath="of11-config:port"/> + <xs:field xpath="of11-config:resource-id"/> + </xs:key> + <xs:key name="key_resources_capable-switch_queue"> + <xs:selector xpath="of11-config:queue"/> + <xs:field xpath="of11-config:resource-id"/> + </xs:key> + <xs:key name="key_resources_capable-switch_owned-certificate"> + <xs:selector xpath="of11-config:owned-certificate"/> + <xs:field xpath="of11-config:resource-id"/> + </xs:key> + <xs:key name="key_resources_capable-switch_external-certificate"> + <xs:selector xpath="of11-config:external-certificate"/> + <xs:field xpath="of11-config:resource-id"/> + </xs:key> + <xs:key name="key_resources_capable-switch_flow-table"> + <xs:selector xpath="of11-config:flow-table"/> + <xs:field xpath="of11-config:resource-id"/> + </xs:key> + </xs:element> + <xs:element name="logical-switches" minOccurs="0"> + <xs:annotation> + <xs:documentation> This element contains a list of all OpenFlow Logical + Switches available at the OpenFlow Capable Switch. </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="switch" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation> The list of all OpenFlow Logical Switches on + the OpenFlow Capable Switch. The element 'resource-id' of + OFLogicalSwitchType MUST be unique within this list. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:group ref="OFLogicalSwitchType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:key name="key_logical-switches_capable-switch_switch"> + <xs:selector xpath="of11-config:switch"/> + <xs:field xpath="of11-config:id"/> + </xs:key> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> +</xs:schema> diff --git a/ryu/lib/of_config/of-config-1.1.xsd b/ryu/lib/of_config/of-config-1.1.xsd new file mode 100644 index 00000000..f93ec7ec --- /dev/null +++ b/ryu/lib/of_config/of-config-1.1.xsd @@ -0,0 +1,738 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" + xmlns:ds="http://www.w3.org/2000/09/xmldsig#" + elementFormDefault="qualified" + targetNamespace="urn:onf:params:xml:ns:onf:of12:config" + xmlns="urn:onf:params:xml:ns:onf:of12:config" + xmlns:of12-config="urn:onf:params:xml:ns:onf:of12:config" + xmlns:inet="urn:ietf:params:xml:ns:yang:ietf-inet-types"> + <xs:element name="capable-switch" type="OFCapableSwitchType"> + <xs:annotation> + <xs:documentation>The OpenFlow Capable Switch and its configurationpoints, logical + switches and resources available to logicalswitches. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:simpleType name="OFConfigID"> + <xs:restriction base="xs:string"/> + </xs:simpleType> + <xs:complexType name="OFCapableSwitchType"> + <xs:annotation> + <xs:documentation>Representation of an OpenFlow Capable Switch.</xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="id" type="OFConfigID"> + <xs:annotation> + <xs:documentation>An unique but locally arbitrary identifier that identifies a + Capable Switch towards management systems and that is persistent across + reboots of the system. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="configuration-points" minOccurs="0" type="OFConfigurationPointListType"> + <xs:annotation> + <xs:documentation>The list of all configuration points known to the OpenFlow + Capable Switch that may manage it using OF-CONFIG. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="resources" minOccurs="0" type="OFCapableSwitchResourceListType"> + <xs:annotation> + <xs:documentation>This element contains lists of all resources of the OpenFlow + Capable Switch that can be used by OpenFlow Logical Switches. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="logical-switches" minOccurs="0" type="OFLogicalSwitchListType"> + <xs:annotation> + <xs:documentation>List of all OpenFlow Logical Switches available on the + OpenFlow Capable Switch. </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:complexType name="OFConfigurationPointListType"> + <xs:annotation> + <xs:documentation/> + </xs:annotation> + <xs:sequence> + <xs:element name="configuration-point" type="OFConfigurationPointType" + maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="OFCapableSwitchResourceListType"> + <xs:sequence> + <xs:element name="port" type="OFPortType" minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="queue" type="OFQueueType" minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="owned-certificate" type="OFOwnedCertificateType" minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="external-certificate" type="OFExternalCertificateType" + minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="flow-table" type="OFFlowTableType" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="OFLogicalSwitchListType"> + <xs:sequence> + <xs:element name="logical-switch" type="OFLogicalSwitchType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="OFConfigurationPointType"> + <xs:annotation> + <xs:documentation>Representation of an OpenFlow Configuration Point. </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="id" type="OFConfigID"> + <xs:annotation> + <xs:documentation>An identifier that identifies a Configuration Point of the + OpenFlow Capable Switch. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="uri" type="inet:uri"> + <xs:annotation> + <xs:documentation>A locator of the Configuration Point. This element MAY contain + a locator of the configuration point including, for example, an IP address + and a port number. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="protocol" type="OFConfigurationPointProtocolType"> + <xs:annotation> + <xs:documentation>The transport protocol that the Configuration Point uses when + communicating via NETCONF with the OpenFlow Capable Switch. + </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:simpleType name="OFConfigurationPointProtocolType"> + <xs:annotation> + <xs:documentation>The mappings of NETCONF to different transport protocols are defined + in RFC 6242 for SSH, RFC 4743 for SOAP, RFC 4744 for BEEP, and RFC 5539 for TLS. + </xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:enumeration value="ssh"/> + <xs:enumeration value="soap"/> + <xs:enumeration value="tls"/> + <xs:enumeration value="beep"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="OFLogicalSwitchType"> + <xs:annotation> + <xs:documentation>The representation of an OpenFlow Logical Switch </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="id" minOccurs="0" type="OFConfigID"> + <xs:annotation> + <xs:documentation>An unique but locally arbitrary identifier that identifies an + OpenFlow Logical Switch within an OpenFlow Capable Switch. It is persistent + across reboots of the system. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="capabilities" minOccurs="0" type="OFLogicalSwitchCapabilitiesType"> + <xs:annotation> + <xs:documentation>Capability items of logical switch. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="datapath-id" type="OFConfigID"> + <xs:annotation> + <xs:documentation>A unique identifier that identifiers an OpenFlow Logical + Switch within the context of an OpenFlow Controller. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="enabled" minOccurs="0" type="xs:boolean"/> + <xs:element name="check-controller-certificate" minOccurs="0" type="xs:boolean"/> + <xs:element name="lost-connection-behavior" minOccurs="0" + type="OFLogicalSwitchLostConnnectionBehavior"/> + <xs:element name="controllers" minOccurs="0" type="OFControllerListType"> + <xs:annotation> + <xs:documentation>The list of controllers that are assigned to the OpenFlow + Logical Switch. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="resources" minOccurs="0" type="OFLogicalSwitchResourceListType"> + <xs:annotation> + <xs:documentation>The list of references to all resources of the OpenFlow + Capable Switch that the OpenFlow Logical Switch has exclusive access to. + </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:simpleType name="OFLogicalSwitchLostConnnectionBehavior"> + <xs:restriction base="xs:string"> + <xs:enumeration value="failSecureMode"/> + <xs:enumeration value="failStandaloneMode"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="OFControllerListType"> + <xs:sequence> + <xs:element name="controller" type="OFControllerType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="OFLogicalSwitchResourceListType"> + <xs:sequence> + <xs:element name="port" type="OFConfigID" maxOccurs="unbounded"/> + <xs:element name="queue" type="OFConfigID" maxOccurs="unbounded"/> + <xs:element name="certificate" type="OFConfigID" minOccurs="0" maxOccurs="1"/> + <xs:element name="flow-table" type="OFConfigID" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="OFLogicalSwitchCapabilitiesType"> + <xs:sequence> + <xs:element name="max-buffered-packets" type="xs:integer"> + <xs:annotation> + <xs:documentation>The maximum number of packets the switch can buffer when + sending packets to the controller using packet-in messages. See OpenFlow + protocol 1.2 section A.3.1 </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="max-tables" type="xs:integer"> + <xs:annotation> + <xs:documentation> The number of flow tables supported by the switch. See + OpenFlow protocol 1.2 section A.3.1 </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="max-ports" type="xs:integer"> + <xs:annotation> + <xs:documentation> The number of ports supported by the switch. See OpenFlow + protocol 1.2 section A.3.1 </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="flow-statistics" type="xs:boolean"> + <xs:annotation> + <xs:documentation> Whether the switch supports flow statistics. See OpenFlow + protocol 1.2 section A.3.1 </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="table-statistics" type="xs:boolean"> + <xs:annotation> + <xs:documentation> Whether the switch supports table statistics. See OpenFlow + protocol 1.2 section A.3.1 </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="port-statistics" type="xs:boolean"> + <xs:annotation> + <xs:documentation>Whether the switch supports port statistics. See OpenFlow + protocol 1.2 section A.3.1 </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="group-statistics" type="xs:boolean"> + <xs:annotation> + <xs:documentation> Whether the switch supports group statistics. See OpenFlow + protocol 1.2 section A.3.1 </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="queue-statistics" type="xs:boolean"> + <xs:annotation> + <xs:documentation>Whether the switch supports queue statistics. See OpenFlow + protocol 1.2 section A.3.1 </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="reassemble-ip-fragments" type="xs:boolean"> + <xs:annotation> + <xs:documentation>Whether the switch supports reassemble IP fragments. See + OpenFlow protocol 1.2 section A.3.1 </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="block-looping-ports" type="xs:boolean"> + <xs:annotation> + <xs:documentation>"true" indicates that a switch protocol outside of OpenFlow, + such as 802.1D Spanning Tree, will detect topology loops and block ports to + prevent packet loops. See OpenFlow protocol 1.2 section A.3.1 + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="reserved-port-types" type="OFReservedPortTypes"> + <xs:annotation> + <xs:documentation>Specify generic forwarding actions such as sending to the + controller, ooding, or forwarding using non-OpenFlow methods, such as + "normal" switch processing. SeeOpenFlow protocol 1.2 section 4.5. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="group-types" type="OFGroupTypes"> + <xs:annotation> + <xs:documentation>The group types supported by the switch. SeeOpenFlow protocol + 1.2 section 5.4.1. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="group-capabilities" type="OFGroupCapabilities"> + <xs:annotation> + <xs:documentation>The group capabilities supported by the switch. SeeOpenFlow + protocol 1.2 section A.3.5.9. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="action-types" type="OFActionTypes"> + <xs:annotation> + <xs:documentation>The action types supported by the switch. See OpenFlow + protocol 1.2 section 5.9 and A.2.5. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="instruction-types" type="OFInstructionTypes"> + <xs:annotation> + <xs:documentation>The instruction types supported by the switch. See OpenFlow + protocol 1.2 section 5.6. </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:complexType name="OFReservedPortTypes"> + <xs:sequence minOccurs="1" maxOccurs="unbounded"> + <xs:element name="type" type="OFReservedPortType"/> + </xs:sequence> + </xs:complexType> + <xs:simpleType name="OFReservedPortType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="all"/> + <xs:enumeration value="controller"/> + <xs:enumeration value="table"/> + <xs:enumeration value="inport"/> + <xs:enumeration value="any"/> + <xs:enumeration value="local"/> + <xs:enumeration value="normal"/> + <xs:enumeration value="flood"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="OFGroupTypes"> + <xs:sequence minOccurs="1" maxOccurs="unbounded"> + <xs:element name="type" type="OFGroupType"/> + </xs:sequence> + </xs:complexType> + <xs:simpleType name="OFGroupType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="all"/> + <xs:enumeration value="select"/> + <xs:enumeration value="indirect"/> + <xs:enumeration value="fast-failover"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="OFGroupCapabilities"> + <xs:sequence minOccurs="1" maxOccurs="unbounded"> + <xs:element name="capability" type="OFGroupCapability"/> + </xs:sequence> + </xs:complexType> + <xs:simpleType name="OFGroupCapability"> + <xs:restriction base="xs:string"> + <xs:enumeration value="select-weight"/> + <xs:enumeration value="select-liveness"/> + <xs:enumeration value="chaining"/> + <xs:enumeration value="chaining-check"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="OFActionTypes"> + <xs:sequence minOccurs="1" maxOccurs="unbounded"> + <xs:element name="type" type="OFActionType"/> + </xs:sequence> + </xs:complexType> + <xs:simpleType name="OFActionType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="output"/> + <xs:enumeration value="copy-ttl-out"/> + <xs:enumeration value="copy-ttl-in"/> + <xs:enumeration value="set-mpls-ttl"/> + <xs:enumeration value="dec-mpls-ttl"/> + <xs:enumeration value="push-vlan"/> + <xs:enumeration value="pop-vlan"/> + <xs:enumeration value="push-mpls"/> + <xs:enumeration value="pop-mpls"/> + <xs:enumeration value="set-queue"/> + <xs:enumeration value="group"/> + <xs:enumeration value="set-nw-ttl"/> + <xs:enumeration value="dec-nw-ttl"/> + <xs:enumeration value="pop-mpls"/> + <xs:enumeration value="set-field"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="OFInstructionTypes"> + <xs:sequence minOccurs="1" maxOccurs="unbounded"> + <xs:element name="type" type="OFInstructionType"/> + </xs:sequence> + </xs:complexType> + <xs:simpleType name="OFInstructionType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="apply-actions"/> + <xs:enumeration value="clear-actions"/> + <xs:enumeration value="write-actions"/> + <xs:enumeration value="write-metadata"/> + <xs:enumeration value="goto-table"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="OFControllerType"> + <xs:annotation> + <xs:documentation>Representation of an OpenFlow Controller </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="id" type="OFConfigID"> + <xs:annotation> + <xs:documentation>An unique but locally arbitrary identifier that identifies an + OpenFlow Controller within the context of an OpenFlow Capable Switch. It is + persistent across reboots of the system. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="role" minOccurs="0" type="OFControllerRoleType"> + <xs:annotation> + <xs:documentation>The predefined role of the controller. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ip-address" minOccurs="0" type="inet:ip-prefix"> + <xs:annotation> + <xs:documentation>The remote IP of the controller to connect + to.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="port" minOccurs="0" type="inet:port-number"> + <xs:annotation> + <xs:documentation>The port number the controller listens on. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="local-ip-address" minOccurs="0" type="inet:ip-address"> + <xs:annotation> + <xs:documentation>This specifies the source IP for packets sent to this + controller and overrides the default IP used. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="local-port" minOccurs="0" type="inet:port-number"> + <xs:annotation> + <xs:documentation>The port number the controller listens on. If 0 the port is + chosen dynamically. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="protocol" minOccurs="0" type="OFControllerProtocolType"> + <xs:annotation> + <xs:documentation>The protocol used for connecting to the controller. Both sides + must support the chosen protocol for a successful establishment of a + connection. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="state" minOccurs="0" type="OFControllerOpenFlowStateType"> + <xs:annotation> + <xs:documentation>This element represents the state of the OpenFlow protocol + connection to the controller. </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + <xs:attribute name="operation" type="xs:string"/> + </xs:complexType> + <xs:simpleType name="OFControllerRoleType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="master"/> + <xs:enumeration value="slave"/> + <xs:enumeration value="equal"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="OFControllerProtocolType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="tcp"/> + <xs:enumeration value="tls"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="OFControllerOpenFlowStateType"> + <xs:sequence> + <xs:element name="connection-state" type="OFControllerConnectionStateType"> + <xs:annotation> + <xs:documentation>This element represents the run-time state of the OpenFlow + connection to the Controller. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="current-version" type="OFOpenFlowVersionType"> + <xs:annotation> + <xs:documentation>This element denotes the version of OpenFlow that Controller + is currently communicating with. It is only relevant when the + connection-state element is set to "up". </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="supported-versions" type="OFOpenFlowSupportedVersionsType"> + <xs:annotation> + <xs:documentation>This element denotes all of the versions of the OpenFlow + protocol that the controller supports. </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:simpleType name="OFControllerConnectionStateType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="up"/> + <xs:enumeration value="down"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="OFOpenFlowSupportedVersionsType"> + <xs:sequence> + <xs:element name="version" type="OFOpenFlowVersionType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:simpleType name="OFOpenFlowVersionType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="1.2"/> + <xs:enumeration value="1.1"/> + <xs:enumeration value="1.0"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="OFResourceType"> + <xs:annotation> + <xs:documentation>A Base Class for OpenFlow Resources. </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="resource-id" type="OFConfigID"> + <xs:annotation> + <xs:documentation>An unique but locally arbitrary identifier that identifies a + resource within the context of and OpenFlow Capable Switch and is persistent + across reboots of the system. </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:complexType name="OFPortType"> + <xs:complexContent> + <xs:extension base="OFResourceType"> + <xs:sequence> + <xs:element name="number" minOccurs="0" type="xs:unsignedInt"/> + <xs:element name="name" minOccurs="0" type="xs:string"/> + <xs:element name="current-rate" minOccurs="0" type="xs:unsignedLong"/> + <xs:element name="max-rate" minOccurs="0" type="xs:unsignedLong"/> + <xs:element name="configuration" minOccurs="0" type="OFPortConfigurationType"/> + <xs:element name="state" minOccurs="0" type="OFPortStateType"/> + <xs:element name="features" minOccurs="0" type="OFPortFeatureMasterList"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="OFPortFeatureMasterList"> + <xs:sequence> + <xs:element name="current" minOccurs="0" type="OFPortCurrentFeatureListType"/> + <xs:element name="advertised" minOccurs="0" type="OFPortOtherFeatureListType"/> + <xs:element name="supported" minOccurs="0" type="OFPortOtherFeatureListType"/> + <xs:element name="advertised-peer" minOccurs="0" type="OFPortOtherFeatureListType"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="OFPortConfigurationType"> + <xs:sequence> + <xs:element name="admin-state" minOccurs="0" type="OFPortStateOptionsType"/> + <xs:element name="no-receive" minOccurs="0" type="xs:boolean"/> + <xs:element name="no-forward" minOccurs="0" type="xs:boolean"/> + <xs:element name="no-packet-in" minOccurs="0" type="xs:boolean"/> + </xs:sequence> + <xs:attribute name="operation" type="xs:string"/> + </xs:complexType> + <xs:complexType name="OFPortStateType"> + <xs:sequence> + <xs:element name="oper-state" minOccurs="0" type="OFPortStateOptionsType"/> + <xs:element name="blocked" minOccurs="0" type="xs:boolean"/> + <xs:element name="live" minOccurs="0" type="xs:boolean"/> + </xs:sequence> + </xs:complexType> + <xs:simpleType name="OFPortStateOptionsType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="up"/> + <xs:enumeration value="down"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="OFPortCurrentFeatureListType"> + <xs:sequence> + <xs:element name="rate" type="OFPortRateType"/> + <xs:element name="auto-negotiate" type="OFPortAutoNegotiateType"/> + <xs:element name="medium" type="OFPortMediumType"/> + <xs:element name="pause" type="OFPortPauseType"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="OFPortOtherFeatureListType"> + <xs:sequence> + <xs:element name="rate" type="OFPortRateType" minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="auto-negotiate" type="OFPortAutoNegotiateType" minOccurs="0"/> + <xs:element name="medium" type="OFPortMediumType" minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="pause" type="OFPortPauseType" minOccurs="0"/> + </xs:sequence> + <xs:attribute name="operation" type="xs:string"/> + </xs:complexType> + <xs:simpleType name="OFPortRateType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="10Mb-HD"/> + <xs:enumeration value="10Mb-FD"/> + <xs:enumeration value="100Mb-HD"/> + <xs:enumeration value="100Mb-FD"/> + <xs:enumeration value="1Gb-HD"/> + <xs:enumeration value="1Gb-FD"/> + <xs:enumeration value="1 Tb"/> + <xs:enumeration value="Other"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="OFPortAutoNegotiateType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="enabled"/> + <xs:enumeration value="disabled"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="OFPortMediumType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="copper"/> + <xs:enumeration value="fiber"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="OFPortPauseType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="unsupported"/> + <xs:enumeration value="symmetric"/> + <xs:enumeration value="asymmetric"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="OFQueueType"> + <xs:complexContent> + <xs:extension base="OFResourceType"> + <xs:sequence maxOccurs="1" minOccurs="1"> + <xs:element name="id" minOccurs="0" type="OFConfigID"> + <xs:annotation> + <xs:documentation>An unique but locally arbitrary number that identifies + a queue within the context of and OpenFlow Logical Switch and is + persistent across reboots of the system. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="port" minOccurs="0" type="OFConfigID"> + <xs:annotation> + <xs:documentation>Port in the context of the same Logical Switch which + this Queue is associated with. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="properties" type="OFQueuePropertiesType"> + <xs:annotation> + <xs:documentation>Properties of the Queue. </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + <xs:attribute name="operation" type="xs:string"/> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="OFQueuePropertiesType"> + <xs:sequence> + <xs:element name="min-rate" type="OFQueueMinRateType" minOccurs="0" maxOccurs="1"> + <xs:annotation> + <xs:documentation>The minimal rate that is reserved for this queue in 1/10 of a + percent of the actual rate. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="max-rate" type="OFQueueMaxRateType" minOccurs="0" maxOccurs="1"> + <xs:annotation> + <xs:documentation>The maximum rate that is reserved for this queue in 1/10 of a + percent of the actual rate. </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element minOccurs="0" maxOccurs="unbounded" name="experimenter" type="xs:unsignedLong"> + <xs:annotation> + <xs:documentation>Experimental Properties</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:simpleType name="OFQueueMinRateType"> + <xs:restriction base="xs:integer"/> + </xs:simpleType> + <xs:simpleType name="OFQueueMaxRateType"> + <xs:restriction base="xs:integer"/> + </xs:simpleType> + <xs:complexType name="OFExternalCertificateType"> + <xs:complexContent> + <xs:extension base="OFResourceType"> + <xs:sequence maxOccurs="1" minOccurs="1"> + <xs:element name="certificate" minOccurs="0" type="OFX509CertificateType"/> + </xs:sequence> + <xs:attribute name="operation" type="xs:string"/> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="OFOwnedCertificateType"> + <xs:complexContent> + <xs:extension base="OFResourceType"> + <xs:sequence maxOccurs="1" minOccurs="1"> + <xs:element name="certificate" type="OFX509CertificateType"/> + <xs:element name="private-key" type="ds:KeyValueType"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:simpleType name="OFX509CertificateType"> + <xs:restriction base="xs:base64Binary"/> + </xs:simpleType> + <xs:complexType name="OFFlowTableType"> + <xs:complexContent> + <xs:extension base="OFResourceType"> + <xs:sequence maxOccurs="1" minOccurs="1"> + <xs:element name="max-entries" type="xs:integer"/> + <xs:element name="next-tables" type="OFNextFlowTables"/> + <xs:element name="instructions" type="OFFlowTableInstructions"/> + <xs:element name="matches" type="OFFlowTableMatchFields"/> + <xs:element name="write-actions" type="OFFlowTableWriteActions"/> + <xs:element name="apply-actions" type="OFFlowTableApplyActions"/> + <xs:element name="write-setfields" type="OFFlowTableMatchFields"/> + <xs:element name="apply-setfields" type="OFFlowTableMatchFields"/> + <xs:element name="wildcards" type="OFFlowTableMatchFields"/> + <xs:element name="metadata-match" type="xs:hexBinary"/> + <xs:element name="metadata-write" type="xs:hexBinary"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="OFNextFlowTables"> + <xs:sequence minOccurs="1" maxOccurs="10"> + <xs:element name="table-id" type="OFConfigID"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="OFFlowTableInstructions"> + <xs:sequence minOccurs="1" maxOccurs="10"> + <xs:element name="type" type="OFInstructionType"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="OFFlowTableMatchFields"> + <xs:sequence minOccurs="1" maxOccurs="10"> + <xs:element name="type" type="OFMatchFieldType"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="OFFlowTableWriteActions"> + <xs:sequence minOccurs="1" maxOccurs="10"> + <xs:element name="type" type="OFActionType"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="OFFlowTableApplyActions"> + <xs:sequence minOccurs="1" maxOccurs="10"> + <xs:element name="type" type="OFActionType"/> + </xs:sequence> + </xs:complexType> + <xs:simpleType name="OFMatchFieldType"> + <xs:annotation> + <xs:documentation> The open flow match field types. See OpenFlow protocol 1.2 section + A.2.3.7 </xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:enumeration value="input-port"/> + <xs:enumeration value="physical-input-port"/> + <xs:enumeration value="metadata"/> + <xs:enumeration value="ethernet-dest"/> + <xs:enumeration value="ethernet-src"/> + <xs:enumeration value="ethernet-frame-type"/> + <xs:enumeration value="vlan-id"/> + <xs:enumeration value="vlan-priority"/> + <xs:enumeration value="ip-dscp"/> + <xs:enumeration value="ip-ecn"/> + <xs:enumeration value="ip-protocol"/> + <xs:enumeration value="ipv4-src"/> + <xs:enumeration value="ipv4-dest"/> + <xs:enumeration value="tcp-src"/> + <xs:enumeration value="tcp-dest"/> + <xs:enumeration value="udp-src"/> + <xs:enumeration value="udp-dest"/> + <xs:enumeration value="sctp-src"/> + <xs:enumeration value="sctp-dest"/> + <xs:enumeration value="icmpv4-type"/> + <xs:enumeration value="icmpv4-code"/> + <xs:enumeration value="arp-op"/> + <xs:enumeration value="arp-src-ip-address"/> + <xs:enumeration value="arp-target-ip-address"/> + <xs:enumeration value="arp-src-hardware-address"/> + <xs:enumeration value="arp-target-hardware-address"/> + <xs:enumeration value="ipv6-src"/> + <xs:enumeration value="ipv6-dest"/> + <xs:enumeration value="ipv6-flow-label"/> + <xs:enumeration value="icmpv6-type"/> + <xs:enumeration value="icmpv6-code"/> + <xs:enumeration value="ipv6-nd-target"/> + <xs:enumeration value="ipv6-nd-source-link-layer"/> + <xs:enumeration value="ipv6-nd-target-link-layer"/> + <xs:enumeration value="mpls-label"/> + <xs:enumeration value="mpls-tc"/> + </xs:restriction> + </xs:simpleType> +</xs:schema> diff --git a/ryu/lib/of_config/xmldsig-core-schema.xsd b/ryu/lib/of_config/xmldsig-core-schema.xsd new file mode 100644 index 00000000..cc5cc8ab --- /dev/null +++ b/ryu/lib/of_config/xmldsig-core-schema.xsd @@ -0,0 +1,318 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE schema + PUBLIC "-//W3C//DTD XMLSchema 200102//EN" "http://www.w3.org/2001/XMLSchema.dtd" + [ + <!ATTLIST schema + xmlns:ds CDATA #FIXED "http://www.w3.org/2000/09/xmldsig#"> + <!ENTITY dsig 'http://www.w3.org/2000/09/xmldsig#'> + <!ENTITY % p ''> + <!ENTITY % s ''> + ]> + +<!-- Schema for XML Signatures + http://www.w3.org/2000/09/xmldsig# + $Revision: 1.1 $ on $Date: 2002/02/08 20:32:26 $ by $Author: reagle $ + + Copyright 2001 The Internet Society and W3C (Massachusetts Institute + of Technology, Institut National de Recherche en Informatique et en + Automatique, Keio University). All Rights Reserved. + http://www.w3.org/Consortium/Legal/ + + This document is governed by the W3C Software License [1] as described + in the FAQ [2]. + + [1] http://www.w3.org/Consortium/Legal/copyright-software-19980720 + [2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD +--> + + +<schema xmlns="http://www.w3.org/2001/XMLSchema" + xmlns:ds="http://www.w3.org/2000/09/xmldsig#" + targetNamespace="http://www.w3.org/2000/09/xmldsig#" + version="0.1" elementFormDefault="qualified"> + +<!-- Basic Types Defined for Signatures --> + +<simpleType name="CryptoBinary"> + <restriction base="base64Binary"> + </restriction> +</simpleType> + +<!-- Start Signature --> + +<element name="Signature" type="ds:SignatureType"/> +<complexType name="SignatureType"> + <sequence> + <element ref="ds:SignedInfo"/> + <element ref="ds:SignatureValue"/> + <element ref="ds:KeyInfo" minOccurs="0"/> + <element ref="ds:Object" minOccurs="0" maxOccurs="unbounded"/> + </sequence> + <attribute name="Id" type="ID" use="optional"/> +</complexType> + + <element name="SignatureValue" type="ds:SignatureValueType"/> + <complexType name="SignatureValueType"> + <simpleContent> + <extension base="base64Binary"> + <attribute name="Id" type="ID" use="optional"/> + </extension> + </simpleContent> + </complexType> + +<!-- Start SignedInfo --> + +<element name="SignedInfo" type="ds:SignedInfoType"/> +<complexType name="SignedInfoType"> + <sequence> + <element ref="ds:CanonicalizationMethod"/> + <element ref="ds:SignatureMethod"/> + <element ref="ds:Reference" maxOccurs="unbounded"/> + </sequence> + <attribute name="Id" type="ID" use="optional"/> +</complexType> + + <element name="CanonicalizationMethod" type="ds:CanonicalizationMethodType"/> + <complexType name="CanonicalizationMethodType" mixed="true"> + <sequence> + <any namespace="##any" minOccurs="0" maxOccurs="unbounded"/> + <!-- (0,unbounded) elements from (1,1) namespace --> + </sequence> + <attribute name="Algorithm" type="anyURI" use="required"/> + </complexType> + + <element name="SignatureMethod" type="ds:SignatureMethodType"/> + <complexType name="SignatureMethodType" mixed="true"> + <sequence> + <element name="HMACOutputLength" minOccurs="0" type="ds:HMACOutputLengthType"/> + <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> + <!-- (0,unbounded) elements from (1,1) external namespace --> + </sequence> + <attribute name="Algorithm" type="anyURI" use="required"/> + </complexType> + +<!-- Start Reference --> + +<element name="Reference" type="ds:ReferenceType"/> +<complexType name="ReferenceType"> + <sequence> + <element ref="ds:Transforms" minOccurs="0"/> + <element ref="ds:DigestMethod"/> + <element ref="ds:DigestValue"/> + </sequence> + <attribute name="Id" type="ID" use="optional"/> + <attribute name="URI" type="anyURI" use="optional"/> + <attribute name="Type" type="anyURI" use="optional"/> +</complexType> + + <element name="Transforms" type="ds:TransformsType"/> + <complexType name="TransformsType"> + <sequence> + <element ref="ds:Transform" maxOccurs="unbounded"/> + </sequence> + </complexType> + + <element name="Transform" type="ds:TransformType"/> + <complexType name="TransformType" mixed="true"> + <choice minOccurs="0" maxOccurs="unbounded"> + <any namespace="##other" processContents="lax"/> + <!-- (1,1) elements from (0,unbounded) namespaces --> + <element name="XPath" type="string"/> + </choice> + <attribute name="Algorithm" type="anyURI" use="required"/> + </complexType> + +<!-- End Reference --> + +<element name="DigestMethod" type="ds:DigestMethodType"/> +<complexType name="DigestMethodType" mixed="true"> + <sequence> + <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + </sequence> + <attribute name="Algorithm" type="anyURI" use="required"/> +</complexType> + +<element name="DigestValue" type="ds:DigestValueType"/> +<simpleType name="DigestValueType"> + <restriction base="base64Binary"/> +</simpleType> + +<!-- End SignedInfo --> + +<!-- Start KeyInfo --> + +<element name="KeyInfo" type="ds:KeyInfoType"/> +<complexType name="KeyInfoType" mixed="true"> + <choice maxOccurs="unbounded"> + <element ref="ds:KeyName"/> + <element ref="ds:KeyValue"/> + <element ref="ds:RetrievalMethod"/> + <element ref="ds:X509Data"/> + <element ref="ds:PGPData"/> + <element ref="ds:SPKIData"/> + <element ref="ds:MgmtData"/> + <any processContents="lax" namespace="##other"/> + <!-- (1,1) elements from (0,unbounded) namespaces --> + </choice> + <attribute name="Id" type="ID" use="optional"/> +</complexType> + + <element name="KeyName" type="string"/> + <element name="MgmtData" type="string"/> + + <element name="KeyValue" type="ds:KeyValueType"/> + <complexType name="KeyValueType" mixed="false"> + <choice> + <element ref="ds:DSAKeyValue"/> + <element ref="ds:RSAKeyValue"/> + <any namespace="##other" processContents="lax"/> + </choice> + </complexType> + + <element name="RetrievalMethod" type="ds:RetrievalMethodType"/> + <complexType name="RetrievalMethodType"> + <sequence> + <element ref="ds:Transforms" minOccurs="0"/> + </sequence> + <attribute name="URI" type="anyURI"/> + <attribute name="Type" type="anyURI" use="optional"/> + </complexType> + +<!-- Start X509Data --> + +<element name="X509Data" type="ds:X509DataType"/> +<complexType name="X509DataType"> + <sequence maxOccurs="unbounded"> + <choice> + <element name="X509IssuerSerial" type="ds:X509IssuerSerialType"/> + <element name="X509SKI" type="base64Binary"/> + <element name="X509SubjectName" type="string"/> + <element name="X509Certificate" type="base64Binary"/> + <element name="X509CRL" type="base64Binary"/> + <any namespace="##other" processContents="lax"/> + </choice> + </sequence> +</complexType> + +<complexType name="X509IssuerSerialType"> + <sequence> + <element name="X509IssuerName" type="string"/> + <element name="X509SerialNumber" type="integer"/> + </sequence> +</complexType> + +<!-- End X509Data --> + +<!-- Begin PGPData --> + +<element name="PGPData" type="ds:PGPDataType"/> +<complexType name="PGPDataType"> + <choice> + <sequence> + <element name="PGPKeyID" type="base64Binary"/> + <element name="PGPKeyPacket" type="base64Binary" minOccurs="0"/> + <any namespace="##other" processContents="lax" minOccurs="0" + maxOccurs="unbounded"/> + </sequence> + <sequence> + <element name="PGPKeyPacket" type="base64Binary"/> + <any namespace="##other" processContents="lax" minOccurs="0" + maxOccurs="unbounded"/> + </sequence> + </choice> +</complexType> + +<!-- End PGPData --> + +<!-- Begin SPKIData --> + +<element name="SPKIData" type="ds:SPKIDataType"/> +<complexType name="SPKIDataType"> + <sequence maxOccurs="unbounded"> + <element name="SPKISexp" type="base64Binary"/> + <any namespace="##other" processContents="lax" minOccurs="0"/> + </sequence> +</complexType> + +<!-- End SPKIData --> + +<!-- End KeyInfo --> + +<!-- Start Object (Manifest, SignatureProperty) --> + +<element name="Object" type="ds:ObjectType"/> +<complexType name="ObjectType" mixed="true"> + <sequence minOccurs="0" maxOccurs="unbounded"> + <any namespace="##any" processContents="lax"/> + </sequence> + <attribute name="Id" type="ID" use="optional"/> + <attribute name="MimeType" type="string" use="optional"/> <!-- add a grep facet --> + <attribute name="Encoding" type="anyURI" use="optional"/> +</complexType> + +<element name="Manifest" type="ds:ManifestType"/> +<complexType name="ManifestType"> + <sequence> + <element ref="ds:Reference" maxOccurs="unbounded"/> + </sequence> + <attribute name="Id" type="ID" use="optional"/> +</complexType> + +<element name="SignatureProperties" type="ds:SignaturePropertiesType"/> +<complexType name="SignaturePropertiesType"> + <sequence> + <element ref="ds:SignatureProperty" maxOccurs="unbounded"/> + </sequence> + <attribute name="Id" type="ID" use="optional"/> +</complexType> + + <element name="SignatureProperty" type="ds:SignaturePropertyType"/> + <complexType name="SignaturePropertyType" mixed="true"> + <choice maxOccurs="unbounded"> + <any namespace="##other" processContents="lax"/> + <!-- (1,1) elements from (1,unbounded) namespaces --> + </choice> + <attribute name="Target" type="anyURI" use="required"/> + <attribute name="Id" type="ID" use="optional"/> + </complexType> + +<!-- End Object (Manifest, SignatureProperty) --> + +<!-- Start Algorithm Parameters --> + +<simpleType name="HMACOutputLengthType"> + <restriction base="integer"/> +</simpleType> + +<!-- Start KeyValue Element-types --> + +<element name="DSAKeyValue" type="ds:DSAKeyValueType"/> +<complexType name="DSAKeyValueType"> + <sequence> + <sequence minOccurs="0"> + <element name="P" type="ds:CryptoBinary"/> + <element name="Q" type="ds:CryptoBinary"/> + </sequence> + <element name="G" type="ds:CryptoBinary" minOccurs="0"/> + <element name="Y" type="ds:CryptoBinary"/> + <element name="J" type="ds:CryptoBinary" minOccurs="0"/> + <sequence minOccurs="0"> + <element name="Seed" type="ds:CryptoBinary"/> + <element name="PgenCounter" type="ds:CryptoBinary"/> + </sequence> + </sequence> +</complexType> + +<element name="RSAKeyValue" type="ds:RSAKeyValueType"/> +<complexType name="RSAKeyValueType"> + <sequence> + <element name="Modulus" type="ds:CryptoBinary"/> + <element name="Exponent" type="ds:CryptoBinary"/> + </sequence> +</complexType> + +<!-- End KeyValue Element-types --> + +<!-- End Signature --> + +</schema> |