blob: 3a70d5ea4a835657d3ec14f6caad6cefac3144ea [file] [log] [blame]
module openconfig-spanning-tree {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/spanning-tree";
prefix "oc-stp";
import openconfig-spanning-tree-types { prefix oc-stp-types; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-types { prefix oc-types; }
import openconfig-vlan-types { prefix oc-vlan-types; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for the spanning tree protocol.";
oc-ext:openconfig-version "0.2.0";
revision "2017-07-14" {
description
"Migrated to OpenConfig types; fixed missing applied state
in rapid-pvst";
reference "0.2.0";
}
revision "2016-10-03" {
description
"Initial public revision";
reference "0.1.0";
}
// identity statements
// grouping statements
grouping stp-interfaces-state {
description
"Grouping of STP operational data for bridge port";
leaf port-num {
type uint16;
description
"The port number of the bridge port";
reference "RFC4188 BRIDGE-MIB dot1dStpPort";
}
leaf role {
type identityref {
base oc-stp-types:STP_PORT_ROLE;
}
description
"The current role of the bridge port";
reference
"IEEE8021-MSTP-MIB ieee8021MstpPortRole";
}
leaf port-state {
type identityref {
base oc-stp-types:STP_PORT_STATE;
}
description
"The current state of the bridge port";
reference "RFC4188 BRIDGE-MIB dot1dStpPortState";
}
leaf designated-root-priority {
type oc-stp-types:stp-bridge-priority-type;
description
"The bridge priority of the bridge recorded as the
root in the configuration BPDUs transmitted by the designated
bridge for the segment to which the port is attached";
reference "RFC4188 BRIDGE-MIB dot1dStpPortDesignatedRoot";
}
leaf designated-root-address {
type oc-yang:mac-address;
description
"The bridge address of the bridge recorded as the
root in the configuration BPDUs transmitted by the designated
bridge for the segment to which the port is attached";
reference "RFC4188 BRIDGE-MIB dot1dStpPortDesignatedRoot";
}
leaf designated-cost {
type uint32;
description
"The path cost of the Designated Port of the
segment connected to this port";
reference "RFC4188 BRIDGE-MIB dot1dStpPortDesignatedCost";
}
leaf designated-bridge-priority {
type oc-stp-types:stp-bridge-priority-type;
description
"The bridge priority of the bridge that this port considers
to be the designated bridge for this port's segment.";
reference "RFC4188 BRIDGE-MIB dot1dStpPortDesignatedBridge";
}
leaf designated-bridge-address {
type oc-yang:mac-address;
description
"The bridge address of the bridge that this port considers
to be the designated bridge for this port's segment.";
reference "RFC4188 BRIDGE-MIB dot1dStpPortDesignatedBridge";
}
leaf designated-port-priority {
type oc-stp-types:stp-port-priority-type;
description
"The Port priority of the port on the Designated
Bridge for this port's segment, two octet string";
reference "RFC4188 BRIDGE-MIB dot1dStpPortDesignatedPort";
}
leaf designated-port-num {
type uint16;
description
"The Port number of the port on the Designated
Bridge for this port's segment, two octet string";
reference "RFC4188 BRIDGE-MIB dot1dStpPortDesignatedPort";
}
leaf forward-transisitions {
type oc-yang:counter64;
description
"The number of times this port has transitioned
from the Learning state to the Forwarding state";
reference "RFC4188 BRIDGE-MIB dot1dStpPortForwardTransitions";
}
container counters {
description
"The BPDU packet transmition statistics";
leaf bpdu-sent {
type oc-yang:counter64;
description
"The number of BPDU packet sent";
}
leaf bpdu-received {
type oc-yang:counter64;
description
"The number of BPDU packet received";
}
}
}
grouping stp-interfaces-config {
description
"Grouping of STP configuration for bridge port";
leaf name {
type oc-if:base-interface-ref;
description
"Reference to the STP ethernet interface";
}
leaf cost {
type uint32 {
range 1..200000000;
}
description
"The port's contribution, when it is the Root Port,
to the Root Path Cost for the Bridge";
reference
"IEEE 802.1D 17.13.11 PortPathCost";
}
leaf port-priority {
type oc-stp-types:stp-port-priority-type;
description
"The manageable component of the Port Identifier,
also known as the Port Priority";
reference
"IEEE 802.1D 17.13.10 Port Identifier Priority";
}
}
grouping stp-interfaces-top {
description
"Grouping of STP configuration and operation data for
bridge port";
container interfaces {
description
"Enclosing container for the list of interface references";
list interface {
key "name";
description
"List of interfaces on which STP is enable";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the list key";
}
container config {
description
"Configuration data for STP on each interface";
uses stp-interfaces-config;
}
container state {
config false;
description
"Operational state data for STP on each interface";
uses stp-interfaces-config;
uses stp-interfaces-state;
}
}
}
}
grouping bridge-priority-config {
description
"Grouping for bridge priority";
leaf bridge-priority {
type oc-stp-types:stp-bridge-priority-type;
description
"The manageable component of the Bridge Identifier";
reference
"IEEE 802.1D 17.13.7 Bridge Identifier Priority";
}
}
grouping stp-common-state {
description
"Grouping for common STP operation data";
leaf bridge-address {
type oc-yang:mac-address;
description
"A unique 48-bit Universally Administered MAC Address
assigned to the bridge";
reference
"IEEE 802.1D 7.12.5 Unique identification of a bridge";
}
leaf designated-root-priority {
type oc-stp-types:stp-bridge-priority-type;
description
"The bridge priority of the root of the spanning
tree, as determined by the Spanning Tree Protocol,
as executed by this node";
reference
"RFC4188 BRIDGE-MIB dot1dStpDesignatedRoot";
}
leaf designated-root-address {
type oc-yang:mac-address;
description
"The bridge address of the root of the spanning
tree, as determined by the Spanning Tree Protocol,
as executed by this node";
reference
"RFC4188 BRIDGE-MIB dot1dStpDesignatedRoot";
}
leaf root-port {
type uint16;
description
"The port number of the port which offers the lowest
cost path from this bridge to the root bridge";
reference
"RFC4188 BRIDGE-MIB dot1dStpRootPort";
}
leaf root-cost {
type uint32;
description
"The cost of the path to the root as seen from this bridge";
reference
"RFC4188 BRIDGE-MIB dot1dStpRootCost";
}
leaf hold-time {
type uint8;
description
"This time value determines the interval length
during which no more than two Configuration bridge
PDUs shall be transmitted by this node";
reference
"RFC4188 BRIDGE-MIB dot1dStpHoldTime";
}
leaf topology-changes {
type oc-yang:counter64;
description
"The total number of topology changes detected by
this bridge since the management entity was last
reset or initialized";
reference
"RFC4188 BRIDGE-MIB dot1dStpTopChanges";
}
leaf time-since-topology-change {
type oc-types:timeticks64;
description
"The time (in hundredths of a second) since the
last time a topology change was detected by the
bridge entity
The value is the timestamp in seconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
reference
"RFC4188 BRIDGE-MIB dot1dStpTimeSinceTopologyChange";
}
}
grouping stp-timer-config {
description
"Grouping for common STP parameters";
leaf hello-time {
type uint8 {
range 1..10;
}
units "seconds";
description
"The interval between periodic transmissions of
configuration messages by designated ports";
reference
"IEEE 802.1D 17.13.6 Bridge Hello Time";
}
leaf max-age {
type uint8 {
range 6..40;
}
units "seconds";
description
"The maximum age of the information transmitted by the
bridge when it is the root bridge";
reference
"IEEE 802.1D 17.13.8 Bridge Max Age";
}
leaf forwarding-delay {
type uint8 {
range 4..30;
}
units "seconds";
description
"The delay used by STP bridges to transition root and
designated ports to forwarding";
reference
"IEEE 802.1D 17.13.5 Bridge Forward Delay";
}
leaf hold-count {
type uint8 {
range 1..10;
}
default 6;
description
"the maximum number of BPDUs per second that the
switch can send from an interface";
reference
"IEEE 802.1D 17.13.12 Transmit Hold Count";
}
}
grouping stp-rapid-pvst-config {
description
"Configuration parameters relating to rapid PVST";
leaf vlan-id {
type oc-vlan-types:vlan-id;
description
"Interface VLAN ID";
}
}
grouping stp-rapid-pvst-top {
description
"Top grouping for rapid per vlan spanning tree configuration
and operation data";
list vlan {
key "vlan-id";
description
"List of the vlans";
leaf vlan-id {
type leafref {
path "../config/vlan-id";
}
description
"Reference to the list key";
}
container config {
description
"Configuration data for each vlan";
uses stp-rapid-pvst-config;
uses stp-timer-config;
uses bridge-priority-config;
}
container state {
config false;
description
"Operational data for each vlan";
uses stp-rapid-pvst-config;
uses stp-timer-config;
uses bridge-priority-config;
uses stp-common-state;
}
uses stp-interfaces-top;
}
}
grouping mst-instance-config {
description
"Grouping for mstp instance configuration";
leaf mst-id {
type uint16 {
range "1..4094";
}
description
"In an MSTP Bridge, an MSTID, i.e., a value used to identify
a spanning tree (or MST) instance.";
reference
"IEEE8021-TC-MIB IEEE8021MstIdentifier";
}
leaf-list vlan {
type union {
type oc-vlan-types:vlan-id;
type oc-vlan-types:vlan-range;
}
description
"list of vlans mapped to the MST instance";
}
}
grouping mst-instance-top {
description
"Top level grouping for mstp instances";
list mst-instance {
key "mst-id";
description
"List of the mstp instances";
leaf mst-id {
type leafref {
path "../config/mst-id";
}
description
"Reference to the list key";
}
container config {
description
"Configuration data for MSTP instance";
uses mst-instance-config;
uses bridge-priority-config;
}
container state {
config false;
description
"Operational data for MSTP instance";
uses mst-instance-config;
uses bridge-priority-config;
uses stp-common-state;
}
uses stp-interfaces-top;
}
}
grouping mstp-config {
description
"Grouping for MSTP configuration data";
leaf name {
type string {
length "1..32";
}
description
"The Configuration Name in the MST Configuration Identifier";
reference
"IEEE 802.1Q 13.8 MST Configuration Identifier (MCID)";
}
leaf revision {
type uint32;
description
"The Revision Level in the MST Configuration Identifier";
reference
"IEEE 802.1Q 13.8 MST Configuration Identifier";
}
leaf max-hop {
type uint8 {
range 1..255;
}
description
"The max hop determines the number of bridges in an MST
region that a BPDU can traverse before it is discarded";
reference
"IEEE 802.1Q 13.26.4 BridgeTimes";
}
uses stp-timer-config;
}
grouping mstp-state {
description
"Operational state data for MSTP";
}
grouping stp-mstp-top {
description
"Top grouping for MSTP configuration and operation data";
container config {
description
"Configuration data for MSTP";
uses mstp-config;
}
container state {
config false;
description
"Operational data for MSTP";
uses mstp-config;
uses mstp-state;
}
container mst-instances {
description
"Configuration and operation data for MSTP instances";
uses mst-instance-top;
}
}
grouping stp-rstp-top {
description
"Top grouping for RSTP configuration and operation data";
container config {
description
"Configuration data for RSTP";
uses stp-timer-config;
uses bridge-priority-config;
}
container state {
config false;
description
"Operational state data for RSTP";
uses stp-timer-config;
uses bridge-priority-config;
uses stp-common-state;
}
uses stp-interfaces-top;
}
grouping stp-interface-common-config {
description
"Configuration data for interface specific STP features";
leaf name {
type oc-if:base-interface-ref;
description
"Reference to the STP Ethernet interface";
}
leaf edge-port {
type identityref {
base oc-stp-types:STP_EDGE_PORT;
}
description
"Configure the edge port state";
}
leaf link-type {
type oc-stp-types:stp-link-type;
description
"specifies the interface's link type";
}
leaf guard {
type oc-stp-types:stp-guard-type;
description
"Enable root guard or loop guard";
}
uses stp-bpdu-config;
}
grouping stp-interface-common-state {
description
"Operational state data for STP on interfaces";
}
grouping stp-interface-common-top {
description
"Top-level grouping for interface specific STP features";
list interface {
key "name";
description
"List of interfaces on which STP is enable";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the list key";
}
container config {
description
"Configuration data for STP on each bridge port";
uses stp-interface-common-config;
}
container state {
config false;
description
"Operational state data for STP on each bridge port";
uses stp-interface-common-config;
uses stp-interface-common-state;
}
}
}
grouping stp-bpdu-config {
description
"Grouping for STP BPDU configuration";
leaf bpdu-guard {
type boolean;
description
"Enable edge port BPDU guard";
}
leaf bpdu-filter {
type boolean;
description
"Enable edge port BPDU filter";
}
}
grouping stp-global-config {
description
"Global spanning tree configuration";
leaf-list enabled-protocol {
type identityref {
base oc-stp-types:STP_PROTOCOL;
}
description
"List of the spanning tree protocols enabled on the
device";
}
leaf bridge-assurance {
type boolean;
description
"Enable bridge assurance to protect against unidirectional
link failure";
}
leaf etherchannel-misconfig-guard {
type boolean;
description
"EtherChannel guard detects a misconfigured EtherChannel
when interfaces on the switch are configured as an
EtherChannel while interfaces on the other device are not
or when not all the interfaces on the other device are in
the same EtherChannel.";
}
leaf bpduguard-timeout-recovery {
type uint8;
units "seconds";
description
"Amount of time, in seconds, the interface receiving BPDUs
is disabled. Once the timeout expires, the interface is
brought back into service.";
}
leaf loop-guard {
type boolean;
description
"The loop guard default setting for the bridge";
}
uses stp-bpdu-config;
}
grouping stp-global-state {
description
"Global operational state for STP";
}
grouping stp-global-base {
description
"Grouping for global spanning tree data";
container config {
description
"Global spanning tree configuration";
uses stp-global-config;
}
container state {
config false;
description
"Global spanning tree state";
uses stp-global-config;
uses stp-global-state;
}
}
grouping stp-top {
description
"Top-level grouping for spanning-tree model";
container stp {
description
"Top-level container for spanning tree configuration and
state data";
container global {
description
"Global configuration and state data";
uses stp-global-base;
}
container rstp {
description
"Rapid Spanning-tree protocol configuration and operation
data";
uses stp-rstp-top;
}
container mstp {
description
"Multi Spanning-tree protocol configuration and operation
data";
uses stp-mstp-top;
}
container rapid-pvst {
description
"Rapid per vlan Spanning-tree protocol configuration and
operational data";
uses stp-rapid-pvst-top;
}
container interfaces {
description
"Enclosing container for the list of interface references";
uses stp-interface-common-top;
}
}
}
// data definition statements
uses stp-top;
}