| 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; |
| } |
| } |