summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorIsaku Yamahata <yamahata@valinux.co.jp>2013-03-07 18:00:45 +0900
committerFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2013-03-08 07:20:58 +0900
commitdf5de86b1f53cb9170c0982444b6f573d3211819 (patch)
treee0cb37bffc65172ae844b8fbd1a38dd0a56d4568
parentcf8520eefc7e2c852e01e76b927196053fc4751b (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.rst7
-rw-r--r--ryu/lib/of_config/ietf-inet-types.xsd389
-rw-r--r--ryu/lib/of_config/ietf-yang-types.xsd408
-rw-r--r--ryu/lib/of_config/of-config-1.0.xsd432
-rw-r--r--ryu/lib/of_config/of-config-1.1.1.xsd2009
-rw-r--r--ryu/lib/of_config/of-config-1.1.xsd738
-rw-r--r--ryu/lib/of_config/xmldsig-core-schema.xsd318
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 &lt;http://www.iana.org/&gt;.
+
+ 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
+ &lt;get-config&gt; requests. All non-configurable values SHOULD be reported by replies
+ to NETCONF &lt;get&gt; requests. Attemps to modify non-configurable elements with a
+ NETCONF &lt;edit-config&gt; operation MUST result in an 'operation-not-supported' error
+ with type 'application'. When validating an &lt;edit‐config&gt; 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 &lt;get&gt; operations. Attemps to modify this element and its children with
+ a NETCONF &lt;edit-config&gt; 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 &lt;edit-config&gt; operations MUST be implemented as follows: * The
+ 'resource-id' element MUST be present in the path or in the filter at all
+ &lt;edit-config&gt; 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 &lt;get&gt; operations.
+ Attemps to modify this element and its children with a NETCONF &lt;edit-config&gt;
+ 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 &lt;edit-config&gt; 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 &lt;edit-config&gt;
+ 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
+ &lt;edit-config&gt; 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 &lt; Q &lt; 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 &lt;edit-config&gt; 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 &lt;edit-config&gt; 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 &lt;edit-config&gt; 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 &lt;edit-config&gt; 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 &lt;edit-config&gt; 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
+ &lt;edit-config&gt; operations MUST be implemented as follows: * The 'resource-id'
+ element of OFResoureType MUST be present at all &lt;edit-config&gt; 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
+ &lt;get&gt; requests. Since this element is not configurable with the
+ NETCONF protocol it MUST NOT be included in replies to NETCONF
+ &lt;get-config&gt; 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 &lt;edit-config&gt; 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 &lt;edit-config&gt; 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 &lt;edit-config&gt; 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 &lt;edit-config&gt; operations. NETCONF &lt;edit-config&gt;
+ operations MUST be implemented as follows: * The 'id' element MUST be present at all
+ &lt;edit-config&gt; 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 &lt;edit-config&gt;
+ 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 &lt;edit-config&gt; 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 &lt;edit-config&gt; 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
+ &lt;get&gt; operations. Attemps to modify this element and its children with a
+ NETCONF &lt;edit-config&gt; 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
+ &lt;edit-config&gt; operations 'create' or 'delete'. The other NETCONF
+ &lt;edit-config&gt; operations MUST be implemented as follows: * The 'id' element
+ MUST be present at all &lt;edit-config&gt; 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 &lt;get&gt; 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
+ &lt;edit-config&gt; 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 &lt;protocol&gt; 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 &lt;edit-config&gt; operations MUST be implemented
+ as follows: * The 'id' element MUST be present at all
+ &lt;editconfig&gt; 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 &lt;get&gt; or &lt;getconfig&gt; operations. Attemps to modify this
+ element and its children with a NETCONF &lt;edit-config&gt; 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 &lt;edit-config&gt; operations MUST be
+ implemented as follows: * Exactly one of the elemenst 'DSAKeyValue' or 'RSAKeyValue'
+ all &lt;edit-config&gt; 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 &lt;get&gt; operations. Attemps to
+ modify this element and its children with a NETCONF &lt;edit-config&gt; 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 &lt;edit-config&gt; operations MUST be
+ implemented as follows: * The 'resource-id' element of OFResoureType MUST be present
+ at all &lt;edit-config&gt; 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
+ &lt;get&gt; requests. Since this element is not configurable with the
+ NETCONF protocol it MUST NOT be included in replies to NETCONF
+ &lt;get-config&gt; 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 &lt;get&gt; requests. Since this element is not configurable with
+ the NETCONF protocol it MUST NOT be included in replies to NETCONF
+ &lt;get-config&gt; 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 &lt;get-config&gt;
+ 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 &lt;get-config&gt;
+ 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 &lt;get&gt; operations. Attemps to modify this element
+ and its children with a NETCONF &lt;edit-config&gt; 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
+ &lt;get&gt; operations. Attemps to modify this element and
+ its children with a NETCONF &lt;edit-config&gt; 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
+ &lt;edit-config&gt; operations MUST be implemented as
+ follows: * The 'resource-id' element of OFResoureType MUST
+ be present in the path or in the filter at all
+ &lt;edit-config&gt; 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 &lt;get&gt; operations. Attemps to modify this
+ element and its children with a NETCONF &lt;edit-config&gt;
+ 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 &lt;get&gt; operations. Attemps to modify this
+ element and its children with a NETCONF &lt;edit-config&gt;
+ 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
+ &lt;get&gt; operations. Attemps to modify this element and its children
+ with a NETCONF &lt;edit-config&gt; 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 &lt;edit-config&gt; operations MUST be implemented as follows: *
+ The 'id' element MUST be present at all &lt;edit-config&gt; 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 &lt;edit-config&gt; operations MUST be implemented as follows: *
+ The 'id' element MUST be present at all &lt;edit-config&gt; 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 &lt;edit-config&gt; 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
+ &lt;error-info&gt; element MUST contain the name of this element in the
+ &lt;bad-element&gt; 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 &lt;error-info&gt; element
+ MUST contain the name of this element in the &lt;bad-element&gt; 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 &lt;get&gt;
+ operations. Attemps to modify this element and its children with a NETCONF
+ &lt;edit-config&gt; 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
+ &lt;edit-config&gt; 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>