--- /dev/null
+module org-openroadm-rstp {
+ namespace "http://org/openroadm/rstp";
+ prefix org-openroadm-rstp;
+
+ import org-openroadm-device {
+ prefix org-openroadm-device;
+ }
+
+ organization "Open ROADM MSA";
+ contact
+ "OpenROADM.org";
+ description
+ "YANG definitions for rstp protocol.
+
+
+ Copyright of the Members of the Open ROADM MSA Agreement dated (c) 2016,
+ AT&T Intellectual Property. All other rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation and/or
+ other materials provided with the distribution.
+ * Neither the Members of the Open ROADM MSA Agreement nor the names of its
+ contributors may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE MEMBERS OF THE OPEN ROADM MSA AGREEMENT ''AS IS''
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ IN NO EVENT THE MEMBERS OF THE OPEN ROADM MSA AGREEMENT BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+ OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.";
+
+ revision 2016-10-14 {
+ description
+ "Version 1.2";
+ }
+
+ typedef bridge-id-type {
+ type string;
+ description
+ "Unique Bridge Identifier";
+ }
+
+ grouping rstp-common-bridge-config {
+ leaf bridge-priority {
+ description
+ "Bridge Priority Value";
+ type uint32 {
+ range "0..61440";
+ }
+ default "32768";
+ }
+ leaf shutdown {
+ description
+ "Bridge admin state";
+ type empty;
+ }
+ leaf hold-time {
+ description
+ "The time interval during which no more than two
+ BPDUs transmitted by this node in seconds - not used in rstp mode (in seconds)";
+ type uint32 {
+ range "1..10";
+ }
+ default "2";
+ }
+ leaf hello-time {
+ description
+ "The time between the transmission of BPDU's by this node on any
+ port, when role is rooti (in seconds)";
+ type uint32 {
+ range "1..10";
+ }
+ default "2";
+ }
+ leaf max-age {
+ description
+ "The value that all bridges use for MaxAge when this bridge
+ is acting as the root";
+ type uint32 {
+ range "6..40";
+ }
+ default "20";
+ }
+ leaf forward-delay {
+ description
+ "The port on the Switch spends this time in the listening
+ state while moving from the blocking state to the forwarding state (in seconds)";
+ type uint32 {
+ range "4..30";
+ }
+ default "15";
+ }
+ leaf transmit-hold-count {
+ description
+ "Maximum BPDU transmission rate";
+ type uint32 {
+ range "1..10";
+ }
+ default "2";
+ }
+ }
+
+ grouping rstp-root-bridge-attr {
+ leaf root-bridge-port {
+ description
+ "Port id of the root port";
+ type uint32;
+ }
+ leaf root-path-cost {
+ description
+ "The cost of the path to the root as
+ seen from this bridge";
+ type uint32;
+ }
+ leaf root-bridge-priority {
+ description
+ "Root Bridge Priority Value";
+ type uint32;
+ }
+ leaf root-bridge-id {
+ description
+ "Root Bridge identifier";
+ type bridge-id-type;
+ }
+ leaf root-hold-time {
+ description
+ "The time interval during which no more than two
+ BPDUs transmitted by this node in seconds at root node (in seconds)";
+ type uint32;
+ }
+ leaf root-hello-time {
+ description
+ "The time between the transmission of BPDU's used at root node (in seconds)";
+ type uint32;
+ }
+ leaf root-max-age {
+ description
+ "The value that all bridges use for MaxAge used at root node";
+ type uint32;
+ }
+ leaf root-forward-delay {
+ description
+ "The time in seconds spent on the listening state used at root node (in seconds)";
+ type uint32;
+ }
+ }
+
+ grouping rstp-bridge-port-state-attr {
+ list rstp-bridge-port-table {
+ max-elements "15";
+ description
+ "This table contains port-specific information for rstp state attributes";
+ key "ifname";
+ leaf ifname {
+ description
+ "Interface name of the port";
+ type string {
+ length "1..255";
+ }
+ }
+ leaf bridge-port-state {
+ description
+ "The port's current state";
+ type enumeration {
+ enum "discarding";
+ enum "blocked";
+ enum "learning";
+ enum "forwarding";
+ enum "unknown";
+ }
+ }
+ leaf bridge-port-role {
+ description
+ "The role payed by this port in the bridge";
+ type enumeration {
+ enum "designated";
+ enum "root";
+ enum "alternate";
+ enum "disabled";
+ enum "backup";
+ enum "unknown";
+ }
+ }
+ leaf bridge-port-id {
+ description
+ "Unique port id of this port";
+ type uint32;
+ }
+ leaf oper-edge-bridge-port {
+ description
+ "The operational value of the Edge Port parameter";
+ type empty;
+ }
+ leaf designated-bridge-port {
+ description
+ "Port id of the designated port";
+ type uint32;
+ }
+ leaf designated-bridgeid {
+ description
+ "The Bridge Identifier of the bridge that this port considers
+ to be the Designated Bridge for this port's segment";
+ type bridge-id-type;
+ }
+ }
+ }
+
+ grouping rstp-bridge-port-attr {
+ list rstp-bridge-port-table {
+ max-elements "15";
+ description
+ "Table contains port-specific information for rstp config";
+ key "ifname";
+ leaf ifname {
+ description
+ "Interface name of the port";
+ type leafref {
+ path "/org-openroadm-device:org-openroadm-device/org-openroadm-device:interface/org-openroadm-device:name";
+ }
+ }
+ leaf cost {
+ description
+ "The contribution of this port to the path cost of
+ paths towards the spanning tree root which include this port also";
+ type uint32 {
+ range "2000..200000";
+ }
+ default "20000";
+ }
+ leaf priority {
+ description
+ "The value of the priority field";
+ type uint32 {
+ range "0..240";
+ }
+ }
+ }
+ }
+
+ grouping rstp-container {
+ container rstp {
+ description
+ "Open ROADM RSTP top level";
+ list rstp-bridge-instance {
+ max-elements "1";
+ description
+ "rstp bridge instance, max instance = 1";
+ key "bridge-name";
+ leaf bridge-name {
+ description
+ "unique name of the bridge";
+ type string {
+ length "1..255";
+ }
+ }
+ container rstp-config {
+ description
+ "Collection of rstp configuration attributes";
+ uses rstp-common-bridge-config;
+ uses rstp-bridge-port-attr;
+ }
+ container rstp-state {
+ description
+ "Collection of rstp operational attributes";
+ config false;
+ container rstp-bridge-attr {
+ description
+ "Collection of operational rstp bridge attributes";
+ uses rstp-root-bridge-attr;
+ leaf bridge-id {
+ description
+ "Bridge identifier of the bridge";
+ type bridge-id-type;
+ }
+ leaf topo-change-count {
+ description
+ "The total number of topology changes";
+ type uint32;
+ }
+ leaf time-since-topo-change {
+ description
+ "Time since last topology changes occured (in seconds)";
+ type uint32;
+ }
+ }
+ container rstp-bridge-port-attr {
+ description
+ "Collection of operational rstp port related attributes";
+ uses rstp-bridge-port-state-attr;
+ }
+ }
+ }
+ }
+ }
+
+ augment "/org-openroadm-device:org-openroadm-device/org-openroadm-device:protocols" {
+ when "/org-openroadm-device:org-openroadm-device/org-openroadm-device:info/org-openroadm-device:node-type='rdm'";
+ uses rstp-container;
+ }
+}