From 9442dda17a9a5f1f0db548512446e3d9ca37a955 Mon Sep 17 00:00:00 2001 From: Scott Mansfield Date: Tue, 19 Mar 2024 08:47:23 -0400 Subject: [PATCH] Reviewed and validated before March 2024 plenary (#1542) ASdm, DC, qrev, Qdj, Qdx, 60802 60802: 1588 naming issue and Qdj changes fixed so the yang will validate. --- standard/ieee/check.sh | 2 +- .../ieee/draft/60802/iecieee60802-bridge.yang | 272 ++- .../iecieee60802-ethernet-interface.yang | 45 +- .../draft/60802/iecieee60802-ia-station.yang | 76 +- .../60802/iecieee60802-sched-bridge.yang | 38 +- ...iecieee60802-subscribed-notifications.yang | 53 +- .../60802/iecieee60802-tsn-config-uni.yang | 79 +- .../draft/802.1/ASdm/ieee802-dot1as-hs.yang | 16 +- .../draft/802.1/DC/check_pyang_extra_flags | 1 + .../draft/802.1/DC/ieee802-dot1dc-ats-if.yang | 198 +- .../802.1/DC/ieee802-dot1dc-cbsa-if.yang | 58 + .../draft/802.1/DC/ieee802-dot1dc-gfqos.yang | 312 +-- .../DC/ieee802-dot1dc-preemption-if.yang | 124 +- .../802.1/DC/ieee802-dot1dc-psfp-sys.yang | 128 +- .../802.1/DC/ieee802-dot1dc-sched-if.yang | 114 +- .../802.1/Qdj/ieee802-dot1q-cnc-config.yang | 568 ++++++ .../Qdj/ieee802-dot1q-tsn-config-uni.yang | 648 ------ .../802.1/Qdx/ieee802-dot1q-cbsa-bridge.yang | 41 +- .../draft/802.1/Qdx/ieee802-dot1q-cbsa.yang | 83 +- .../802.1/qrev/ieee802-dot1q-ats-bridge.yang | 89 + .../draft/802.1/qrev/ieee802-dot1q-ats.yang | 306 +++ .../802.1/qrev/ieee802-dot1q-bridge.yang | 1798 +++++++++++++++++ .../802.1/qrev/ieee802-dot1q-cbsa-bridge.yang | 64 + .../draft/802.1/qrev/ieee802-dot1q-cbsa.yang | 104 + .../802.1/qrev/ieee802-dot1q-cfm-alarm.yang | 81 + .../802.1/qrev/ieee802-dot1q-cfm-bridge.yang | 571 ++++++ .../802.1/qrev/ieee802-dot1q-cfm-types.yang | 743 +++++++ .../draft/802.1/qrev/ieee802-dot1q-cfm.yang | 1317 ++++++++++++ .../802.1/qrev/ieee802-dot1q-cnc-config.yang | 568 ++++++ ...802-dot1q-congestion-isolation-bridge.yang | 82 + .../ieee802-dot1q-congestion-isolation.yang | 521 +++++ .../qrev/ieee802-dot1q-lldp-basic-tlv.yang | 318 +++ .../802.1/qrev/ieee802-dot1q-lldp-ci-tlv.yang | 175 ++ .../802.1/qrev/ieee802-dot1q-lldp-cn-tlv.yang | 132 ++ .../qrev/ieee802-dot1q-lldp-dcbx-tlv.yang | 537 +++++ .../qrev/ieee802-dot1q-lldp-evb-tlv.yang | 126 ++ .../qrev/ieee802-dot1q-lldp-pbbn-aa-tlv.yang | 420 ++++ .../802.1/qrev/ieee802-dot1q-lldp-tr-tlv.yang | 181 ++ .../draft/802.1/qrev/ieee802-dot1q-mstp.yang | 344 ++++ .../draft/802.1/qrev/ieee802-dot1q-pb.yang | 226 +++ .../qrev/ieee802-dot1q-preemption-bridge.yang | 58 + .../802.1/qrev/ieee802-dot1q-preemption.yang | 219 ++ .../802.1/qrev/ieee802-dot1q-psfp-bridge.yang | 54 + .../draft/802.1/qrev/ieee802-dot1q-psfp.yang | 664 ++++++ .../draft/802.1/qrev/ieee802-dot1q-rstp.yang | 533 +++++ .../qrev/ieee802-dot1q-sched-bridge.yang | 51 + .../draft/802.1/qrev/ieee802-dot1q-sched.yang | 385 ++++ ...802-dot1q-stream-filters-gates-bridge.yang | 46 + .../ieee802-dot1q-stream-filters-gates.yang | 399 ++++ .../draft/802.1/qrev/ieee802-dot1q-tpmr.yang | 331 +++ .../802.1/qrev/ieee802-dot1q-tsn-types.yang | 1301 ++++++++++++ .../draft/802.1/qrev/ieee802-dot1q-types.yang | 1149 +++++++++++ .../ieee/draft/802.1/qrev/ieee802-types.yang | 336 +++ 53 files changed, 15719 insertions(+), 1366 deletions(-) create mode 100644 standard/ieee/draft/802.1/DC/check_pyang_extra_flags create mode 100644 standard/ieee/draft/802.1/DC/ieee802-dot1dc-cbsa-if.yang create mode 100644 standard/ieee/draft/802.1/Qdj/ieee802-dot1q-cnc-config.yang delete mode 100644 standard/ieee/draft/802.1/Qdj/ieee802-dot1q-tsn-config-uni.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-ats-bridge.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-ats.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-bridge.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-cbsa-bridge.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-cbsa.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-cfm-alarm.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-cfm-bridge.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-cfm-types.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-cfm.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-cnc-config.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-congestion-isolation-bridge.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-congestion-isolation.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-lldp-basic-tlv.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-lldp-ci-tlv.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-lldp-cn-tlv.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-lldp-dcbx-tlv.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-lldp-evb-tlv.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-lldp-pbbn-aa-tlv.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-lldp-tr-tlv.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-mstp.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-pb.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-preemption-bridge.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-preemption.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-psfp-bridge.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-psfp.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-rstp.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-sched-bridge.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-sched.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-stream-filters-gates-bridge.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-stream-filters-gates.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-tpmr.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-tsn-types.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-dot1q-types.yang create mode 100644 standard/ieee/draft/802.1/qrev/ieee802-types.yang diff --git a/standard/ieee/check.sh b/standard/ieee/check.sh index f699df9c4..d5aac6d60 100755 --- a/standard/ieee/check.sh +++ b/standard/ieee/check.sh @@ -7,7 +7,7 @@ cwd=$(pwd) ietf_dir="standard/ietf" ieee_dir="standard/ieee" -to_check="draft/60802 draft/802.1/ASdm draft/802.1/ASdn draft/802.1/CScorr draft/802.1/DC draft/802.1/Qdj draft/802.1/Qdx draft/802.1/Qdy draft/1588 published/1906.1 published/802 published/802.1" +to_check="draft/60802 draft/qrev draft/802.1/ASdm draft/802.1/ASdn draft/802.1/CScorr draft/802.1/DC draft/802.1/Qdj draft/802.1/Qdx draft/802.1/Qdy draft/1588 published/1906.1 published/802 published/802.1" # relax constraint for now # add --ietf if you want to do strict IETF checking diff --git a/standard/ieee/draft/60802/iecieee60802-bridge.yang b/standard/ieee/draft/60802/iecieee60802-bridge.yang index 7203b9675..78f3968e5 100755 --- a/standard/ieee/draft/60802/iecieee60802-bridge.yang +++ b/standard/ieee/draft/60802/iecieee60802-bridge.yang @@ -20,7 +20,9 @@ module iecieee60802-bridge { } organization - "IEEE 802.1 Working Group"; + "IEEE 802.1 Working Group and IEC subcommittee 65C: + Industrial networks, of IEC technical committee 65: + Industrial-process measurement, control and automation"; contact "WG-URL: http://ieee802.org/1/ WG-EMail: stds-802-1-l@ieee.org @@ -34,49 +36,73 @@ module iecieee60802-bridge { E-mail: stds-802-1-chairs@ieee.org"; description - "Management objects that provide information about IEC/IEEE 60802 IA-Stations as specified in IEC/IEEE 60802. + "Management objects that provide information about + IEC/IEEE 60802 IA-Stations as specified in IEC/IEEE 60802. - Copyright (C) IEC/IEEE (2023). - This version of this YANG module is part of IEC/IEEE Std 60802; + Copyright (C) IEC/IEEE (2025). + This version of this YANG module is part of IEC/IEEE 60802; see the standard itself for full legal notices."; - revision 2023-09-08 { - description - "Initial version."; + revision 2024-02-19 { + description "Published as part of IEC/IEEE Std 60802-2025. + The following reference statement identifies each referenced + IEEE Standard as updated by applicable amendments."; reference - "IEC/IEEE 60802 - YANG Data Model"; + "IEC/IEEE Std 60802 TSN profile for industrial automation: + IEC/IEEE 60802-2025. + IEEE Std 802.1Q Bridges and Bridged Networks: + IEEE Std 802.1Q-2022, IEEE Std 802.1Qcz-2023, + IEEE Std 802.1Qcw-2023, IEEE Std 802.1Qdj-2024, + IEEE Std 802.1Qdx-2024, IEEE Std 802.1Qdy-2024."; } augment "/if:interfaces/if:interface/bridge:bridge-port" { description "Augment IEEE Std 802.1 bridge."; - leaf min-interpacket-gap { - type uint8; - config false; + list max-burst-params { description - "The value is the minimum gap in bits between two consecutive frames."; - reference - "IEC/IEEE 60802 6.4.10.2.3.1"; - } - leaf max-burst-frames { - type uint8; - config false; - description - "The value is the maximum number of frames per gating cycle."; - reference - "IEC/IEEE 60802 6.4.10.2.3.2"; - } - leaf max-burst-bytes { - type uint8; + "The list of maximum burst parameters per supported line + speed."; + key "speed"; config false; - description - "The value of the maximum number of octets per gating cycle."; - reference - "IEC/IEEE 60802 6.4.10.2.3.3"; + leaf speed { + type uint32; + description + "This value is the line speed in Mbps."; + } + leaf worst-case-packet-gap { + type uint8; + config false; + description + "The value is the worst case maximum inter-packet gap + between consecutive frames in a traffic burst expressed + in bit-times."; + reference + "Item a) in 6.4.10.3.3.1 of IEC/IEEE 60802"; + } + leaf max-burst-frames { + type uint8; + config false; + description + "The value is the maximum number of frames per gating + cycle."; + reference + "Item b) in 6.4.10.3.3.1 of IEC/IEEE 60802"; + } + leaf max-burst-bytes { + type uint8; + config false; + description + "The value of the maximum number of octets per gating + cycle."; + reference + "Item c) in 6.4.10.3.3.1 of IEC/IEEE 60802"; + } } list committed-data-rates { description - "The list of committed data rates per traffic class and supported line speed."; + "The list of committed data rates per traffic class and + supported line speed."; key "traffic-class speed"; config false; leaf traffic-class { @@ -97,7 +123,7 @@ module iecieee60802-bridge { description "The value is the bandwidth limit in kbit/s."; reference - "IEC/IEEE 60802 6.4.10.2.3.4 a)"; + "Item a) in 6.4.10.3.3.2 of IEC/IEEE 60802"; } leaf committed-burst-size { type uint32; @@ -105,12 +131,13 @@ module iecieee60802-bridge { description "The value is the burst size limit in bytes."; reference - "IEC/IEEE 60802 6.4.10.2.3.4 b)"; + "Item b) in 6.4.10.3.3.2 of IEC/IEEE 60802"; } } list transmission-selection-algorithm { description - "The list of supported transmission selection algorithms according to IEEE Std 802.1Q 8.6.8 per traffic class."; + "The list of supported transmission selection algorithms + according to 8.6.8 of IEEE Std 802.1Q per traffic class."; key "traffic-class"; config false; leaf traffic-class { @@ -119,11 +146,13 @@ module iecieee60802-bridge { description "Traffic class. (0..7)"; reference - "IEEE Std 802.1Q 8.6.6"; + "8.6.6 of IEEE Std 802.1Q"; } list algorithms { description - "The list of supported transmission selection algorithms according to IEEE Std 802.1Q 8.6.8 for this traffic class."; + "The list of supported transmission selection algorithms + according to 8.6.8 of IEEE Std 802.1Q for this traffic + class."; key "algorithm"; config false; leaf algorithm { @@ -134,7 +163,7 @@ module iecieee60802-bridge { description "Transmission selection algorithm"; reference - "8.6.8, Table 8-6 of IEEE Std 802.1Q"; + "8.6.8 of IEEE Std 802.1Q"; } } } @@ -147,23 +176,25 @@ module iecieee60802-bridge { type string; config false; description - "The value is the name of the resource pool."; + "The value is the name of a resource pool."; reference - "6.4.10.2.4.2 a) of IEC/IEEE 60802"; + "Intem a) in 6.4.10.3.4.2 of IEC/IEEE 60802"; } container covered-time-interval { config false; uses ieee802:rational-grouping; description - "The value is the covered buffering time given as rational number of seconds for the highest supported link speed."; + "The value is the covered buffering time given as rational + number of seconds for the highest supported link speed."; reference - "6.4.10.2.4.2 b) of IEC/IEEE 60802"; + "Item b) in 6.4.10.3.4.2 of IEC/IEEE 60802"; } list resource-pool-traffic-classes { description - "The list of the traffic classes to be served by the resource pool."; + "The list of the traffic classes to be served by the + resource pool."; reference - "6.4.10.2.4.2 c) of IEC/IEEE 60802"; + "Item c) in 6.4.10.3.4.2 of IEC/IEEE 60802"; key "traffic-class"; config false; leaf traffic-class { @@ -186,15 +217,16 @@ module iecieee60802-bridge { description "The Boolean value indicates if FRER is supported."; reference - "IEC/IEEE 60802 6.4.10.2.5.1"; + "6.4.10.3.5.1 of IEC/IEEE 60802"; } leaf max-redundant-streams { type uint32; config false; description - "The value is the maximum number of supported redundant streams."; + "The value is the maximum number of supported redundant + streams."; reference - "IEC/IEEE 60802 6.4.10.2.5.2"; + "6.4.10.3.5.2 of IEC/IEEE 60802"; } leaf max-fids { type uint16; @@ -202,14 +234,15 @@ module iecieee60802-bridge { description "The value is the maximum number of supported FIDs."; reference - "IEC/IEEE 60802 6.4.10.2.7.1"; + "6.4.10.3.7.1 of IEC/IEEE 60802"; } list max-fdb-entries { config false; description - "The list of the maximum number of static and dynamic FDB entries per FID."; + "The list of the maximum number of static and dynamic + FDB entries per FID."; reference - "IEC/IEEE 60802 6.4.10.2.7.2"; + "6.4.10.3.7.2 of IEC/IEEE 60802"; key "fid"; leaf fid { type uint16; @@ -221,9 +254,10 @@ module iecieee60802-bridge { type uint16; config false; description - "The value is the maximum number of static FDB entries."; + "The value is the maximum number of static FDB + entries."; reference - "IEC/IEEE 60802 6.4.10.2.7.3"; + "6.4.10.3.7.3 of IEC/IEEE 60802"; } leaf max-dynamic-fdb-entries { type uint16; @@ -231,31 +265,36 @@ module iecieee60802-bridge { description "The value is the maximum number of dynamic FDB entries."; reference - "IEC/IEEE 60802 6.4.10.2.7.4"; + "6.4.10.3.7.4 of IEC/IEEE 60802"; } } choice delay-variance { config false; description - "The value indicates if the bridge component is as single chip architecture (i.e., without countable internal communication delay times) or cascaded chip architecture (i.e., with countable internal communication delay times)."; + "The value indicates if the bridge component is as single + chip architecture (i.e., without countable internal + communication delay times) or cascaded chip architecture + (i.e., with countable internal communication delay times)."; reference - "6.4.10.2.6.1 of IEC/IEEE 60802"; + "6.4.10.3.6.1 of IEC/IEEE 60802"; case single-value { list independent-delays { description - "The list of minimum and maximum frame length independent delay time values of frames as they pass through a bridge component."; + "The list of minimum and maximum frame length + independent delay time values of frames as they pass + through a bridge component."; reference - "6.4.10.2.6.2 of IEC/IEEE 60802"; + "6.4.10.3.6.2 of IEC/IEEE 60802"; key "in-port-mau-type out-port-mau-type traffic-class"; config false; leaf in-port-mau-type { - type uint32; + type int32; config false; description "The MAU type of the input port"; } leaf out-port-mau-type { - type uint32; + type int32; config false; description "The MAU type of the input port"; @@ -272,24 +311,30 @@ module iecieee60802-bridge { type uint32; config false; description - "The value is the minimum delay portion that is independent of frame length according to IEEE 802.1Q-2022, 12.32.1.1."; + "The value is the minimum delay portion that is + independent of frame length according to 12.32.1.1. + of IEEE 802.1Q"; reference - "6.4.10.2.6.2 a) of IEC/IEEE 60802"; + "Item a) in 6.4.10.3.6.2 of IEC/IEEE 60802"; } leaf independent-delay-max { type uint32; config false; description - "The value is the maximum delay portion that is independent of frame length according to IEEE 802.1Q-2022, 12.32.1.1."; + "The value is the maximum delay portion that is + independent of frame length according to 12.32.1.1. + of IEEE 802.1Q"; reference - "6.4.10.2.6.2 b) of IEC/IEEE 60802"; + "Item b) in 6.4.10.3.6.2 of IEC/IEEE 60802"; } } list dependent-delays { description - "The list of minimum and maximum frame length dependent delay time values of frames as they pass through a bridge component"; + "The list of minimum and maximum frame length dependent + delay time values of frames as they pass through a + bridge component"; reference - "6.4.10.2.6.2 of IEC/IEEE 60802"; + "6.4.10.3.6.2 of IEC/IEEE 60802"; key "in-port-line-speed"; config false; leaf in-port-line-speed { @@ -302,27 +347,34 @@ module iecieee60802-bridge { type uint32; config false; description - "The value is the minimum delay portion that is dependent on frame length according to IEEE 802.1Q-2022, 12.32.1.2."; + "The value is the minimum delay portion that is + dependent on frame length according to 12.32.1.2. + of IEEE 802.1Q"; reference - "6.4.10.2.6.2 c) of IEC/IEEE 60802"; + "Item c) in 6.4.10.3.6.2 of IEC/IEEE 60802"; } leaf dependent-delay-max { type uint32; config false; description - "The value is the maximum delay portion that is dependent on frame length according to IEEE 802.1Q-2022, 12.32.1.2."; + "The value is the maximum delay portion that is + dependent on frame length according to 12.32.1.2. + of IEEE 802.1Q"; reference - "6.4.10.2.6.2 d) of IEC/IEEE 60802"; + "Item d) in 6.4.10.3.6.2 of IEC/IEEE 60802"; } } } case multiple-values { list independent-delays-cascaded { description - "The list of minimum and maximum frame length independent delay time values of frames as they pass through a bridge component."; + "The list of minimum and maximum frame length + independent delay time values of frames as they pass + through a bridge component."; reference - "6.4.10.2.6.2 of IEC/IEEE 60802"; - key "in-port in-port-mau-type out-port out-port-mau-type traffic-class"; + "6.4.10.3.6.2 of IEC/IEEE 60802"; + key "in-port in-port-mau-type out-port out-port-mau-type + traffic-class"; config false; leaf in-port { type uint8; @@ -331,7 +383,7 @@ module iecieee60802-bridge { "The port number of the input port"; } leaf in-port-mau-type { - type uint32; + type int32; config false; description "The MAU type of the input port"; @@ -343,7 +395,7 @@ module iecieee60802-bridge { "The port number of the output port"; } leaf out-port-mau-type { - type uint32; + type int32; config false; description "The MAU type of the input port"; @@ -360,24 +412,30 @@ module iecieee60802-bridge { type uint32; config false; description - "The value is the minimum delay portion that is independent of frame length according to IEEE 802.1Q-2022, 12.32.1.1."; + "The value is the minimum delay portion that is + independent of frame length according to 12.32.1.1. + of IEEE 802.1Q"; reference - "6.4.10.2.6.2 a) of IEC/IEEE 60802"; + "Item a) in 6.4.10.3.6.2 of IEC/IEEE 60802"; } leaf independent-delay-max { type uint32; config false; description - "The value is the maximum delay portion that is independent of frame length according to IEEE 802.1Q-2022, 12.32.1.1."; + "The value is the maximum delay portion that is + independent of frame length according to 12.32.1.1. + of IEEE 802.1Q"; reference - "6.4.10.2.6.2 b) of IEC/IEEE 60802"; + "Item b) in 6.4.10.3.6.2 of IEC/IEEE 60802"; } } list dependent-delays-cascaded { description - "The list of minimum and maximum frame length dependent delay time values of frames as they pass through a bridge component"; + "The list of minimum and maximum frame length dependent + delay time values of frames as they pass through a + bridge component"; reference - "6.4.10.2.6.2 of IEC/IEEE 60802"; + "6.4.10.3.6.2 of IEC/IEEE 60802"; key "in-port in-port-line-speed out-port"; config false; leaf in-port { @@ -402,17 +460,21 @@ module iecieee60802-bridge { type uint32; config false; description - "The value is the minimum delay portion that is dependent on frame length according to IEEE 802.1Q-2022, 12.32.1.2."; + "The value is the minimum delay portion that is + dependent on frame length according to 12.32.1.2. + of IEEE 802.1Q"; reference - "6.4.10.2.6.2 c) of IEC/IEEE 60802"; + "Item c) in 6.4.10.3.6.2 of IEC/IEEE 60802"; } leaf dependent-delay-max { type uint32; config false; description - "The value is the maximum delay portion that is dependent on frame length according to IEEE 802.1Q-2022, 12.32.1.2."; + "The value is the maximum delay portion that is + dependent on frame length according to 12.32.1.2. + of IEEE 802.1Q"; reference - "6.4.10.2.6.2 d) of IEC/IEEE 60802"; + "Item d) in 6.4.10.3.6.2 of IEC/IEEE 60802"; } } } @@ -421,23 +483,25 @@ module iecieee60802-bridge { type uint8; config false; description - "The value is the maximum number of supported PTP Instances."; + "The value is the maximum number of supported PTP + Instances."; reference - "IEC/IEEE 60802 6.4.10.2.7.5"; + "6.4.10.3.7.5 of IEC/IEEE 60802"; } leaf max-hot-standby-systems { type uint8; config false; description - "The value is the maximum number of supported hot standby systems."; + "The value is the maximum number of supported hot standby + systems."; reference - "IEC/IEEE 60802 6.4.10.2.7.6"; + "6.4.10.3.7.6 of IEC/IEEE 60802"; } list clock { description "The list of supported application clock entities."; reference - "6.4.10.2.7.7 of IEC/IEEE 60802"; + "6.4.10.3.7.7 of IEC/IEEE 60802"; key "clock-identity"; config false; leaf clock-identity { @@ -446,15 +510,16 @@ module iecieee60802-bridge { description "The clock identity of the application clock."; reference - "6.4.10.2.7.7 a) of IEC/IEEE 60802"; + "Item a) in 6.4.10.3.7.7 of IEC/IEEE 60802"; } leaf clock-target { type boolean; config false; description - "The Boolean value indicates if the application clock is a clock target (TRUE) or clock source (FALSE)."; + "The Boolean value indicates if the application clock is a + clock target (TRUE) or clock source (FALSE)."; reference - "6.4.10.2.7.7 b) of IEC/IEEE 60802"; + "Item b) in 6.4.10.3.7.7 of IEC/IEEE 60802"; } leaf attached-ptp-instance-index { type leafref { @@ -462,41 +527,48 @@ module iecieee60802-bridge { } config false; description - "The value is a reference to the index of the PTP or hot standby Instance, that is attached to the application clock."; + "The value is a reference to the index of the PTP or hot + standby Instance, that is attached to the application + clock."; reference - "6.4.10.2.7.7 f) of IEC/IEEE 60802"; + "Item f) in 6.4.10.3.7.7 of IEC/IEEE 60802"; } leaf arb-supported { type boolean; config false; description - "The Boolean value indicates if the application clock supports the ARB timescale."; + "The Boolean value indicates if the application clock + supports the ARB timescale."; reference - "6.4.10.2.7.7 c) of IEC/IEEE 60802"; + "Item c) in 6.4.10.3.7.7 of IEC/IEEE 60802"; } leaf ptp-supported { type boolean; config false; description - "The Boolean value indicates if the application clock supports the PTP timescale."; + "The Boolean value indicates if the application clock + supports the PTP timescale."; reference - "6.4.10.2.7.7 d) of IEC/IEEE 60802"; + "Item d) in 6.4.10.3.7.7 of IEC/IEEE 60802"; } leaf hot-standby-supported { type boolean; config false; description - "The Boolean value indicates if the application clock supports the hot standby."; + "The Boolean value indicates if the application clock + supports the hot standby."; reference - "6.4.10.2.7.7 e) of IEC/IEEE 60802"; + "Item e) in 6.4.10.3.7.7 of IEC/IEEE 60802"; } leaf is-synced { type boolean; config false; description - "The Boolean value indicates if the application clock is either synchronized to the attached PTP Instance (TRUE) or to an internal/external ClockSource (FALSE)."; + "The Boolean value indicates if the application clock is + either synchronized to the attached PTP Instance (TRUE) + or to an internal/external ClockSource (FALSE)."; reference - "6.4.10.2.7.7 g) of IEC/IEEE 60802"; + "Item g) in 6.4.10.3.7.7 of IEC/IEEE 60802"; } } } diff --git a/standard/ieee/draft/60802/iecieee60802-ethernet-interface.yang b/standard/ieee/draft/60802/iecieee60802-ethernet-interface.yang index 8da72be6f..6ba45ef8e 100755 --- a/standard/ieee/draft/60802/iecieee60802-ethernet-interface.yang +++ b/standard/ieee/draft/60802/iecieee60802-ethernet-interface.yang @@ -1,6 +1,7 @@ module iecieee60802-ethernet-interface { yang-version 1.1; - namespace "urn:ieee:std:60802:yang:iecieee60802-ethernet-interface"; + namespace + "urn:ieee:std:60802:yang:iecieee60802-ethernet-interface"; prefix ia-eth-if; import ieee802-ethernet-interface { @@ -11,7 +12,9 @@ module iecieee60802-ethernet-interface { } organization - "IEEE 802.1 Working Group"; + "IEEE 802.1 Working Group and IEC subcommittee 65C: + Industrial networks, of IEC technical committee 65: + Industrial-process measurement, control and automation"; contact "WG-URL: http://ieee802.org/1/ WG-EMail: stds-802-1-l@ieee.org @@ -25,17 +28,24 @@ module iecieee60802-ethernet-interface { E-mail: stds-802-1-chairs@ieee.org"; description - "Management objects that provide information about IEC/IEEE 60802 IA-Stations as specified in IEC/IEEE 60802. + "Management objects that provide information about IEC/IEEE 60802 + IA-Stations as specified in IEC/IEEE 60802. - Copyright (C) IEC/IEEE (2023). - This version of this YANG module is part of IEC/IEEE Std 60802; + Copyright (C) IEC/IEEE (2025). + This version of this YANG module is part of IEC/IEEE 60802; see the standard itself for full legal notices."; - revision 2023-09-08 { - description - "Initial version."; + revision 2024-02-19 { + description "Published as part of IEC/IEEE Std 60802-2025. + The following reference statement identifies each referenced + IEEE Standard as updated by applicable amendments."; reference - "IEC/IEEE 60802 - YANG Data Model"; + "IEC/IEEE Std 60802 TSN profile for industrial automation: + IEC/IEEE 60802-2025. + IEEE Std 802.1Q Bridges and Bridged Networks: + IEEE Std 802.1Q-2022, IEEE Std 802.1Qcz-2023, + IEEE Std 802.1Qcw-2023, IEEE Std 802.1Qdj-2024, + IEEE Std 802.1Qdx-2024, IEEE Std 802.1Qdy-2024."; } augment "/if:interfaces/if:interface/eth-if:ethernet" { @@ -43,26 +53,27 @@ module iecieee60802-ethernet-interface { "Augment IEEE Std 802.3 ethernet."; list supported-mau-types { description - "Contains a list of supported mau parameters."; + "Contains a list of supported MAU parameters."; key "mau-type"; config false; leaf mau-type { - type uint32; - // the type of this leaf should be a type defined by IEEE P802.3 in future + type int32; config false; description - "The value is the supported Mau Type derived from the list position of the corresponding dot3MauType as listed in IETF RFC 4836, Clause 5."; + "The value is the supported MAU Type derived from the list + position of the corresponding dot3MauType as listed in + Clause 5 of IETF RFC 4836."; reference - "IEC/IEEE 60802 6.4.10.2.2.1 a)"; + "Item a) in 6.4.10.3.2.1 of IEC/IEEE 60802"; } leaf preemption-supported { type boolean; - // the type of this leaf should be a type defined by IEEE P802.3 in future config false; description - "The Boolean value indicates if preemption is supported by the MAU Type."; + "The Boolean value indicates if preemption is supported by + the MAU Type."; reference - "IEC/IEEE 60802 6.4.10.2.2.1 b)"; + "Item b) in 6.4.10.3.2.1 of IEC/IEEE 60802"; } } } diff --git a/standard/ieee/draft/60802/iecieee60802-ia-station.yang b/standard/ieee/draft/60802/iecieee60802-ia-station.yang index b3f9fb960..2b7e14f41 100755 --- a/standard/ieee/draft/60802/iecieee60802-ia-station.yang +++ b/standard/ieee/draft/60802/iecieee60802-ia-station.yang @@ -6,17 +6,19 @@ module iecieee60802-ia-station { import ietf-datastores { prefix ds; reference - "RFC 8342: Network Management Datastore Architecture + "IETF RFC 8342: Network Management Datastore Architecture (NMDA)"; } import ietf-netconf-acm { prefix nacm; reference - "RFC 8341: Network Configuration Access Control Model"; + "IETF RFC 8341: Network Configuration Access Control Model"; } organization - "IEEE 802.1 Working Group"; + "IEEE 802.1 Working Group and IEC subcommittee 65C: + Industrial networks, of IEC technical committee 65: + Industrial-process measurement, control and automation"; contact "WG-URL: http://ieee802.org/1/ WG-EMail: stds-802-1-l@ieee.org @@ -30,17 +32,25 @@ module iecieee60802-ia-station { E-mail: stds-802-1-chairs@ieee.org"; description - "Capability information and reset to factory defaults functionality for IEC/IEEE 60802 IA-Stations as specified in IEC/IEEE 60802 IEC/IEEE 60802. + "Capability information and reset to factory defaults + functionality for IEC/IEEE 60802 IA-Stations as specified in + IEC/IEEE 60802. - Copyright (C) IEC/IEEE (2023). - This version of this YANG module is part of IEC/IEEE Std 60802; + Copyright (C) IEC/IEEE (2025). + This version of this YANG module is part of IEC/IEEE 60802; see the standard itself for full legal notices."; - revision 2023-09-08 { - description - "Initial version."; + revision 2024-02-19 { + description "Published as part of IEC/IEEE Std 60802-2025. + The following reference statement identifies each referenced + IEEE Standard as updated by applicable amendments."; reference - "IEC/IEEE 60802 - YANG Data Model"; + "IEC/IEEE Std 60802 TSN profile for industrial automation: + IEC/IEEE 60802-2025. + IEEE Std 802.1Q Bridges and Bridged Networks: + IEEE Std 802.1Q-2022, IEEE Std 802.1Qcz-2023, + IEEE Std 802.1Qcw-2023, IEEE Std 802.1Qdj-2024, + IEEE Std 802.1Qdx-2024, IEEE Std 802.1Qdy-2024."; } feature ia-factory-default-datastore { @@ -61,7 +71,8 @@ module iecieee60802-ia-station { container ia-station-capabilities { description - "This container provides read only information about an ia-station's capabilities."; + "This container provides read only information about an + ia-station's capabilities."; reference "IEC/IEEE 60802 - YANG Data Model"; config false; @@ -71,7 +82,7 @@ module iecieee60802-ia-station { description "The value is true if the device supports LLDP."; reference - "6.4.10.2.8.5 of IEC/IEEE 60802"; + "6.4.10.3.8.5 of IEC/IEEE 60802"; } leaf capability-timesync { type boolean; @@ -79,7 +90,7 @@ module iecieee60802-ia-station { description "The value is true if the device supports Timesync."; reference - "6.4.10.2.8.6 of IEC/IEEE 60802"; + "6.4.10.3.8.6 of IEC/IEEE 60802"; } leaf capability-keystore { type boolean; @@ -87,7 +98,7 @@ module iecieee60802-ia-station { description "The value is true if the device supports Keystore."; reference - "6.4.10.2.8.7 of IEC/IEEE 60802"; + "6.4.10.3.8.7 of IEC/IEEE 60802"; } leaf capability-truststore { type boolean; @@ -95,7 +106,7 @@ module iecieee60802-ia-station { description "The value is true if the device supports Truststore."; reference - "6.4.10.2.8.9 of IEC/IEEE 60802"; + "6.4.10.3.8.9 of IEC/IEEE 60802"; } leaf capability-nacm { type boolean; @@ -103,7 +114,7 @@ module iecieee60802-ia-station { description "The value is true if the device supports NACM."; reference - "6.4.10.2.8.8 of IEC/IEEE 60802"; + "6.4.10.3.8.8 of IEC/IEEE 60802"; } leaf capability-yang-library { type boolean; @@ -111,7 +122,7 @@ module iecieee60802-ia-station { description "The value is true if the device supports YANG library."; reference - "6.4.10.2.8.10 of IEC/IEEE 60802"; + "6.4.10.3.8.10 of IEC/IEEE 60802"; } leaf capability-yang-push { type boolean; @@ -119,23 +130,25 @@ module iecieee60802-ia-station { description "The value is true if the device supports YANG push."; reference - "6.4.10.2.8.11 of IEC/IEEE 60802"; + "6.4.10.3.8.11 of IEC/IEEE 60802"; } leaf capability-yang-notifications { type boolean; config false; description - "The value is true if the device supports YANG notifications."; + "The value is true if the device supports YANG + notifications."; reference - "6.4.10.2.8.12 of IEC/IEEE 60802"; + "6.4.10.3.8.12 of IEC/IEEE 60802"; } leaf capability-netconf-monitoring { type boolean; config false; description - "The value is true if the device supports NETCONF monitoring."; + "The value is true if the device supports NETCONF + monitoring."; reference - "6.4.10.2.8.13 of IEC/IEEE 60802"; + "6.4.10.3.8.13 of IEC/IEEE 60802"; } leaf capability-netconf-client { type boolean; @@ -143,7 +156,7 @@ module iecieee60802-ia-station { description "The value is true if the device supports NETCONF client."; reference - "6.4.10.2.8.14 of IEC/IEEE 60802"; + "6.4.10.3.8.14 of IEC/IEEE 60802"; } leaf capability-tsn-uni { type boolean; @@ -151,15 +164,16 @@ module iecieee60802-ia-station { description "The value is true if the device supports TSN uni."; reference - "6.4.10.2.8.15 of IEC/IEEE 60802"; + "6.4.10.3.8.15 of IEC/IEEE 60802"; } leaf capability-sched-traffic { type boolean; config false; description - "The value is true if the device supports scheduled traffic."; + "The value is true if the device supports scheduled + traffic."; reference - "6.4.10.2.8.16 of IEC/IEEE 60802"; + "6.4.10.3.8.16 of IEC/IEEE 60802"; } leaf capability-frame-preemption { type boolean; @@ -167,7 +181,7 @@ module iecieee60802-ia-station { description "The value is true if the device supports frame preemption."; reference - "6.4.10.2.8.17 of IEC/IEEE 60802"; + "6.4.10.3.8.17 of IEC/IEEE 60802"; } } @@ -184,9 +198,9 @@ module iecieee60802-ia-station { being reset, the device may become unreachable on the network. - In contrast to the original factory-reset RPC in RFC 8808, - this RPC puts the device into a state where a subsequent - configuration by a CNC component results in a funcioning - 60802 IA-station"; + In contrast to the original factory-reset RPC in IETF RFC + 8808, this RPC puts the device into a state where a + subsequent configuration by a CNC component results in a + functioning 60802 IA-station"; } } diff --git a/standard/ieee/draft/60802/iecieee60802-sched-bridge.yang b/standard/ieee/draft/60802/iecieee60802-sched-bridge.yang index 42152a70b..95137214b 100755 --- a/standard/ieee/draft/60802/iecieee60802-sched-bridge.yang +++ b/standard/ieee/draft/60802/iecieee60802-sched-bridge.yang @@ -17,7 +17,9 @@ module iecieee60802-sched-bridge { } organization - "IEEE 802.1 Working Group"; + "IEEE 802.1 Working Group and IEC subcommittee 65C: + Industrial networks, of IEC technical committee 65: + Industrial-process measurement, control and automation"; contact "WG-URL: http://ieee802.org/1/ WG-EMail: stds-802-1-l@ieee.org @@ -31,17 +33,24 @@ module iecieee60802-sched-bridge { E-mail: stds-802-1-chairs@ieee.org"; description - "Management objects that provide information about IEC/IEEE 60802 IA-Stations as specified in IEC/IEEE 60802. + "Management objects that provide information about IEC/IEEE 60802 + IA-Stations as specified in IEC/IEEE 60802. - Copyright (C) IEC/IEEE (2023). - This version of this YANG module is part of IEC/IEEE Std 60802; + Copyright (C) IEC/IEEE (2025). + This version of this YANG module is part of IEC/IEEE 60802; see the standard itself for full legal notices."; - revision 2023-09-08 { - description - "Initial version."; + revision 2024-02-19 { + description "Published as part of IEC/IEEE Std 60802-2025. + The following reference statement identifies each referenced + IEEE Standard as updated by applicable amendments."; reference - "IEC/IEEE 60802 - YANG Data Model"; + "IEC/IEEE Std 60802 TSN profile for industrial automation: + IEC/IEEE 60802-2025. + IEEE Std 802.1Q Bridges and Bridged Networks: + IEEE Std 802.1Q-2022, IEEE Std 802.1Qcz-2023, + IEEE Std 802.1Qcw-2023, IEEE Std 802.1Qdj-2024, + IEEE Std 802.1Qdx-2024, IEEE Std 802.1Qdy-2024."; } augment "/if:interfaces/if:interface/bridge:bridge-port/sched-bridge:gate-parameter-table" { @@ -51,7 +60,7 @@ module iecieee60802-sched-bridge { description "The list of minimum gating times per supported line speed."; reference - "6.4.10.2.4.3 of IEC/IEEE 60802"; + "6.4.10.3.4.3 of IEC/IEEE 60802"; key "speed"; config false; leaf speed { @@ -63,16 +72,19 @@ module iecieee60802-sched-bridge { container min-cycle-time { uses ieee802:rational-grouping; description - "The value is the minimum value supported by this port of the AdminCycleTime and OperCycleTime parameters given as rational number of seconds."; + "The value is the minimum value supported by this port of + the AdminCycleTime and OperCycleTime parameters given as + rational number of seconds."; reference - "6.4.10.2.4.3 a) of IEC/IEEE 60802"; + "Item a) in 6.4.10.3.4.3 of IEC/IEEE 60802"; } leaf min-interval-time { type uint32; description - "The value is the minimum value supported by this port of the TimeIntervalValue parameter in nanoseconds."; + "The value is the minimum value supported by this port of + the TimeIntervalValue parameter in nanoseconds."; reference - "6.4.10.2.4.3 b) of IEC/IEEE 60802"; + "Item b) in 6.4.10.3.4.3 of IEC/IEEE 60802"; } } } diff --git a/standard/ieee/draft/60802/iecieee60802-subscribed-notifications.yang b/standard/ieee/draft/60802/iecieee60802-subscribed-notifications.yang index d042fe863..a55456a35 100755 --- a/standard/ieee/draft/60802/iecieee60802-subscribed-notifications.yang +++ b/standard/ieee/draft/60802/iecieee60802-subscribed-notifications.yang @@ -1,6 +1,7 @@ module iecieee60802-subscribed-notifications { yang-version 1.1; - namespace "urn:ieee:std:60802:yang:iecieee60802-subscribed-notifications"; + namespace + "urn:ieee:std:60802:yang:iecieee60802-subscribed-notifications"; prefix ia-sn; import ietf-subscribed-notifications { @@ -8,7 +9,9 @@ module iecieee60802-subscribed-notifications { } organization - "IEEE 802.1 Working Group"; + "IEEE 802.1 Working Group and IEC subcommittee 65C: + Industrial networks, of IEC technical committee 65: + Industrial-process measurement, control and automation"; contact "WG-URL: http://ieee802.org/1/ WG-EMail: stds-802-1-l@ieee.org @@ -22,17 +25,24 @@ module iecieee60802-subscribed-notifications { E-mail: stds-802-1-chairs@ieee.org"; description - "Management objects that provide information about IEC/IEEE 60802 IA-Stations as specified in IEC/IEEE 60802. + "Management objects that provide information about IEC/IEEE 60802 + IA-Stations as specified in IEC/IEEE 60802. - Copyright (C) IEC/IEEE (2023). - This version of this YANG module is part of IEC/IEEE Std 60802; + Copyright (C) IEC/IEEE (2025). + This version of this YANG module is part of IEC/IEEE 60802; see the standard itself for full legal notices."; - revision 2023-09-08 { - description - "Initial version."; + revision 2024-02-19 { + description "Published as part of IEC/IEEE Std 60802-2025. + The following reference statement identifies each referenced + IEEE Standard as updated by applicable amendments."; reference - "IEC/IEEE 60802 - YANG Data Model"; + "IEC/IEEE Std 60802 TSN profile for industrial automation: + IEC/IEEE 60802-2025. + IEEE Std 802.1Q Bridges and Bridged Networks: + IEEE Std 802.1Q-2022, IEEE Std 802.1Qcz-2023, + IEEE Std 802.1Qcw-2023, IEEE Std 802.1Qdj-2024, + IEEE Std 802.1Qdx-2024, IEEE Std 802.1Qdy-2024."; } augment "/sn:subscriptions" { @@ -42,33 +52,40 @@ module iecieee60802-subscribed-notifications { type uint16; config false; description - "The value is the maximum number of supported NETCONF Server subscriptions."; + "The value is the maximum number of supported NETCONF Server + subscriptions."; reference - "6.4.10.2.8.1 of IEC/IEEE 60802"; + "6.4.10.3.8.1 of IEC/IEEE 60802"; } leaf max-on-change-subscription-leaves { type uint16; config false; description - "The value is the maximum number of supported leaves for NETCONF Server on-change subscriptions according to IETF RFC 8641."; + "The value is the maximum number of supported leaves for + NETCONF Server on-change subscriptions according to IETF + RFC 8641."; reference - "6.4.10.2.8.2 of IEC/IEEE 60802"; + "6.4.10.3.8.2 of IEC/IEEE 60802"; } leaf max-periodic-subscription-leaves { type uint16; config false; description - "The value is the maximum number of supported leaves for NETCONF Server periodic subscriptions according to IETF RFC 8641."; + "The value is the maximum number of supported leaves for + NETCONF Server periodic subscriptions according to IETF + RFC 8641."; reference - "6.4.10.2.8.3 of IEC/IEEE 60802"; + "6.4.10.3.8.3 of IEC/IEEE 60802"; } - leaf max-periodic-subscription-interval { + leaf min-periodic-subscription-interval { type uint16; config false; description - "The value is the minimum periodic subscription interval in centiseconds (0.01 seconds) for NETCONF Server periodic subscriptions according to IETF RFC 8641."; + "The value is the minimum periodic subscription interval in + centiseconds (0.01 seconds) for NETCONF Server periodic + subscriptions according to IETF RFC 8641."; reference - "6.4.10.2.8.4 of IEC/IEEE 60802"; + "6.4.10.3.8.4 of IEC/IEEE 60802"; } } } diff --git a/standard/ieee/draft/60802/iecieee60802-tsn-config-uni.yang b/standard/ieee/draft/60802/iecieee60802-tsn-config-uni.yang index 22a6f7556..e6595455b 100755 --- a/standard/ieee/draft/60802/iecieee60802-tsn-config-uni.yang +++ b/standard/ieee/draft/60802/iecieee60802-tsn-config-uni.yang @@ -3,7 +3,7 @@ module iecieee60802-tsn-config-uni { namespace "urn:ieee:std:60802:yang:iecieee60802-tsn-config-uni"; prefix ia-tsn; - import ieee802-dot1q-tsn-config-uni { + import ieee802-dot1q-cnc-config { prefix tsn; } import ieee802-dot1q-tsn-types { @@ -11,7 +11,9 @@ module iecieee60802-tsn-config-uni { } organization - "IEEE 802.1 Working Group"; + "IEEE 802.1 Working Group and IEC subcommittee 65C: + Industrial networks, of IEC technical committee 65: + Industrial-process measurement, control and automation"; contact "WG-URL: http://ieee802.org/1/ WG-EMail: stds-802-1-l@ieee.org @@ -25,29 +27,37 @@ module iecieee60802-tsn-config-uni { E-mail: stds-802-1-chairs@ieee.org"; description - "Management objects that provide information about IEC/IEEE 60802 IA-Stations as specified in IEC/IEEE 60802. + "Management objects that provide information about IEC/IEEE 60802 + IA-Stations as specified in IEC/IEEE 60802. - Copyright (C) IEC/IEEE (2023). - This version of this YANG module is part of IEC/IEEE Std 60802; + Copyright (C) IEC/IEEE (2025). + This version of this YANG module is part of IEC/IEEE 60802; see the standard itself for full legal notices."; - revision 2023-09-08 { - description - "Initial version."; + revision 2024-02-19 { + description "Published as part of IEC/IEEE Std 60802-2025. + The following reference statement identifies each referenced + IEEE Standard as updated by applicable amendments."; reference - "IEC/IEEE 60802 - YANG Data Model"; + "IEC/IEEE Std 60802 TSN profile for industrial automation: + IEC/IEEE 60802-2025. + IEEE Std 802.1Q Bridges and Bridged Networks: + IEEE Std 802.1Q-2022, IEEE Std 802.1Qcz-2023, + IEEE Std 802.1Qcw-2023, IEEE Std 802.1Qdj-2024, + IEEE Std 802.1Qdx-2024, IEEE Std 802.1Qdy-2024."; } - augment "/tsn:tsn-uni" { + augment "/tsn:cnc-config" { description "Augment main container in tsc-config-uni."; leaf max-config-domains { type uint8; config false; description - "The value is the maximum number of supported configuration domains."; + "The value is the maximum number of supported configuration + domains."; reference - "6.4.10.2.9.1 of IEC/IEEE 60802"; + "6.4.10.3.9.1 of IEC/IEEE 60802"; } leaf max-cucs { type uint8; @@ -55,7 +65,7 @@ module iecieee60802-tsn-config-uni { description "The value is the maximum number of supported CUC entities."; reference - "6.4.10.2.9.2 of IEC/IEEE 60802"; + "6.4.10.3.9.2 of IEC/IEEE 60802"; } leaf max-ia-stations { type uint16; @@ -63,7 +73,7 @@ module iecieee60802-tsn-config-uni { description "The value is the maximum number of supported IA-stations."; reference - "6.4.10.2.9.3 of IEC/IEEE 60802"; + "6.4.10.3.9.3 of IEC/IEEE 60802"; } leaf max-network-diameter { type uint8; @@ -71,7 +81,7 @@ module iecieee60802-tsn-config-uni { description "The value is the maximum supported network diameter."; reference - "6.4.10.2.9.4 of IEC/IEEE 60802"; + "6.4.10.3.9.4 of IEC/IEEE 60802"; } leaf max-streams { type uint16; @@ -79,23 +89,25 @@ module iecieee60802-tsn-config-uni { description "The value is the maximum number of supported streams."; reference - "6.4.10.2.9.5 of IEC/IEEE 60802"; + "6.4.10.3.9.5 of IEC/IEEE 60802"; } - leaf num-seamless-trees { + leaf max-num-seamless-trees { type uint8; config false; description - "The value is the maximum number of trees supported for seamless redundancy of a stream."; + "The value is the maximum number of trees supported for + seamless redundancy of a stream."; reference - "6.4.10.2.9.6 of IEC/IEEE 60802"; + "6.4.10.3.9.6 of IEC/IEEE 60802"; } leaf hot-standby-supported { type uint8; config false; description - "The Boolean value indicates if PTP hot standby is supported."; + "The Boolean value indicates if PTP hot standby is + supported."; reference - "6.4.10.2.9.7 of IEC/IEEE 60802"; + "6.4.10.3.9.7 of IEC/IEEE 60802"; } action add_streams { description @@ -113,15 +125,16 @@ module iecieee60802-tsn-config-uni { leaf stream-id { type tsn-types:stream-id-type; description - "The Stream ID is a unique identifier of a Stream request - and corresponding configuration. It is used to associate a - CUC’s Stream request with a CNC’s corresponding response."; + "The Stream ID is a unique identifier of a Stream + request and corresponding configuration. It is used to + associate a CUC’s Stream request with a CNC’s + corresponding response."; } container talker { description "The Talker container contains: - Talker’s behavior for - Stream (how/when transmitted) - Talker’s requirements from - the network - TSN capabilities of the Talker’s + Stream (how/when transmitted) - Talker’s requirements + from the network - TSN capabilities of the Talker’s interface(s)."; uses tsn-types:group-talker; } @@ -129,13 +142,13 @@ module iecieee60802-tsn-config-uni { key "index"; description "Each Listener list entry contains: - Listener’s - requirements from the network - TSN capabilities of the - Listener’s interface(s)."; + requirements from the network - TSN capabilities of + the Listener’s interface(s)."; leaf index { type uint32; description - "This index is provided in order to provide a unique key - per list entry."; + "This index is provided in order to provide a unique + key per list entry."; } uses tsn-types:group-listener; } @@ -152,7 +165,7 @@ module iecieee60802-tsn-config-uni { } } - augment "/tsn:tsn-uni/tsn:domain/tsn:cuc/tsn:stream" { + augment "/tsn:cnc-config/tsn:domain/tsn:cuc/tsn:stream" { description "Augment stream list in tsc-config-uni."; action remove_listener { @@ -168,8 +181,8 @@ module iecieee60802-tsn-config-uni { leaf index { type uint32; description - "This index is provided in order to provide a unique key - per list entry."; + "This index is provided in order to provide a unique + key per list entry."; } } } diff --git a/standard/ieee/draft/802.1/ASdm/ieee802-dot1as-hs.yang b/standard/ieee/draft/802.1/ASdm/ieee802-dot1as-hs.yang index e960d8255..256c01184 100644 --- a/standard/ieee/draft/802.1/ASdm/ieee802-dot1as-hs.yang +++ b/standard/ieee/draft/802.1/ASdm/ieee802-dot1as-hs.yang @@ -4,7 +4,7 @@ module ieee802-dot1as-hs { prefix dot1as-hs; import ieee1588-ptp-tt { - prefix ptp; + prefix ptp-tt; } import ieee802-dot1as-ptp { prefix dot1as-ptp; @@ -35,7 +35,7 @@ module ieee802-dot1as-hs { This version of this YANG module is part of IEEE Std 802.1ASdm; see the standard itself for full legal notices."; - revision 2024-01-02 { + revision 2024-02-19 { description "Published as part of IEEE Std 802.1ASdm-XXXX. Initial version."; @@ -102,7 +102,7 @@ module ieee802-dot1as-hs { } } - augment "/ptp:ptp/ptp:instances/ptp:instance/ptp:parent-ds" { + augment "/ptp-tt:ptp/ptp-tt:instances/ptp-tt:instance/ptp-tt:parent-ds" { description "Augment IEEE Std 1588 parentDS."; leaf gm-present { @@ -116,7 +116,7 @@ module ieee802-dot1as-hs { } } - augment "/ptp:ptp/ptp:instances/ptp:instance" { + augment "/ptp-tt:ptp/ptp-tt:instances/ptp-tt:instance" { description "Augment IEEE Std 1588 instanceList."; container ptp-instance-sync-ds { @@ -133,7 +133,7 @@ module ieee802-dot1as-hs { "14.8.2 of IEEE Std 802.1ASdm"; } leaf offset-from-time-transmitter-max { - type ptp:time-interval; + type ptp-tt:time-interval; config true; description "The value is the threshold for offsetFromTimeTransmitter (see 18.4.1.2), below which the PTP Instance is @@ -188,7 +188,7 @@ module ieee802-dot1as-hs { } } - augment "/ptp:ptp/ptp:instances/ptp:instance/ptp:ports/ptp:port/ptp:port-ds" { + augment "/ptp-tt:ptp/ptp-tt:instances/ptp-tt:instance/ptp-tt:ports/ptp-tt:port/ptp-tt:port-ds" { description "Augment IEEE Std 1588 commonServices."; leaf gptp-capable-state-machines-enabled { @@ -233,7 +233,7 @@ module ieee802-dot1as-hs { } } - augment "/ptp:ptp/ptp:instances/ptp:instance/ptp:ports/ptp:port/dot1as-ptp:port-statistics-ds" { + augment "/ptp-tt:ptp/ptp-tt:instances/ptp-tt:instance/ptp-tt:ports/ptp-tt:port/dot1as-ptp:port-statistics-ds" { description "Augment IEEE Std 802.1AS PortStatisticsDS."; leaf rx-sync-count-time-receiver-p { @@ -247,7 +247,7 @@ module ieee802-dot1as-hs { } } - augment "/ptp:ptp/ptp:common-services" { + augment "/ptp-tt:ptp/ptp-tt:common-services" { description "Augment IEEE Std 1588 commonServices. diff --git a/standard/ieee/draft/802.1/DC/check_pyang_extra_flags b/standard/ieee/draft/802.1/DC/check_pyang_extra_flags new file mode 100644 index 000000000..c158c2bc3 --- /dev/null +++ b/standard/ieee/draft/802.1/DC/check_pyang_extra_flags @@ -0,0 +1 @@ + -p ../Qdx diff --git a/standard/ieee/draft/802.1/DC/ieee802-dot1dc-ats-if.yang b/standard/ieee/draft/802.1/DC/ieee802-dot1dc-ats-if.yang index ad9d16353..6df19f086 100644 --- a/standard/ieee/draft/802.1/DC/ieee802-dot1dc-ats-if.yang +++ b/standard/ieee/draft/802.1/DC/ieee802-dot1dc-ats-if.yang @@ -1,99 +1,99 @@ -module ieee802-dot1dc-ats-if { - yang-version "1.1"; - namespace urn:ieee:std:802.1Q:yang:ieee802-dot1dc-ats-if; - prefix ats-if; - import ietf-system { - prefix sys; - } - import ietf-interfaces { - prefix if; - } - import ieee802-dot1q-ats { - prefix ats; - } - import ieee802-dot1q-stream-filters-gates { - prefix sfsg; - } - - organization - "Institute of Electrical and Electronics Engineers"; - contact - "WG-URL: http://ieee802.org/1/ - WG-EMail: stds-802-1-l@ieee.org - Contact: IEEE 802.1 Working Group Chair - Postal: C/O IEEE 802.1 Working Group - IEEE Standards Association - 445 Hoes Lane - Piscataway - NJ 08854 - USA - - E-mail: stds-802-1-chairs@ieee.org"; - - description - "This module provides management of 802.1Q General Frame Quality of - Service (GFQoS) systems that support Asynchronous Traffic Shaping - (ATS). - - Copyright (C) IEEE (2023). - - This version of this YANG module is part of IEEE Std 802.1DC; - see the standard itself for full legal notices."; - - revision 2023-05-16 { - description - "Published as part of IEEE Std 802.1DC. - - The following reference statement identifies each referenced - IEEE Standard as updated by applicable amendments."; - - reference - "IEEE Std 802.1DC: - IEEE Std 802.1DC - Quality of Service Provision by - Network Systems."; - } - - augment "/if:interfaces/if:interface" { - description - "Augments interfaces by ATS per-Port parameters."; - uses ats:ats-port-parameters; - } - augment "/sys:system" { - description - "Augments the Bridge component with ATS parameters."; - uses sfsg:sfsg-parameters { - augment "stream-filters/stream-filter-instance-table" { - description - "Augments the Bridge component stream filter for ATS - schedulers."; - uses ats:ats-parameters; - container scheduler { - description - "Enapsulates ATS scheduler nodes."; - leaf scheduler-ref { - type leafref { - path - '..'+ - '/..'+ - '/schedulers'+ - '/scheduler-instance-table'+ - '/scheduler-instance-id'; - } - description - "A reference to the ATS scheduler associated with this - stream filter."; - } - leaf scheduler-enable { - type boolean; - default "false"; - description - "If TRUE, this stream filter has an associated ATS - scheduler referenced by scheduler-ref. If FALSE, no ATS - scheduler is associated with this stream filter - (scheduler-ref is ignored)."; - } - } - } - } - } -} +module ieee802-dot1dc-ats-if { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1dc-ats-if; + prefix ats-if; + import ietf-system { + prefix sys; + } + import ietf-interfaces { + prefix if; + } + import ieee802-dot1q-ats { + prefix ats; + } + import ieee802-dot1q-stream-filters-gates { + prefix sfsg; + } + + organization + "Institute of Electrical and Electronics Engineers"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway + NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + + description + "This module provides management of 802.1Q General Frame Quality of + Service (GFQoS) systems that support Asynchronous Traffic Shaping + (ATS). + + Copyright (C) IEEE (2024). + + This version of this YANG module is part of IEEE Std 802.1DC; + see the standard itself for full legal notices."; + + revision 2024-02-28 { + description + "Published as part of IEEE Std 802.1DC. + + The following reference statement identifies each referenced + IEEE Standard as updated by applicable amendments."; + + reference + "IEEE Std 802.1DC: + IEEE Std 802.1DC - Quality of Service Provision by + Network Systems."; + } + + augment "/if:interfaces/if:interface" { + description + "Augments interfaces by ATS per-Port parameters."; + uses ats:ats-port-parameters; + } + augment "/sys:system" { + description + "Augments the system with ATS parameters."; + uses sfsg:sfsg-parameters { + augment "stream-filters/stream-filter-instance-table" { + description + "Augments the system stream filter for ATS + schedulers."; + uses ats:ats-parameters; + container scheduler { + description + "This container encapsulates ATS scheduler nodes."; + leaf scheduler-ref { + type leafref { + path + '..'+ + '/..'+ + '/schedulers'+ + '/scheduler-instance-table'+ + '/scheduler-instance-id'; + } + description + "A reference to the ATS scheduler associated with this + stream filter."; + } + leaf scheduler-enable { + type boolean; + default "false"; + description + "If TRUE, this stream filter has an associated ATS + scheduler referenced by scheduler-ref. If FALSE, no ATS + scheduler is associated with this stream filter + (scheduler-ref is ignored)."; + } + } + } + } + } +} diff --git a/standard/ieee/draft/802.1/DC/ieee802-dot1dc-cbsa-if.yang b/standard/ieee/draft/802.1/DC/ieee802-dot1dc-cbsa-if.yang new file mode 100644 index 000000000..55d3ad3fe --- /dev/null +++ b/standard/ieee/draft/802.1/DC/ieee802-dot1dc-cbsa-if.yang @@ -0,0 +1,58 @@ +module ieee802-dot1dc-cbsa-if { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1dc-cbsa-if; + prefix cbsa-if; + + import ietf-interfaces { + prefix if; + } + import ieee802-dot1q-cbsa { + prefix cbsa; + } + + organization + "Institute of Electrical and Electronics Engineers"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway + NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + + description + "This module provides for management of General Frame Quality of + Service (GFQoS) systems that support the Credit-Based Shaper + transmission selection algorithm. + + Copyright (C) IEEE (2024). + + This version of this YANG module is part of IEEE Std 802.1DC; + see the standard itself for full legal notices."; + + revision 2024-02-27 { + description + "Published as part of IEEE Std 802.1DC. + + The following reference statement identifies each referenced + IEEE Standard as updated by applicable amendments."; + + reference + "IEEE Std 802.1DC: + IEEE Std 802.1DC - Quality of Service Provision by + Network Systems."; + } + + augment "/if:interfaces/if:interface" { + + description + "Augment interface with Credit-Based Shaper configuration."; + + uses cbsa:cbsa-config; + } +} diff --git a/standard/ieee/draft/802.1/DC/ieee802-dot1dc-gfqos.yang b/standard/ieee/draft/802.1/DC/ieee802-dot1dc-gfqos.yang index 2cd4ec654..654945e0b 100644 --- a/standard/ieee/draft/802.1/DC/ieee802-dot1dc-gfqos.yang +++ b/standard/ieee/draft/802.1/DC/ieee802-dot1dc-gfqos.yang @@ -1,156 +1,156 @@ -module ieee802-dot1dc-gfqos { - yang-version "1.1"; - namespace urn:ieee:std:802.1Q:yang:ieee802-dot1dc-gfqos; - prefix dot1dc; - import ietf-yang-types { - prefix yang; - } - import ietf-interfaces { - prefix if; - } - import ieee802-dot1q-types { - prefix dot1qtypes; - } - import ieee802-dot1q-bridge { - prefix dot1q; - } - - organization - "Institute of Electrical and Electronics Engineers"; - contact - "WG-URL: http://ieee802.org/1/ - WG-EMail: stds-802-1-l@ieee.org - Contact: IEEE 802.1 Working Group Chair - Postal: C/O IEEE 802.1 Working Group - IEEE Standards Association - 445 Hoes Lane - Piscataway - NJ 08854 - USA - - E-mail: stds-802-1-chairs@ieee.org"; - - description - "This module provides for management of General Frame Quality of - Service (GFQoS) systems that support Extended Internal Sublayer - Service (EISS). - - - Copyright (C) IEEE (2023). - - This version of this YANG module is part of IEEE Std 802.1DC; - see the standard itself for full legal notices."; - - revision 2023-05-16 { - description - "Published as part of IEEE Std 802.1DC. - - The following reference statement identifies each referenced - IEEE Standard as updated by applicable amendments."; - - reference - "IEEE Std 802.1DC: - IEEE Std 802.1DC - Quality of Service Provision by Network - Systems. - IEEE Std 802.1Q: - IEEE Std 802.1Q-2022 Bridges and Bridged Networks."; - } - - feature eiss { - description - "Each GFQoS interface may support the Extended Internal Sublayer - Service (EISS). This is one useful method for dealing with VLAN - tags."; - reference - "7.3.2 of IEEE Std 802.1DC"; - } - augment "/if:interfaces/if:interface" { - description - "Augment the interface model with the GFQoS interface"; - container gfqos-ifc { - description - "GFQoS interface is an extension of the IETF Interfaces model - (RFC7223)."; - leaf pvid { - if-feature "eiss"; - type dot1qtypes:vlan-index-type; - default "1"; - description - "The primary (default) VID assigned to interface."; - reference - "12.10.1, item m) of 5.4 of IEEE Std 802.1Q"; - } - leaf acceptable-frame { - if-feature "eiss"; - type enumeration { - enum admit-only-VLAN-tagged-frames { - description - "Admit only VLAN-tagged frames."; - } - enum admit-only-untagged-and-priority-tagged { - description - "Admit only untagged and priority-tagged frames."; - } - enum admit-all-frames { - description - "Admit all frames."; - } - } - default "admit-all-frames"; - description - "To configure the Acceptable Frame Types parameter associated - with one or more GFQoS interfaces, only if EISS is supported"; - reference - "12.10.1.3, 6.9 of IEEE Std 802.1Q"; - } - container transmission-selection-algorithm-table { - description - "The Transmission Selection Algorithm Table for a given - interface assigns, for each traffic class that the interface - supports, the transmission selection algorithm that is to be - used to select frames for transmission from the corresponding - queue. Transmission Selection Algorithm Tables may be managed, - and allow the identification of vendor-specific transmission - selection algorithms. The transmission selection algorithms - are identified in the Transmission Selection Algorithm Table - by means of integer identifiers."; - reference - "12.20.2, 8.6.8 of IEEE Std 802.1Q"; - uses dot1qtypes:transmission-selection-table-grouping; - } - leaf media-dependent-overhead { - type uint8; - units "octets"; - config false; - description - "The portMediaDependentOverhead parameter provides the number - of additional octets for media-dependent framing. The overhead - includes all octets prior the first octet of the Destination - Address field and all octets after the last octet of the frame - check sequence."; - reference - "12.4.2 of IEEE Std 802.1Q"; - } - container statistics { - config false; - description - "Container of operational state node information associated - with the GFQoS interface."; - uses dot1qtypes:bridge-port-statistics-grouping; - leaf discard-on-ingress-filtering { - if-feature "dot1q:ingress-filtering"; - type yang:counter64; - description - "The number of frames that were discarded as a result of - Ingress Filtering being enabled. - - Discontinuities in the value of this counter can occur at - re-initialization of the management system, and at other - times as indicated by the value of 'discontinuity-time'."; - reference - "12.6.1.1.3 of IEEE Std 802.1Q"; - } - } - } - } -} +module ieee802-dot1dc-gfqos { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1dc-gfqos; + prefix dot1dc; + import ietf-yang-types { + prefix yang; + } + import ietf-interfaces { + prefix if; + } + import ieee802-dot1q-types { + prefix dot1qtypes; + } + import ieee802-dot1q-bridge { + prefix dot1q; + } + + organization + "Institute of Electrical and Electronics Engineers"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway + NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + + description + "This module provides for management of General Frame Quality of + Service (GFQoS) systems that support Extended Internal Sublayer + Service (EISS). + + + Copyright (C) IEEE (2024). + + This version of this YANG module is part of IEEE Std 802.1DC; + see the standard itself for full legal notices."; + + revision 2024-02-28 { + description + "Published as part of IEEE Std 802.1DC. + + The following reference statement identifies each referenced + IEEE Standard as updated by applicable amendments."; + + reference + "IEEE Std 802.1DC: + IEEE Std 802.1DC - Quality of Service Provision by Network + Systems. + IEEE Std 802.1Q: + IEEE Std 802.1Q-2022 Bridges and Bridged Networks."; + } + + feature eiss { + description + "Each GFQoS interface may support the Extended Internal Sublayer + Service (EISS). This is one useful method for dealing with VLAN + tags."; + reference + "7.3.2 of IEEE Std 802.1DC"; + } + augment "/if:interfaces/if:interface" { + description + "Augment the interface model with the GFQoS interface"; + container gfqos-ifc { + description + "GFQoS interface is an extension of the IETF Interfaces model + (IETF RFC 7223)."; + leaf pvid { + if-feature "eiss"; + type dot1qtypes:vlan-index-type; + default "1"; + description + "The port VID assigned to the interface."; + reference + "12.10.1, item m) of 5.4 of IEEE Std 802.1Q"; + } + leaf acceptable-frame { + if-feature "eiss"; + type enumeration { + enum admit-only-VLAN-tagged-frames { + description + "Admit only VLAN-tagged frames."; + } + enum admit-only-untagged-and-priority-tagged { + description + "Admit only untagged and priority-tagged frames."; + } + enum admit-all-frames { + description + "Admit all frames."; + } + } + default "admit-all-frames"; + description + "To configure the Acceptable Frame Types parameter associated + with one or more GFQoS interfaces, only if EISS is supported"; + reference + "12.10.1.3, 6.9 of IEEE Std 802.1Q"; + } + container transmission-selection-algorithm-table { + description + "The Transmission Selection Algorithm Table for a given + interface assigns, for each traffic class that the interface + supports, the transmission selection algorithm that is to be + used to select frames for transmission from the corresponding + queue. Transmission Selection Algorithm Tables may be managed, + and allow the identification of vendor-specific transmission + selection algorithms. The transmission selection algorithms + are identified in the Transmission Selection Algorithm Table + by means of integer identifiers."; + reference + "12.20.2, 8.6.8 of IEEE Std 802.1Q"; + uses dot1qtypes:transmission-selection-table-grouping; + } + leaf media-dependent-overhead { + type uint8; + units "octets"; + config false; + description + "The portMediaDependentOverhead parameter provides the number + of additional octets for media-dependent framing. The overhead + includes all octets prior the first octet of the Destination + Address field and all octets after the last octet of the frame + check sequence."; + reference + "12.4.2 of IEEE Std 802.1Q"; + } + container statistics { + config false; + description + "Container of operational state node information associated + with the GFQoS interface."; + uses dot1qtypes:bridge-port-statistics-grouping; + leaf discard-on-ingress-filtering { + if-feature "dot1q:ingress-filtering"; + type yang:counter64; + description + "The number of frames that were discarded as a result of + Ingress Filtering being enabled. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of 'discontinuity-time'."; + reference + "12.6.1.1.3 of IEEE Std 802.1Q"; + } + } + } + } +} diff --git a/standard/ieee/draft/802.1/DC/ieee802-dot1dc-preemption-if.yang b/standard/ieee/draft/802.1/DC/ieee802-dot1dc-preemption-if.yang index 1557d2b0e..c0aa03bd8 100644 --- a/standard/ieee/draft/802.1/DC/ieee802-dot1dc-preemption-if.yang +++ b/standard/ieee/draft/802.1/DC/ieee802-dot1dc-preemption-if.yang @@ -1,62 +1,62 @@ -module ieee802-dot1dc-preemption-if { - yang-version "1.1"; - namespace urn:ieee:std:802.1Q:yang:ieee802-dot1dc-preemption-if; - prefix preempt-if; - - import ietf-interfaces { - prefix if; - } - import ieee802-dot1q-preemption { - prefix q-preempt; - } - - organization - "Institute of Electrical and Electronics Engineers"; - contact - "WG-URL: http://ieee802.org/1/ - WG-EMail: stds-802-1-l@ieee.org - Contact: IEEE 802.1 Working Group Chair - Postal: C/O IEEE 802.1 Working Group - IEEE Standards Association - 445 Hoes Lane - Piscataway - NJ 08854 - USA - - E-mail: stds-802-1-chairs@ieee.org"; - - description - "This module provides for management of General Frame Quality of - Service (GFQoS) systems that support Frame Preemption. - - Copyright (C) IEEE (2023). - - This version of this YANG module is part of IEEE Std 802.1DC; - see the standard itself for full legal notices."; - - revision 2023-05-16 { - description - "Published as part of IEEE Std 802.1DC. - - The following reference statement identifies each referenced - IEEE Standard as updated by applicable amendments."; - - reference - "IEEE Std 802.1DC: - IEEE Std 802.1DC - Quality of Service Provision by - Network Systems."; - } - - feature frame-preemption { - description - "Frame preemption supported."; - reference - "IEEE Std 802.1DC"; - } - augment "/if:interfaces/if:interface" { - if-feature "frame-preemption"; - description - "Augment interface with Frame Preemption configuration."; - uses q-preempt:preemption-parameters; - } -} +module ieee802-dot1dc-preemption-if { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1dc-preemption-if; + prefix preempt-if; + + import ietf-interfaces { + prefix if; + } + import ieee802-dot1q-preemption { + prefix q-preempt; + } + + organization + "Institute of Electrical and Electronics Engineers"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway + NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + + description + "This module provides for management of General Frame Quality of + Service (GFQoS) systems that support Frame Preemption. + + Copyright (C) IEEE (2024). + + This version of this YANG module is part of IEEE Std 802.1DC; + see the standard itself for full legal notices."; + + revision 2024-02-28 { + description + "Published as part of IEEE Std 802.1DC. + + The following reference statement identifies each referenced + IEEE Standard as updated by applicable amendments."; + + reference + "IEEE Std 802.1DC: + IEEE Std 802.1DC - Quality of Service Provision by + Network Systems."; + } + + feature frame-preemption { + description + "Frame preemption supported."; + reference + "6.2.5 of IEEE Std 802.1DC"; + } + augment "/if:interfaces/if:interface" { + if-feature "frame-preemption"; + description + "Augment interface with Frame Preemption configuration."; + uses q-preempt:preemption-parameters; + } +} diff --git a/standard/ieee/draft/802.1/DC/ieee802-dot1dc-psfp-sys.yang b/standard/ieee/draft/802.1/DC/ieee802-dot1dc-psfp-sys.yang index 92484b1a8..bf85eee36 100644 --- a/standard/ieee/draft/802.1/DC/ieee802-dot1dc-psfp-sys.yang +++ b/standard/ieee/draft/802.1/DC/ieee802-dot1dc-psfp-sys.yang @@ -1,64 +1,64 @@ -module ieee802-dot1dc-psfp-sys { - yang-version "1.1"; - namespace urn:ieee:std:802.1Q:yang:ieee802-dot1dc-psfp-sys; - prefix psfp-sys; - - import ietf-system { - prefix sys; - } - import ieee802-dot1q-psfp { - prefix q-psfp; - } - - organization - "Institute of Electrical and Electronics Engineers"; - contact - "WG-URL: http://ieee802.org/1/ - WG-EMail: stds-802-1-l@ieee.org - Contact: IEEE 802.1 Working Group Chair - Postal: C/O IEEE 802.1 Working Group - IEEE Standards Association - 445 Hoes Lane - Piscataway - NJ 08854 - USA - - E-mail: stds-802-1-chairs@ieee.org"; - - description - "This module provides management of General Frame Quality of - Service (GFQoS) systems that support IEEE Std 802.1Q Per - Stream Filtering and Policing (PSFP). - - Copyright (C) IEEE (2023). - - This version of this YANG module is part of IEEE Std 802.1DC; - see the standard itself for full legal notices."; - - revision 2023-05-16 { - description - "Published as part of IEEE Std 802.1DC. - - The following reference statement identifies each referenced - IEEE Standard as updated by applicable amendments."; - - reference - "IEEE Std 802.1DC: - IEEE Std 802.1DC - Quality of Service Provision by - Network Systems."; - } - - feature psfp { - description - "Per Stream Filtering and Policing supported."; - reference - "IEEE Std 802.1DC"; - } - - augment "/sys:system" { - description - "Augment system with Per-Stream Filtering and Policing - configuration"; - uses q-psfp:psfp-parameters; - } -} +module ieee802-dot1dc-psfp-sys { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1dc-psfp-sys; + prefix psfp-sys; + + import ietf-system { + prefix sys; + } + import ieee802-dot1q-psfp { + prefix q-psfp; + } + + organization + "Institute of Electrical and Electronics Engineers"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway + NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + + description + "This module provides management of General Frame Quality of + Service (GFQoS) systems that support IEEE Std 802.1Q Per- + Stream Filtering and Policing (PSFP). + + Copyright (C) IEEE (2024). + + This version of this YANG module is part of IEEE Std 802.1DC; + see the standard itself for full legal notices."; + + revision 2024-02-28 { + description + "Published as part of IEEE Std 802.1DC. + + The following reference statement identifies each referenced + IEEE Standard as updated by applicable amendments."; + + reference + "IEEE Std 802.1DC: + IEEE Std 802.1DC - Quality of Service Provision by + Network Systems."; + } + + feature psfp { + description + "Per-Stream Filtering and Policing supported."; + reference + "6.2.8 of IEEE Std 802.1DC"; + } + + augment "/sys:system" { + description + "Augment system with Per-Stream Filtering and Policing + configuration"; + uses q-psfp:psfp-parameters; + } +} diff --git a/standard/ieee/draft/802.1/DC/ieee802-dot1dc-sched-if.yang b/standard/ieee/draft/802.1/DC/ieee802-dot1dc-sched-if.yang index e5b5ef93f..2cf6c87ff 100644 --- a/standard/ieee/draft/802.1/DC/ieee802-dot1dc-sched-if.yang +++ b/standard/ieee/draft/802.1/DC/ieee802-dot1dc-sched-if.yang @@ -1,57 +1,57 @@ -module ieee802-dot1dc-sched-if { - yang-version "1.1"; - namespace urn:ieee:std:802.1Q:yang:ieee802-dot1dc-sched-if; - prefix sched-if; - - import ietf-interfaces { - prefix if; - } - import ieee802-dot1q-sched { - prefix q-sched; - } - - organization - "Institute of Electrical and Electronics Engineers"; - contact - "WG-URL: http://ieee802.org/1/ - WG-EMail: stds-802-1-l@ieee.org - Contact: IEEE 802.1 Working Group Chair - Postal: C/O IEEE 802.1 Working Group - IEEE Standards Association - 445 Hoes Lane - Piscataway - NJ 08854 - USA - - E-mail: stds-802-1-chairs@ieee.org"; - - description - "This module provides for management of General Frame Quality of - Service (GFQoS) systems that support Scheduled Traffic Enhancements. - - Copyright (C) IEEE (2023). - - This version of this YANG module is part of IEEE Std 802.1DC; - see the standard itself for full legal notices."; - - revision 2023-05-16 { - description - "Published as part of IEEE Std 802.1DC. - - The following reference statement identifies each referenced - IEEE Standard as updated by applicable amendments."; - - reference - "IEEE Std 802.1DC: - IEEE Std 802.1DC - Quality of Service Provision by - Network Systems."; - } - - augment "/if:interfaces/if:interface" { - - description - "Augment interface with Scheduled Traffic configuration."; - - uses q-sched:sched-parameters; - } -} +module ieee802-dot1dc-sched-if { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1dc-sched-if; + prefix sched-if; + + import ietf-interfaces { + prefix if; + } + import ieee802-dot1q-sched { + prefix q-sched; + } + + organization + "Institute of Electrical and Electronics Engineers"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway + NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + + description + "This module provides for management of General Frame Quality of + Service (GFQoS) systems that support Scheduled Traffic Enhancements. + + Copyright (C) IEEE (2023). + + This version of this YANG module is part of IEEE Std 802.1DC; + see the standard itself for full legal notices."; + + revision 2023-05-16 { + description + "Published as part of IEEE Std 802.1DC. + + The following reference statement identifies each referenced + IEEE Standard as updated by applicable amendments."; + + reference + "IEEE Std 802.1DC: + IEEE Std 802.1DC - Quality of Service Provision by + Network Systems."; + } + + augment "/if:interfaces/if:interface" { + + description + "Augment interface with Scheduled Traffic configuration."; + + uses q-sched:sched-parameters; + } +} diff --git a/standard/ieee/draft/802.1/Qdj/ieee802-dot1q-cnc-config.yang b/standard/ieee/draft/802.1/Qdj/ieee802-dot1q-cnc-config.yang new file mode 100644 index 000000000..bcc97395b --- /dev/null +++ b/standard/ieee/draft/802.1/Qdj/ieee802-dot1q-cnc-config.yang @@ -0,0 +1,568 @@ +module ieee802-dot1q-cnc-config { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-cnc-config; + prefix dot1q-cnc-config; + import ieee802-dot1q-tsn-types { + prefix tsn; + reference + "48.6.3 of IEEE Std 802.1Q"; + } + organization + "IEEE 802.1 Working Group"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + description + "This module supports management of a Time-Sensitive Networking (TSN) + Centralized Network Configuration (CNC) component, its Configuration + Domains - each supporting one or more Centralized User Configuration (CUC) + components, and the Streams created by those CUCs. RPCs support + path computation and resource allocation across all or specified + Configuration Domains, CUCs, and Streams. + + Copyright (C) IEEE (2024). + + This version of this YANG module is part of IEEE Std 802.1Q; see + the standard itself for full legal notices."; + revision 2024-01-31 { + description + "Published as part of IEEE Std 802.1Qdj-2024. + + The following reference statement identifies each referenced IEEE + Standard as updated by applicable amendments."; + reference + "IEEE Std 802.1Q Bridges and Bridged Networks: + IEEE Std 802.1Q-2022, IEEE Std 802.1Qcz-2023, IEEE Std 802.1Qcw-2023, + IEEE Std 802.1Qcj-2023, IEEE Std 802.1Qdj-2024."; + } + container cnc-config { + description + "Top-level container for the CNC module."; + list domain { + key "domain-id"; + description + "A list of Configuration Domains, each supporting one or more CUCs. + Access to Streams and resources associated with particular Configuration + Domains can be restricted."; + leaf domain-id { + type string; + description + "The DomainID uniquely identifies a Configuration Domain."; + reference + "46.2.2.1 of IEEE Std 802.1Q"; + } + leaf cnc-enabled { + type boolean; + default "false"; + description + "cnc-enabled is used to enable or disable CNC functionality. If TRUE, + the CNC functionality is enabled. If FALSE, the CNC functionality is + disabled."; + reference + "46.2.2.3 of IEEE Std 802.1Q"; + } + list cuc { + key "cuc-id"; + description + "A list of CUCs in the Configuration Domain, each with its associated + Streams. Access to Streams and resources associated with particular + CUCs can be restricted."; + leaf cuc-id { + type string; + description + "The CucID uniquely identifies the CUC."; + reference + "46.2.2.2 of IEEE Std 802.1Q"; + } + list stream { + key "stream-id"; + description + "A list of Streams created by the CUC, with their status and + configuration (talker and listener parameters) in the CNC."; + leaf stream-id { + type tsn:stream-id-type; + description + "The StreamID uniquely identifies a Stream."; + } + leaf stream-status { + type enumeration { + enum planned { + value 0; + description + "The Stream has been requested but has not yet been + configured by the CNC."; + } + enum configured { + value 1; + description + "The Stream has been computed and configured by the + CNC."; + } + enum modified { + value 2; + description + "The Stream has been configured but Stream parameters + have been modified after configuration."; + } + } + config false; + description + "The stream-status is the status of the Stream in the CNC."; + reference + "46.2.3.8 of IEEE Std 802.1Q"; + } + container talker { + description + "The Talker container for the Stream comprises the following: + - The Talker’s behavior (how/when frames are transmitted). + - The Talker’s network requirements. + - The Talker's interface(s) TSN capabilities."; + uses tsn:group-talker; + uses tsn:group-status-talker-listener { + refine "accumulated-latency" { + config false; + } + refine "interface-configuration" { + config false; + } + } + } + list listener { + key "index"; + description + "A list of parameters for each of the Stream's Listeners, + each list entry comprising: + - The Listener's interface(s). + - The Listener’s network requirements. + - The Listener’s interface(s) TSN capabilities."; + leaf index { + type uint32; + description + "This index is provided in order to provide a unique key + per list entry."; + } + uses tsn:group-listener; + uses tsn:group-status-talker-listener { + refine "accumulated-latency" { + config false; + } + refine "interface-configuration" { + config false; + } + } + } + uses tsn:group-status-stream { + refine "status-info" { + config false; + } + refine "failed-interfaces" { + config false; + } + } + } + action remove_streams { + description + "Removes the selected Streams."; + reference + "46.2.8.1 of IEEE Std 802.1Q"; + input { + list stream-list { + key "stream-id"; + description + "List of stream-ids for the Streams to be removed."; + leaf stream-id { + type tsn:stream-id-type; + description + "The stream-id uniquely identifies a Stream."; + } + } + } + output { + leaf result { + type string; + description + "Returns status information indicating if Stream removal + has been successfully started."; + } + } + } + } + } + } + + // RPCs + rpc compute_streams { + description + "Starts computation of path and resource allocation for one or more + Streams, each identified by its domain-id, cuc-id, and stream-id. + This RPC can compute paths and resource allocations for both new and + modified Streams."; + input { + list domain { + key "domain-id"; + description + "A list of Configuration Domains containing the Streams for which + paths and resource allocations are to be computed."; + reference + "46.2.7.1 of IEEE Std 802.1Q"; + leaf domain-id { + type leafref { + path '/cnc-config/domain/domain-id'; + } + description + "The referenced DomainID uniquely identifies a Configuration + Domain."; + } + list cuc { + key "cuc-id"; + description + "A list of CUCs in the Configuration Domain, each with Streams whose + paths and resource allocations are to be computed. "; + leaf cuc-id { + type leafref { + path '/cnc-config/domain/cuc/cuc-id'; + } + description + "The referenced CucID uniquely identifies a CUC."; + } + list stream-list { + key "stream-id"; + description + "A list of Streams, created by the CUC, whose paths and resource + allocations are to be computed."; + leaf stream-id { + type leafref { + path '/cnc-config/domain/cuc/stream/stream-id'; + } + description + "The referenced StreamID uniquely identifies a Stream."; + } + } + } + } + } + output { + leaf result { + type string; + description + "Only returns status information indicating if the computation + has been started. It does not return status information on the + success or failure of the actual Stream computation. A + notification can be used to inform the caller of this RPC on the + results of Stream computation after the computation has + finished."; + } + } + } + rpc compute_planned_and_modified_streams { + description + "Starts computation of path and resource allocation for all Streams + that are in specified CUCs in specified domains, and that have not been + computed (i.e., that have a Stream status of planned or modified)."; + reference + "46.2.7.2 of IEEE Std 802.1Q"; + input { + list domain { + key "domain-id"; + description + "A list of Configuration Domains containing the CUCs with Streams + whose paths and resource allocations are to be computed."; + leaf domain-id { + type string; + description + "A unique identifier of a Configuration Domain. It is used to + identify the Configuration Domain a CUC belongs to."; + } + list cuc { + key "cuc-id"; + description + "A list of CUCs, in the Configuration Domain, that have Streams + whose paths and resource allocations are to be computed."; + leaf cuc-id { + type string; + description + "The CucID uniquely identifies the CUC."; + } + } + } + } + output { + leaf result { + type string; + description + "Only returns status information indicating if the computation + has been started. It does not return status information on the + success or failure of the actual Stream computation. A + notification can be used to inform the caller of this RPC of the + results of Stream computation after the computation has + finished."; + } + } + } + rpc compute_all_streams { + description + "Starts computation of path and resource allocation for all Streams + that are in specified CUCs in specified domains."; + reference + "46.2.7.3 of IEEE Std 802.1Q"; + input { + list domain { + key "domain-id"; + description + "A list of Configuration Domains containing the CUCs with Streams + whose paths and resource allocations are to be computed"; + leaf domain-id { + type string; + description + "The DomainID uniquely identifies a Configuration Domain."; + } + list cuc { + key "cuc-id"; + description + "A list of CUCs in the Configuration Domain, each with Streams whose + paths and resource allocations are to be computed."; + leaf cuc-id { + type string; + description + "The CucID uniquely identifies the CUC."; + } + } + } + } + output { + leaf result { + type string; + description + "Only returns status information indicating if the computation + has been started. It does not return status information on the + success or failure of the actual Stream computation. A + notification can be used to inform the caller of this RPC of the + results of Stream computation after the computation has + finished."; + } + } + } + rpc request_domain_id { + description + "Returns the DomainID of the Configuration Domain to which a specified + CUC belongs."; + reference + "46.2.7.4 of IEEE Std 802.1Q"; + input { + leaf cuc-id { + type string; + description + "The CucID uniquely identifies the CUC."; + } + } + output { + leaf result { + type string; + description + "Returns the DomainID of the Configuration Domain for the + specified CUC."; + } + } + } + rpc request_free_stream_id { + description + "Returns a free (i.e., available) StreamID for use by a specified + CUC in a specified Configuration Domain."; + reference + "46.2.7.5 of IEEE Std 802.1Q"; + input { + leaf domain-id { + type string; + description + "The DomainID uniquely identifies the Configuration Domain."; + } + leaf cuc-id { + type string; + description + "The CucID uniquely identifies the CUC."; + } + } + output { + leaf result { + type string; + description + "Returns a free (i.e., available) StreamID for use by the + specified CUC in the specified Configuration Domain."; + } + } + } + + // Notifications + notification compute_streams_completed { + description + "Notifies the caller of an RPC or action that initiated computation for + one or more Streams, that the computation is complete. Returns information + on the success or failure of computation for each of those Streams."; + reference + "46.2.9.1 of IEEE Std 802.1Q"; + list domain { + key "domain-id"; + description + "The list of Configuration Domains for which computation was requested, + with each list entry specifying the CUCs, and the Streams for each of + those CUCs for which computation was requested, with the result of the + computation (success or failure) for each Stream."; + leaf domain-id { + type string; + description + "The DomainID uniquely identifies a Configuration Domain."; + } + list cuc { + key "cuc-id"; + description + "The list of CUCs for the specified Configuration Domain, with each + list entry specifying the Streams for which computation was requested + and the result of the computation for each Stream."; + leaf cuc-id { + type string; + description + "The CucID uniquely identifies the CUC."; + } + list stream { + key "stream-id"; + description + "The list of Streams, for which computation was requested, for the + specified Configuration Domain and CUC, with the result of the + computation (success or failure) for each Stream."; + reference + "46.2.3 of IEEE Std 802.1Q"; + leaf stream-id { + type tsn:stream-id-type; + description + "The StreamID uniquely identifies a Stream."; + } + leaf failure-code { + type uint8; + description + "A code that indicates if the computation for the Stream + was successful (0) or not. In the case of a failure a code + is returned to indicate what kind of failure occurred."; + } + } + } + } + } + notification configure_streams_completed { + description + "Notifies the caller of an RPC or action that initiated computation for + one or more Streams, that computation and configuration is complete. + Returns information on the success or failure information of computation + and configuration for each of those Streams."; + reference + "46.2.9.2 of IEEE Std 802.1Q"; + list domain { + key "domain-id"; + description + "The list of Configuration Domains for which computation was requested, + with each list entry specifying the CUCs, and the Streams for each of + those CUCs for which computation was requested, with the result of the + computation (success or failure) for each Stream."; + leaf domain-id { + type string; + description + "The DomainID uniquely identifies a Configuration Domain."; + } + list cuc { + key "cuc-id"; + description + "The list of CUCs for the specified Configuration Domain, with each + list entry specifying the Streams for which computation was requested + and the result of the computation for each Stream."; + leaf cuc-id { + type string; + description + "The CucID uniquely identifies the CUC."; + } + list stream { + key "stream-id"; + description + "The list of Streams, for which computation was requested, for the + specified Configuration Domain and CUC, with the result of the + computation (success or failure) for each Stream."; + reference + "46.2.3 of IEEE Std 802.1Q"; + leaf stream-id { + type tsn:stream-id-type; + description + "The StreamID uniquely identifies a Stream."; + } + leaf failure-code { + type uint8; + description + "A code that indicates if the computation and configuration + for the Stream was successful (0) or not. In the case of a + failure a code is returned to indicate what kind of failure + occurred."; + } + } + } + } + } + notification remove_streams_completed { + description + "Notifies the caller of an RPC or action that initiated computation for + one or more Streams, that the removal is complete. Returns information + on the success or failure of removal for each of those Streams."; + reference + "46.2.9.3 of IEEE Std 802.1Q"; + list domain { + key "domain-id"; + description + "A list of Configuration Domains with each list entry specifying the + CUCs, and the Streams for each of those CUCs for which removal was + requested, with the result of the removal attempt (success or failure) + for each Stream."; + leaf domain-id { + type string; + description + "The DomainID uniquely identifies a Configuration Domain."; + } + list cuc { + key "cuc-id"; + description + "The list of CUCs for the specified Configuration Domain, with each + list entry specifying the Streams for which removal was requested + and the result of the removal attempt for each Stream."; + leaf cuc-id { + type string; + description + "The CucID uniquely identifies the CUC."; + } + list stream { + key "stream-id"; + description + "The list of Streams, for which removal was requested, for the + specified Configuration Domain and CUC, with the result of the + removal (success or failure) for each Stream."; + reference + "46.2.3 of IEEE Std 802.1Q"; + leaf stream-id { + type tsn:stream-id-type; + description + "The StreamID uniquely identifies a Stream."; + } + leaf failure-code { + type uint8; + description + "A code that indicates if the removal of the Stream was + successful (0) or unsuccessful (1)."; + } + } + } + } + } +} diff --git a/standard/ieee/draft/802.1/Qdj/ieee802-dot1q-tsn-config-uni.yang b/standard/ieee/draft/802.1/Qdj/ieee802-dot1q-tsn-config-uni.yang deleted file mode 100644 index 20083aef3..000000000 --- a/standard/ieee/draft/802.1/Qdj/ieee802-dot1q-tsn-config-uni.yang +++ /dev/null @@ -1,648 +0,0 @@ -module ieee802-dot1q-tsn-config-uni { - yang-version "1.1"; - namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-tsn-config-uni; - prefix dot1q-tsn-config-uni; - import ieee802-dot1q-tsn-types { - prefix tsn; - reference - "48.6.3 of IEEE Std 802.1Q"; - } - organization - "Institute of Electrical and Electronics Engineers"; - contact - "WG-URL: http://ieee802.org/1/ - WG-EMail: stds-802-1-l@ieee.org - - Contact: IEEE 802.1 Working Group Chair - Postal: C/O IEEE 802.1 Working Group - IEEE Standards Association - 445 Hoes Lane - Piscataway, NJ 08854 - USA - - E-mail: stds-802-1-chairs@ieee.org"; - description - "Time-Sensitive Networking (TSN) User/Network Interface (UNI) for the - exchange of information between CUC and CNC that are required to - configure TSN Streams in a TSN network. - - Copyright (C) IEEE (2023). - - This version of this YANG module is part of IEEE Std 802.1Qdj; see - the standard itself for full legal notices."; - revision 2023-07-31 { - description - "Published as part of IEEE Std 802.1Qdj. Initial version."; - reference - "IEEE Std 802.1Q: IEEE Std 802.1Q-2022 Bridges and Bridged - Networks., IEEE Std 802.1Qdj Configuration Enhancements for - Time-Sensitive Networking"; - } - container tsn-uni { - description - "Top-level container for the TSN UNI module."; - list domain { - key "domain-id"; - description - "List of Configuration Domains. - - This list exists so CUCs can be associated with the Configuration - Domain they are located in and can be used to restrict access to - CUCs, e.g., by using standard mechanism as described in RFC 8341."; - leaf domain-id { - type string; - description - "The Domain ID is a unique identifier of a Configuration - Domain. It is used to identify the Configuration Domain a CUC - belongs to."; - reference - "46.2.2.1 of IEEE Std 802.1Qdj"; - } - leaf cnc-enabled { - type boolean; - default "false"; - description - "cnc-enabled is used to enable or disable the CNC functionality - of a station capable of acting as a CNC. If this object is set - to TRUE the CNC functionality is enabled. If it is set to FALSE - the CNC functionality is disabled."; - reference - "46.2.2.3 of IEEE Std 802.1Qdj"; - } - list cuc { - key "cuc-id"; - description - "List of CUCs. - - This list exists so Streams can be associated with the CUC that - initially requested them and can be used to restrict access to - Streams, e.g., by using standard mechanisms as described in RFC - 8341."; - leaf cuc-id { - type string; - description - "The CUC ID is a unique identifier of a CUC. It is used to - identify the CUC that a Stream belongs to, i.e., that - requested the creation of a Stream."; - reference - "46.2.2.2 of IEEE Std 802.1Qdj"; - } - list stream { - key "stream-id"; - description - "List of Streams. - - Each Stream consists of a Stream ID, a request container, and - a configuration container. - - In the fully centralized model of TSN configuration, the - Stream ID and request originate from the CUC and is delivered - to the CNC, while the configuration originates from the CNC - and is delivered to the CUC."; - leaf stream-id { - type tsn:stream-id-type; - description - "The Stream ID is a unique identifier of a Stream request - and corresponding configuration. It is used to associate a - CUC’s Stream request with a CNC’s corresponding response."; - } - leaf stream-status { - type enumeration { - enum planned { - value 0; - description - "The Stream has been requested but has not yet been - configured by the CNC."; - } - enum configured { - value 1; - description - "The Stream has been computed and configured by the - CNC."; - } - enum modified { - value 2; - description - "The Stream has been configured but Stream parameters - have been modified after configuration."; - } - } - config false; - description - "The stream-status indicates what status the Stream has in - the CNC."; - reference - "46.2.3.8 of IEEE Std 802.1Qdj"; - } - container talker { - description - "The Talker container contains: - Talker’s behavior for - Stream (how/when transmitted) - Talker’s requirements from - the network - TSN capabilities of the Talker’s - interface(s)."; - uses tsn:group-talker; - uses tsn:group-status-talker-listener { - refine "accumulated-latency" { - config false; - } - refine "interface-configuration" { - config false; - } - } - } - list listener { - key "index"; - description - "Each Listener list entry contains: - Listener’s - requirements from the network - TSN capabilities of the - Listener’s interface(s)."; - leaf index { - type uint32; - description - "This index is provided in order to provide a unique key - per list entry."; - } - uses tsn:group-listener; - uses tsn:group-status-talker-listener { - refine "accumulated-latency" { - config false; - } - refine "interface-configuration" { - config false; - } - } - } - uses tsn:group-status-stream { - refine "status-info" { - config false; - } - refine "failed-interfaces" { - config false; - } - } - } - action remove_streams { - description - "Removes the Streams with the ids provided in the stream-id - list."; - reference - "46.2.8.1 of IEEE Std 802.1Qdj"; - input { - list stream-list { - key "stream-id"; - description - "List of stream-ids that are used to identify the Streams - that are requested to be removed."; - leaf stream-id { - type tsn:stream-id-type; - description - "Unique identifier that is used to request a Stream - that is to be removed from the configuration."; - } - } - } - output { - leaf result { - type string; - description - "Returns status information indicating if Stream removal - has been successfully started."; - } - } - } - } - } - } - - // RPCs - rpc compute_streams { - description - "Starts computation of path and resource allocation for one or more - Stream. The Streams that are included in the computation are the - ones that have their domain-id, cuc-id, and stream-id provided. - This RPC can be applied to compute new Streams as well as recompute - Streams that have been modified."; - input { - list domain { - key "domain-id"; - description - "List of Configuration Domains. - - This list exists so CUCs can be associated with the - Configuration Domain they are located in."; - reference - "46.2.7.1 of IEEE Std 802.1Qdj"; - leaf domain-id { - type leafref { - path '/tsn-uni/domain/domain-id'; - } - description - "A unique identifier of a Configuration Domain. It is used to - identify the Configuration Domain a CUC belongs to."; - } - list cuc { - key "cuc-id"; - description - "List of CUCs. - - This list exists so Streams can be associated with the CUC - that initially requested them."; - leaf cuc-id { - type leafref { - path '/tsn-uni/domain/cuc/cuc-id'; - } - description - "A unique identifier of a CNC. It is used to identify the - CUC that a Streams belong to, i.e., that requested the - creation of a Stream."; - } - list stream-list { - key "stream-id"; - description - "List of stream-ids that are used to identify the Streams - that are requested to be computed and configured."; - leaf stream-id { - type leafref { - path '/tsn-uni/domain/cuc/stream/stream-id'; - } - description - "Unique identifier that is used to request a Stream that - is to be computed and configured."; - } - } - } - } - } - output { - leaf result { - type string; - description - "Only returns status information indicating if the computation - has been started. It does not return status information on the - success or failure of the actual Stream computation. A - notifcation can be used to inform the caller of this RPC on the - results of Stream computation after the computation has - finished."; - } - } - } - rpc compute_planned_and_modified_streams { - description - "Starts computation of path and resource allocation for all Streams - that are in the domain provided by domain-id and are associated - with the CUC provided by cuc-id, and that have not been computed - (i.e., that have a Stream status of planned or modified."; - reference - "46.2.7.2 of IEEE Std 802.1Qdj"; - input { - list domain { - key "domain-id"; - description - "List of Configuration Domains. - - This list exists so CUCs can be associated with the - Configuration Domain they are located in."; - leaf domain-id { - type string; - description - "A unique identifier of a Configuration Domain. It is used to - identify the Configuration Domain a CUC belongs to."; - } - list cuc { - key "cuc-id"; - description - "List of CUCs. - - This list exists so Streams can be associated with the CUC - that initially requested them."; - leaf cuc-id { - type string; - description - "A unique identifier of a CNC. It is used to identify the - CUC that a Streams belong to, i.e., that requested the - creation of a Stream."; - } - } - } - } - output { - leaf result { - type string; - description - "Only returns status information indicating if the computation - has been started. It does not return status information on the - success or failure of the actual Stream computation. A - notifcation can be used to inform the caller of this RPC on the - results of Stream computation after the computation has - finished."; - } - } - } - rpc compute_all_streams { - description - "Starts computation of path and resource allocation for all Streams - that are in the domain provided by domain-id and are associated - with the CUC provided by cuc-id."; - reference - "46.2.7.3 of IEEE Std 802.1Qdj"; - input { - list domain { - key "domain-id"; - description - "List of Configuration Domains. - - This list exists so CUCs can be associated with the - Configuration Domain they are located in."; - leaf domain-id { - type string; - description - "A unique identifier of a Configuration Domain. It is used to - identify the Configuration Domain a CUC belongs to."; - } - list cuc { - key "cuc-id"; - description - "List of CUCs. - - This list exists so Streams can be associated with the CUC - that initially requested them."; - leaf cuc-id { - type string; - description - "A unique identifier of a CNC. It is used to identify the - CUC that a Streams belong to, i.e., that requested the - creation of a Stream."; - } - } - } - } - output { - leaf result { - type string; - description - "Only returns status information indicating if the computation - has been started. It does not return status information on the - success or failure of the actual Stream computation. A - notifcation can be used to inform the caller of this RPC on the - results of Stream computation after the computation has - finished."; - } - } - } - rpc request_domain_id { - description - "Returns the DomainId of the Configuration Domain that the - requesting CUC belongs to."; - reference - "46.2.7.4 of IEEE Std 802.1Qdj"; - input { - leaf cuc-id { - type string; - description - "A unique identifier of a CNC. It is used to identify the CUC, - allowing the CNC to return the DomainId this CUC belongs to."; - } - } - output { - leaf result { - type string; - description - "Returns the DomainId of the Configuration Domain that the - requesting CUC belongs to."; - } - } - } - rpc request_free_stream_id { - description - "Returns a free StreamId available for the Configuration Domain - identified by the DomainId."; - reference - "46.2.7.5 of IEEE Std 802.1Qdj"; - input { - leaf domain-id { - type string; - description - "A unique identifier of a Configuration Domain. It is used to - identify the Configuration Domain a CUC belongs to."; - } - leaf cuc-id { - type string; - description - "A unique identifier of a CNC. It is used to identify the CUC, - allowing the CNC to return the DomainId this CUC belongs to."; - } - } - output { - leaf result { - type string; - description - "Returns a free StreamId available for the Configuration Domain - identified by the DomainId."; - } - } - } - - // Notifications - notification compute_streams_completed { - description - "Notifies the caller of an RPC or action that initiated the - computation of one or multiple Streams, that the computation is - complete. It also returns information on the success or failure for - each of the Streams in the computation."; - reference - "46.2.9.1 of IEEE Std 802.1Qdj"; - list domain { - key "domain-id"; - description - "List of Configuration Domains. - - This list exists so CUCs can be associated with the Configuration - Domain they are located in."; - leaf domain-id { - type string; - description - "A unique identifier of a Configuration Domain. It is used to - identify the Configuration Domain a CUC belongs to."; - } - list cuc { - key "cuc-id"; - description - "List of CUCs. - - This list exists so Streams can be associated with the CUC that - initially requested them."; - leaf cuc-id { - type string; - description - "A unique identifier of a CNC. It is used to identify the CUC - that a Stream belongs to, i.e., that requested the creation - of a Stream."; - } - list stream { - key "stream-id"; - description - "List of Streams. - - Each Stream consists of a Stream ID, a request container, and - a configuration container. - - In the fully centralized model of TSN configuration, the - Stream ID and request originate from the CUC and is delivered - to the CNC, while the configuration originates from the CNC - and is delivered to the CUC."; - reference - "46.2.3 of IEEE Std 802.1Qdj"; - leaf stream-id { - type tsn:stream-id-type; - description - "The Stream ID is a unique identifier of a Stream request - and corresponding configuration. It is used to associate a - CUC’s Stream request with a CNC’s corresponding response."; - } - leaf failure-code { - type uint8; - description - "A code that indicates if the computation for the Stream - was successful (0) or not. In the case of a failure a code - is returned to indicate what kind of failure occurred."; - } - } - } - } - } - notification configure_streams_completed { - description - "Notifies the caller of an RPC or action that initiated the - computation of one or multiple Streams, that the computation and - configuration is complete. It also returns information on the - success or failure for each of the Streams in the computation and - configuration."; - reference - "46.2.9.2 of IEEE Std 802.1Qdj"; - list domain { - key "domain-id"; - description - "List of Configuration Domains. - - This list exists so CUCs can be associated with the Configuration - Domain they are located in."; - leaf domain-id { - type string; - description - "A unique identifier of a Configuration Domain. It is used to - identify the Configuration Domain a CUC belongs to."; - } - list cuc { - key "cuc-id"; - description - "List of CUCs. - - This list exists so Streams can be associated with the CUC that - initially requested them."; - leaf cuc-id { - type string; - description - "A unique identifier of a CNC. It is used to identify the CUC - that a Streams belong to, i.e., that requested the creation - of a Stream."; - } - list stream { - key "stream-id"; - description - "List of Streams. - - Each Stream consists of a Stream ID, a request container, and - a configuration container. - - In the fully centralized model of TSN configuration, the - Stream ID and request originate from the CUC and is delivered - to the CNC, while the configuration originates from the CNC - and is delivered to the CUC."; - reference - "46.2.3 of IEEE Std 802.1Qdj"; - leaf stream-id { - type tsn:stream-id-type; - description - "The Stream ID is a unique identifier of a Stream request - and corresponding configuration. It is used to associate a - CUC’s Stream request with a CNC’s corresponding response."; - } - leaf failure-code { - type uint8; - description - "A code that indicates if the computation and configuration - for the Stream was successful (0) or not. In the case of a - failure a code is returned to indicate what kind of failure - occurred."; - } - } - } - } - } - notification remove_streams_completed { - description - "Notifies the caller of an RPC or action that initiated the removal - of one or multiple Streams, that the removal is complete. It also - returns information on the success or failure for each of the - Streams in the removal request."; - reference - "46.2.9.3 of IEEE Std 802.1Qdj"; - list domain { - key "domain-id"; - description - "List of Configuration Domains. - - This list exists so CUCs can be associated with the Configuration - Domain they are located in."; - leaf domain-id { - type string; - description - "A unique identifier of a Configuration Domain. It is used to - identify the Configuration Domain a CUC belongs to."; - } - list cuc { - key "cuc-id"; - description - "List of CUCs. - - This list exists so Streams can be associated with the CUC that - initially requested them."; - leaf cuc-id { - type string; - description - "A unique identifier of a CNC. It is used to identify the CUC - that a Streams belong to, i.e., that requested the creation - of a Stream."; - } - list stream { - key "stream-id"; - description - "List of Streams. - - Each Stream consists of a Stream ID, a request container, and - a configuration container. - - In the fully centralized model of TSN configuration, the - Stream ID and request originate from the CUC and is delivered - to the CNC, while the configuration originates from the CNC - and is delivered to the CUC."; - reference - "46.2.3 of IEEE Std 802.1Qdj"; - leaf stream-id { - type tsn:stream-id-type; - description - "The Stream ID is a unique identifier of a Stream request - and corresponding configuration. It is used to associate a - CUC’s Stream request with a CNC’s corresponding response."; - } - leaf failure-code { - type uint8; - description - "A code that indicates if the removal of the Stream was - successful (0) or unsuccessful (1)."; - } - } - } - } - } -} diff --git a/standard/ieee/draft/802.1/Qdx/ieee802-dot1q-cbsa-bridge.yang b/standard/ieee/draft/802.1/Qdx/ieee802-dot1q-cbsa-bridge.yang index e20e08e89..645a24dd7 100755 --- a/standard/ieee/draft/802.1/Qdx/ieee802-dot1q-cbsa-bridge.yang +++ b/standard/ieee/draft/802.1/Qdx/ieee802-dot1q-cbsa-bridge.yang @@ -16,48 +16,49 @@ module ieee802-dot1q-cbsa-bridge { "IEEE 802.1 Working Group"; contact "WG-URL: http://www.ieee802.org/1/ - WG-EMail: stds-802-1-L@ieee.org + WG-EMail: stds-802-1-L@ieee.org Contact: IEEE 802.1 Working Group Chair Postal: C/O IEEE 802.1 Working Group - IEEE Standards Association - 445 Hoes Lane - Piscataway - NJ 08854 - USA + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA - E-mail: STDS-802-1-L@IEEE.ORG"; + E-mail: stds-802-1-chairs@ieee.org"; description - "This module provides for management of IEEE Std 802.1Q bridges - that support the credit-based shaper algorithm. + "This module provides for management of IEEE Std 802.1Q Bridges + that support the credit-based shaper algorithm. - Copyright (C) IEEE (2023). + Copyright (C) IEEE (2024). - This version of this YANG module is part of IEEE Std 802.1Q; see the - standard itself for full legal notices."; + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; - revision 2023-11-20 { + revision 2024-01-11 { description "Published as part of IEEE Std 802.1Qdx-2024. - The following reference statement identifies each referenced IEEE - Standard as updated by applicable amendments."; + + The following reference statement identifies each referenced IEEE + Standard as updated by applicable amendments."; reference "IEEE Std 802.1Q Bridges and Bridged Networks: - IEEE Std 802.1Q-2022, IEEE Std 802.1Qcz-2023, IEEE Std 802.1Qcw-2023, - IEEE Std 802.1Qcj-2023, IEEE Std 802.1Qdx-2024."; + IEEE Std 802.1Q-2022, IEEE Std 802.1Qcz-2023, IEEE Std 802.1Qcw-2023, + IEEE Std 802.1Qcj-2023, IEEE Std 802.1Qdx-2024."; } feature credit-based-shaper-algorithm { description "Credit-based shaper algorithm supported."; reference - "8.6.8.2 of IEEE Std 802.1Q-2022"; + "8.6.8.2 of IEEE Std 802.1Q."; } augment "/if:interfaces/if:interface/dot1q:bridge-port" { if-feature "credit-based-shaper-algorithm"; description - "Augment bridge-port with credit-based shaper algorithm configuration."; + "Augment dot1q:bridge-port with credit-based shaper algorithm + configuration."; uses cbsa:cbsa-config; } -} +} \ No newline at end of file diff --git a/standard/ieee/draft/802.1/Qdx/ieee802-dot1q-cbsa.yang b/standard/ieee/draft/802.1/Qdx/ieee802-dot1q-cbsa.yang index 02fa0fc1c..a91ac57a0 100755 --- a/standard/ieee/draft/802.1/Qdx/ieee802-dot1q-cbsa.yang +++ b/standard/ieee/draft/802.1/Qdx/ieee802-dot1q-cbsa.yang @@ -10,77 +10,81 @@ module ieee802-dot1q-cbsa { "IEEE 802.1 Working Group"; contact "WG-URL: http://www.ieee802.org/1/ - WG-EMail: stds-802-1-L@ieee.org + WG-EMail: stds-802-1-L@ieee.org Contact: IEEE 802.1 Working Group Chair Postal: C/O IEEE 802.1 Working Group - IEEE Standards Association - 445 Hoes Lane - Piscataway - NJ 08854 - USA + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA - E-mail: STDS-802-1-L@IEEE.ORG"; + E-mail: stds-802-1-chairs@ieee.org"; description - "This module provides for management of IEEE Std 802.1Q bridges - that support the credit-based shaper algorithm. + "This module provides for management of IEEE Std 802.1Q components + that support the credit-based shaper algorithm. - Copyright (C) IEEE (2023) + Copyright (C) IEEE (2024) - This version of this YANG module is part of IEEE Std 802.1Q; see the - standard itself for full legal notices."; + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; - revision 2023-11-20 { + revision 2024-01-11 { description "Published as part of IEEE Std 802.1Qdx-2024. - The following reference statement identifies each referenced IEEE - Standard as updated by applicable amendments."; + + The following reference statement identifies each referenced IEEE + Standard as updated by applicable amendments."; reference "IEEE Std 802.1Q Bridges and Bridged Networks: - IEEE Std 802.1Q-2022, IEEE Std 802.1Qcz-2023, IEEE Std 802.1Qcw-2023, - IEEE Std 802.1Qcj-2023, IEEE Std 802.1Qdx-2024."; + IEEE Std 802.1Q-2022, IEEE Std 802.1Qcz-2023, IEEE Std 802.1Qcw-2023, + IEEE Std 802.1Qcj-2023, IEEE Std 802.1Qdx-2024."; } grouping cbsa-config { description "cbsa-config comprises all the parameters associated - with credit-based shaper algorithm."; + with the credit-based shaper algorithm."; container cbsa-parameters { description - "This container comprises all credit-based shaper algorithm related nodes."; + "This container comprises all credit-based shaper algorithm related + nodes."; list cbsa-parameter-table { key "traffic-class"; description - "There is one cbsa parameter table per Port of a Bridge component. - Each table row contains a set of parameters for each traffic class - configured to use credit-based shaper algorithm (8.6.8.2), as detailed - in Table 12-4. This cbsa parameter table is valid for a Bridge port - only when used in the absence of SRP."; + "There is one cbsa-parameter-table list per Port. Each list entry + corresponds to the set of parameters (12.20.1)for each traffic class + configured for use with the credit-based shaper algorithm (8.6.8.2). + The cbsa-parameter-table list is valid for a Bridge Port only when + used in the absence of the stream reservation protocol."; reference - "12.20 of IEEE Std 802.1Q"; + "8.6.8.2, 34.3, 34.6, and 12.20.1 of IEEE Std 802.1Q."; leaf traffic-class { type dot1q-types:traffic-class-type; description - "An 802.1 traffic class value. This is the numerical - value associated with a traffic class in a Bridge. Larger - values are associated with higher priority traffic classes."; + "An 802.1 traffic class value. This is the numerical value + associated with a traffic class. Larger values are associated with + higher priority traffic classes."; reference - "8.6.8 of IEEE Std 802.1Q"; + "8.6.8 of IEEE Std 802.1Q."; } leaf admin-idle-slope { type uint64; units "bits/second"; default "0"; description - "The bandwidth, in bits per second, that has been requested by management to - be reserved for use by the queue associated with this traffic class. + "The bandwidth, in bits per second, that has been requested by + management to be reserved for use by the queue associated with + this traffic class. - If SRP is in operation for this traffic class, this parameter has no effect. + If the stream reservation protocol is in operation for this traffic + class, this parameter has no effect. - If SRP is not in operation for this traffic class, then the value of - oper-idle-slope is always equal to the value of admin-idle-slope"; + If the stream reservation protocol is not in operation for this + traffic class, then the value of oper-idle-slope is equal to the + value of admin-idle-slope."; reference - "34.3 of IEEE Std 802.1Q"; + "34.3 of IEEE Std 802.1Q."; } leaf oper-idle-slope { type uint64; @@ -88,12 +92,13 @@ module ieee802-dot1q-cbsa { default "0"; config false; description - "The actual bandwidth, in bits per second, that is currently reserved for use - by the queue associated with this traffic class (see 34.6.1 and 34.6.2)."; + "The actual bandwidth, in bits per second, that is currently + reserved for use by the queue associated with this traffic class + (see 34.6.1 and 34.6.2)."; reference - "34.3 of IEEE Std 802.1Q"; + "34.3, 34.6.1, and 34.6.2 of IEEE Std 802.1Q."; } } } } -} +} \ No newline at end of file diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-ats-bridge.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-ats-bridge.yang new file mode 100644 index 000000000..fdf8192e0 --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-ats-bridge.yang @@ -0,0 +1,89 @@ +module ieee802-dot1q-ats-bridge { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-ats-bridge; + prefix ats-bridge; + import ietf-interfaces { + prefix if; + } + import ieee802-dot1q-bridge { + prefix dot1q; + } + import ieee802-dot1q-ats { + prefix ats; + } + import ieee802-dot1q-stream-filters-gates { + prefix sfsg; + } + organization + "IEEE 802.1 Working Group"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + description + "This module provides management of IEEE 802.1Q Bridge components + that support Asynchronous Traffic Shaping (ATS). + + Copyright (C) IEEE (2023). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + revision 2023-07-03 { + description + "Published as part of IEEE Std 802.1Qcz-2023."; + reference + "IEEE Std 802.1Qcz-2023, Bridges and Bridged Networks - Congestion + Isolation."; + } + augment "/if:interfaces/if:interface/dot1q:bridge-port" { + description + "Augments Bridge Ports by ATS per-Port parameters."; + uses ats:ats-port-parameters; + } + augment "/dot1q:bridges/dot1q:bridge/dot1q:component" { + description + "Augments the Bridge component with ATS parameters."; + uses sfsg:sfsg-parameters { + augment "stream-filters/stream-filter-instance-table" { + description + "Augments the Bridge component stream filter for ATS + schedulers."; + uses ats:ats-parameters; + container scheduler { + description + "This container encapsulates ATS scheduler nodes."; + leaf scheduler-ref { + type leafref { + path + '..'+ + '/..'+ + '/schedulers'+ + '/scheduler-instance-table'+ + '/scheduler-instance-id'; + } + description + "A reference to the ATS scheduler associated with this + stream filter."; + } + leaf scheduler-enable { + type boolean; + default "false"; + description + "If TRUE, this stream filter has an associated ATS + scheduler referenced by scheduler-ref. If FALSE, no ATS + scheduler is associated with this stream filter + (scheduler-ref is ignored)."; + } + } + } + } + } +} diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-ats.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-ats.yang new file mode 100644 index 000000000..b68813786 --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-ats.yang @@ -0,0 +1,306 @@ +module ieee802-dot1q-ats { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-ats; + prefix ats; + import ietf-yang-types { + prefix yang; + } + import ieee802-dot1q-types { + prefix dot1qtypes; + } + import ieee802-dot1q-stream-filters-gates { + prefix sfsg; + } + organization + "IEEE 802.1 Working Group"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + description + "This module provides management of IEEE 802.1Q Bridge components + that support Asynchronous Traffic Shaping (ATS). + + References in this YANG module to IEEE Std 802.1Q are to IEEE Std + 802.1Q-2022 as amended by IEEE Std 802.1Qcz-2023. + + Copyright (C) IEEE (2023). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + revision 2023-07-03 { + description + "Published as part of IEEE Std 802.1Qcz-2023."; + reference + "IEEE Std 802.1Qcz-2023, Bridges and Bridged Networks - Congestion + Isolation."; + } + revision 2022-01-19 { + description + "Published as part of IEEE Std 802.1Q-2022."; + reference + "IEEE Std 802.1Q-2022, Bridges and Bridged Networks."; + } + revision 2020-11-06 { + description + "Published as part of IEEE Std 802.1Qcr-2020."; + reference + "IEEE Std 802.1Qcr-2020, Bridges and Bridged Networks - + Asynchronous Traffic Shaping."; + } + grouping ats-port-parameters { + description + "This container comprises all ATS per-Port parameters."; + leaf discarded-frames-count { + type yang:counter64; + config false; + description + "A counter of frames discarded by ATS scheduler instances + associated with the Bridge Port."; + reference + "12.31.7.2 of IEEE Std 802.1Q"; + } + } + grouping ats-parameters { + description + "System specific configuration for ATS includes: + a) ATS schedulers + b) ATS scheduler groups"; + container schedulers { + description + "This container comprises all nodes related to ATS schedulers."; + list scheduler-instance-table { + key "scheduler-instance-id"; + description + "Each list entry comprises a set of parameters that defines a + single ATS scheduler instance, as detailed in Table 12-38."; + reference + "12.31.5 of IEEE Std 802.1Q"; + leaf scheduler-instance-id { + type uint32; + mandatory true; + description + "A unique index identifying this ATS scheduler instance."; + reference + "12.31.5.1, 8.6.5.6 of IEEE Std 802.1Q"; + } + leaf committed-information-rate { + type uint64; + units "bits/second"; + mandatory true; + description + "The committed information rate parameter of this ATS + scheduler instance."; + reference + "12.31.5.3, 8.6.5.6 of IEEE Std 802.1Q"; + } + leaf committed-burst-size { + type uint32; + units "bits"; + mandatory true; + description + "The committed burst size parameter of this ATS scheduler + instance."; + reference + "12.31.5.2, 8.6.5.6 of IEEE Std 802.1Q"; + } + leaf scheduler-group-ref { + type leafref { + path + '..'+ + '/..'+ + '/..'+ + '/scheduler-groups'+ + '/scheduler-group-instance-table'+ + '/scheduler-group-instance-id'; + } + mandatory true; + description + "A reference to the scheduler group (12.31.5.4) associated + with this ATS scheduler instance. Multiple ATS scheduler + instances can be associated to one scheduler group, as + detailed in 8.6.5.6."; + reference + "12.31.5.4, 8.6.5.6 of IEEE Std 802.1Q"; + } + } + leaf max-scheduler-instances { + type uint32; + config false; + description + "The maximum number of ATS scheduler instances supported by + this Bridge component."; + reference + "12.31.1.5 of IEEE Std 802.1Q"; + } + } + container scheduler-groups { + description + "This container comprises all ATS scheduler group related nodes."; + list scheduler-group-instance-table { + key "scheduler-group-instance-id"; + description + "Each list entry comprises a set of parameters that defines a + single ATS scheduler group instance."; + reference + "12.31.6, 8.6.5.6 of IEEE Std 802.1Q"; + leaf scheduler-group-instance-id { + type uint32; + description + "A unique index identifying this ATS scheduler group + instance."; + reference + "12.31.6.1, 8.6.5.6 of IEEE Std 802.1Q"; + } + leaf max-residence-time { + type uint32; + units "nanoseconds"; + mandatory true; + description + "The maximum residence time parameter of the ATS scheduler + group."; + reference + "12.31.6.2, 8.6.5.6 of IEEE Std 802.1Q"; + } + } + leaf max-scheduler-group-instances { + type uint32; + config false; + description + "The maximum number of ATS scheduler group instances supported + by this Bridge component."; + reference + "12.31.1.6, 8.6.5.6 of IEEE Std 802.1Q"; + } + container scheduler-timing-characteristics { + description + "This container comprises all ATS scheduler timing + characteristics related nodes."; + list scheduler-timing-characteristics-table { + key "reception-port transmission-port"; + config false; + description + "Each list entry comprises the timing characteristics of a + reception Port transmission Port pair, as detailed in Table + 12-41."; + reference + "12.31.8, 8.6.11 of IEEE Std 802.1Q"; + leaf reception-port { + type dot1qtypes:port-number-type; + config false; + mandatory true; + description + "A reference to the associated reception Port."; + reference + "12.31.8.1 of IEEE Std 802.1Q"; + } + leaf transmission-port { + type dot1qtypes:port-number-type; + config false; + mandatory true; + description + "A reference to the associated transmission Port."; + reference + "12.31.8.2 of IEEE Std 802.1Q"; + } + leaf clock-offset-variation-max { + type uint32; + units "nanoseconds"; + config false; + mandatory true; + description + "The maximum clock offset variation associated with the + reception Port transmission Port pair."; + reference + "12.31.8.3 of IEEE Std 802.1Q"; + } + leaf clock-rate-deviation-max { + type uint32; + units "ppm"; + config false; + mandatory true; + description + "The maximum clock rate deviation associated with the + reception Port transmission Port pair."; + reference + "12.31.8.4 of IEEE Std 802.1Q"; + } + leaf arrival-recognition-delay-max { + type uint32; + units "nanoseconds"; + config false; + mandatory true; + description + "The maximum arrival time recognition delay associated with + the reception Port transmission Port pair."; + reference + "12.31.8.5 of IEEE Std 802.1Q"; + } + leaf processing-delay-min { + type uint32; + units "nanoseconds"; + config false; + mandatory true; + description + "The minimum processing delay associated with the reception + Port transmission Port pair."; + reference + "12.31.8.6 of IEEE Std 802.1Q"; + } + leaf processing-delay-max { + type uint32; + units "nanoseconds"; + config false; + mandatory true; + description + "The maximum processing delay associated with the reception + Port transmission Port pair."; + reference + "12.31.8.7 of IEEE Std 802.1Q"; + } + } + } + } + } + uses sfsg:sfsg-parameters { + augment "stream-filters/stream-filter-instance-table" { + description + "Augments the system stream filter for ATS schedulers."; + uses ats:ats-parameters; + container scheduler { + description + "This container encapsulates ATS scheduler nodes."; + leaf scheduler-ref { + type leafref { + path + '..'+ + '/..'+ + '/schedulers'+ + '/scheduler-instance-table'+ + '/scheduler-instance-id'; + } + description + "A reference to the ATS scheduler associated with this stream + filter."; + } + leaf scheduler-enable { + type boolean; + default "false"; + description + "If TRUE, this stream filter has an associated ATS scheduler + referenced by scheduler-ref. If FALSE, no ATS scheduler is + associated with this stream filter (scheduler-ref is + ignored)."; + } + } + } + } +} diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-bridge.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-bridge.yang new file mode 100644 index 000000000..d97926766 --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-bridge.yang @@ -0,0 +1,1798 @@ +module ieee802-dot1q-bridge { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge; + prefix dot1q; + import ieee802-types { + prefix ieee; + } + import ietf-yang-types { + prefix yang; + } + import ietf-interfaces { + prefix if; + } + import iana-if-type { + prefix ianaif; + } + import ieee802-dot1q-types { + prefix dot1qtypes; + } + organization + "IEEE 802.1 Working Group"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + description + "This YANG module describes the Bridge configuration model for the + following IEEE 802.1Q Bridges: + 1) Two Port MAC Relays + 2) Customer VLAN Bridges + 3) Provider Bridges. + + Copyright (C) IEEE (2023). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + revision 2023-10-26 { + description + "Published as part of IEEE Std 802.1Qcw-2023. + + The following reference statement identifies each referenced IEEE + Standard as updated by applicable amendments."; + reference + "IEEE Std 802.1Q Bridges and Bridged Networks: + IEEE Std 802.1Q-2022, IEEE Std 802.1Qcz-2023, IEEE Std 802.1Qcw-2023. + IEEE Std 802 Overview and Architecture: + IEEE Std 802-2014. + IEEE Std 802.1AC Media Access Control (MAC) Service Definition: + IEEE Std 802.1AC-2016, IEEE Std 802.1AC-2016-Cor1-2018."; + } + revision 2022-10-29 { + description + "Published as part of IEEE Std 802.1Q-2022."; + reference + "IEEE Std 802.1Q-2022, Bridges and Bridged Networks."; + } + revision 2020-11-06 { + description + "Published as part of IEEE Std 802.1Qcr-2020. Third version."; + reference + "IEEE Std 802.1Qcr-2020, Bridges and Bridged Networks - Asynchronous + Traffic Shaping."; + } + revision 2020-06-04 { + description + "Published as part of IEEE Std 802.1Qcx-2020. Second version."; + reference + "IEEE Std 802.1Qcx-2020, Bridges and Bridged Networks - YANG Data + Model for Connectivity Fault Management."; + } + revision 2018-03-07 { + description + "Published as part of IEEE Std 802.1Q-2018. Initial version."; + reference + "IEEE Std 802.1Q-2018, Bridges and Bridged Networks."; + } + feature ingress-filtering { + description + "Each Port may support an Enable Ingress Filtering parameter. A frame + received on a Port that is not in the member set (8.8.10) associated + with the frames VID shall be discarded if this parameter is set. The + default value for this parameter is reset, i.e., Disable Ingress + Filtering, for all Ports. Any Port that supports setting this + parameter shall also support resetting it. The parameter may be + configured by the management operations defined in Clause 12."; + reference + "8.6.2 of IEEE Std 802.1Q"; + } + feature extended-filtering-services { + description + "Extended Filtering Services support the filtering behavior required + for regions of a network in which potential recipients of multicast + frames exist, and where both the potential recipients of frames and + the Bridges are able to support dynamic configuration of filtering + information for group MAC addresses. In order to integrate this + extended filtering behavior with the needs of regions of the network + that support only Basic Filtering Services, Bridges that support + Extended Filtering Services can be statically and dynamically + configured to modify their filtering behavior on a per-group MAC + address basis, and also on the basis of the overall filtering service + provided by each outbound Port with regard to multicast frames. The + latter capability permits configuration of the Port's default + forwarding or filtering behavior with regard to group MAC addresses + for which no specific static or dynamic filtering information has been + configured."; + reference + "8.8.4, Clause 10 of IEEE Std 802.1Q"; + } + feature port-and-protocol-based-vlan { + description + "A VLAN-aware Bridge component implementation in conformance to the + provisions of this standard for Port-and-Protocol-based VLAN + classification (5.4.1) shall 1) Support one or more of the following + Protocol Classifications and Protocol Template formats: Ethernet, + RFC_1042, SNAP_8021H, SNAP_Other, or LLC_Other (6.12); and may 2) + Support configuration of the contents of the Protocol Group Database."; + reference + "5.4.1.2 of IEEE Std 802.1Q"; + } + feature flow-filtering { + description + "Flow filtering support enables Bridges to distinguish frames + belonging to different client flows and to use this information in the + forwarding process. Information related to client flows may be used at + the boundary of an SPT Domain to generate a flow hash value. The flow + hash, carried in an F-TAG, serves to distinguish frames belonging to + different flows and can be used in the forwarding process to + distribute frames over equal cost paths. This provides for finer + granularity load spreading while maintaining frame order for each + client flow."; + reference + "44.2 of IEEE Std 802.1Q"; + } + feature simple-bridge-port { + description + "A simple bridge port allows underlying (MAC) layers to share the same + Interface as the Bridge Port."; + } + feature flexible-bridge-port { + description + "A flexible Bridge Port provides an interface that is distinct from + the interface provided by the underlying (MAC) layer."; + } + identity type-of-bridge { + description + "Represents the configured Bridge type."; + } + identity customer-vlan-bridge { + base type-of-bridge; + description + "Base identity for a Customer VLAN Bridge."; + } + identity provider-bridge { + base type-of-bridge; + description + "Base identity for a Provider Bridge (PB)."; + } + identity provider-edge-bridge { + base type-of-bridge; + description + "Base identity for a Provider Edge Bridge (PEB)."; + } + identity two-port-mac-relay-bridge { + base type-of-bridge; + description + "Base identity for a Two Port MAC Relay (TPMR)."; + } + identity type-of-component { + description + "Represents the type of Component."; + } + identity c-vlan-component { + base type-of-component; + description + "Base identity for a C-VLAN component."; + } + identity s-vlan-component { + base type-of-component; + description + "Base identity for a S-VLAN component."; + } + identity d-bridge-component { + base type-of-component; + description + "Base identity for a VLAN unaware component."; + } + identity edge-relay-component { + base type-of-component; + description + "Base identity for an EVB station ER component."; + } + identity type-of-port { + description + "Represents the type of Bridge port."; + } + identity c-vlan-bridge-port { + base type-of-port; + description + "Indicates the port can be a C-TAG aware port of an enterprise VLAN + aware Bridge."; + } + identity provider-network-port { + base type-of-port; + description + "Indicates the port can be an S-TAG aware port of a Provider Bridge or + Backbone Edge Bridge used for connections within a PBN (Provider + Bridged Network) or PBBN (Provider Backbone Bridged Network)."; + } + identity customer-network-port { + base type-of-port; + description + "Indicates the port can be an S-TAG aware port of a Provider Bridge or + Backbone Edge Bridge used for connections to the exterior of a PBN + (Provider Bridged Network) or PBBN (Provider Backbone Bridged + Network)."; + } + identity customer-edge-port { + base type-of-port; + description + "Indicates the port can be a C-TAG aware port of a Provider Bridge + used for connections to the exterior of a PBN (Provider Bridged + Network) or PBBN (Provider Backbone Bridged Network)."; + } + identity d-bridge-port { + base type-of-port; + description + "Indicates the port can be a VLAN-unaware member of an 802.1Q Bridge."; + } + identity remote-customer-access-port { + base type-of-port; + description + "Indicates the port can be an S-TAG aware port of a Provider Bridge + capable of providing Remote Customer Service Interfaces."; + } + identity bridge-interface { + description + "Generic interface property that represents any interface that can be + associated with an IEEE 802.1Q compliant Bridge component. Any new + Interface types would derive from this identity to automatically pick + up Bridge related configuration or operational data."; + } + container bridges { + description + "Contains the Bridge(s) configuration information."; + list bridge { + key "name"; + unique "address"; + description + "Provides configuration data in support of the Bridge Configuration + resources. There is a single bridge data node per Bridge."; + leaf name { + type dot1qtypes:name-type; + description + "A text string associated with the Bridge, of locally determined + significance."; + reference + "12.4 of IEEE Std 802.1Q"; + } + leaf address { + type ieee:mac-address; + mandatory true; + description + "The MAC address for the Bridge from which the Bridge Identifiers + used by the STP, RSTP, and MSTP are derived."; + reference + "12.4 of IEEE Std 802.1Q"; + } + leaf bridge-type { + type identityref { + base type-of-bridge; + } + mandatory true; + description + "The type of Bridge."; + } + leaf ports { + type uint16 { + range "1..4095"; + } + config false; + description + "The number of Bridge Ports (MAC Entities)"; + reference + "12.4 of IEEE Std 802.1Q"; + } + leaf up-time { + type yang:zero-based-counter32; + units "seconds"; + config false; + description + "The count in seconds of the time elapsed since the Bridge was + last reset or initialized."; + reference + "12.4 of IEEE Std 802.1Q"; + } + leaf components { + type uint32; + config false; + description + "The number of components associated with the Bridge."; + } + list component { + key "name"; + description + "The set of components associated with a given Bridge. For + example, - A TPMR is associated with a single VLAN unaware + component. - A Customer VLAN Bridge is associated with a single + VLAN aware component. - A Provider Bridge is associated with a + single S-VLAN component and zero or more C-VLAN components."; + reference + "12.4.1.5 of IEEE Std 802.1Q"; + leaf name { + type string; + description + "The name of the Component."; + } + leaf id { + type uint32; + description + "Unique identifier for a particular Bridge component within the + system."; + reference + "Item l) in 12.3 of IEEE Std 802.1Q"; + } + leaf type { + type identityref { + base type-of-component; + } + mandatory true; + description + "The type of component used to classify a particular Bridge + component within a Bridge system comprising multiple components."; + reference + "Item m) in 12.3 of IEEE Std 802.1Q"; + } + leaf address { + type ieee:mac-address; + description + "Unique EUI-48 Universally Administered MAC address assigned to + a Bridge component."; + reference + "8.13.8 of IEEE Std 802.1Q"; + } + leaf traffic-class-enabled { + type boolean; + default "true"; + description + "Indication of Traffic Classes enablement associated with the + Bridge Component. A value of True indicates that Traffic Classes + are enabled on this Bridge Component. A value of False indicates + that the Bridge Component operates with a single priority level + for all traffic."; + reference + "Item b) in 12.4.1.5.2 of IEEE Std 802.1Q"; + } + leaf ports { + type uint16 { + range "1..4095"; + } + config false; + description + "The number of Bridge Ports associated with the Bridge + Component."; + reference + "Item c) in 12.4.1.1.3 of IEEE Std 802.1Q"; + } + leaf-list bridge-port { + type if:interface-ref; + config false; + description + "List of bridge-port references."; + } + container capabilities { + config false; + description + "Array of Boolean values of the feature capabilities associated + with a given Bridge Component."; + reference + "Item b) in 12.10.1.1.3, 12.4.1.5.2 of IEEE Std 802.1Q"; + leaf extended-filtering { + type boolean; + default "false"; + description + "Can perform filtering on individual multicast addresses + controlled by MMRP."; + reference + "12.4.1.5.2 of IEEE Std 802.1Q"; + } + leaf traffic-classes { + type boolean; + default "false"; + description + "Can map priority to multiple traffic classes."; + reference + "12.4.1.5.2 of IEEE Std 802.1Q"; + } + leaf static-entry-individual-port { + type boolean; + default "false"; + description + "Static entries per port."; + reference + "12.4.1.5.2 of IEEE Std 802.1Q"; + } + leaf ivl-capable { + type boolean; + default "true"; + description + "Independent VLAN Learning (IVL)."; + reference + "12.4.1.5.2 of IEEE Std 802.1Q"; + } + leaf svl-capable { + type boolean; + default "false"; + description + "Shared VLAN Learning (SVL)."; + reference + "12.4.1.5.2 of IEEE Std 802.1Q"; + } + leaf hybrid-capable { + type boolean; + default "false"; + description + "Both IVL and SVL simultaneously."; + reference + "12.4.1.5.2 of IEEE Std 802.1Q"; + } + leaf configurable-pvid-tagging { + type boolean; + default "false"; + description + "Whether the implementation supports the ability to override + the default PVID setting and its egress status (VLAN-tagged or + Untagged) on each port."; + reference + "12.4.1.5.2 of IEEE Std 802.1Q"; + } + leaf local-vlan-capable { + type boolean; + default "false"; + description + "Can support multiple local Bridges, outside the scope of + 802.1Q defined VLANs."; + reference + "12.4.1.5.2 of IEEE Std 802.1Q"; + } + } + container filtering-database { + when + "not(derived-from-or-self(../../bridge-type, "+ + "'two-port-mac-relay-bridge'))" { + description + "Applies to non TPMRs."; + } + description + "Contains filtering information used by the Forwarding Process + in deciding through which Ports of the Bridge frames should be + forwarded."; + reference + "12.7 of IEEE Std 802.1Q"; + leaf aging-time { + type uint32 { + range "10..1000000"; + } + units "seconds"; + default "300"; + description + "The timeout period in seconds for aging out + dynamically-learned forwarding information."; + reference + "12.7, 8.8.3 of IEEE Std 802.1Q"; + } + leaf size { + type yang:gauge32; + config false; + description + "The maximum number of entries that can be held in the FDB."; + reference + "12.7 of IEEE Std 802.1Q"; + } + leaf static-entries { + type yang:gauge32; + config false; + description + "The number of Static Filtering entries currently in the FDB."; + reference + "12.7, 8.8.1 of IEEE Std 802.1Q"; + } + leaf dynamic-entries { + type yang:gauge32; + config false; + description + "The number of Dynamic Filtering entries currently in the FDB."; + reference + "12.7, 8.8.3 of IEEE Std 802.1Q"; + } + leaf static-vlan-registration-entries { + type yang:gauge32; + config false; + description + "The number of Static VLAN Registration entries currently in + the FDB."; + reference + "12.7, 8.8.2 of IEEE Std 802.1Q"; + } + leaf dynamic-vlan-registration-entries { + type yang:gauge32; + config false; + description + "The number of Dynamic VLAN Registration entries currently in + the FDB."; + reference + "12.7, 8.8.5 of IEEE Std 802.1Q"; + } + leaf mac-address-registration-entries { + if-feature "extended-filtering-services"; + type yang:gauge32; + config false; + description + "The number of MAC Address Registration entries currently in + the FDB."; + reference + "12.7, 8.8.4 of IEEE Std 802.1Q"; + } + list filtering-entry { + key "database-id vids address"; + description + "Information for the entries associated with the Permanent + Database."; + leaf database-id { + type uint32; + description + "The identity of this Filtering Database."; + reference + "12.7.7 of IEEE Std 802.1Q"; + } + leaf address { + type ieee:mac-address; + description + "A MAC address (unicast, multicast, broadcast) for which the + device has forwarding and/or filtering information."; + reference + "12.7.7 of IEEE Std 802.1Q"; + } + leaf vids { + type dot1qtypes:vid-range-type; + description + "The set of VLAN identifiers to which this entry applies."; + reference + "12.7.7 of IEEE Std 802.1Q"; + } + leaf entry-type { + type enumeration { + enum static { + description + "Static entry type"; + } + enum dynamic { + description + "Dynamic/learnt entry type"; + } + } + description + "The type of filtering entry. Whether static or dynamic. + Static entries can be created, deleted, and retrieved. + However, dynamic entries can only be deleted or retrieved by + the management entity. Consequently, a Bridge is not + required to accept a command that can alter the dynamic + entries except delete a dynamic entry."; + reference + "12.7.7 of IEEE Std 802.1Q"; + } + uses dot1qtypes:port-map-grouping; + leaf status { + type enumeration { + enum other { + description + "None of the following. This may include the case where + some other object is being used to determine if and how + frames addressed to the value of the corresponding + instance of 'address' are being forwarded."; + } + enum invalid { + description + "This entry is no longer valid (e.g., it was learned but + has since aged out), but has not yet been flushed from + the table."; + } + enum learned { + description + "The value of the corresponding instance of the port + node was learned and is being used."; + } + enum self { + description + "The value of the corresponding instance of the address + node representing one of the devices address."; + } + enum mgmt { + description + "The value of the corresponding instance of address node + that is also the value of an existing instance."; + } + } + config false; + description + "The status of this entry."; + } + } + list vlan-registration-entry { + key "database-id vids"; + description + "The VLAN Registration Entries models the operations that can + be performed on a single VLAN Registration Entry in the FDB. + The set of VLAN Registration Entries within the FDB changes + under management control and also as a result of MVRP + exchanges"; + reference + "12.7.5 of IEEE Std 802.1Q"; + leaf database-id { + type uint32; + description + "The identity of this Filtering Database."; + reference + "12.7.7 of IEEE Std 802.1Q"; + } + leaf vids { + type dot1qtypes:vid-range-type; + description + "The set of VLAN identifiers to which this entry applies."; + reference + "12.7.7 of IEEE Std 802.1Q"; + } + leaf entry-type { + type enumeration { + enum static { + description + "Static entry type"; + } + enum dynamic { + description + "Dynamic/learnt entry type"; + } + } + description + "The type of filtering entry. Whether static or dynamic. + Static entries can be created, deleted, and retrieved. + However, dynamic entries can only be deleted or retrieved by + the management entity. Consequently, a Bridge is not + required to accept a command that can alter the dynamic + entries except delete a dynamic entry."; + reference + "12.7.7 of IEEE Std 802.1Q"; + } + uses dot1qtypes:port-map-grouping; + } + } + container permanent-database { + description + "The Permanent Database container models the operations that can + be performed on, or affect, the Permanent Database. There is a + single Permanent Database per FDB."; + leaf size { + type yang:gauge32; + config false; + description + "The maximum number of entries that can be held in the FDB."; + reference + "12.7.6 of IEEE Std 802.1Q"; + } + leaf static-entries { + type yang:gauge32; + config false; + description + "The number of Static Filtering entries currently in the FDB."; + reference + "12.7.6 of IEEE Std 802.1Q"; + } + leaf static-vlan-registration-entries { + type yang:gauge32; + config false; + description + "The number of Static VLAN Registration entries currently in + the FDB."; + reference + "12.7.6 of IEEE Std 802.1Q"; + } + list filtering-entry { + key "database-id vids address"; + description + "Information for the entries associated with the Permanent + Database."; + leaf database-id { + type uint32; + description + "The identity of this Filtering Database."; + reference + "12.7.7 of IEEE Std 802.1Q"; + } + leaf address { + type ieee:mac-address; + description + "A MAC address (unicast, multicast, broadcast) for which the + device has forwarding and/or filtering information."; + reference + "12.7.7 of IEEE Std 802.1Q"; + } + leaf vids { + type dot1qtypes:vid-range-type; + description + "The set of VLAN identifiers to which this entry applies."; + reference + "12.7.7 of IEEE Std 802.1Q"; + } + leaf status { + type enumeration { + enum other { + description + "None of the following. This may include the case where + some other object is being used to determine if and how + frames addressed to the value of the corresponding + instance of 'address' are being forwarded."; + } + enum invalid { + description + "This entry is no longer valid (e.g., it was learned but + has since aged out), but has not yet been flushed from + the table."; + } + enum learned { + description + "The value of the corresponding instance of the port + node was learned and is being used."; + } + enum self { + description + "The value of the corresponding instance of the address + node representing one of the devices address."; + } + enum mgmt { + description + "The value of the corresponding instance of address node + that is also the value of an existing instance."; + } + } + config false; + description + "The status of this entry."; + } + uses dot1qtypes:port-map-grouping; + } + } + container bridge-vlan { + when + "not(derived-from-or-self(../../bridge-type, "+ + "'two-port-mac-relay-bridge'))" { + description + "Applies to non TPMRs."; + } + description + "The Bridge VLAN container models configuration information that + modifies, or inquires about, the overall configuration of the + Bridge's VLAN resources. There is a single Bridge VLAN + Configuration managed object per Bridge."; + reference + "12.10 of IEEE Std 802.1Q"; + leaf version { + type uint16; + config false; + description + "The version number supported."; + reference + "Item a) of 12.10.1.1.3 of IEEE Std 802.1Q"; + } + leaf max-vids { + type uint16; + config false; + description + "The maximum number of VIDs supported."; + reference + "Item b)1) of 12.10.1.1.3 of IEEE Std 802.1Q"; + } + leaf override-default-pvid { + type boolean; + default "false"; + config false; + description + "Indicates if the default PVID can be overridden, and its + egress status (VLAN-tagged or untagged) on each port."; + reference + "Item b)2) of 12.10.1.1.3 of IEEE Std 802.1Q"; + } + leaf protocol-template { + if-feature "port-and-protocol-based-vlan"; + type dot1qtypes:protocol-frame-format-type; + config false; + description + "The data-link encapsulation format or the detagged_frame_type + in a Protocol Template"; + reference + "12.10.1.7 of IEEE Std 802.1Q"; + } + leaf max-msti { + type uint16; + config false; + description + "The maximum number of MSTIs supported within an MST region + (i.e., the number of spanning tree instances that can be + supported in addition to the CIST), for MST Bridges. For SST + Bridges, this parameter may be either omitted or reported as + 0."; + reference + "Item b)4) of 12.10.1.1.3 of IEEE Std 802.1Q"; + } + list vlan { + key "vid"; + description + "List of VLAN related configuration nodes associated with the + Bridge."; + reference + "12.10.2 of IEEE Std 802.1Q"; + leaf vid { + type dot1qtypes:vlan-index-type; + description + "The VLAN identifier to which this entry applies."; + reference + "12.10.2 of IEEE Std 802.1Q"; + } + leaf name { + type dot1qtypes:name-type; + description + "A text string of up to 32 characters of locally determined + significance."; + reference + "12.10.2 of IEEE Std 802.1Q"; + } + leaf-list untagged-ports { + type if:interface-ref; + config false; + description + "The set of ports in the untagged set for this VID."; + reference + "12.10.2.1.3, 8.8.2 of IEEE Std 802.1Q"; + } + leaf-list egress-ports { + type if:interface-ref; + config false; + description + "The set of egress ports in the member set for this VID."; + reference + "12.10.2.1.3, 8.8.10 of IEEE Std 802.1Q"; + } + } + list protocol-group-database { + if-feature "port-and-protocol-based-vlan"; + key "db-index"; + description + "List of the protocol group database entries."; + reference + "12.10.1.7, 6.12.3 of IEEE Std 802.1Q"; + leaf db-index { + type uint16; + description + "The protocol group database index."; + } + leaf frame-format-type { + type dot1qtypes:protocol-frame-format-type; + description + "The data-link encapsulation format or the + detagged_frame_type in a Protocol Template"; + reference + "12.10.1.7 of IEEE Std 802.1Q"; + } + choice frame-format { + description + "The identification of the protocol above the data-link + layer in a Protocol Template. Depending on the frame type, + the octet string will have one of the following values: + - For Ethernet, rfc1042, and snap8021H, this is the 16-bit + (2-octet) EtherType field. + - For snapOther, this is the 40-bit (5-octet) PID. + - For llcOther, this is the 2-octet IEEE 802.2 Link Service + Access Point (LSAP) pair: first octet for Destination Service + Access Point (DSAP) and second octet for Source Service Access + Point (SSAP)."; + reference + "12.10.1.7 of IEEE Std 802.1Q"; + case ethernet-rfc1042-snap8021H { + when + "frame-format-type = 'Ethernet' or frame-format-type = "+ + "'rfc1042' or frame-format-type = 'snap8021H'" { + description + "Applies to Ethernet, RFC 1042, SNAP 8021H frame + formats."; + } + description + "Identifier used if Ethenet, RFC1042, or SNAP 8021H."; + leaf ethertype { + type dot1qtypes:ethertype-type; + description + "Format containing the 16-bit IEEE 802 EtherType field."; + reference + "9.2 of IEEE Std 802"; + } + } + case snap-other { + when + "frame-format-type = 'snapOther'" { + description + "Applies to Snap Other frame formats."; + } + description + "Identifier used if SNAP other."; + leaf protocol-id { + type string { + pattern "[0-9a-fA-F]{2}(-[0-9a-fA-F]{2}){4}"; + } + description + "Format containing the 40-bit protocol identifier (PID). + The canonical representation uses uppercase characters."; + reference + "12.10.1.7.1 of IEEE Std 802.1Q"; + } + } + case llc-other { + when + "frame-format-type = 'llcOther'" { + description + "Applies to LLC Other frame formats"; + } + description + "Identifier used if LLC other."; + container dsap-ssap-pairs { + description + "A pair of ISO/IEC 8802-2 DSAP and SSAP address field + values, for matching frame formats of LLC_Other."; + leaf llc-address { + type string { + pattern "[0-9a-fA-F]{2}-[0-9a-fA-F]{2}"; + } + description + "A pair of ISO/IEC 8802-2 DSAP and SSAP address field + values, for matching frame formats of LLC_Other. The + canonical representation uses uppercase characters."; + reference + "12.10.1.7.1 of IEEE Std 802.1Q"; + } + } + } + } + leaf group-id { + type uint32; + description + "Designates a group of protocols in the Protocol Group + Database."; + reference + "6.12.2 of IEEE Std 802.1Q"; + } + } + list vid-to-fid-allocation { + key "vids"; + description + "This list allows inquiries about VID to FID allocations."; + leaf vids { + type dot1qtypes:vid-range-type; + description + "Range of VLAN identifiers."; + reference + "12.10.3 of IEEE Std 802.1Q"; + } + leaf fid { + type uint32; + config false; + description + "The Filtering Database used by a set of VIDs."; + reference + "12.10.3 of IEEE Std 802.1Q"; + } + leaf allocation-type { + type enumeration { + enum undefined { + description + "No allocation defined."; + } + enum fixed { + description + "A fixed allocation to FID is defined."; + } + enum dynamic { + description + "A dynamic allocation to FID is defined."; + } + } + config false; + description + "The type of allocation used"; + reference + "12.10.3 of IEEE Std 802.1Q"; + } + } + list fid-to-vid-allocation { + key "fid"; + description + "The FID to VID allocations managed object models operations + that inquire about FID to VID allocations."; + leaf fid { + type uint32; + description + "The Filtering Database used by a set of VIDs."; + reference + "12.10.3 of IEEE Std 802.1Q"; + } + leaf allocation-type { + type enumeration { + enum undefined { + description + "No allocation defined."; + } + enum fixed { + description + "A fixed allocation to FID is defined."; + } + enum dynamic { + description + "A dynamic allocation to FID is defined."; + } + } + config false; + description + "The type of allocation used"; + reference + "12.10.3 of IEEE Std 802.1Q"; + } + leaf-list vid { + type dot1qtypes:vlan-index-type; + config false; + description + "The VLAN identifier to which this entry applies."; + reference + "12.7.7 of IEEE Std 802.1Q"; + } + } + list vid-to-fid { + key "vid"; + description + "Fixed allocation of a VID to an FID. The underlying system + will ensure that subsequent commands that make changes to the + VID to FID mapping can override previous associations."; + reference + "12.10.3.4, 12.10.3.5 of IEEE Std 802.1Q"; + leaf vid { + type dot1qtypes:vlan-index-type; + description + "A list of VIDs associated with a given database identifier + (i.e., FID)."; + reference + "12.7.7 of IEEE Std 802.1Q"; + } + leaf fid { + type uint32; + description + "The Filtering Database used by this VLAN"; + reference + "12.10.3 of IEEE Std 802.1Q"; + } + } + } + container bridge-mst { + when + "not(derived-from-or-self(../../bridge-type, "+ + "'two-port-mac-relay-bridge'))" { + description + "Applies to non TPMRs."; + } + description + "The Bridge MST container models configuration information that + modifies, or inquires about, the overall configuration of the + Bridges MST resources."; + reference + "12.12 of IEEE Std 802.1Q"; + leaf-list mstid { + type dot1qtypes:mstid-type; + description + "The list of MSTID values that are currently supported by the + Bridge"; + } + list fid-to-mstid { + key "fid"; + description + "The FID to MSTID allocation table."; + reference + "12.12.2 of IEEE Std 802.1Q"; + leaf fid { + type uint32; + description + "The Filtering Database identifier."; + reference + "12.12.2 of IEEE Std 802.1Q"; + } + leaf mstid { + type dot1qtypes:mstid-type; + description + "The MSTID to which the FID is to be allocated."; + reference + "12.12.2 of IEEE Std 802.1Q"; + } + } + list fid-to-mstid-allocation { + key "fids"; + description + "The FID to MSTID allocation table"; + leaf fids { + type dot1qtypes:vid-range-type; + description + "Range of FIDs."; + reference + "12.12.2 of IEEE Std 802.1Q"; + } + leaf mstid { + type dot1qtypes:mstid-type; + description + "The MSTID to which the FID is allocated."; + reference + "12.12.2 of IEEE Std 802.1Q"; + } + } + } + } + } + } + augment "/if:interfaces/if:interface" { + when + "derived-from-or-self(if:type,'ianaif:bridge') or "+ + "derived-from-or-self(if:type,'ianaif:ethernetCsmacd') or "+ + "derived-from-or-self(if:type,'ianaif:ieee8023adLag') or "+ + "derived-from-or-self(if:type,'ianaif:ilan')" { + description + "Applies when a Bridge interface."; + } + description + "Augment the interface model with the Bridge Port"; + container bridge-port { + description + "Bridge Port is an extension of the IETF Interfaces model (RFC7223)."; + leaf bridge-name { + type leafref { + path '/dot1q:bridges/dot1q:bridge/dot1q:name'; + } + + description + "Used to reference configured Bridge node."; + } + leaf component-name { + type leafref { + path + '/dot1q:bridges'+ + '/dot1q:bridge[dot1q:name=current()'+ + '/..'+ + '/bridge-name]'+ + '/dot1q:component'+ + '/dot1q:name'; + } + + description + "Used to reference configured Component node."; + } + leaf port-type { + type identityref { + base type-of-port; + } + description + "The port type. Indicates the capabilities of this port."; + reference + "12.4.2.1 of IEEE Std 802.1Q"; + } + leaf pvid { + when + "/dot1q:bridges/dot1q:bridge[dot1q:name=current()"+ + "/../dot1q:bridge-name]/dot1q:component[name=current()"+ + "/../dot1q:component-name]/dot1q:type !="+ + "'dot1q:d-bridge-component'" { + description + "Applies to non TPMRs"; + } + type dot1qtypes:vlan-index-type; + default "1"; + description + "The primary (default) VID assigned to a specific Bridge Port."; + reference + "12.10.1, 5.4, item m) of IEEE Std 802.1Q"; + } + leaf default-priority { + type dot1qtypes:priority-type; + default "0"; + description + "The default priority assigned to a specific Bridge Port."; + reference + "12.6.2 of IEEE Std 802.1Q"; + } + container priority-regeneration { + description + "The Priority Regeneration Table parameters associated with a + specific Bridge Port. A list of Regenerated User Priorities for + each received priority on each port of a Bridge. The regenerated + priority value may be used to index the Traffic Class Table for + each input port. This only has effect on media that support native + priority. The default values for Regenerated User Priorities are + the same as the User Priorities"; + reference + "12.6.2, 6.9.4 of IEEE Std 802.1Q"; + uses dot1qtypes:priority-regeneration-table-grouping; + } + leaf pcp-selection { + type dot1qtypes:pcp-selection-type; + default "8P0D"; + description + "The Priority Code Point selection assigned to a specific Bridge + Port. This object identifies the rows in the PCP encoding and + decoding tables that are used to remark frames on this port if + this remarking is enabled"; + reference + "12.6.2, 6.9.3 of IEEE Std 802.1Q"; + } + container pcp-decoding-table { + description + "The Priority Code Point Decoding Table parameters associated with + a specific Bridge Port."; + uses dot1qtypes:pcp-decoding-table-grouping; + } + container pcp-encoding-table { + description + "The Priority Code Point Encoding Table parameters associated with + a specific Bridge Port."; + uses dot1qtypes:pcp-encoding-table-grouping; + } + leaf use-dei { + type boolean; + default "false"; + description + "The Drop Eligible Indicator. If it is set to True, then the + drop_eligible parameter is encoded in the DEI of transmitted + frames, and the drop_eligible parameter shall be true(1) for a + received frame if the DEI is set in the VLAN tag or the Priority + Code Point Decoding Table indicates drop_eligible True for the + received PCP value. If this parameter is False, the DEI shall be + transmitted as zero and ignored on receipt."; + reference + "12.6.2, 6.9.3 of IEEE Std 802.1Q"; + } + leaf drop-encoding { + type boolean; + default "false"; + description + "The Drop Encoding parameter. If a Bridge supports encoding or + decoding of drop_eligible from the PCP field of a VLAN tag (6.9.3) + on any of its Ports, then it shall implement a Boolean parameter + Require Drop Encoding on each of its Ports with default value + False. If Require Drop Encoding is True and the Bridge Port cannot + encode particular priorities with drop_eligible, then frames + queued with those priorities and drop_eligible True shall be + discarded and not transmitted."; + reference + "12.6.2, 6.9.3 of IEEE Std 802.1Q"; + } + leaf service-access-priority-selection { + type boolean; + default "false"; + description + "The Service Access Priority selection. Indication of whether the + Service Access Priority Selection function is supported on the + Customer Bridge Port to request priority handling of the frame + from a Port-based service interface."; + reference + "12.6.2, 6.13 of IEEE Std 802.1Q"; + } + container service-access-priority { + description + "The Service Access Priority table parameters. A table that + contains information about the Service Access Priority Selection + function for a Provider Bridge. The use of this table enables a + mechanism for a Customer Bridge attached to a Provider Bridged + Network to request priority handling of frames."; + reference + "12.6.2, 6.13.1 of IEEE Std 802.1Q"; + uses dot1qtypes:service-access-priority-table-grouping; + } + container traffic-class { + description + "The Traffic Class table parameters. A table mapping evaluated + priority to Traffic Class, for forwarding by the Bridge"; + reference + "12.6.3, 8.6.6 of IEEE Std 802.1Q"; + uses dot1qtypes:traffic-class-table-grouping; + } + container transmission-selection-algorithm-table { + description + "The Transmission Selection Algorithm Table for a given Port + assigns, for each traffic class that the Port supports, the + transmission selection algorithm that is to be used to select + frames for transmission from the corresponding queue. Transmission + Selection Algorithm Tables may be managed, and allow the + identification of vendor-specific transmission selection + algorithms. The transmission selection algorithms are identified + in the Transmission Selection Algorithm Table by means of integer + identifiers."; + reference + "12.20.2, 8.6.8 of IEEE Std 802.1Q"; + uses dot1qtypes:transmission-selection-table-grouping; + } + leaf acceptable-frame { + when + "/dot1q:bridges/dot1q:bridge[dot1q:name=current()"+ + "/../dot1q:bridge-name]/dot1q:component[name=current()"+ + "/../dot1q:component-name]/dot1q:type !="+ + "'dot1q:d-bridge-component'" { + description + "Applies to non TPMRs"; + } + type enumeration { + enum admit-only-VLAN-tagged-frames { + description + "Admit only VLAN-tagged frames."; + } + enum admit-only-untagged-and-priority-tagged { + description + "Admit only untagged and priority-tagged frames."; + } + enum admit-all-frames { + description + "Admit all frames."; + } + } + default "admit-all-frames"; + description + "To configure the Acceptable Frame Types parameter associated with + one or more Ports"; + reference + "12.10.1.3, 6.9 of IEEE Std 802.1Q"; + } + leaf enable-ingress-filtering { + when + "/dot1q:bridges/dot1q:bridge[dot1q:name=current()"+ + "/../dot1q:bridge-name]/dot1q:component[name=current()"+ + "/../dot1q:component-name]/dot1q:type !="+ + "'dot1q:d-bridge-component'" { + description + "Applies to non TPMRs"; + } + type boolean; + default "false"; + description + "To enable the Ingress Filtering feature associated with one or + more Ports."; + reference + "12.10.1.4, 8.6.2 of IEEE Std 802.1Q"; + } + leaf enable-restricted-vlan-registration { + when + "/dot1q:bridges/dot1q:bridge[dot1q:name=current()"+ + "/../dot1q:bridge-name]/dot1q:component[name=current()"+ + "/../dot1q:component-name]/dot1q:type !="+ + "'dot1q:d-bridge-component'" { + description + "Applies to non TPMRs"; + } + type boolean; + default "false"; + description + "To enable the Restricted VLAN Registration associated with one or + more Ports."; + reference + "11.2.3.2.3, 12.10.1.6 of IEEE Std 802.1Q"; + } + leaf enable-vid-translation-table { + when + "/dot1q:bridges/dot1q:bridge[dot1q:name=current()"+ + "/../dot1q:bridge-name]/dot1q:component[name=current()"+ + "/../dot1q:component-name]/dot1q:type !="+ + "'dot1q:d-bridge-component'" { + description + "Applies to non TPMRs"; + } + type boolean; + default "false"; + description + "To enable VID Translation table associated with a Bridge Port. + This is not applicable to Bridge Ports that do no support a VID + Translation Table."; + reference + "12.10.1.8, 6.9 of IEEE Std 802.1Q"; + } + leaf enable-egress-vid-translation-table { + when + "/dot1q:bridges/dot1q:bridge[dot1q:name=current()"+ + "/../dot1q:bridge-name]/dot1q:component[name=current()"+ + "/../dot1q:component-name]/dot1q:type !="+ + "'dot1q:d-bridge-component'" { + description + "Applies to non TPMRs"; + } + type boolean; + default "false"; + description + "To enable Egress VID Translation table associated with a Bridge + Port. This is not applicable to Ports that do not support an + Egress VID Translation table."; + reference + "12.10.1.8, 6.9 of IEEE Std 802.1Q"; + } + list protocol-group-vid-set { + when + "/dot1q:bridges/dot1q:bridge[dot1q:name=current()"+ + "/../dot1q:bridge-name]/dot1q:component[name=current()"+ + "/../dot1q:component-name]/dot1q:type !="+ + "'dot1q:d-bridge-component'" { + description + "Applies to non TPMRs"; + } + if-feature "port-and-protocol-based-vlan"; + key "group-id"; + description + "The list of VID values associated with the Protocol Group + Identifier for this port."; + reference + "12.10.1.1.3 of IEEE Std 802.1Q"; + leaf group-id { + type uint32; + description + "The protocol group identifier"; + reference + "12.10.1.7 of IEEE Std 802.1Q"; + } + leaf-list vid { + type dot1qtypes:vlanid; + description + "The VLAN identifier to which this entry applies."; + reference + "12.10.2 of IEEE Std 802.1Q"; + } + } + leaf admin-point-to-point { + type enumeration { + enum force-true { + value 1; + description + "Indicates that this port should always be treated as if it is + connected to a point-to-point link."; + } + enum force-false { + value 2; + description + "Indicates that this port should be treated as having a shared + media connection."; + } + enum auto { + value 3; + description + "Indicates that this port is considered to have a + point-to-point link if it is an Aggregator and all of its + members are aggregatable, or if the MAC entity is configured + for full duplex operation, either through auto-negotiation or + by management means."; + } + } + description + "For a port running spanning tree, this object represents the + administrative point-to-point status of the LAN segment attached + to this port, using the enumeration values of IEEE Std 802.1AC. A + value of forceTrue(1) indicates that this port should always be + treated as if it is connected to a point-to-point link. A value of + forceFalse(2) indicates that this port should be treated as having + a shared media connection. A value of auto(3) indicates that this + port is considered to have a point-to-point link if it is an + Aggregator and all of its members are aggregatable, or if the MAC + entity is configured for full duplex operation, either through + auto-negotiation or by management means. Manipulating this object + changes the underlying adminPointToPointMAC."; + reference + "12.4.2, 6.8.3 of IEEE Std 802.1Q; 11.3 of IEEE Std 802.1AC"; + } + leaf protocol-based-vlan-classification { + when + "/dot1q:bridges/dot1q:bridge[dot1q:name=current()"+ + "/../dot1q:bridge-name]/dot1q:component[name=current()"+ + "/../dot1q:component-name]/dot1q:type !="+ + "'dot1q:d-bridge-component'" { + description + "Applies to non TPMRs"; + } + if-feature "port-and-protocol-based-vlan"; + type boolean; + config false; + description + "A boolean indication indicating if Port-and-Protocol-based VLAN + classification is supported on a given Port."; + reference + "5.4.1.2 of IEEE Std 802.1Q"; + } + leaf max-vid-set-entries { + when + "/dot1q:bridges/dot1q:bridge[dot1q:name=current()"+ + "/../dot1q:bridge-name]/dot1q:component[name=current()"+ + "/../dot1q:component-name]/dot1q:type !="+ + "'dot1q:d-bridge-component'" { + description + "Applies to non TPMRs"; + } + if-feature "port-and-protocol-based-vlan"; + type uint16; + config false; + description + "The maximum number of entries supported in the VID set on a given + Port."; + reference + "12.10.1.1.3 of IEEE Std 802.1Q"; + } + leaf port-number { + type dot1qtypes:port-number-type; + config false; + description + "An integer that uniquely identifies a Bridge Port."; + reference + "Item i) in 12.3, 17.3.2.2 of IEEE Std 802.1Q"; + } + leaf address { + type ieee:mac-address; + config false; + description + "The specific MAC address of the individual MAC Entity associated + with the Port."; + reference + "12.4.2, Item a) in 12.4.1.1.3 of IEEE Std 802.1Q"; + } + leaf capabilities { + type bits { + bit tagging { + position 0; + description + "Supports 802.1Q VLAN tagging of frames and MVRP."; + } + bit configurable-acceptable-frame-type { + position 1; + description + "Allows modified values of acceptable frame types"; + } + bit ingress-filtering { + position 2; + description + "Supports the discarding of any frame received on a Port whose + VLAN classification does not include that Port in its member + set."; + } + } + config false; + description + "The feature capabilities associated with port. Indicates the + parts of IEEE 802.1Q that are optional on a per-port basis, that + are implemented by this device, and that are manageable."; + reference + "Item c) in 12.10.1.1.3, 12.4.2 of IEEE Std 802.1Q"; + } + leaf type-capabilties { + type bits { + bit customer-vlan-port { + position 0; + description + "Indicates the port can be a C-TAG aware port of an enterprise + VLAN aware Bridge"; + } + bit provider-network-port { + position 1; + description + "Indicates the port can be an S-TAG aware port of a Provider + Bridge or Backbone Edge Bridge used for connections within a + PBN or PBBN."; + } + bit customer-network-port { + position 2; + description + "Indicates the port can be an S-TAG aware port of a Provider + Bridge or Backbone Edge Bridge used for connections to the + exterior of a PBN or PBBN."; + } + bit customer-edge-port { + position 3; + description + "Indicates the port can be a C-TAG aware port of a Provider + Bridge used for connections to the exterior of a PBN or PBBN."; + } + bit customer-backbone-port { + position 4; + description + "Indicates the port can be a I-TAG aware port of a Backbone + Edge Bridge's B-component."; + } + bit virtual-instance-port { + position 5; + description + "Indicates the port can be a virtual S-TAG aware port within a + Backbone Edge Bridge's I-component which is responsible for + handling S-tagged traffic for a specific backbone service + instance."; + } + bit d-bridge-port { + position 6; + description + "Indicates the port can be a VLAN-unaware member of an 802.1Q + Bridge."; + } + bit remote-customer-access-port { + position 7; + description + "Indicates the port can be an S-TAG aware port of a Provider + Bridge capable of providing Remote Customer Service + Interfaces."; + } + bit station-facing-bridge-port { + position 8; + description + "Indicates the station-facing Bridge Port in a EVB Bridge."; + } + bit uplink-access-port { + position 9; + description + "Indicates the uplink access port in an EVB Bridge or EVB + station."; + } + bit uplink-relay-port { + position 10; + description + "Indicates the uplink relay port in an EVB station."; + } + } + config false; + description + "The type of feature capabilities supported with port. Indicates + the capabilities of this port."; + reference + "12.4.2 of IEEE Std 802.1Q"; + } + leaf external { + type boolean; + config false; + description + "A boolean indicating whether the port is external. A value of + True means the port is external. A value of False means the port + is internal."; + reference + "12.4.2 of IEEE Std 802.1Q"; + } + leaf oper-point-to-point { + type boolean; + config false; + description + "For a port running spanning tree, this object represents the + operational point-to-point status of the LAN segment attached to + this port. It indicates whether a port is considered to have a + point-to-point connection. + + If admin-point-to-point is set to auto(2), then the value of + oper-point-to-point is determined in accordance with the specific + procedures defined for the MAC entity concerned, as defined in + IEEE Std 802.1AC. + + The value is determined dynamically; that is, it is re-evaluated + whenever the value of admin-point-to-point changes, and whenever + the specific procedures defined for the MAC entity evaluate a + change in its point-to-point status."; + reference + "IEEE Std 802.1AC; 12.4.2 of IEEE Std 802.1Q"; + } + leaf media-dependent-overhead { + type uint8; + units "octets"; + config false; + description + "The portMediaDependentOverhead parameter provides the number of + additional octets for media-dependent framing. The overhead + includes all octets prior the first octet of the Destination + Address field and all octets after the last octet of the frame + check sequence."; + reference + "12.4.2 of IEEE Std 802.1Q"; + } + container statistics { + config false; + description + "Container of operational state node information associated with + the bridge port."; + uses dot1qtypes:bridge-port-statistics-grouping; + leaf discard-on-ingress-filtering { + when + "/dot1q:bridges/dot1q:bridge[dot1q:name=current()"+ + "/../../dot1q:bridge-name]/dot1q:component[name=current()"+ + "/../../dot1q:component-name]/dot1q:type !="+ + "'dot1q:d-bridge-component'" { + description + "Applies to non TPMRs"; + } + if-feature "ingress-filtering"; + type yang:counter64; + description + "The number of frames that were discarded as a result of Ingress + Filtering being enabled. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other times + as indicated by the value of 'discontinuity-time'."; + reference + "12.6.1.1.3 of IEEE Std 802.1Q"; + } + } + list vid-translations { + when + "/dot1q:bridges/dot1q:bridge[dot1q:name=current()"+ + "/../dot1q:bridge-name]/dot1q:component[name=current()"+ + "/../dot1q:component-name]/dot1q:type !="+ + "'dot1q:d-bridge-component'" { + description + "Applies to non TPMRs"; + } + key "local-vid"; + description + "To configure the VID Translation Table (6.9) associated with a + Port. This object is not applicable to Ports that do not support a + VID Translation Table. The default configuration of the table has + the value of the Relay VID equal to the value of the Local VID. If + no local VID is configured, then it is assumed that the relay VID + is the same value as the local VID. + + If the port supports an Egress VID translation table, the VID + Translation Configuration object configures the Local VID to Relay + VID mapping on ingress only. If an Egress VID translation is not + supported, the VID Translation Configuration object defines a + single bidirectional mapping. In this case, the Bridge should not + allow multiple keys ('local-vid') mapped to the same 'relay-vid' + value."; + leaf local-vid { + type dot1qtypes:vlanid; + description + "The Local VID after translation received at the ISS or EISS."; + reference + "12.10.1.8, 6.9 of IEEE Std 802.1Q"; + } + leaf relay-vid { + type dot1qtypes:vlanid; + description + "The Relay VID received before translation received at ISS or + EISS."; + reference + "12.10.1.8, 6.9 of IEEE Std 802.1Q"; + } + } + list egress-vid-translations { + when + "/dot1q:bridges/dot1q:bridge[dot1q:name=current()"+ + "/../dot1q:bridge-name]/dot1q:component[name=current()"+ + "/../dot1q:component-name]/dot1q:type !="+ + "'dot1q:d-bridge-component'" { + description + "Applies to non TPMRs"; + } + key "relay-vid"; + description + "To configure the Egress VID Translation Table (6.9) associated + with a Port. This object is not applicable to Ports that do not + support an Egress VID Translation Table. The default configuration + of the table has the value of the Local VID equal to the value of + the Relay VID. If no Relay VID is configured, then it is assumed + that the local VID is the same value as the relay VID."; + leaf relay-vid { + type dot1qtypes:vlanid; + description + "The Relay VID received before translation received at ISS or + EISS."; + reference + "12.10.1.9, 6.9 of IEEE Std 802.1Q"; + } + leaf local-vid { + type dot1qtypes:vlanid; + description + "The Local VID after translation received at the ISS or EISS."; + reference + "12.10.1.9, 6.9 of IEEE Std 802.1Q"; + } + } + } + } +} diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-cbsa-bridge.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-cbsa-bridge.yang new file mode 100644 index 000000000..0f16beb91 --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-cbsa-bridge.yang @@ -0,0 +1,64 @@ +module ieee802-dot1q-cbsa-bridge { + namespace "urn:ieee:std:802.1Q:yang:ieee802-dot1q-cbsa-bridge"; + prefix cbsa-bridge; + + import ietf-interfaces { + prefix if; + } + import ieee802-dot1q-cbsa { + prefix cbsa; + } + import ieee802-dot1q-bridge { + prefix dot1q; + } + + organization + "IEEE 802.1 Working Group"; + contact + "WG-URL: http://www.ieee802.org/1/ + WG-EMail: stds-802-1-L@ieee.org + + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + description + "This module provides for management of IEEE Std 802.1Q Bridges + that support the credit-based shaper algorithm. + + Copyright (C) IEEE (2023). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + + revision 2023-12-26 { + description + "Published as part of IEEE Std 802.1Qdx-2024. + + The following reference statement identifies each referenced IEEE + Standard as updated by applicable amendments."; + reference + "IEEE Std 802.1Q Bridges and Bridged Networks: + IEEE Std 802.1Q-2022, IEEE Std 802.1Qcz-2023, IEEE Std 802.1Qcw-2023, + IEEE Std 802.1Qcj-2023, IEEE Std 802.1Qdx-2024."; + } + + feature credit-based-shaper-algorithm { + description + "Credit-based shaper algorithm supported."; + reference + "8.6.8.2 of IEEE Std 802.1Q-2022"; + } + + augment "/if:interfaces/if:interface/dot1q:bridge-port" { + if-feature "credit-based-shaper-algorithm"; + description + "Augment dot1q:bridge-port with credit-based shaper algorithm + configuration."; + uses cbsa:cbsa-config; + } +} \ No newline at end of file diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-cbsa.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-cbsa.yang new file mode 100644 index 000000000..1cca6d478 --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-cbsa.yang @@ -0,0 +1,104 @@ +module ieee802-dot1q-cbsa { + namespace "urn:ieee:std:802.1Q:yang:ieee802-dot1q-cbsa"; + prefix cbsa; + + import ieee802-dot1q-types { + prefix dot1q-types; + } + + organization + "IEEE 802.1 Working Group"; + contact + "WG-URL: http://www.ieee802.org/1/ + WG-EMail: stds-802-1-L@ieee.org + + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + description + "This module provides for management of IEEE Std 802.1Q components + that support the credit-based shaper algorithm. + + Copyright (C) IEEE (2023) + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + + revision 2023-12-26 { + description + "Published as part of IEEE Std 802.1Qdx-2024. + + The following reference statement identifies each referenced IEEE + Standard as updated by applicable amendments."; + reference + "IEEE Std 802.1Q Bridges and Bridged Networks: + IEEE Std 802.1Q-2022, IEEE Std 802.1Qcz-2023, IEEE Std 802.1Qcw-2023, + IEEE Std 802.1Qcj-2023, IEEE Std 802.1Qdx-2024."; + } + + grouping cbsa-config { + description + "cbsa-config comprises all the parameters associated + with the credit-based shaper algorithm."; + container cbsa-parameters { + description + "This container comprises all credit-based shaper algorithm related + nodes."; + list cbsa-parameter-table { + key "traffic-class"; + description + "There is one cbsa-parameter-table list per Port. Each list entry + corresponds to the set of parameters (12.20.1)for each traffic class + configured for use with the credit-based shaper algorithm (8.6.8.2). + The cbsa-parameter-table list is valid for a Bridge Port only when + used in the absence of the stream reservation protocol."; + reference + "8.6.8.2, 34.3, 34.6, and 12.20.1 of IEEE Std 802.1Q"; + leaf traffic-class { + type dot1q-types:traffic-class-type; + description + "An 802.1 traffic class value. This is the numerical value + associated with a traffic class. Larger values are associated with + higher priority traffic classes."; + reference + "8.6.8 of IEEE Std 802.1Q"; + } + leaf admin-idle-slope { + type uint64; + units "bits/second"; + default "0"; + description + "The bandwidth, in bits per second, that has been requested by + management to be reserved for use by the queue associated with + this traffic class. + + If the stream reservation protocol is in operation for this traffic + class, this parameter has no effect. + + If the stream reservation protocol is not in operation for this + traffic class, then the value of oper-idle-slope is equal to the + value of admin-idle-slope"; + reference + "34.3 of IEEE Std 802.1Q"; + } + leaf oper-idle-slope { + type uint64; + units "bits/second"; + default "0"; + config false; + description + "The actual bandwidth, in bits per second, that is currently + reserved for use by the queue associated with this traffic class + (see 34.6.1 and 34.6.2)."; + reference + "34.3, 34.6.1, and 34.6.2 of IEEE Std 802.1Q"; + } + } + } + } +} \ No newline at end of file diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-cfm-alarm.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-cfm-alarm.yang new file mode 100644 index 000000000..f7a1dd740 --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-cfm-alarm.yang @@ -0,0 +1,81 @@ +module ieee802-dot1q-cfm-alarm { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-cfm-alarm; + prefix dot1q-cfm-alarm; + import ieee802-dot1q-cfm { + prefix dot1q-cfm; + } + organization + "IEEE 802.1 Working Group"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + description + "Connectivity Fault Management (CFM) comprises capabilities for + detecting, verifying, and isolating connectivity failures in Virtual + Bridged Local Area Networks. These capabilities can be used in + networks operated by multiple independent organizations, each with + restricted management access to each other's equipment. + + Copyright (C) IEEE (2022). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + revision 2022-01-19 { + description + "Published as part of IEEE Std 802.1Q-2022."; + reference + "IEEE Std 802.1Q-2022, Bridges and Bridged Networks."; + } + revision 2020-06-04 { + description + "Published as part of IEEE Std 802.1Qcx-2020. Initial version."; + reference + "IEEE Std 802.1Qcx-2020, Bridges and Bridged Networks - YANG Data + Model for Connectivity Fault Management."; + } + + /* ------------------------------------------------------------- + * Augmentations of objects defined in generic CFM YANG module + * (ieee802-dot1q-cfm) to define CFM alarms. + * ------------------------------------------------------------- + */ + augment "/dot1q-cfm:cfm/dot1q-cfm:maintenance-group/dot1q-cfm:mep" { + when + "dot1q-cfm:mep-id"; + description + "Augment the MEP object defined in the ieee802-dot1q-cfm (CFM MEP) + YANG module with CFM alarm specific attributes."; + notification mep-fault-alarm { + description + "To alert the Manager to the existence of a fault in a monitored + MA by issuing a Fault Alarm."; + reference + "Item c) in 12.14.7.7.2 of IEEE Std 802.1Q-2022"; + leaf mep-priority-defect { + type leafref { + path + '..'+ + '/..'+ + '/dot1q-cfm:continuity-check'+ + '/dot1q-cfm:highest-priority-defect'; + } + config false; + mandatory true; + description + "The highest priority defect that has been present since the + MEPs Fault Notification Generator state machine was last in + the FNG_RESET state."; + } + } + } +} diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-cfm-bridge.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-cfm-bridge.yang new file mode 100644 index 000000000..cc7cfee1d --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-cfm-bridge.yang @@ -0,0 +1,571 @@ +module ieee802-dot1q-cfm-bridge { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-cfm-bridge; + prefix cfm-bridge; + import ieee802-dot1q-bridge { + prefix dot1q; + } + import ieee802-dot1q-cfm { + prefix dot1q-cfm; + } + import ietf-interfaces { + prefix if; + } + import ieee802-types { + prefix ieee; + } + import ieee802-dot1q-cfm-types { + prefix cfm-types; + } + import ieee802-dot1q-types { + prefix dot1q-types; + } + organization + "IEEE 802.1 Working Group"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + description + "Connectivity Fault Management (CFM) comprises capabilities for + detecting, verifying, and isolating connectivity failures in Virtual + Bridged Local Area Networks. This module binds the CFM modules to an + IEEE 802.1Q Bridge. + + Copyright (C) IEEE (2022). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + revision 2022-01-19 { + description + "Published as part of IEEE Std 802.1Q-2022."; + reference + "IEEE Std 802.1Q-2022, Bridges and Bridged Networks."; + } + revision 2020-06-04 { + description + "Published as part of IEEE Std 802.1Qcx-2020. Initial version."; + reference + "IEEE Std 802.1Qcx-2020, Bridges and Bridged Networks - YANG Data + Model for Connectivity Fault Management."; + } + typedef bridge-ref { + type leafref { + path '/dot1q:bridges/dot1q:bridge/dot1q:name'; + } + description + "This type is used by data models that need to reference a + configured Bridge."; + } + typedef port-ref { + type if:interface-ref; + description + "This type is used to represent interfaces that can be used by a + Bridge device."; + } + + /* ------------------------------------------------- + * Grouping definitions used by 802.1Qcx YANG module + * ------------------------------------------------- + */ + grouping service-id-grouping { + description + "The list of VIDs, the I-SID, the TE-SID, or the SEG-ID monitored + by this MA, if present. In the case that a list of VIDs is + specified, the first VID in the list is the MA's Primary VID + (default none). The specification of I-SID is allowed only in the + case of I- or B-components. The TE-SID is allowed only in the case + that PBB-TE or SPBM is supported. The SEG-ID is allowed only in + the case that IPS is supported."; + choice service-id { + description + "The type of service identifier."; + case vids { + list vid { + key "vlan-id"; + description + "A list of VIDs associated with any MHF on the VID, always + including that VID. The first VID is the MA's primary VID. + List is empty if no primary VID specified"; + leaf vlan-id { + type dot1q-types:vlanid; + description + "The 12-bit VLAN identifier."; + } + } + } + case isid { + leaf isid { + type uint32 { + range "1..16777215"; + } + description + "24-bit I-SID identifier."; + } + } + case tesid { + leaf tesid { + type uint32 { + range "1..4294967295"; + } + description + "The tesid is used as a service selector for MAs that are + present in Bridges that implement PBB-TE functionality."; + } + } + case segid { + leaf segid { + type uint32 { + range "1..4294967295"; + } + description + "The segid is used as a service selector for MAs that are + present in Bridges that implement IPS functionality."; + } + } + case path-tesid { + leaf path-tesid { + type uint32 { + range "1..4294967295"; + } + description + "The path-tesid is used as a service selector for SPBM path + MAs."; + } + } + case group-isid { + leaf group-isid { + type uint32 { + range "1..4294967295"; + } + description + "The group-isid is used as a service selector for SPBM group + MAs."; + } + } + } + } + + /* ------------------------------------------------------------- + * Augmentations of objects defined in generic CFM YANG module + * (ieee802-dot1q-cfm) and generic MEP YANG module + * (ieee802-dot1q-cfm-mep). + * ------------------------------------------------------------- + */ + augment "/dot1q-cfm:cfm" { + description + "Augment the base/common CFM model with CFM Bridge specific + attributes."; + list cfm-stack { + key "port service-selector service-id md-level direction"; + config false; + description + "The CFM Stack contains information about the Maintenance Points + configured on a particular Bridge Port (or Aggregation Port). It + contains all CFM Stack specific related configuration and + operational data. + + Upon a restart of the system, the system SHALL, if necessary, + change the value of this variable, and rearrange the cfm-stack, + so that it indexes the entry in the interface table with the + same value of interface-ref that it indexed before the system + restart. If no such entry exists, then the system SHALL delete + all entries in the cfm-stack with the interface index."; + leaf port { + type port-ref; + description + "An interface on which maintenance points might be configured. + This object represents the Bridge Port or Aggregation Port on + which MEPs or MHFs might be configured."; + reference + "Item a) in 12.14.2.1.2 of IEEE Std 802.1Q-2022"; + } + leaf md-level { + type cfm-types:md-level-type; + description + "The MD level of the maintenance point"; + reference + "Item b) in 12.14.2.1.2 of IEEE Std 802.1Q-2022"; + } + leaf direction { + type cfm-types:mp-direction-type; + description + "The direction in which the maintenance point faces on the + Bridge Port."; + reference + "Item c) in 12.14.2.1.2 of IEEE Std 802.1Q-2022"; + } + leaf service-selector { + type cfm-types:service-selector-type; + description + "The type of the service selector"; + } + leaf service-id { + type cfm-types:service-selector-value-type; + description + "A VID, I-SID, Traffic Engineering service instance Identifier + (TE-SID), or Segment Identifier (SEG-ID) associated with an + MP, or 0, in the case that the MP is associated with no VID, + I-SID, TE-SID, or SEG-ID."; + reference + "Item d) in 12.14.2.1.2 of IEEE Std 802.1Q-2022"; + } + leaf maintenance-group-id { + when + "../maintenance-point = \"mep\"" { + description + "This should only exist if the configured maintenance point + is a MEP (and not a MHF)."; + } + type leafref { + path + '/dot1q-cfm:cfm'+ + '/dot1q-cfm:maintenance-group'+ + '/dot1q-cfm:maintenance-group-id'; + } + mandatory true; + description + "The maintenance group that the MEP is associated with. If the + Maintenance Point is a MHF created due to an entry in the + default-md-levels list, it has no associated maintenance + group, and therefore this leaf is not present."; + } + leaf mep-id { + when + "../maintenance-point = \"mep\"" { + description + "This should only exist if the configured maintenance-point + is a MEP."; + } + type leafref { + path + "/dot1q-cfm:cfm/dot1q-cfm:maintenance-group[dot1q-cfm:main"+ + "tenance-group-id = current()/../maintenance-group-id]/dot"+ + "1q-cfm:mep/dot1q-cfm:mep-id"; + } + mandatory true; + description + "The MEP identifier if a MEP is configured. Does not exist if + the maintenance point is a MHF."; + reference + "Item d) in 12.14.2.1.3 of IEEE Std 802.1Q-2022"; + } + leaf md-id { + when + "../maintenance-point != \"mep\"" { + description + "This should only exist if the configured maintenance point + is a MHF (and not a MEP)."; + } + type leafref { + path + '/dot1q-cfm:cfm'+ + '/dot1q-cfm:maintenance-domain'+ + '/dot1q-cfm:md-id'; + } + description + "The maintenance domain that the MHF is associated with. If + the MHF is created due to an entry in the default-md-levels + list, it has no associated maintenance domain, and therefore + this leaf is not present."; + } + leaf ma-id { + when + "../maintenance-point != \"mep\"" { + description + "This should only exist if the configured maintenance point + is a MHF (and not a MEP), and it has a Maintenance Domain."; + } + type leafref { + path + '/dot1q-cfm:cfm'+ + '/dot1q-cfm:maintenance-domain[dot1q-cfm:md-id = current()'+ + '/..'+ + '/md-id]'+ + '/dot1q-cfm:maintenance-association'+ + '/dot1q-cfm:ma-id'; + } + description + "The maintenance association that the MHF is associated with. + If the MHF is created due to an entry in the default-md-levels + list, it has no associated maintenance association, and + therefore this leaf is not present."; + } + leaf mac-address { + type ieee:mac-address; + mandatory true; + description + "The MAC address of the maintenance point."; + reference + "Item e) in 12.14.2.1.3 of IEEE Std 802.1Q-2022"; + } + leaf maintenance-point { + type cfm-types:mp-type; + mandatory true; + description + "Indicates the type of maintenance point. That is whether a + MEP or MHF."; + reference + "Item a) in 12.14.2.1.3 of IEEE Std 802.1Q-2022"; + } + } + + // cfm-stack + list default-md-level { + key "bridge-id component-id service-selector primary-service-id"; + description + "For each bridge component, the Default MD Level Managed Object + controls MHF creation for VIDs that are not attached to a + specific Maintenance Association Managed Object, and Sender ID + TLV transmission by those MHFs. + + For each Bridge Port, and for each VLAN ID whose data can pass + through that Bridge Port, an entry in this table is used by the + algorithm in subclause 22.2.3 only if there is no entry in the + Maintenance Association table defining an MA for the same VLAN + ID and MD Level as this table's entry, and on which MA an Up MEP + is defined. If there exists such an MA, that MA's objects are + used by the algorithm in subclause 22.2.3 in place of this table + entry objects. + + The agent maintains the value of md-status to indicate whether + this entry is overridden by an MA. When first initialized, the + agent creates this table automatically with entries for all VLAN + IDs, with the default values specified for each object. After + this initialization, the writable objects in this table need to + be persistent upon reboot or restart of a device."; + leaf bridge-id { + type bridge-ref; + description + "The reference to the IEEE 802.1Q Bridge associated with the + CFM objects."; + } + leaf component-id { + type leafref { + path + '/dot1q:bridges'+ + '/dot1q:bridge[dot1q:name = current()'+ + '/..'+ + '/bridge-id]'+ + '/dot1q:component'+ + '/dot1q:name'; + } + description + "The Bridge component within the system to which the + information in this entry applies. If the system is not a + Bridge, or if only one component is present in the Bridge, + then this variable (index) MUST be equal to 1."; + reference + "12.3l of IEEE Std 802.1Q-2022"; + } + leaf service-selector { + type cfm-types:service-selector-type; + description + "The type of the service selector"; + } + leaf primary-service-id { + type cfm-types:service-selector-value-type; + description + "A vid or isid in an I or B component."; + reference + "Item a) in 12.14.3.1.2 of IEEE Std 802.1Q-2022"; + } + container associated-service-ids { + description + "A list of VIDs associated with any MHF on the VID, always + including that VID, or the Backbone-SID of the B-component or + VIP-SID of the I-component associated with any MHF on the + I-SID. The first VID is the MAs Primary VID. + + List is empty if no primary VID specified."; + reference + "Item a) in 12.14.3.1.3 of IEEE Std 802.1Q-2022"; + uses service-id-grouping; + } + leaf md-status { + type boolean; + config false; + mandatory true; + description + "A Boolean value indicating whether this entry is in effect or + has been overridden by the existence of a Maintenance + Association managed object associated with the same VID or + I-SID of I- or B-components and MD Level, and on which is + configured an Up MEP. True if this Maintenance Domain managed + object is in effect."; + reference + "Item b) in 12.14.3.1.3 of IEEE Std 802.1Q-2022"; + } + leaf md-level { + type cfm-types:md-level-type; + mandatory true; + description + "A value indicating the MD Level at which MHFs are to be + created, and Sender ID TLV transmission by those MHFs is to be + controlled, for the VLAN to which this entry's objects apply."; + reference + "Item c) in 12.14.3.1.3, Item b) in 12.14.3.2.2 of IEEE Std + 802.1Q-2022"; + } + leaf mhf-creation { + type cfm-types:mhf-creation-type; + must + ". != \"mhf-defer\"" { + description + "The value can not be mhf-defer. Must be one of mhf-none, + mhf-default, or mfh-explicit."; + } + default "mhf-none"; + description + "An enumerated value indicating whether the management entity + can create MHFs for this VID(s) or I-SID(s) of I- or + B-components."; + reference + "Item d) in 12.14.3.1.3 of IEEE Std 802.1Q-2022"; + } + leaf id-permission { + type cfm-types:sender-id-permission-type; + must + ". != \"send-id-defer\"" { + description + "The value can not be send-id-defer. Must be one of + send-id-none, send-id-chassis, send-id-manage, + send-id-chassis-manage."; + } + default "send-id-none"; + description + "An enumerated value indicating what, if anything, is to be + included in the Sender ID TLV transmitted by MPs configured in + the Default Maintenance Domain."; + reference + "Item e) in 12.14.3.1.3, Item a) in 12.14.3.2.2 of IEEE Std + 802.1Q-2022"; + } + } + + // default-md-level + list config-error { + key "port service-selector service-id"; + config false; + description + "The CFM Configuration Error List table provides a list of + Interfaces and VIDs that are incorrectly configured."; + leaf port { + type port-ref; + description + "The interface index of the interface (i.e., Bridge Port). + + Upon a restart of the system, the system SHALL, if necessary, + change the value of this variable so that it indexes the entry + in the interface table with the same value of the index that + it indexed before the system restart. If no such entry exists, + then the system SHALL delete any entries in config-error-list + indexed by that interface-ref."; + reference + "Item b) in 12.14.4.1.2 of IEEE Std 802.1Q-2022"; + } + leaf service-selector { + type cfm-types:service-selector-type; + description + "The type of the service selector"; + } + leaf service-id { + type cfm-types:service-selector-value-type; + description + "A vid or isid in an I or B component."; + reference + "Item a) in 12.14.4.1.2 of IEEE Std 802.1Q-2022"; + } + leaf error-type { + type cfm-types:config-error-type; + mandatory true; + description + "vector of Boolean error conditions from 22.2.4."; + reference + "Item b) in 12.14.4.1.3 of IEEE Std 802.1Q-2022"; + } + } + } + augment "/dot1q-cfm:cfm/dot1q-cfm:maintenance-group" { + when + "dot1q-cfm:maintenance-group-id"; + description + "Augment the maintenance group list object with the maintenance + association component identifier, since the maintenance + association component is an Bridge specific attributes."; + leaf bridge-id { + type bridge-ref; + description + "The reference to the IEEE 802.1Q Bridge associated with the CFM + objects."; + } + leaf component-name { + when + "../bridge-id"; + type leafref { + path + '/dot1q:bridges'+ + '/dot1q:bridge[dot1q:name = current()'+ + '/..'+ + '/cfm-bridge:bridge-id]'+ + '/dot1q:component'+ + '/dot1q:name'; + } + mandatory true; + description + "A reference to the maintenance association component within the + provided maintenance domain and maintenance association values."; + } + container service-id { + description + "The service identifier grouping."; + uses service-id-grouping; + } + } + augment "/dot1q-cfm:cfm/dot1q-cfm:maintenance-group/dot1q-cfm:mep" { + when + "dot1q-cfm:mep-id"; + description + "Augment the MEP object defined in the ieee802-dot1q-cfm (CFM MEP) + YANG module with Bridge specific attributes."; + leaf port { + type port-ref; + must + "not(/dot1q-cfm:cfm/dot1q-cfm:maintenance-group/cfm-bridge:com"+ + "ponent-name) or /dot1q-cfm:cfm/dot1q-cfm:maintenance-group/cf"+ + "m-bridge:component-name = /if:interfaces/if:interface[current"+ + "() = ./if:name]/dot1q:bridge-port/dot1q:component-name" { + description + "If there is a Bridge Component, then the component of the + port (Interface) reference must be the same as the bridge and + component references by the maintenance association group."; + } + mandatory true; + description + "The interface index of the interface (e.g., Bridge Port) to + which the MEP is attached."; + reference + "Item b) in 12.14.7.1.3 of IEEE Std 802.1Q-2022"; + } + leaf primary-vid { + type leafref { + path '../../service-id/vid/vlan-id'; + } + description + "An integer indicating the Primary VID of the MEP. It is always + one of the VIDs assigned to the MEPs MA. If not present, then + indicates that either the Primary VID is that of the MEPs MA, or + that the MEPs MA is associated with no VID."; + reference + "Item d) in 12.14.7.1.3 of IEEE Std 802.1Q-2022"; + } + } +} diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-cfm-types.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-cfm-types.yang new file mode 100644 index 000000000..dacc52920 --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-cfm-types.yang @@ -0,0 +1,743 @@ +module ieee802-dot1q-cfm-types { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-cfm-types; + prefix cfm-types; + organization + "IEEE 802.1 Working Group"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + description + "Common types used within ieee802-dot1q-cfm modules. + + Copyright (C) IEEE (2022). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + revision 2022-10-29 { + description + "Published as part of IEEE Std 802.1Q-2022."; + reference + "IEEE Std 802.1Q-2022, Bridges and Bridged Networks."; + } + revision 2020-06-04 { + description + "Published as part of IEEE Std 802.1Qcx-2020. Initial version."; + reference + "IEEE Std 802.1Q-2022, Bridges and Bridged Networks."; + } + + /* ------------------------------------------------------ + * Type definitions used by 802.1Qcx YANG module. + * ------------------------------------------------------ + */ + typedef unicast-mac-address-type { + type string { + pattern "[0-9a-fA-F][02468aAcCeE](-[0-9a-fA-F]{2}){5}"; + } + description + "A unicast destination MAC address. The I/G address bit is used to + identify the destination MAC address as an individual MAC address + or a group MAC address. If the I/G address bit is 0, it indicates + that the MAC address field is an individual MAC address. If this + bit is 1, the MAC address is a group MAC address that identifies + one or more (or all) stations connected to the IEEE 802 network"; + } + typedef multicast-class1-mac-address-type { + type string { + pattern "(01-80-C2-00-00-3)[0-7]"; + } + description + "The multicast class 1 MAC address must take the form of + 01-80-C2-00-00-3x, where x represents the MEG level, with x being + a value in the range of 0..7."; + } + typedef mp-type { + type enumeration { + enum mhf { + value 1; + description + "Indicates a MHF."; + } + enum mep { + value 2; + description + "Indicates a MEP."; + } + } + description + "Indicates the type of Maintenance Point."; + } + typedef mhf-creation-type { + type enumeration { + enum mhf-none { + value 1; + description + "No MHFs can be created for designated VID(s) or ISID."; + } + enum mhf-default { + value 2; + description + "MHFs can be created for designated VID(s) or ISID on any + Bridge Port through which the VID(s) or ISID can pass, where: + i) There are no lower active MD levels; or + ii) There is a MEP at the next lower active MD level on the + port."; + } + enum mhf-explicit { + value 3; + description + "MHFs can be created for designated VID(s) or ISID only on + Bridge Ports through which the VID(s) or ISID can pass, and + only if there is a MEP at the next lower active MD level on + the port."; + } + enum mhf-defer { + value 4; + description + "In the Maintenance Association only, the control of MHF + creation is deferred to the corresponding variable in the + enclosing Maintenance Domain."; + } + } + description + "Indicates if the Management Entity can create MHFs."; + } + typedef mp-direction-type { + type enumeration { + enum down { + value 1; + description + "Down maintenance point, where CFM protocol messages are + dispatched away from the MAC Relay entity."; + } + enum up { + value 2; + description + "Up maintenance point, where CFM protocol messages are + dispatched towards the MAC Relay entity."; + } + } + description + "Indicates the direction in which the Maintenance Point (MEP or + MIP) faces on the Bridge Port."; + } + typedef mep-id-type { + type uint16 { + range "1..8191"; + } + description + "Maintenance association End Point Identifier, which is unique + over a given Maintenance Association."; + } + typedef md-level-type { + type uint8 { + range "0..7"; + } + description + "Integer identifying the Maintenance Domain Level (MD Level). + Higher numbers correspond to higher Maintenance Domains, those + with the greatest physical reach, with the highest values for + customers' CFM PDUs. Lower numbers correspond to lower Maintenance + Domains, those with more limited physical reach, with the lowest + values for CFM PDUs protecting single bridges or physical links."; + } + typedef port-status-tlv-value-type { + type enumeration { + enum no-port-state-tlv { + value 0; + description + "Indicates either that no CCM has been received or that no + port status TLV was present in the last CCM received."; + } + enum blocked { + value 1; + description + "Ordinary data cannot pass freely through the port on which + the remote MEP resides."; + } + enum up { + value 2; + description + "Ordinary data can pass freely through the port on which the + remote MEP resides."; + } + } + description + "An enumerated value from the Port Status TLV from the last CCM + received from the last MEP. It indicates the ability of the Bridge + Port on which the transmitting MEP resides to pass ordinary data, + regardless of the status of the MAC."; + } + typedef interface-status-tlv-value-type { + type enumeration { + enum no-interface-status-tlv { + value 0; + description + "Indicates either that no CCM has been received or that no + interface status TLV was present in the last CCM received."; + } + enum up { + value 1; + description + "The interface is ready to pass frames."; + } + enum down { + value 2; + description + "The interface can not pass frames."; + } + enum testing { + value 3; + description + "The interface is in some test mode."; + } + enum unknown { + value 4; + description + "The interface status cannot be determined for some reason."; + } + enum dormant { + value 5; + description + "The interface is not in a state to pass frames but is in a + pending state, waiting for some external event."; + } + enum not-present { + value 6; + description + "Some component of the interface is missing."; + } + enum lower-layer-down { + value 7; + description + "The interface is down due to state of the lower layer + interface."; + } + } + description + "An enumerated value from the Interface Status TLV from the last + CCM received from the last MEP. It indicates the status of the + Interface within which the MEP transmitting the CCM is configured, + or the next lower Interface in the Interface Stack, if the MEP is + not configured within an Interface."; + } + typedef highest-defect-priority-type { + type enumeration { + enum none { + value 0; + description + "No defects since Fault Notification Generator state machine + reset."; + } + enum def-rdi-ccm { + value 1; + description + "The last CCM received by this MEP from some remote MEP + contained the RDI bit set."; + } + enum def-mac-status { + value 2; + description + "The last CCM received by this MEP from some remote MEP + indicating that the transmitting MEP's associated MAC is + reporting its status via the Port Status TLV or Interface + Status TLV."; + } + enum def-remote-ccm { + value 3; + description + "This MEP is not receiving CCMs from some other MEP in its + configured list."; + } + enum def-error-ccm { + value 4; + description + "This MEP is receiving invalid CCMs."; + } + enum def-xcon-ccm { + value 5; + description + "This MEP is receiving CCMs that could be from some other MA."; + } + } + description + "An enumerated value, equal to the contents of the variable + highestDefect (20.35.9 and Table 20-1), indicating the + highest-priority defect that has been present since the MEP Fault + Notification Generator State Machine was last in the FNG_RESET + state. The integer value assigned to the enum value determines the + priority. The higher value corresponds to the higher priority."; + } + typedef lowest-alarm-priority-type { + type enumeration { + enum all-def { + value 1; + description + "Includes def-rdi-ccm, def-mac-status, def-remote-ccm, + def-error-ccm, and def-xcon-ccm."; + } + enum mac-remote-error-xcon { + value 2; + description + "Only includes def-mac-status, def-remote-ccm, def-error-ccm, + and def-xcon-ccm."; + } + enum remote-error-xcon { + value 3; + description + "Includes def-remote-ccm, def-error-ccm, and def-xcon-ccm."; + } + enum error-xcon { + value 4; + description + "Includes def-error-ccm and def-xcon-ccm."; + } + enum xcon { + value 5; + description + "Only def-xcon-ccm"; + } + enum no-xcon { + value 6; + description + "No defects def-xcon or lower are to be reported."; + } + } + description + "Specifies the lowest priority defect that is allowed to generate + a Fault Alarm (20.9.5). The to be reported defects are identified + per enum value."; + } + typedef sender-id-permission-type { + type enumeration { + enum send-id-none { + value 1; + description + "The Sender ID TLV is not to be sent."; + } + enum send-id-chassis { + value 2; + description + "The Chassis ID Length, Chassis ID Subtype, and Chassis ID + fields of the Sender ID TLV are to be sent."; + } + enum send-id-manage { + value 3; + description + "The Management Address Length and Management Address of the + Sender ID TLV are to be sent."; + } + enum send-id-chassis-manage { + value 4; + description + "The Chassis ID Length, Chassis ID Subtype, Chassis ID, + Management Address Length and Management Address fields are + all to be sent."; + } + enum send-id-defer { + value 5; + description + "The content of the Sender ID TLV are determined by the + corresponding Maintenance Domain variable."; + } + } + description + "Indicates what, if anything, is to be included in the Sender ID + TLV transmitted in CCMs, LBMs, LTMs, and LTRs."; + } + typedef ccm-interval-type { + type enumeration { + enum 300hz { + value 1; + description + "CCM PDUs are sent every 3 1/3 milliseconds (300Hz)."; + } + enum 10ms { + value 2; + description + "CCM PDUs are sent every 10 milliseconds."; + } + enum 100ms { + value 3; + description + "CCM PDUs are sent every 100 milliseconds."; + } + enum 1sec { + value 4; + description + "CCM PDUs are sent every second."; + } + enum 10sec { + value 5; + description + "CCM PDUs are sent every 10 seconds."; + } + enum 1min { + value 6; + description + "CCM PDUs are sent every minute."; + } + enum 10min { + value 7; + description + "CCM PDUs are sent every 10 minutes."; + } + } + description + "Indicates the interval at which CCM PDUs are sent by a MEP."; + } + typedef fng-state-type { + type enumeration { + enum fng-reset { + value 1; + description + "No defect has been present since the MEP's fng-reset-time + timer expired, or since the state machine was last reset."; + } + enum fng-defect { + value 2; + description + "A defect is present, but not for a long enough time to be + reported."; + } + enum fng-report-defect { + value 3; + description + "A momentary state during which the defect is reported by + sending a fault-alarm notification, if that action is enabled."; + } + enum fng-defect-reported { + value 4; + description + "A defect is present, and some defect has been reported."; + } + enum fng-defect-clearing { + value 5; + description + "No defect is present, but the MEP's fng-reset-time timer has + not yet expired."; + } + } + description + "Indicates the different states of the MEP Fault Notification + Generator State Machine."; + } + typedef relay-action-field-value-type { + type enumeration { + enum relay-hit { + value 1; + description + "The LTM reached a Maintenance Point whose MAC address matches + the target address."; + } + enum relay-fdb { + value 2; + description + "The Egress Port was determined by consulting the Filtering + Database."; + } + enum relay-mpdb { + value 3; + description + "The Egress Port was determined by consulting the MIP CCM + Database."; + } + } + description + "Possible values the Relay action field can take."; + } + typedef ingress-action-field-value-type { + type enumeration { + enum ingress-ok { + value 1; + description + "The target data frame would be passed through to the MAC + Relay Entity."; + } + enum ingress-down { + value 2; + description + "The Bridge Ports MAC_Operational parameter is false."; + } + enum ingress-blocked { + value 3; + description + "The target data frame would not be forwarded if received on + this Port due to active topology enforcement."; + } + enum ingress-vid { + value 4; + description + "The ingress port is not in the member set of the LTMs VID, + and ingress filtering is enabled, so the target data frame + would be filtered by ingress filtering."; + } + } + description + "Possible values returned in the ingress action field."; + } + typedef egress-action-field-value-type { + type enumeration { + enum egress-okay { + value 1; + description + "The targeted data frame would be forwarded."; + } + enum egress-down { + value 2; + description + "The Egress Port can be identified, but that Bridge Port + MAC_Operational parameter is false."; + } + enum egress-blocked { + value 3; + description + "The Egress Port can be identified, but the data frame would + not pass through the Egress Port due to active topology + management (i.e., the Bridge Port is not in the Forwarding + state."; + } + enum egress-vid { + value 4; + description + "The Egress Port can be identified, but the Bridge Port is not + in the LTMs VIDs member set, so would be filtered by egress + filtering."; + } + } + description + "Possible values returned in the egress action field."; + } + typedef remote-mep-state-type { + type enumeration { + enum rmep-idle { + value 1; + description + "Momentary state during reset."; + } + enum rmep-start { + value 2; + description + "The timer has not expired since the state machine was reset, + and no valid CCM has yet been received."; + } + enum rmep-failed { + value 3; + description + "The timer has expired, both since the state machine was + reset, and since a valid CCM was received."; + } + enum rmep-ok { + value 4; + description + "The timer has not expired since a valid CCM was received."; + } + } + description + "Operational state of the remote MEP state machine. This state + machine monitors the reception of valid CCMs from a remote MEP + with a specific MEPID. It uses a timer that expires in 3.5 times + the length of time indicated by the MA's ccm-interval object."; + } + typedef mep-defects-type { + type bits { + bit def-rdi-ccm { + position 0; + description + "A remote MEP reported that RDI bit in its last CCM."; + } + bit def-mac-status { + position 1; + description + "Either some remote MEP is reporting its Interface Status TLV + as not isUp, or all remote MEPs are reporting a Port Status + TLV that contains some value other than psUp."; + } + bit def-remote-ccm { + position 2; + description + "The MEP is not receiving valid CCMs from at least one of the + remote MEPs."; + } + bit def-error-ccm { + position 3; + description + "The MEP has received at least one invalid CCM whose CCM + Interval has not yet timed out."; + } + bit def-xcon-ccm { + position 4; + description + "The MEP has received at last one CCM from either another MAID + or a lower MD level whose CCM Interval has not yet timed out."; + } + } + description + "A MEP can detect and report a number of defects, and multiple + defects can be present at the same time."; + } + typedef config-error-type { + type bits { + bit cfm-leak { + position 0; + description + "MA x is associated with a specific VID list, one or more of + the VIDs in MA x can pass through the Bridge Port, no Down MEP + is configured on any Bridge Port for MA x, and some other MA + y, at a higher MD Level than MA x, and associated with at + least one of the VID(s) also in MA x, does have a MEP + configured on the Bridge Port."; + } + bit conflicting-vids { + position 1; + description + "MA x is associated with a specific VID list, an Up MEP is + configured on MA x on the Bridge Port, and some other MA y, + associated with at least one of the VID(s) also in MA x, also + has an Up MEP configured on some Bridge Port."; + } + bit excessive-levels { + position 2; + description + "The number of different MD Levels at which MIPs are to be + created on this port exceeds the Bridge's capabilities."; + } + bit overlapped-levels { + position 3; + description + "A MEP is created for one VID at one MD Level, but a MEP is + configured on another VID at that MD Level or higher, + exceeding the Bridge's capabilities."; + } + } + description + "While making the MIP creation evaluation described in 22.2.3, the + management entity can encounter errors in the configuration."; + } + typedef mep-tx-ltm-flags-type { + type bits { + bit use-fdb-only { + position 1; + description + "Use FDB only"; + } + } + description + "The flags field for LTMs transmitted by the MEP."; + } + typedef fault-alarm-type { + type enumeration { + enum address { + value 1; + description + "Indicates that a Network address to which Fault Alarms are to + be transmitted should be used."; + } + enum not-transmitted { + value 2; + description + "Indicates that Fault alarms are not to be transmitted."; + } + } + description + "The Fault Alarm indicators."; + } + typedef lbm-data-tlv-type { + type binary { + length "1..1480"; + } + description + "The loopback message Data TLV type."; + } + typedef name-key-type { + type string { + length "1..255"; + pattern '[0-9a-zA-Z\-_.]*'; + } + description + "String type with at least 1 and up to 255 of the specified + characters."; + } + typedef seq-number-type { + type uint32 { + range "0..4294967295"; + } + description + "The transaction identifier or sequence number of the CFM PDU."; + } + typedef service-selector-type { + type enumeration { + enum ieee-reserved-0 { + value 0; + description + "Reserved for definition by IEEE 802.1."; + } + enum vlan-id { + value 1; + description + "12-bit identifier found in a VLAN tag."; + } + enum isid { + value 2; + description + "24-bit identifier found in an I-TAG."; + } + enum tesid { + value 3; + description + "32-bit identifier"; + } + enum segid { + value 4; + description + "32-bit identifier"; + } + enum path-tesid { + value 5; + description + "32-bit identifier"; + } + enum group-isid { + value 6; + description + "24 bit identifier"; + } + enum ieee-reserved { + value 7; + description + "Reserved for definition by IEEE 802.1"; + } + } + default "vlan-id"; + description + "A value that represents a type (and thereby the format) of a + service-selector-value."; + } + typedef service-selector-value-type { + type uint32 { + range "1..4294967295"; + } + description + "An integer that uniquely identifies a generic MAC Service, or + none. Examples of service selectors are a VLAN-ID and an I-SID. A + service-selector-value value is always interpreted within the + context of a service-selector-type value. Every usage of the + service-selector-value textual convention is required to specify + the service-selector-type object that provides the context. The + value of a service-selector-value object must always be consistent + with the value of the associated service-selector-type object. + Attempts to set a service-selector-value object to a value + inconsistent with the associated service-selector-type must fail + with an inconsistent-value error."; + } +} diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-cfm.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-cfm.yang new file mode 100644 index 000000000..c83d4819c --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-cfm.yang @@ -0,0 +1,1317 @@ +module ieee802-dot1q-cfm { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-cfm; + prefix dot1q-cfm; + import ieee802-dot1q-cfm-types { + prefix cfm-types; + } + import ieee802-dot1q-types { + prefix dot1q-types; + } + import ieee802-types { + prefix ieee; + } + import ietf-yang-types { + prefix yang; + } + import ietf-inet-types { + prefix inet; + } + organization + "IEEE 802.1 Working Group"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + description + "Connectivity Fault Management (CFM) comprises capabilities for + detecting, verifying, and isolating connectivity failures in Virtual + Bridged Local Area Networks. These capabilities can be used in + networks operated by multiple independent organizations, each with + restricted management access to each other's equipment. + + Copyright (C) IEEE (2022). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + revision 2022-01-19 { + description + "Published as part of IEEE Std 802.1Q-2022."; + reference + "IEEE Std 802.1Q-2022, Bridges and Bridged Networks."; + } + revision 2020-06-04 { + description + "Published as part of IEEE Std 802.1Qcx-2020. Initial version."; + reference + "IEEE Std 802.1Qcx-2020, Bridges and Bridged Networks - YANG Data + Model for Connectivity Fault Management."; + } + + /* ------------------------------------------------- + * Grouping definitions used by 802.1Qcx YANG module + * ------------------------------------------------- + */ + grouping mac-address-and-uint-type-grouping { + description + "The MAC address and uint type grouping."; + container mac-address-and-uint-type { + description + "The MAC address and uint type definition."; + leaf address { + type ieee:mac-address; + mandatory true; + description + "The MAC address."; + } + leaf int { + type uint16; + mandatory true; + description + "The additional 2-octet (unsigned) integer."; + } + } + } + grouping md-name-choice-grouping { + description + "The Maintenance Domain name and name format choice."; + choice md-name { + default "char-string"; + description + "The Maintenance Domain name type."; + case none { + leaf none { + type empty; + description + "No format specified, usually because there is not a + Maintenance Domain Name. The Maintenance Domain name + inserted in CFM protocol messages will be a zero length + OCTET string."; + } + } + case dns-like-name { + leaf dns-like-name { + type string { + length "1..43"; + } + description + "Domain name like string, globally unique text string + derived from a DNS name."; + } + } + case mac-address-and-uint { + description + "MAC address plus 2-octet (unsigned) integer."; + uses mac-address-and-uint-type-grouping; + } + case char-string { + leaf char-string { + type string { + length "1..43"; + pattern "[ -~]*"; + } + default "DEFAULT"; + description + "RFC2579 DisplayString, except that the character codes 0-31 + (decimal) are not used."; + } + } + } + } + grouping ma-name-choice-grouping { + description + "The Maintenance Association name and name format choice."; + choice ma-name { + mandatory true; + description + "The Maintenance Association name type."; + case primary-vid { + leaf primary-vid { + type dot1q-types:vlanid; + description + "Primary VLAN ID. 12 bits represented in a 2-octet integer."; + } + } + case char-string { + leaf char-string { + type string { + length "1..45"; + pattern "[ -~]*"; + } + description + "RFC2579 DisplayString, except that the character codes 0-31 + (decimal) are not used."; + } + } + case unsigned-int16 { + leaf unsigned-int16 { + type uint16; + description + "2-octet integer."; + } + } + case rfc2865-vpn-id { + container vpn-id { + description + "RFC2685 VPN ID. 3 octet VPN authority Organizationally + Unique Identifier followed by 4 octet VPN index identifying + VPN according to the OUI."; + leaf vpn-oui { + type uint32 { + range "0..16777215"; + } + mandatory true; + description + "3 octet VPN authority Organizationally Unique Identifier."; + } + leaf vpn-index { + type uint32; + mandatory true; + description + "4 octet VPN index identifying VPN according to OUI."; + } + } + } + } + } + grouping management-address-grouping { + description + "Defines the Management Address."; + reference + "21.5.3.5 of IEEE Std 802.1Q-2022"; + leaf domain { + type yang:object-identifier-128; + description + "The domain type."; + } + choice management-address { + when + "./domain"; + mandatory true; + description + "Selects the management address"; + case ip { + description + "Represents an IP TCP, UDP, or SCTP transport address + consisting of an IPv4/v6 address, and a port number, + associated with the domain type defined by the domain leaf + node."; + leaf ip-address { + type inet:ip-address; + mandatory true; + description + "IPv4 or IPv6 address."; + } + leaf ip-port { + type inet:port-number; + mandatory true; + description + "IP port."; + } + } + case local { + leaf local-address { + type string { + length "1..255"; + } + mandatory true; + description + "Represents a POSIX Local IPC transport address, associated + with the domain type defined by the domain leaf node."; + } + } + case dns { + leaf dns-address { + type string { + length "1..255"; + } + mandatory true; + description + "The transport domain using fully qualified domain names, + associated with the domain type defined by the domain leaf + node. Represents a DNS domain name followed by a colon ':' + (ASCII character 0x3A) and a port number in ASCII. The name + SHOULD be fully qualified whenever possible."; + } + } + case other { + leaf unknown-address { + type binary { + length "1..255"; + } + description + "This represents an undefined address, for the case when the + domain type provided is an unrecognizable value."; + } + } + } + } + grouping loopback-input-grouping { + description + "Defines the group of loopback input parameters."; + choice lbm-destination { + mandatory true; + description + "Selects the destination type (which is either MEP identifier or + MAC address) used for the Loopback transmissions."; + case dest-ucast-mac-address { + description + "The target unicast MAC Address field to be transmitted. A + unicast destination MAC address."; + leaf lbm-dest-ucast-mac-address { + type cfm-types:unicast-mac-address-type; + description + "The target MAC Address field to be transmitted. A unicast + destination MAC address."; + reference + "Item b) in 12.14.7.3.2 of IEEE Std 802.1Q-2022"; + } + } + case dest-mcast-class1-mac-address { + description + "The target multicast Class 1 MAC address field to be + transmitted."; + leaf lbm-dest-mcast-class1-mac-address { + type cfm-types:multicast-class1-mac-address-type; + description + "The target multicast Class 1 MAC address field to be + transmitted"; + } + } + case dest-mep-id { + description + "The identifier of a remote MEP in the same MA to which the + LBM is to be sent."; + leaf lbm-dest-mep-id { + type cfm-types:mep-id-type; + description + "The identifier of a remote MEP in the same MA to which the + LBM is to be sent."; + reference + "Item b) in 12.14.7.3.2 of IEEE Std 802.1Q-2022"; + } + } + } + leaf lbm-messages { + type uint16 { + range "1..1024"; + } + default "1"; + description + "The number of Loopback messages to be transmitted."; + reference + "Item c) in 12.14.7.3.2 of IEEE Std 802.1Q-2022"; + } + leaf lbm-priority { + type dot1q-types:priority-type; + default "7"; + description + "Priority. 3 bit value to be used in the VLAN tag, if present in + the transmitted frame. The default value should be priority 7, + which is the default CCM priority (ccm-ltm-priority)."; + reference + "Item e) in 12.14.7.3.2 of IEEE Std 802.1Q-2022"; + } + leaf lbm-drop-eligible { + type boolean; + default "false"; + description + "Drop eligible bit value to be used in the VLAN tag, if present + in the transmitted frame. A value 'true' means inserting value + '1' in the DEI field, while a value 'false' means inserting + value '0' in the DEI field."; + reference + "Item e) in 12.14.7.3.2 of IEEE Std 802.1Q-2022"; + } + leaf lbm-data-tlv { + type cfm-types:lbm-data-tlv-type; + description + "An arbitrary amount of data to be included in the Data TLV, if + the Data TLV is selected to be sent."; + reference + "Item d) in 12.14.7.3.2 of IEEE Std 802.1Q-2022"; + } + } + grouping linktrace-input-grouping { + description + "Defines the group of linktrace input parameters. By default, the + priority used is that of the CCMs (ccm-ltm-priority) and the drop + eligibility is false."; + choice ltr-target { + mandatory true; + description + "Selects the target address type (which is either MEP identifier + or MAC address) used for the Linktrace transmissions."; + case target-ucast-mac-address { + description + "The target MAC address field to be transmitted. A unicast MAC + address."; + leaf ltm-target-mac-address { + type cfm-types:unicast-mac-address-type; + description + "The target MAC address field to be transmitted. A unicast + MAC address."; + reference + "Item c) in 12.14.7.4.2 of IEEE Std 802.1Q-2022"; + } + } + case target-mep-id { + description + "The MEP identifier of another MEP in the same MA."; + leaf ltm-target-mep-id { + type cfm-types:mep-id-type; + description + "The MEP identifier of another MEP in the same MA."; + reference + "Item c) in 12.14.7.4.2 of IEEE Std 802.1Q-2022"; + } + } + } + leaf ltm-ttl { + type uint8 { + range "0..255"; + } + default "64"; + description + "The LTM TTL field. Indicates the number of hops remaining to + the LTM. Decremented by 1 by each Linktrace Responder that + handles the LTM. The value returned in the LTR is one less than + that received in the LTM. If the LTM TTL is 0 or 1, the LTM is + not forwarded to the next hop, and if 0, no LTR is generated."; + reference + "Item d) in 12.14.7.4.2, 21.8.4 of IEEE Std 802.1Q-2022"; + } + leaf ltm-flags { + type cfm-types:mep-tx-ltm-flags-type; + default ""; + description + "The flags field for the LTMs transmitted by the MEP."; + reference + "Item b) in 12.14.7.4.2, 20.42.1 of IEEE Std 802.1Q-2022"; + } + } + grouping ltm-egress-identifier-grouping { + description + "The grouping used to identify the MEP Linktrace initiator that is + originating the LTM. It defines the MAC address and uint type + definition."; + leaf int { + type uint16; + mandatory true; + description + "A value used to uniquely identify the MEP Linktrace Initiator + or Linktrace Responder within that system."; + } + leaf address { + type ieee:mac-address; + mandatory true; + description + "A 48-bit IEEE MAC address unique to the system in which the MEP + Linktrace Initiator or Linktrace Responder resides."; + } + } + + /* --------------------------------------------------- + * Configuration objects used by 802.1Qcx YANG module + * --------------------------------------------------- + */ + container cfm { + description + "Connectivity Fault Management configuration and operational + information."; + list maintenance-domain { + key "md-id"; + description + "Contains the Maintenance Domain configuration and operational + data. A Maintenance Domain is the network or the part of the + network for which faults in connectivity can be managed. The + boundary of a Maintenance Domain is defined by a set of Domain + Service Access Points (DoSAPs), each of which can become a point + of connectivity to a service instance."; + leaf md-id { + type cfm-types:name-key-type; + description + "The index to the Maintenance Domain list."; + } + uses md-name-choice-grouping; + leaf md-level { + type cfm-types:md-level-type; + default "0"; + description + "The Maintenance Domain level."; + reference + "3.123, Item b) in 12.14.5.1.3 of IEEE Std 802.1Q-2022"; + } + leaf mhf-creation { + type cfm-types:mhf-creation-type; + must + ". != 'mhf-defer'" { + description + "The value mhf-defer is not allowed"; + } + default "mhf-none"; + description + "Value indicating whether the management entity can create + MHFs (MIP Half Function) for this Maintenance Domain. Since + there is no encompassing Maintenance Domain, the value + mhf-defer is not allowed."; + reference + "3.123, Item c) in 12.14.5.1.3 of IEEE Std 802.1Q-2022"; + } + leaf id-permission { + type cfm-types:sender-id-permission-type; + must + ". != 'send-id-defer'" { + description + "The value send-id-defer is not allowed"; + } + default "send-id-none"; + description + "Value indicating what, if anything, is to be included in the + Sender ID TLV transmitted by Maintenance Points configured in + this Maintenance Domain. Since there is no encompassing + Maintenance Domain, the value send-id-defer is not allowed."; + reference + "3.123, item d) in 12.14.5.1.3 of IEEE Std 802.1Q-2022"; + } + leaf fault-alarm-transmission { + type cfm-types:fault-alarm-type; + default "not-transmitted"; + description + "A value indicating whether Fault Alarms are to be transmitted + or not. The default is not transmit."; + reference + "3.123, item e) in 12.14.5.1.3 of IEEE Std 802.1Q-2022"; + } + list maintenance-association { + key "ma-id"; + description + "Provides configuration and operational data for the + Maintenance Associations. A Maintenance Association is a set + of MEPs, each configured with the same MAID and MD level, + established to verify the integrity of a single service + instance. A Maintenance Association can be thought of as a + full mesh of Maintenance Entities among a set of MEPs so + configured."; + leaf ma-id { + type cfm-types:name-key-type; + description + "Key of the Maintenance Association list of entries."; + } + uses ma-name-choice-grouping; + leaf ccm-interval { + type cfm-types:ccm-interval-type; + default "1sec"; + description + "The interval between CCM transmissions to be used by all + MEPs in the Maintenance Association."; + reference + "Item e) in 12.14.6.1.3 of IEEE Std 802.1Q-2022"; + } + leaf fault-alarm-transmission { + type cfm-types:fault-alarm-type; + description + "A value indicating whether Fault Alarms are to be + transmitted or not. If this leaf node is not present then + the disposition of the fault-alarm used by the MD should be + used."; + reference + "3.123, Item e) in 12.14.5.1.3 of IEEE Std 802.1Q-2022"; + } + leaf mhf-creation { + type cfm-types:mhf-creation-type; + default "mhf-defer"; + description + "Value indicating whether the management entity can create + MHFs (MIP Half Function) for this Maintenance Association."; + reference + "3.123, Item c) in 12.14.5.1.3 of IEEE Std 802.1Q-2022"; + } + leaf id-permission { + type cfm-types:sender-id-permission-type; + default "send-id-defer"; + description + "Enumerated value indicating what, if anything, is to be + included in the Sender ID TLV (21.5.3) transmitted by MPs + configured in this MA."; + reference + "Item d) in 12.14.3.1.3 of IEEE Std 802.1Q-2022"; + } + list maintenance-association-mep { + key "mep-id"; + description + "The list of all MEPs that belong to this Maintenance + Association."; + leaf mep-id { + type cfm-types:mep-id-type; + description + "Integer that is unique among all the MEPs in the same + Maintenance Association."; + reference + "Item g) in 12.14.6.1.3 of IEEE Std 802.1Q-2022"; + } + } + } + } + + // maintenance-domain + list maintenance-group { + key "maintenance-group-id"; + description + "The list of maintenance association groups, which are uniquely + associated with a maintenance domain, maintenance association, + for which the MEPs belong."; + leaf maintenance-group-id { + type cfm-types:name-key-type; + description + "The maintenance group provides a handle for the MD and MA + combination."; + } + leaf md-id { + type leafref { + path '/cfm/maintenance-domain/md-id'; + } + mandatory true; + description + "A reference to the maintenance domain that this maintenance + group is associated with."; + } + leaf ma-id { + type leafref { + path + '/cfm'+ + '/maintenance-domain[md-id = current()'+ + '/..'+ + '/md-id]'+ + '/maintenance-association'+ + '/ma-id'; + } + mandatory true; + description + "A reference to the maintenance association in the specified + maintenance domain, that this maintenance group is associated + with."; + } + list mep { + key "mep-id"; + description + "A list of local Maintenance association End Points (MEPs). A + MEP is an actively managed CFM entity, associated with a + specific DoSAP of a service instance, which can generate and + receive CFM PDUs and track any responses. It is an end point + of a single Maintenance Association (MA) and is an end point + of a separate Maintenance Entity for each of the other MEPs in + the same MA."; + leaf mep-id { + type leafref { + path + '/cfm'+ + '/maintenance-domain[md-id = current()'+ + '/..'+ + '/..'+ + '/md-id]'+ + '/maintenance-association[ma-id = current()'+ + '/..'+ + '/..'+ + '/ma-id]'+ + '/maintenance-association-mep'+ + '/mep-id'; + } + description + "Integer that is unique among all the MEPs in the same + Maintenance Association."; + reference + "12.14.7, 19.2 of IEEE Std 802.1Q-2022"; + } + leaf direction { + type cfm-types:mp-direction-type; + mandatory true; + description + "The direction in which the MEP faces on the Bridge Port. + Example, up or down."; + reference + "Item c) in 12.14.7.1.3, 19.2 of IEEE Std 802.1Q-2022"; + } + leaf enabled { + type boolean; + default "false"; + description + "The administrative state of the MEP. TRUE indicates that + the MEP is to functional normally, and FALSE indicates that + it is to cease functioning."; + reference + "Item e) in 12.14.7.1.3, 20.9.1 of IEEE Std 802.1Q-2022"; + } + leaf ccm-ltm-priority { + type dot1q-types:priority-type; + default "7"; + description + "The priority value for CCMs and LTMs transmitted by the + MEP. The default value is the highest priority allowed to + pass through the Bridge Port for any of the MEPs VID(s)."; + reference + "Item h) in 12.14.7.1.3 of IEEE Std 802.1Q-2022"; + } + leaf mac-address { + type ieee:mac-address; + config false; + mandatory true; + description + "The MAC address of the MEP."; + reference + "Item i) in 12.14.7.1.3, 19.4 of IEEE Std 802.1Q-2022"; + } + list inactive-remote-mep { + key "inactive-rmep-id"; + description + "A list indicating which of the remote MEPs in the same MA + are inactive. The Remote MEP state machines (20.20) are + instantiated only for the remote MEPs which are present in + the maintenance-association-mep-list, but not in this list. + By default, all configured remote MEPs in the same MA are + active"; + leaf inactive-rmep-id { + type leafref { + path + '/cfm'+ + '/maintenance-domain[md-id = current()'+ + '/..'+ + '/..'+ + '/..'+ + '/md-id]'+ + '/maintenance-association[ma-id = current()'+ + '/..'+ + '/..'+ + '/..'+ + '/ma-id]'+ + '/maintenance-association-mep'+ + '/mep-id'; + } + description + "Maintenance association Endpoint Identifier of a remote + MEP for which the Remote MEP state machine should not be + instantiated."; + reference + "Item ae) in 12.14.7.1.3 of IEEE Std 802.1Q-2022"; + } + } + + //inactive-remote-mep + list mep-db { + key "rmep-id"; + config false; + description + "The MEP CCM Database. A database, maintained by every MEP, + that maintains received information about other MEPs in the + Maintenance Association."; + leaf rmep-id { + type cfm-types:mep-id-type; + description + "Maintenance association Endpoint Identifier of a remote + MEP whose information from the MEP Database is to be + returned."; + reference + "Item b) in 12.14.7.6.2 of IEEE Std 802.1Q-2022"; + } + leaf rmep-state { + type cfm-types:remote-mep-state-type; + mandatory true; + description + "The operational state of the remote MEP state machine"; + reference + "Item b) in 12.14.7.6.3, 20.20 of IEEE Std 802.1Q-2022"; + } + leaf rmep-failed-ok-time { + type yang:timeticks; + mandatory true; + description + "The time (SysUpTime) at which the Remote MEP state + machine last entered either the RMEP_FAILED or RMEP_OK + state"; + reference + "Item c) in 12.14.7.6.3 of IEEE Std 802.1Q-2022"; + } + leaf mac-address { + type ieee:mac-address; + mandatory true; + description + "The MAC address of the remote MEP."; + reference + "Item d) in 12.14.7.6.3, 20.19.7 of IEEE Std 802.1Q-2022"; + } + leaf rdi { + type boolean; + mandatory true; + description + "State of the RDI bit in the last received CCM (true for + RDI=1), or false if none has been received."; + reference + "Item e) in 12.14.7.6.3, 20.19.2 of IEEE Std 802.1Q-2022"; + } + leaf port-status-tlv { + type cfm-types:port-status-tlv-value-type; + description + "An enumerated value of the Port status TLV received in + the last CCM from the remote MEP or the default value + no-port-state-tlv indicating either no CCM has been + received, or that no port status TLV was received in the + last CCM."; + reference + "Item f) in 12.14.7.6.3, 20.19.3 of IEEE Std 802.1Q-2022"; + } + leaf interface-status-tlv { + type cfm-types:interface-status-tlv-value-type; + description + "An enumerated value of the Interface status TLV received + in the last CCM from the remote MEP or the default value + is-no-interface-status-tlv indicating either no CCM has + been received, or that no interface status TLV was + received in the last CCM."; + reference + "Item g) in 12.14.7.6.3, 20.19.4 of IEEE Std 802.1Q-2022"; + } + leaf chassis-id-subtype { + type ieee:chassis-id-subtype-type; + description + "This object specifies the format of the Chassis ID + received in the last CCM."; + reference + "Item h) in 12.14.7.6.3, 21.5.3.2 of IEEE Std 802.1Q-2022"; + } + leaf chassis-id { + type ieee:chassis-id-type; + description + "The Chassis ID. The format of this object is determined + by the value of the ltr-chassis-id-subtype object."; + reference + "Item h) in 12.14.7.6.3, 21.5.3.3 of IEEE Std 802.1Q-2022"; + } + container transport-service-domain { + description + "The transport management domain and address."; + reference + "Item h) in 12.14.7.6.3 of IEEE Std 802.1Q-2022"; + uses management-address-grouping; + } + leaf rmep-is-active { + type boolean; + default "true"; + description + "A Boolean value stating if the remote MEP is active."; + reference + "Item ae) in 12.14.7.1.3 of IEEE Std 802.1Q-2022"; + } + } + + // mep-db + container continuity-check { + description + "Continuity check protocol"; + leaf ccm-enabled { + type boolean; + default "false"; + description + "Indicates whether the MEP can generate CCMs. If TRUE, the + MEP will generate CCM PDUs."; + reference + "Item g) in 12.14.7.1.3, 20.10.1 of IEEE Std 802.1Q-2022"; + } + leaf fng-state { + type cfm-types:fng-state-type; + default "fng-reset"; + config false; + description + "The current state of the MEP Fault Notification Generator + state machine."; + reference + "Item f) in 12.14.7.1.3, 20.35 of IEEE Std 802.1Q-2022"; + } + leaf fault-alarm-transmission { + type cfm-types:fault-alarm-type; + description + "A value indicating whether Fault Alarms are to be + transmitted or not. If this leaf is not specified, the + disposition of the fault-alarm used by the MD should be + used."; + reference + "3.124, Item j) in 12.14.7.1.3 of IEEE Std 802.1Q-2022"; + } + leaf lowest-priority-defect { + type cfm-types:lowest-alarm-priority-type; + default "mac-remote-error-xcon"; + description + "The lowest priority defect that is allowed to generate + fault alarms."; + reference + "Item k) in 12.14.7.1.3, 20.9.5 of IEEE Std 802.1Q-2022"; + } + leaf fng-alarm-time { + type uint16 { + range "2500..10000"; + } + units "milliseconds"; + default "2500"; + description + "The time that defect must be present before a Fault Alarm + is issued."; + reference + "Item l) in 12.14.7.1.3, 20.35.3 of IEEE Std 802.1Q-2022"; + } + leaf fng-reset-time { + type uint16 { + range "2500..10000"; + } + units "milliseconds"; + default "10000"; + description + "The time that defects must be absent before resetting a + Fault Alarm."; + reference + "Item m) in 12.14.7.1.3, 20.35.4 of IEEE Std 802.1Q-2022"; + } + leaf highest-priority-defect { + type cfm-types:highest-defect-priority-type; + config false; + mandatory true; + description + "The highest priority defect that has been present since + the MEPs Fault Notification Generator state machine was + last in the FNG_RESET state."; + reference + "Item n) in 12.14.7.1.3, 20.35.9 of IEEE Std 802.1Q-2022"; + } + leaf defects { + type cfm-types:mep-defects-type; + config false; + mandatory true; + description + "Vector of boolean error conditions"; + reference + "12.14.7.1.3 of IEEE Std 802.1Q-2022"; + } + leaf error-ccm-last-failure { + type binary { + length "1..128"; + } + config false; + description + "The last received CCM that triggered a def-error-ccm + fault."; + reference + "Item t) in 12.14.7.1.3, 20.21.2 of IEEE Std 802.1Q-2022"; + } + leaf xcon-ccm-last-failure { + type binary { + length "1..128"; + } + config false; + description + "The last received CCM that triggered a def-xcon-ccm + fault."; + reference + "Item u) in 12.14.7.1.3, 20.23.2 of IEEE Std 802.1Q-2022"; + } + } + + // continuity-check + container stats { + config false; + description + "Contains the counters associated with the MEP."; + leaf mep-ccm-sequence-errors { + type yang:counter64; + mandatory true; + description + "The total number of out-of-sequence CCMs received from + all remote MEPs."; + reference + "Item v) in 12.14.7.1.3, 20.16.12 of IEEE Std 802.1Q-2022"; + } + leaf mep-ccms-sent { + type yang:counter64; + mandatory true; + description + "Total number of CCMs transmitted"; + reference + "Item w) in 12.14.7.1.3, 20.10.2 of IEEE Std 802.1Q-2022"; + } + leaf mep-lbr-in { + type yang:counter64; + mandatory true; + description + "Total number of valid, in-order Loopback Replies + received."; + reference + "Item y) in 12.14.7.1.3, 20.31.1 of IEEE Std 802.1Q-2022"; + } + leaf mep-lbr-in-out-of-order { + type yang:counter64; + mandatory true; + description + "The total number of valid, out-of-order Loopback Replies + received"; + reference + "Item z) in 12.14.7.1.3, 20.31.1 of IEEE Std 802.1Q-2022"; + } + leaf mep-lbr-bad-msdu { + type yang:counter64; + mandatory true; + description + "The total number of LBRs received whose + mac_service_data_unit did not match (except for the + OpCode) that of the corresponding LBM."; + reference + "Item aa) in 12.14.7.1.3, 20.2.3 of IEEE Std 802.1Q-2022"; + } + leaf mep-unexpected-ltr-in { + type yang:counter64; + mandatory true; + description + "The total number of unexpected LTRs received."; + reference + "Item ac) in 12.14.7.1.3, 20.44.1 of IEEE Std 802.1Q-2022"; + } + leaf mep-lbr-out { + type yang:counter64; + mandatory true; + description + "Total number of Loopback Replies transmitted."; + reference + "Item ad) in 12.14.7.1.3, 20.28.2 of IEEE Std 802.1Q-2022"; + } + } + + // transmit-linktrace + list linktrace-reply { + key "ltr-transaction-id"; + config false; + description + "This list extends the MEP table and reports on accepted + transmit-linktrace actions. In case linktrace replies are + received it also reports with data from the received + Linktrace reply messages."; + leaf ltr-transaction-id { + type cfm-types:seq-number-type; + description + "Transaction identifier returned by a previous transmit + linktrace message command, indicating which LTMs response + is going to be returned."; + reference + "Item b) in 12.14.7.5.2 of IEEE Std 802.1Q-2022"; + } + container linktrace-input { + description + "The linktrace parameter input. By default, the priority + used is that of the CCMs (ccm-ltm-priority) and the drop + elibility is false."; + uses linktrace-input-grouping; + } + list responses { + key "ltr-receive-order"; + description + "The responses associated with the request."; + leaf ltr-receive-order { + type uint32 { + range "1..4294967295"; + } + description + "An index to distinguish among multiple LTRs with the + same LTR Transaction Identifier field value. Assigned + sequentially from 1, in the order that the Linktrace + Initiator received the LTRs."; + } + leaf ltr-ttl { + type uint8 { + range "0..255"; + } + mandatory true; + description + "TTL field value for a returned LTR."; + reference + "12.14.7.5, 20.41.2.2 of IEEE Std 802.1Q-2022"; + } + leaf ltr-forwarded { + type boolean; + mandatory true; + description + "Indicates if an LTM was forwarded by the responding MP, + as returned in the FwdYes flag of the flags field."; + reference + "Item c) in 12.14.7.5.3, 20.41.2.1 of IEEE Std 802.1Q-2022"; + } + leaf ltr-terminal-mep { + type boolean; + mandatory true; + description + "A Boolean value stating whether the forwarded LTM + reached a MEP enclosing its MA, as returned in the + Terminal MEP flag of the Flags field"; + reference + "Item d) in 12.14.7.5.3, 20.41.2.1 of IEEE Std 802.1Q-2022"; + } + container ltr-last-egress-identifier { + description + "An octet field holding the Last Egress Identifier + returned in the LTR Egress Identifier TLV of the LTR. + The Last Egress Identifier identifies the MEP Linktrace + Initiator that originated, or the Linktrace Responder + that forwarded, the LTM to which this LTR is the + response. This is the same value as the Egress + Identifier TLV of that LTM."; + reference + "Item e) in 12.14.7.5.3, 20.41.2.3 of IEEE Std 802.1Q-2022"; + uses ltm-egress-identifier-grouping; + } + container ltr-next-egress-identifier { + description + "An octet field holding the Next Egress Identifier + returned in the LTR Egress Identifier TLV of the LTR. + The Next Egress Identifier Identifies the Linktrace + Responder that transmitted this LTR, and can forward the + LTM to the next hop. This is the same value as the + Egress Identifier TLV of the forwarded LTM, if any. If + the FwdYes bit of the Flags field is false, the contents + of this field are undefined, i.e., any value can be + transmitted, and the field is ignored by the receiver."; + reference + "Item f) in 12.14.7.5.3, 20.41.2.4 of IEEE Std 802.1Q-2022"; + uses ltm-egress-identifier-grouping; + } + leaf ltr-relay { + type cfm-types:relay-action-field-value-type; + mandatory true; + description + "Value returned in the Relay Action field."; + reference + "Item g) in 12.14.7.5.3, 20.41.2.5 of IEEE Std 802.1Q-2022"; + } + leaf ltr-chassis-id-subtype { + type ieee:chassis-id-subtype-type; + description + "Specifies the format of the Chassis ID returned in the + Sender ID TLV of the LTR, if any. This leaf is not + present if the LTR did not contain a Sender ID TLV or if + the Sender ID TLV did not contain a Chassis ID."; + reference + "Item h) in 12.14.7.5.3, 21.5.3.2 of IEEE Std 802.1Q-2022"; + } + leaf ltr-chassis-id { + when + "../ltr-chassis-id-subtype"; + type ieee:chassis-id-type; + mandatory true; + description + "The Chassis ID returned in the Sender ID TLV of the + LTR, if any. The format of this object is determined by + the value of the ltr-chassis-id-subtype object. This + leaf is not present if the LTR did not contain a Sender + ID TLV or if the Sender ID TLV did not contain a Chassis + ID."; + reference + "Item i) in 12.14.7.5.3, 21.5.3.2 of IEEE Std 802.1Q-2022"; + } + container ltr-transport-service-domain { + description + "The transport management domain and address. This + container is empty if the LTR did not contain a Sender + ID TLV or if the Sender ID TLV did not contain a + Management Address."; + reference + "Item j) in 12.14.7.5.3 of IEEE Std 802.1Q-2022"; + uses management-address-grouping; + } + leaf ltr-ingress { + type cfm-types:ingress-action-field-value-type; + description + "The value returned in the Ingress Action Field of the + LTM. This leaf is not present if no Reply Ingress TLV + was returned in the LTM."; + reference + "Item k) in 12.14.7.5.3, 20.41.2.6 of IEEE Std 802.1Q-2022"; + } + leaf ltr-ingress-mac { + when + "../ltr-ingress"; + type ieee:mac-address; + mandatory true; + description + "MAC address returned in the ingress MAC address field. + This leaf is not present if the ltr-ingress leaf is not + present."; + reference + "Item l) in 12.14.7.5.3, 20.41.2.7 of IEEE Std 802.1Q-2022"; + } + leaf ltr-ingress-port-id-subtype { + when + "../ltr-ingress"; + type ieee:port-id-subtype-type; + description + "Format of the ingress Port ID. This leaf is not present + if the ltr-ingress leaf is not present, or if the Reply + Ingress TLV did not contain a Port ID."; + reference + "Item m) in 12.14.7.5.3, 20.41.2.8 of IEEE Std 802.1Q-2022"; + } + leaf ltr-ingress-port-id { + when + "../ltr-ingress and ../ltr-ingress-port-id-subtype"; + type ieee:port-id-type; + mandatory true; + description + "Ingress Port ID. The format of this object is + determined by the value of the + ltr-ingress-port-id-subtype object. This leaf is not + present if the ltr-ingress leaf or the + ltr-ingress-port-id-subtype leaf are not present."; + reference + "Item n) in 12.14.7.5.3, 20.41.2.9 of IEEE Std 802.1Q-2022"; + } + leaf ltr-egress { + type cfm-types:egress-action-field-value-type; + description + "The value returned in the Egress Action Field of the + LTM. The node is not present if no Reply Egress TLV was + returned in the LTM."; + reference + "Item o) in 12.14.7.5.3, 20.41.2.10 of IEEE Std 802.1Q-2022"; + } + leaf ltr-egress-mac { + when + "../ltr-egress"; + type ieee:mac-address; + mandatory true; + description + "MAC address returned in the egress MAC address field. + This leaf is not present if the ltr-egress leaf is not + present."; + reference + "Item p) in 12.14.7.5.3, 20.41.2.11 of IEEE Std 802.1Q-2022"; + } + leaf ltr-egress-port-id-subtype { + when + "../ltr-egress"; + type ieee:port-id-subtype-type; + description + "Format of the egress Port ID. This leaf is not present + if the ltr-egress leaf is not present, or if the Reply + Egress TLV did not contain a Port ID."; + reference + "Item q) in 12.14.7.5.3, 20.41.2.12 of IEEE Std 802.1Q-2022"; + } + leaf ltr-egress-port-id { + when + "../ltr-egress and ../ltr-egress-port-id-subtype"; + type ieee:port-id-type; + mandatory true; + description + "Egress Port ID. The format of this object is determined + by the value of the ltr-egress-port-id-subtype object. + This leaf is not present if the ltr-egress leaf or the + ltr-egress-port-id-subtype leaf are not present."; + reference + "Item r) in 12.14.7.5.3, 20.41.2.13 of IEEE Std 802.1Q-2022"; + } + leaf ltr-organization-specific-tlv { + type binary { + length "0 | 4..1500"; + } + description + "All Organization specific TLVs returned in the LTR, if + any. Includes all octets including and following the TLV + Length field of each TLV, concatenated together."; + reference + "Item s) in 12.14.7.5.3, 21.5.2 of IEEE Std 802.1Q-2022"; + } + } + } + + // stats + action transmit-loopback { + description + "To signal to the MEP to transmit some number of LBMs. + Accepting the action means the device will transmit LBM + messages according the input leaf nodes."; + input { + uses loopback-input-grouping; + } + + // input + output { + leaf lbm-request-id { + type cfm-types:seq-number-type; + mandatory true; + description + "The Loopback transaction identifier of the first LBM + (to + be) sent."; + reference + "Item b) in 12.14.7.3.3 of IEEE Std 802.1Q-2022"; + } + } + } + + // transmit-loopback + action transmit-linktrace { + description + "To signal to the MEP to transmit an LTM and to create an + LTM entry in the MEPs Linktrace Database. Accepting the + action means the device will transmit LTM messages according + to the input leafs. The outcome of sending these LTM + messages will be reported through the list + 'linktrace-reply'."; + input { + uses linktrace-input-grouping; + } + + // input + output { + leaf ltm-transaction-id { + type cfm-types:seq-number-type; + mandatory true; + description + "The LTM transaction identifier of the LTM sent. The + value returned is undefined if and RPC error is + returned."; + reference + "Item b) in 12.14.7.4.3 of IEEE Std 802.1Q-2022"; + } + container ltm-egress-identifier { + description + "Identifies the MEP Linktrace Initiator that is + originating this LTM. + + The low-order six octets contain a 48-bit IEEE MAC + address unique to the system in which the MEP Linktrace + Initiator or Linktrace Responder resides. The high-order + two octets contain a value sufficient to uniquely + identify the MEP Linktrace Initiator or Linktrace + Responder within that system. + + For most Bridges, the address of any MAC attached to the + Bridge will suffice for the low-order six octets, and 0 + for the high-order octets. In some situations, e.g., if + multiple virtual Bridges utilizing emulated LANs are + implemented in a single physical system, the high-order + two octets can be used to differentiate among the + transmitting entities. + + The value returned is undefined if the + transmit-linktrace input action was not accepted."; + reference + "Item c) in 12.14.7.4.3 of IEEE Std 802.1Q-2022"; + uses ltm-egress-identifier-grouping; + } + } + } + } + } + } +} diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-cnc-config.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-cnc-config.yang new file mode 100644 index 000000000..bcc97395b --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-cnc-config.yang @@ -0,0 +1,568 @@ +module ieee802-dot1q-cnc-config { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-cnc-config; + prefix dot1q-cnc-config; + import ieee802-dot1q-tsn-types { + prefix tsn; + reference + "48.6.3 of IEEE Std 802.1Q"; + } + organization + "IEEE 802.1 Working Group"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + description + "This module supports management of a Time-Sensitive Networking (TSN) + Centralized Network Configuration (CNC) component, its Configuration + Domains - each supporting one or more Centralized User Configuration (CUC) + components, and the Streams created by those CUCs. RPCs support + path computation and resource allocation across all or specified + Configuration Domains, CUCs, and Streams. + + Copyright (C) IEEE (2024). + + This version of this YANG module is part of IEEE Std 802.1Q; see + the standard itself for full legal notices."; + revision 2024-01-31 { + description + "Published as part of IEEE Std 802.1Qdj-2024. + + The following reference statement identifies each referenced IEEE + Standard as updated by applicable amendments."; + reference + "IEEE Std 802.1Q Bridges and Bridged Networks: + IEEE Std 802.1Q-2022, IEEE Std 802.1Qcz-2023, IEEE Std 802.1Qcw-2023, + IEEE Std 802.1Qcj-2023, IEEE Std 802.1Qdj-2024."; + } + container cnc-config { + description + "Top-level container for the CNC module."; + list domain { + key "domain-id"; + description + "A list of Configuration Domains, each supporting one or more CUCs. + Access to Streams and resources associated with particular Configuration + Domains can be restricted."; + leaf domain-id { + type string; + description + "The DomainID uniquely identifies a Configuration Domain."; + reference + "46.2.2.1 of IEEE Std 802.1Q"; + } + leaf cnc-enabled { + type boolean; + default "false"; + description + "cnc-enabled is used to enable or disable CNC functionality. If TRUE, + the CNC functionality is enabled. If FALSE, the CNC functionality is + disabled."; + reference + "46.2.2.3 of IEEE Std 802.1Q"; + } + list cuc { + key "cuc-id"; + description + "A list of CUCs in the Configuration Domain, each with its associated + Streams. Access to Streams and resources associated with particular + CUCs can be restricted."; + leaf cuc-id { + type string; + description + "The CucID uniquely identifies the CUC."; + reference + "46.2.2.2 of IEEE Std 802.1Q"; + } + list stream { + key "stream-id"; + description + "A list of Streams created by the CUC, with their status and + configuration (talker and listener parameters) in the CNC."; + leaf stream-id { + type tsn:stream-id-type; + description + "The StreamID uniquely identifies a Stream."; + } + leaf stream-status { + type enumeration { + enum planned { + value 0; + description + "The Stream has been requested but has not yet been + configured by the CNC."; + } + enum configured { + value 1; + description + "The Stream has been computed and configured by the + CNC."; + } + enum modified { + value 2; + description + "The Stream has been configured but Stream parameters + have been modified after configuration."; + } + } + config false; + description + "The stream-status is the status of the Stream in the CNC."; + reference + "46.2.3.8 of IEEE Std 802.1Q"; + } + container talker { + description + "The Talker container for the Stream comprises the following: + - The Talker’s behavior (how/when frames are transmitted). + - The Talker’s network requirements. + - The Talker's interface(s) TSN capabilities."; + uses tsn:group-talker; + uses tsn:group-status-talker-listener { + refine "accumulated-latency" { + config false; + } + refine "interface-configuration" { + config false; + } + } + } + list listener { + key "index"; + description + "A list of parameters for each of the Stream's Listeners, + each list entry comprising: + - The Listener's interface(s). + - The Listener’s network requirements. + - The Listener’s interface(s) TSN capabilities."; + leaf index { + type uint32; + description + "This index is provided in order to provide a unique key + per list entry."; + } + uses tsn:group-listener; + uses tsn:group-status-talker-listener { + refine "accumulated-latency" { + config false; + } + refine "interface-configuration" { + config false; + } + } + } + uses tsn:group-status-stream { + refine "status-info" { + config false; + } + refine "failed-interfaces" { + config false; + } + } + } + action remove_streams { + description + "Removes the selected Streams."; + reference + "46.2.8.1 of IEEE Std 802.1Q"; + input { + list stream-list { + key "stream-id"; + description + "List of stream-ids for the Streams to be removed."; + leaf stream-id { + type tsn:stream-id-type; + description + "The stream-id uniquely identifies a Stream."; + } + } + } + output { + leaf result { + type string; + description + "Returns status information indicating if Stream removal + has been successfully started."; + } + } + } + } + } + } + + // RPCs + rpc compute_streams { + description + "Starts computation of path and resource allocation for one or more + Streams, each identified by its domain-id, cuc-id, and stream-id. + This RPC can compute paths and resource allocations for both new and + modified Streams."; + input { + list domain { + key "domain-id"; + description + "A list of Configuration Domains containing the Streams for which + paths and resource allocations are to be computed."; + reference + "46.2.7.1 of IEEE Std 802.1Q"; + leaf domain-id { + type leafref { + path '/cnc-config/domain/domain-id'; + } + description + "The referenced DomainID uniquely identifies a Configuration + Domain."; + } + list cuc { + key "cuc-id"; + description + "A list of CUCs in the Configuration Domain, each with Streams whose + paths and resource allocations are to be computed. "; + leaf cuc-id { + type leafref { + path '/cnc-config/domain/cuc/cuc-id'; + } + description + "The referenced CucID uniquely identifies a CUC."; + } + list stream-list { + key "stream-id"; + description + "A list of Streams, created by the CUC, whose paths and resource + allocations are to be computed."; + leaf stream-id { + type leafref { + path '/cnc-config/domain/cuc/stream/stream-id'; + } + description + "The referenced StreamID uniquely identifies a Stream."; + } + } + } + } + } + output { + leaf result { + type string; + description + "Only returns status information indicating if the computation + has been started. It does not return status information on the + success or failure of the actual Stream computation. A + notification can be used to inform the caller of this RPC on the + results of Stream computation after the computation has + finished."; + } + } + } + rpc compute_planned_and_modified_streams { + description + "Starts computation of path and resource allocation for all Streams + that are in specified CUCs in specified domains, and that have not been + computed (i.e., that have a Stream status of planned or modified)."; + reference + "46.2.7.2 of IEEE Std 802.1Q"; + input { + list domain { + key "domain-id"; + description + "A list of Configuration Domains containing the CUCs with Streams + whose paths and resource allocations are to be computed."; + leaf domain-id { + type string; + description + "A unique identifier of a Configuration Domain. It is used to + identify the Configuration Domain a CUC belongs to."; + } + list cuc { + key "cuc-id"; + description + "A list of CUCs, in the Configuration Domain, that have Streams + whose paths and resource allocations are to be computed."; + leaf cuc-id { + type string; + description + "The CucID uniquely identifies the CUC."; + } + } + } + } + output { + leaf result { + type string; + description + "Only returns status information indicating if the computation + has been started. It does not return status information on the + success or failure of the actual Stream computation. A + notification can be used to inform the caller of this RPC of the + results of Stream computation after the computation has + finished."; + } + } + } + rpc compute_all_streams { + description + "Starts computation of path and resource allocation for all Streams + that are in specified CUCs in specified domains."; + reference + "46.2.7.3 of IEEE Std 802.1Q"; + input { + list domain { + key "domain-id"; + description + "A list of Configuration Domains containing the CUCs with Streams + whose paths and resource allocations are to be computed"; + leaf domain-id { + type string; + description + "The DomainID uniquely identifies a Configuration Domain."; + } + list cuc { + key "cuc-id"; + description + "A list of CUCs in the Configuration Domain, each with Streams whose + paths and resource allocations are to be computed."; + leaf cuc-id { + type string; + description + "The CucID uniquely identifies the CUC."; + } + } + } + } + output { + leaf result { + type string; + description + "Only returns status information indicating if the computation + has been started. It does not return status information on the + success or failure of the actual Stream computation. A + notification can be used to inform the caller of this RPC of the + results of Stream computation after the computation has + finished."; + } + } + } + rpc request_domain_id { + description + "Returns the DomainID of the Configuration Domain to which a specified + CUC belongs."; + reference + "46.2.7.4 of IEEE Std 802.1Q"; + input { + leaf cuc-id { + type string; + description + "The CucID uniquely identifies the CUC."; + } + } + output { + leaf result { + type string; + description + "Returns the DomainID of the Configuration Domain for the + specified CUC."; + } + } + } + rpc request_free_stream_id { + description + "Returns a free (i.e., available) StreamID for use by a specified + CUC in a specified Configuration Domain."; + reference + "46.2.7.5 of IEEE Std 802.1Q"; + input { + leaf domain-id { + type string; + description + "The DomainID uniquely identifies the Configuration Domain."; + } + leaf cuc-id { + type string; + description + "The CucID uniquely identifies the CUC."; + } + } + output { + leaf result { + type string; + description + "Returns a free (i.e., available) StreamID for use by the + specified CUC in the specified Configuration Domain."; + } + } + } + + // Notifications + notification compute_streams_completed { + description + "Notifies the caller of an RPC or action that initiated computation for + one or more Streams, that the computation is complete. Returns information + on the success or failure of computation for each of those Streams."; + reference + "46.2.9.1 of IEEE Std 802.1Q"; + list domain { + key "domain-id"; + description + "The list of Configuration Domains for which computation was requested, + with each list entry specifying the CUCs, and the Streams for each of + those CUCs for which computation was requested, with the result of the + computation (success or failure) for each Stream."; + leaf domain-id { + type string; + description + "The DomainID uniquely identifies a Configuration Domain."; + } + list cuc { + key "cuc-id"; + description + "The list of CUCs for the specified Configuration Domain, with each + list entry specifying the Streams for which computation was requested + and the result of the computation for each Stream."; + leaf cuc-id { + type string; + description + "The CucID uniquely identifies the CUC."; + } + list stream { + key "stream-id"; + description + "The list of Streams, for which computation was requested, for the + specified Configuration Domain and CUC, with the result of the + computation (success or failure) for each Stream."; + reference + "46.2.3 of IEEE Std 802.1Q"; + leaf stream-id { + type tsn:stream-id-type; + description + "The StreamID uniquely identifies a Stream."; + } + leaf failure-code { + type uint8; + description + "A code that indicates if the computation for the Stream + was successful (0) or not. In the case of a failure a code + is returned to indicate what kind of failure occurred."; + } + } + } + } + } + notification configure_streams_completed { + description + "Notifies the caller of an RPC or action that initiated computation for + one or more Streams, that computation and configuration is complete. + Returns information on the success or failure information of computation + and configuration for each of those Streams."; + reference + "46.2.9.2 of IEEE Std 802.1Q"; + list domain { + key "domain-id"; + description + "The list of Configuration Domains for which computation was requested, + with each list entry specifying the CUCs, and the Streams for each of + those CUCs for which computation was requested, with the result of the + computation (success or failure) for each Stream."; + leaf domain-id { + type string; + description + "The DomainID uniquely identifies a Configuration Domain."; + } + list cuc { + key "cuc-id"; + description + "The list of CUCs for the specified Configuration Domain, with each + list entry specifying the Streams for which computation was requested + and the result of the computation for each Stream."; + leaf cuc-id { + type string; + description + "The CucID uniquely identifies the CUC."; + } + list stream { + key "stream-id"; + description + "The list of Streams, for which computation was requested, for the + specified Configuration Domain and CUC, with the result of the + computation (success or failure) for each Stream."; + reference + "46.2.3 of IEEE Std 802.1Q"; + leaf stream-id { + type tsn:stream-id-type; + description + "The StreamID uniquely identifies a Stream."; + } + leaf failure-code { + type uint8; + description + "A code that indicates if the computation and configuration + for the Stream was successful (0) or not. In the case of a + failure a code is returned to indicate what kind of failure + occurred."; + } + } + } + } + } + notification remove_streams_completed { + description + "Notifies the caller of an RPC or action that initiated computation for + one or more Streams, that the removal is complete. Returns information + on the success or failure of removal for each of those Streams."; + reference + "46.2.9.3 of IEEE Std 802.1Q"; + list domain { + key "domain-id"; + description + "A list of Configuration Domains with each list entry specifying the + CUCs, and the Streams for each of those CUCs for which removal was + requested, with the result of the removal attempt (success or failure) + for each Stream."; + leaf domain-id { + type string; + description + "The DomainID uniquely identifies a Configuration Domain."; + } + list cuc { + key "cuc-id"; + description + "The list of CUCs for the specified Configuration Domain, with each + list entry specifying the Streams for which removal was requested + and the result of the removal attempt for each Stream."; + leaf cuc-id { + type string; + description + "The CucID uniquely identifies the CUC."; + } + list stream { + key "stream-id"; + description + "The list of Streams, for which removal was requested, for the + specified Configuration Domain and CUC, with the result of the + removal (success or failure) for each Stream."; + reference + "46.2.3 of IEEE Std 802.1Q"; + leaf stream-id { + type tsn:stream-id-type; + description + "The StreamID uniquely identifies a Stream."; + } + leaf failure-code { + type uint8; + description + "A code that indicates if the removal of the Stream was + successful (0) or unsuccessful (1)."; + } + } + } + } + } +} diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-congestion-isolation-bridge.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-congestion-isolation-bridge.yang new file mode 100644 index 000000000..2f272ebb7 --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-congestion-isolation-bridge.yang @@ -0,0 +1,82 @@ +module ieee802-dot1q-congestion-isolation-bridge { + yang-version "1.1"; + namespace + urn:ieee:std:802.1Q:yang:ieee802-dot1q-congestion-isolation-bridge; + prefix ci-bridge; + import ietf-interfaces { + prefix if; + } + import ieee802-dot1q-bridge { + prefix dot1q; + } + import ieee802-dot1q-congestion-isolation { + prefix ci; + } + import ieee802-dot1q-stream-filters-gates { + prefix sfsg; + } + organization + "IEEE 802.1 Working Group"; + contact + "WG-URL: https://1.ieee802.org/ + WG-EMail: stds-802-1@ieee.org + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08855 + USA + + E-mail: stds-802-1-chairs@listserv.ieee.org"; + description + "This module provides management of IEEE 802.1Q Bridge components + that support Congestion Isolation. + + Copyright (C) IEEE (2023). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + revision 2023-07-03 { + description + "Published as part of IEEE Std 802.1Qcz-2023."; + reference + "IEEE Std 802.1Qcz-2023 - Bridges and Bridged Networks - Amendment: + Congestion Isolation."; + } + feature congestion-isolation-bridge { + description + "Feature Congestion Isolation in Bridges"; + } + augment "/dot1q:bridges/dot1q:bridge/dot1q:component" { + if-feature "congestion-isolation-bridge"; + description + "Augments the Bridge component with stream filters and stream + gates."; + uses ci:cip-parameters; + uses sfsg:sfsg-parameters { + augment + "stream-filters/stream-filter-instance-table/stream-handle-spec" { + if-feature "congestion-isolation-bridge"; + description + "Dot1q Congestion Isolation"; + case null-handle { + description + "Congestion isolation specific stream_handle specifications."; + leaf null-handle { + type empty; + description + "The stream_handle specification represents the value when + no stream_handle is provided."; + } + } + } + } + } + augment "/if:interfaces/if:interface/dot1q:bridge-port" { + if-feature "congestion-isolation-bridge"; + description + "Augment a bridge port with Congestion Isolation specific + configuration."; + uses ci:cip-port-parameters; + } +} diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-congestion-isolation.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-congestion-isolation.yang new file mode 100644 index 000000000..a37cd79e5 --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-congestion-isolation.yang @@ -0,0 +1,521 @@ +module ieee802-dot1q-congestion-isolation { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-congestion-isolation; + prefix dot1q-ci; + import ietf-yang-types { + prefix yang; + } + import ieee802-types { + prefix ieee; + } + import ieee802-dot1q-stream-filters-gates { + prefix sfsg; + } + import ieee802-dot1q-types { + prefix dot1q-types; + } + import ietf-inet-types { + prefix inet; + } + organization + "Institute of Electrical and Electronics Engineers"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + description + "This YANG module augments the configuration and operational state + data for interfaces for Congestion Isolation. + + References in this YANG module to IEEE Std 802.1Q are to IEEE Std + 802.1Q-2022 as amended by IEEE Std 802.1Qcz-2023. + + Copyright (C) IEEE (2023). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + revision 2023-07-03 { + description + "Published as part of IEEE Std 802.1Qcz-2023."; + reference + "IEEE Std 802.1Qcz-2023"; + } + + /*--------------------*/ + /* Feature */ + /*--------------------*/ + feature congestion-isolation { + description + "Feature Congestion Isolation"; + } + + /*--------------------*/ + /* Typedefs */ + /*--------------------*/ + typedef abs-traffic-class-plus-one-type { + type enumeration { + enum monitored-queue-tc-1 { + value 1; + description + "Traffic class 0 of monitored queue."; + } + enum monitored-queue-tc-2 { + value 2; + description + "Traffic class 1 of monitored queue."; + } + enum monitored-queue-tc-3 { + value 3; + description + "Traffic class 2 of monitored queue."; + } + enum monitored-queue-tc-4 { + value 4; + description + "Traffic class 3 of monitored queue."; + } + enum monitored-queue-tc-5 { + value 5; + description + "Traffic class 4 of monitored queue."; + } + enum monitored-queue-tc-6 { + value 6; + description + "Traffic class 5 of monitored queue."; + } + enum monitored-queue-tc-7 { + value 7; + description + "Traffic class 6 of monitored queue."; + } + enum monitored-queue-tc-8 { + value 8; + description + "Traffic class 7 of monitored queue."; + } + enum congesting-queue-tc-1 { + value -1; + description + "Traffic class 0 of congesting queue."; + } + enum congesting-queue-tc-2 { + value -2; + description + "Traffic class 1 of congesting queue."; + } + enum congesting-queue-tc-3 { + value -3; + description + "Traffic class 2 of congesting queue."; + } + enum congesting-queue-tc-4 { + value -4; + description + "Traffic class 3 of congesting queue."; + } + enum congesting-queue-tc-5 { + value -5; + description + "Traffic class 4 of congesting queue."; + } + enum congesting-queue-tc-6 { + value -6; + description + "Traffic class 5 of congesting queue."; + } + enum congesting-queue-tc-7 { + value -7; + description + "Traffic class 6 of congesting queue."; + } + enum congesting-queue-tc-8 { + value -8; + description + "Traffic class 7 of congesting queue."; + } + enum not-participating-congestion-isolation { + value 0; + description + "Traffic class not participating in congestion isolation."; + } + } + description + "Specifies a value that can be translated to the numeric value of + the traffic class to be used as either the congesting or monitored + queue. The absolute value of the enumerated value is the value of + the traffic class plus 1. A value of 0 indicates the traffic class + is not participating in congestion isolation. For example, the + enumerated value congesting-queue-tc-5 specifies that traffic class + 4 is used as the congesting queue."; + } + grouping cip-port-parameters { + description + "The bridge port specific configuration for Congestion Isolation."; + leaf cip-mac-address { + type ieee:mac-address; + config false; + description + "The source MAC address of a CIM, belonging to the system + transmitting the CIM."; + reference + "49.4.1.2.1 of IEEE Std 802.1Q"; + } + leaf cip-ipv4-address { + type inet:ipv4-address; + config false; + description + "The source IPv4 address of a CIM, belonging to the system + transmitting the IPv4 layer-3 CIM."; + reference + "49.4.1.2.2 of IEEE Std 802.1Q"; + } + leaf cip-ipv6-address { + type inet:ipv6-address; + config false; + description + "The source IPv6 address of a CIM, belonging to the system + transmitting the IPv6 layer-3 CIM."; + reference + "49.4.1.2.3 of IEEE Std 802.1Q"; + } + leaf cip-cim-port { + type inet:port-number; + config false; + description + "The UDP port number to be used by a peer transmitting a layer-3 + CIM. This value will be sent to the peer via LLDP in the CI TLV."; + reference + "49.4.1.2.4 of IEEE Std 802.1Q"; + } + list queue-map { + key "priority"; + description + "An array of integers, one entry for each traffic class, 0 + through 7, specifying a value that can be translated to the + numeric value of the traffic class to be used as either the + congesting traffic class or the monitored traffic class for the + traffic class specified by the index. The integers range in value + from -8 to 8. A value of 0 in the table specifies that the + traffic class is not participating in congestion isolation. A + positive number specifies a traffic class for a monitored queue + that is one less than the value (e.g., a value of 5 represents + traffic class 4). A negative number specifies a traffic class for + a congesting queue that is one less than the absolute value (e.g., + a value of -4 represents traffic class 3)."; + reference + "49.4.1.2.5 of IEEE Std 802.1Q"; + leaf priority { + type dot1q-types:priority-type; + description + "There are eight values of Priority that map to an absolute + value that is a traffic class plus one, or the value 0 which + indicates the traffic class is not used by congestion + isolation."; + reference + "49.4.1.2.5 of IEEE Std 802.1Q"; + } + leaf abs-traffic-class-plus-one { + type abs-traffic-class-plus-one-type; + description + "A value that can be translated to represent a traffic class or + an indication of non-use. A value of 0 specifies that the + traffic class is not participating in congestion isolation. A + positive number specifies a traffic class for a monitored + queue, and a negative number specifies a traffic class for a + congesting queue."; + reference + "49.4.1.2.5 of IEEE Std 802.1Q"; + } + } + leaf min-header-octets { + type uint16; + description + "The minimum number of octets to include in the Encapsulated MSDU + field of each CIM generated. The default value is 48."; + reference + "49.4.1.2.6 of IEEE Std 802.1Q"; + } + leaf max-cim-tx { + type uint16; + description + "The maximum number of times a CIM PDU will be sent for a + congesting flow. The default value is 3."; + reference + "49.4.1.2.7 of IEEE Std 802.1Q"; + } + } + grouping cip-parameters { + description + "The system specific configuration for Congestion Isolation."; + leaf ci-master-enable { + type boolean; + description + "Specifies whether CI is enabled in this system."; + reference + "49.4.1.1.1 of IEEE Std 802.1Q"; + } + leaf ci-cim-tx-priority { + type dot1q-types:priority-type; + config false; + description + "Specifies the priority value to be used when transmitting CIMs + from the system. The default is 6."; + reference + "49.4.1.1.2 of IEEE Std 802.1Q"; + } + leaf ci-max-flow-life { + type uint32; + config false; + description + "Specifies the maximum number of centiseconds that a congesting + flow entry, created by the receipt of a CIM, can remain in the CI + Stream Table after the congesting queue has transitioned from + congested back to non-congested. The default value is 100."; + reference + "49.4.1.1.3 of IEEE Std 802.1Q"; + } + container ci-peers { + description + "Contains information about an immediate peer obtained from a + received LLDP Congestion Isolation TLV."; + list ci-peer-table { + key "reception-port"; + description + "Contains entries for each participating immediate peer and + provides the information needed to generate a CIM for + transmission to the peer."; + reference + "49.3.6 of IEEE Std 802.1Q"; + leaf reception-port { + type dot1q-types:port-number-type; + description + "The port number where the immediate congestion isolation + participating peer is attached."; + reference + "49.3.6 of IEEE Std 802.1Q"; + } + leaf cim-type { + type enumeration { + enum l2 { + description + "Layer 2 CIM encapsulation."; + } + enum ipv4 { + description + "IPv4 CIM encapsulation."; + } + enum ipv6 { + description + "IPv6 CIM encapsulation."; + } + } + description + "The format of the CIM expected by the peer."; + reference + "49.3.6 of IEEE Std 802.1Q"; + } + leaf peer-mac-address { + type ieee:mac-address; + description + "The destination MAC address to use when generating a CIM for + the peer."; + reference + "49.3.6 of IEEE Std 802.1Q"; + } + leaf peer-ipv4-address { + type inet:ipv4-address; + description + "The destination IPv4 address to use when generating an IPv4 + layer-3 CIM for the peer."; + reference + "49.3.6 of IEEE Std 802.1Q"; + } + leaf peer-ipv6-address { + type inet:ipv6-address; + description + "The destination IPv6 address to use when generating an IPv6 + layer-3 CIM for the peer."; + reference + "49.3.6 of IEEE Std 802.1Q"; + } + leaf peer-udp-port { + type inet:port-number; + description + "The UDP port number to use when generating a layer-3 CIM for + the peer."; + reference + "49.3.6 of IEEE Std 802.1Q"; + } + leaf peer-cim-encap-len { + type uint16 { + range "0..512"; + } + description + "The number of octets from the MSDU to include in the + Encapsulated MSDU field of the CIM PDU"; + reference + "49.3.6 of IEEE Std 802.1Q"; + } + } + leaf max-ci-peer-entries { + type uint32; + config false; + description + "Specifies the maximum number of CI peer entries that can be + stored."; + reference + "49.3.6 of IEEE Std 802.1Q"; + } + } + container ci-streams { + description + "Contains control information to manage congestion flows."; + list ci-stream-table { + key "stream-handle-id"; + config false; + description + "Contains entries for each congesting flow and has a 1:1 + mapping to entries in the IEEE Std 802.1CB Stream Identity + Table."; + reference + "49.3.7 of IEEE Std 802.1Q"; + leaf stream-handle-id { + type uint32; + config false; + description + "There is a unique stream handle ID for each congesting flow + stored in the CI Stream Table."; + reference + "49.4.1.5.1 of IEEE Std 802.1Q"; + } + leaf cim-count { + type uint16; + config false; + description + "Contains a count of the number of CIMs sent for a congesting + flow."; + reference + "49.4.1.5.2 of IEEE Std 802.1Q"; + } + leaf create-time { + type yang:timeticks; + config false; + description + "The time (SysUpTime, IETF RFC 3418) at which the CI Stream + Table entry was created."; + reference + "49.4.1.5.3 of IEEE Std 802.1Q"; + } + leaf create-mask { + type bits { + bit local-create { + position 0; + description + "CI Stream entry was created because congestion was + detected locally by the AQM."; + } + bit cim-create { + position 1; + description + "CI Stream entry was created because of the receipt of a + CIM."; + } + } + config false; + description + "Indicates the reason for creating or updating the CI Stream + Table entry. The LSB indicates that the entry was created or + updated because the AQM determined that a forwarded frame is + part of a congesting flow. The MSB indicates that the entry + was created or updated because of the receipt of a CIM."; + reference + "49.4.1.5.4 of IEEE Std 802.1Q"; + } + } + leaf queue-key { + type uint16; + config false; + description + "Represents the unique queue identity of a congesting queue at + an egress port that a congesting flow is traversing. The key is + calculated by the product of the congesting traffic class + number plus one and the port number."; + reference + "49.4.1.5.5 of IEEE Std 802.1Q"; + } + leaf dest-mac-address { + type ieee:mac-address; + config false; + description + "The destination MAC address of a congesting flow."; + reference + "49.4.1.5.6 of IEEE Std 802.1Q"; + } + leaf source-mac-address { + type ieee:mac-address; + config false; + description + "The source MAC address of a congesting flow."; + reference + "49.4.1.5.7 of IEEE Std 802.1Q"; + } + leaf vid { + type dot1q-types:vlan-index-type; + config false; + description + "The VID of a congesting flow."; + reference + "49.4.1.5.8 of IEEE Std 802.1Q"; + } + leaf msdu { + type yang:hex-string; + config false; + description + "The initial octets of the MSDU of a congesting flow. The number + of octets to keep in the CI Stream Table entry is specified by + the peer CIM encapsulation length of the CI Peer Table."; + reference + "49.4.1.5.9 of IEEE Std 802.1Q"; + } + } + leaf max-ci-stream-entries { + type uint32; + config false; + description + "Specifies the maximum number of CI stream entries that can be + stored."; + reference + "49.4.1.5 of IEEE Std 802.1Q"; + } + } + + /*--------------------*/ + /* Configuration Data */ + /*--------------------*/ + uses sfsg:sfsg-parameters { + augment + "stream-filters/stream-filter-instance-table/stream-handle-spec" { + if-feature "congestion-isolation"; + description + "Dot1q Congestion Isolation"; + case null-handle { + description + "Congestion isolation specific stream_handle specifications."; + leaf null-handle { + type empty; + description + "The stream_handle specification represents the value when no + stream_handle is provided."; + } + } + } + } +} diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-lldp-basic-tlv.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-lldp-basic-tlv.yang new file mode 100644 index 000000000..3780b6498 --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-lldp-basic-tlv.yang @@ -0,0 +1,318 @@ +module ieee802-dot1q-lldp-basic-tlv { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-lldp-basic-tlv; + prefix lldp-basic-tlv; + import ieee802-dot1ab-lldp { + prefix lldp; + } + import ieee802-dot1q-types { + prefix dot1qtypes; + } + organization + "Institute of Electrical and Electronics Engineers"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + description + "IEEE Std 802.1Q extension TLVs for LLDP + + References in this YANG module to IEEE Std 802.1Q are to IEEE Std + 802.1Q-2022 as amended by IEEE Std 802.1Qcz-2023. + + Copyright (C) IEEE (2023). + + This version of this YANG module is part of IEEE Std 802.1Q; see + the standard itself for full legal notices."; + revision 2023-07-03 { + description + "LLDP extension TLVs for the basicSet. Published as part of IEEE + Std 802.1Qcz-2023."; + reference + "Annex D of IEEE Std 802.1Q"; + } + grouping port-vlan-id-tlv { + description + "Port VLAN ID TLV"; + reference + "D.2.1 of IEEE Std 802.1Q"; + leaf port-vlan-id { + type dot1qtypes:vlanid; + description + "Advertise port VLAN Identifier, Send 0 if unknown or unsupported"; + reference + "D.2.1 of IEEE Std 802.1Q"; + } + } + grouping port-and-protocol-vlan-id-tlv { + description + "Port and Protocol VLAN ID TLV"; + reference + "D.2.2 of IEEE Std 802.1Q"; + uses port-vlan-id-tlv { + reference + "D.2.2 of IEEE Std 802.1Q"; + } + leaf flags { + type bits { + bit port-and-protocol-vlan-supported { + position 1; + description + "1 = supported, 0 = not supported"; + } + bit port-and-protocol-vlan-enabled { + position 2; + description + "1 = enabled, 0 = not enabled"; + } + } + description + "Port and Protocol VLAN capability and status. Bit positions 0 + and 3-7 are reserved for future standardization"; + reference + "D.2.2.1 of IEEE Std 802.1Q"; + } + } + grouping port-vlan-name-tlv { + description + "Port VLAN NAME TLV"; + reference + "D.2.3 of IEEE Std 802.1Q"; + leaf vlan-id { + type dot1qtypes:vlanid; + description + "The VLAN ID associated with the VLAN Name"; + reference + "D.2.3.2 of IEEE Std 802.1Q"; + } + leaf port-vlan-name { + type string { + length "0..32"; + } + description + "Advertise port VLAN Name, Send 0 length if unknown or + unsupported"; + reference + "D.2.3.3 of IEEE Std 802.1Q"; + } + } + grouping protocol-identity-tlv { + description + "Protocol Identity TLV"; + reference + "D.2.4 of IEEE Std 802.1Q"; + leaf protocol-identity { + type string { + length "1..255"; + } + description + "Advertise ProtocolIdentity"; + reference + "D.2.4.3 of IEEE Std 802.1Q"; + } + } + grouping vid-usage-digest-tlv { + description + "VID Usage Digest TLV"; + reference + "D.2.5 of IEEE Std 802.1Q"; + leaf vid-usage-digest { + type uint32; + config false; + description + "Advertise VID Usage Digest"; + reference + "D.2.5.1 of IEEE Std 802.1Q"; + } + } + grouping management-vid-tlv { + description + "Management VID TLV"; + reference + "D.2.6 of IEEE Std 802.1Q"; + leaf management-vid { + type dot1qtypes:vlanid; + description + "Advertise Management VID"; + reference + "D.2.6.1 of IEEE Std 802.1Q"; + } + } + grouping link-aggregation-tlv { + description + "Link Aggregation TLV"; + reference + "F.2 of IEEE Std 802.1AX-2020"; + leaf aggregation-status { + type bits { + bit aggregation-capability { + position 0; + description + "1 = supported, 0 = not supported"; + } + bit aggregation-status { + position 1; + description + "1 = currently aggregated, 0 = not currently aggregated"; + } + bit port-typeLS { + position 2; + description + "Least Significant Bit of 2 bit port type value"; + } + bit port-typeMS { + position 3; + description + "Most Significant Bit of 2 bit port type value"; + } + } + description + "Link Aggregation capability and status. Bit positions 4-7 are + reserved for future standardization"; + reference + "F.2.1 of IEEE Std 802.1AX-2020"; + } + leaf aggregated-port-id { + type uint32; + description + "Advertise aggregated port identifier"; + reference + "F.2.2 of IEEE Std 802.1AX-2020"; + } + } + augment "/lldp:lldp" { + description + "Augments lldp with information needed for system level extension + TLVs"; + container vid-usage-digest-tlv-extension { + description + "The VID Usage Digest TLV"; + uses vid-usage-digest-tlv; + } + container management-vid-tlv-extension { + description + "The Management VID TLV"; + uses management-vid-tlv; + } + } + augment "/lldp:lldp/lldp:port" { + description + "Augments port with basic extension TLVs"; + leaf tlvs-tx-org-basic-enable { + type bits { + bit port-vlan-id { + position 0; + description + "D.2.1 of IEEE Std 802.1Q"; + } + bit port-protocol-vlan-id { + position 1; + description + "D.2.2 of IEEE Std 802.1Q"; + } + bit vlan-name { + position 2; + description + "D.2.3 of IEEE Std 802.1Q"; + } + bit protocol-identity { + position 3; + description + "D.2.4 of IEEE Std 802.1Q"; + } + bit vid-user-digest { + position 4; + description + "D.2.5 of IEEE Std 802.1Q"; + } + bit management-vid { + position 5; + description + "D.2.6 of IEEE Std 802.1Q"; + } + bit link-aggregation { + position 6; + description + "Annex F of IEEE Std 802.1AX-2020"; + } + } + description + "Bitmap that includes the basicSet of TLVs from Table D-1 of + IEEE Std 802.1Q"; + reference + "D.2 of IEEE Std 802.1Q"; + } + container port-vlan-id-tlv-extension { + description + "The Port VLAN ID TLV"; + uses port-vlan-id-tlv; + } + container port-and-protocol-vlan-id-extension { + description + "The Port and Protocol VLAN ID TLV"; + uses port-and-protocol-vlan-id-tlv; + } + container port-vlan-name-tlv-extension { + description + "The Port VLAN Name TLV"; + uses port-vlan-name-tlv; + } + container protocol-identity-tlv-extension { + description + "The Protocol Identity TLV"; + uses protocol-identity-tlv; + } + container link-aggregation-tlv-extension { + description + "The Link Aggregation TLV"; + uses link-aggregation-tlv; + } + } + augment "/lldp:lldp/lldp:port/lldp:remote-systems-data" { + description + "Augments port remote-systems-data with received basic extension + TLVs"; + container port-vlan-id-tlv-extension { + description + "Holds a received Port VLAN ID TLV"; + uses port-vlan-id-tlv; + } + container port-and-protocol-vlan-id-extension { + description + "Holds a received Port and Protocol VLAN ID TLV"; + uses port-and-protocol-vlan-id-tlv; + } + container port-vlan-name-tlv-extension { + description + "Holds a received VLAN Name TLV"; + uses port-vlan-name-tlv; + } + container protocol-identity-tlv-extension { + description + "Holds a received Protocol Identity TLV"; + uses protocol-identity-tlv; + } + container link-aggregation-tlv-extension { + description + "Holds a received Link Aggregation TLV"; + uses link-aggregation-tlv; + } + container vid-usage-digest-tlv-extension { + description + "Holds a received VID Usage TLV"; + uses vid-usage-digest-tlv; + } + container management-vid-tlv-extension { + description + "Holds a received Management VID TLV"; + uses management-vid-tlv; + } + } +} diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-lldp-ci-tlv.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-lldp-ci-tlv.yang new file mode 100644 index 000000000..629cde54f --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-lldp-ci-tlv.yang @@ -0,0 +1,175 @@ +module ieee802-dot1q-lldp-ci-tlv { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-lldp-ci-tlv; + prefix lldp-ci-tlv; + import ieee802-dot1ab-lldp { + prefix lldp; + } + import ieee802-dot1q-congestion-isolation { + prefix dot1q-ci; + } + import ietf-inet-types { + prefix inet; + } + import ieee802-types { + prefix ieee; + } + import ieee802-dot1q-types { + prefix dot1q-types; + } + organization + "Institute of Electrical and Electronics Engineers"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + description + "IEEE Std 802.1Q extension TLVs for LLDP from the Congestion + Isolation set (ciSet). + + References in this YANG module to IEEE Std 802.1Q are to IEEE Std + 802.1Q-2022 as amended by IEEE Std 802.1Qcz-2023. + + Copyright (C) IEEE (2023). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + revision 2023-07-03 { + description + "LLDP extension TLVs for the ciSet. Published as part of IEEE Std + 802.1Qcz-2023."; + reference + "Annex D of IEEE Std 802.1Q"; + } + grouping congestion-isolation-tlv { + description + "Congestion Isolation TLV"; + reference + "D.2.15 of IEEE Std 802.1Q"; + list queue-map { + key "priority"; + description + "Eight integer octets, one entry for each traffic class indexed + by priority. Each octet specifies a value that can be translated + to the numeric value of the traffic class to be used as either + the congesting traffic class or the monitored traffic class for + the traffic class specified by the index. The octets range in + value from -8 to 8. A value of 0 in the list specifies that the + traffic class is not participating in congestion isolation. A + positive number specifies a traffic class for a monitored queue + that is one less than the value (e.g., a value of 5 represents + traffic class 4). A negative number specifies a traffic class for + a congesting queue that is one less than the absolute value + (e.g., a value of -4 represents traffic class 3)."; + reference + "D.2.15.3 of IEEE Std 802.1Q"; + leaf priority { + type dot1q-types:priority-type; + description + "There are eight values of Priority that map to an absolute + value that is a traffic class plus one, or the value 0 which + indicates the traffic class is not used by congestion + isolation."; + reference + "D.2.15.3 of IEEE Std 802.1Q"; + } + leaf queue-config { + type dot1q-ci:abs-traffic-class-plus-one-type; + description + "A value that can be translated to represent a traffic class or + an indication of non-use. A value of 0 specifies that the + traffic class is not participating in congestion isolation. A + positive number specifies a traffic class for a monitored + queue, and a negative number specifies a traffic class for a + congesting queue."; + reference + "D.2.15.3 of IEEE Std 802.1Q"; + } + } + leaf cim-encap-length { + type uint16; + description + "The minimum number of octets to include in the Encapsulated MSDU + field of each CIM generated. The default value is 48."; + reference + "D.2.15.4 of IEEE Std 802.1Q"; + } + leaf mac-address { + type ieee:mac-address; + config false; + description + "The MAC address to be used as the destination MAC address of a + CIM sent by the peer to reach this station."; + reference + "D.2.15.5 of IEEE Std 802.1Q"; + } + leaf udp-port-number { + type inet:port-number; + config false; + description + "The UDP port number to be used as the destination port number of + a layer-3 CIM sent by the peer to reach this station."; + reference + "D.2.15.6 of IEEE Std 802.1Q"; + } + leaf ip-address { + type inet:ip-address; + config false; + description + "This leaf holds the IP address that will be used to populate + both the address family and IP address fields of the TLV. The IP + address field in the TLV is an octet string to be encoded in + network octet order with length of 0, 4, or 16 octets dependent + upon the address family. If this leaf is an IPv4 address, the + address family field is 1 and the IP address field is 4 octets + representing the IPv4 address (e.g., IPv4 address 192.0.2.10 + would be encoded as C0-00-02-0A). If this leaf is an IPv6 + address, the address family field is 2 and the IP address field + is 16 octets representing the IPv6 address. No address shall be + provided for any other address families."; + reference + "D.2.15.7 and D.2.15.8 of IEEE Std 802.1Q"; + } + } + augment "/lldp:lldp/lldp:port" { + description + "Augments port with Congestion Isolation extension TLVs"; + leaf tlvs-tx-org-ci-enable { + type bits { + bit congestion-isolation { + position 0; + description + "Enables transmission of the Congestion Isolation TLV in the + ciSet"; + } + } + description + "Bitmap that includes the ciSet of TLVs from Table D-1 of + IEEE Std 802.1Q"; + reference + "D.2 of IEEE Std 802.1Q"; + } + container congestion-isolation-tlv-extension { + description + "The Congestion Isolation TLV"; + uses congestion-isolation-tlv; + } + } + augment "/lldp:lldp/lldp:port/lldp:remote-systems-data" { + description + "Augments port remote-systems-data with received Congestion + Isolation extension TLVs"; + container congestion-isolation-tlv-extension { + description + "Holds a received Congestion Isolation TLV"; + uses congestion-isolation-tlv; + } + } +} diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-lldp-cn-tlv.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-lldp-cn-tlv.yang new file mode 100644 index 000000000..380e6de6c --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-lldp-cn-tlv.yang @@ -0,0 +1,132 @@ +module ieee802-dot1q-lldp-cn-tlv { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-lldp-cn-tlv; + prefix lldp-cn-tlv; + import ieee802-dot1ab-lldp { + prefix lldp; + } + organization + "Institute of Electrical and Electronics Engineers"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + description + "IEEE Std 802.1Q extension TLVs for LLDP + + References in this YANG module to IEEE Std 802.1Q are to IEEE Std + 802.1Q-2022 as amended by IEEE Std 802.1Qcz-2023. + + Copyright (C) IEEE (2023). + + This version of this YANG module is part of IEEE Std 802.1Q; see + the standard itself for full legal notices."; + revision 2023-07-03 { + description + "LLDP extension tlv for congestion notification."; + reference + "Annex D of IEEE Std 802.1Q"; + } + grouping congestion-notification-tlv { + description + "Congestion Notification TLV"; + reference + "D.2.7 of IEEE Std 802.1Q"; + typedef congestion-notification-bit-vector { + type bits { + bit priority0 { + position 0; + description + "status for priority0, 0 is FALSE, 1 is TRUE"; + } + bit priority1 { + position 1; + description + "status for priority1, 0 is FALSE, 1 is TRUE"; + } + bit priority2 { + position 2; + description + "status for priority2, 0 is FALSE, 1 is TRUE"; + } + bit priority3 { + position 3; + description + "status for priority3, 0 is FALSE, 1 is TRUE"; + } + bit priority4 { + position 4; + description + "status for priority4, 0 is FALSE, 1 is TRUE"; + } + bit priority5 { + position 5; + description + "status for priority5, 0 is FALSE, 1 is TRUE"; + } + bit priority6 { + position 6; + description + "status for priority6, 0 is FALSE, 1 is TRUE"; + } + bit priority7 { + position 7; + description + "status for priority7, 0 is FALSE, 1 is TRUE"; + } + } + description + "Describes a bit vector used in Congestion Notification Objects"; + reference + "32.4.7, 32.4.8 of IEEE Std 802.1Q"; + } + leaf per-priority-xmit-cnpv-capable { + type congestion-notification-bit-vector; + description + "Indicates if a priority on this Port is operating as a CNPV"; + reference + "D.2.7.3, 32.4.7 of IEEE Std 802.1Q"; + } + leaf per-priority-xmit-ready { + type congestion-notification-bit-vector; + description + "Indicates if the priority remap defenses for this Port and CNPV + have been disabled"; + reference + "D.2.7.4, 32.4.8 of IEEE Std 802.1Q"; + } + } + augment "/lldp:lldp/lldp:port" { + description + "Augments port with the congestion notification extension tlv"; + leaf tlvs-tx-org-congestion-notification-enable { + type boolean; + description + "Leaf that indicates if congestion notification tlv is enabled + from Table D-1 of IEEE Std 802.1Q"; + reference + "D.2 of IEEE Std 802.1Q"; + } + container congestion-notification-tlv-extension { + description + "The Congestion Notification TLV"; + uses congestion-notification-tlv; + } + } + augment "/lldp:lldp/lldp:port/lldp:remote-systems-data" { + description + "Augments port remote-systems-data with received cn extension TLVs"; + container congestion-notification-tlv-extension { + description + "Holds a received Congestion Notification TLV"; + uses congestion-notification-tlv; + } + } +} diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-lldp-dcbx-tlv.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-lldp-dcbx-tlv.yang new file mode 100644 index 000000000..659a08e6d --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-lldp-dcbx-tlv.yang @@ -0,0 +1,537 @@ +module ieee802-dot1q-lldp-dcbx-tlv { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-lldp-dcbx-tlv; + prefix lldp-dcbx-tlv; + import ieee802-dot1q-types { + prefix dot1q-types; + } + import ieee802-dot1ab-lldp { + prefix lldp; + } + organization + "Institute of Electrical and Electronics Engineers"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + description + "IEEE Std 802.1Q extension TLVs for LLDP + + References in this YANG module to IEEE Std 802.1Q are to IEEE Std + 802.1Q-2022 as amended by IEEE Std 802.1Qcz-2023. + + Copyright (C) IEEE (2023). + + This version of this YANG module is part of IEEE Std 802.1Q; see + the standard itself for full legal notices."; + revision 2023-07-03 { + description + "LLDP extension TLVs for DCBX. Published as part of IEEE Std + 802.1Qcz-2023."; + reference + "Annex D of IEEE Std 802.1Q"; + } + identity application-priority-selector { + description + "Specify the application priority selection of IEEE Std 802.1Q + D.2.11 and Table D-8"; + } + identity default { + base application-priority-selector; + description + "Indicates the default application selection of the Application + Priority Table field of the Application Priority TLV specified in + D.2.11 of IEEE Std 802.1Q. Signaled as value 1."; + } + identity pri-tcp-sctp { + base application-priority-selector; + description + "Indicates TCP or SCTP application selection of the Application + Priority Table field of the Application Priority TLV specified in + D.2.11 of IEEE Std 802.1Q. Signaled as value 2."; + } + identity pri-udp-dccp { + base application-priority-selector; + description + "Indicates UDP or DCCP application selection of the Application + Priority Table field of the Application Priority TLV specified in + D.2.11 of IEEE Std 802.1Q. Signaled as value 3."; + } + identity pri-tcp-sctp-udp-dccp { + base application-priority-selector; + description + "Indicates TCP, SCTP, UDP or DCCP application selection of the + Application Priority Table field of the Application Priority TLV + specified in D.2.11 of IEEE Std 802.1Q. Signaled as value 4."; + } + identity pri-dscp { + base application-priority-selector; + description + "Indicates DSCP application selection of the Application Priority + Table field of the Application Priority TLV specified in D.2.11 of + IEEE Std 802.1Q. Signaled as value 5."; + } + identity application-vlan-selector { + description + "Specify the application VLAN selection of D.2.14, Table D-12, and + Table D-13 of IEEE Std 802.1Q"; + } + identity vlan-pvid-ethertype { + base application-vlan-selector; + description + "Indicates PVID or EtherType selection of the Application VLAN + Table field of the Application VLAN TLV specified in D.2.14 of + IEEE Std 802.1Q. Signaled as value 1."; + } + identity vlan-tcp-sctp { + base application-vlan-selector; + description + "Indicates TCP or SCTP application selection of the Application + VLAN Table field of the Application VLAN TLV specified in D.2.14 of + IEEE Std 802.1Q. Signaled as value 2."; + } + identity vlan-udp-dccp { + base application-vlan-selector; + description + "Indicates UDP or DCCP application selection of the Application + VLAN Table field of the Application VLAN TLV specified in D.2.14 of + IEEE Std 802.1Q. Signaled as value 3."; + } + identity vlan-tcp-sctp-udp-dccp { + base application-vlan-selector; + description + "Indicates TCP, SCTP, UDP or DCCP application selection of the + Application VLAN Table field of the Application VLAN TLV specified + in D.2.14 of IEEE Std 802.1Q. Signaled as value 4."; + } + identity vlan-dscp { + base application-vlan-selector; + description + "Indicates DSCP application selection of the Application VLAN Table + field of the Application VLAN TLV specified in D.2.14 of IEEE Std + 802.1Q. Signaled as value 5."; + } + grouping ets-configuration-tlv { + description + "The Enhanced Transmission Selection configuration TLV"; + reference + "D.2.8 of IEEE Std 802.1Q"; + leaf willing { + type boolean; + description + "True indicates willing to accept configurations from remote + station"; + reference + "D.2.8.3 of IEEE Std 802.1Q"; + } + leaf credit-based-shaper { + type boolean; + description + "True indicates station supports the Credit-based Shaper + transmission selection algorithm"; + reference + "D.2.8.4 of IEEE Std 802.1Q"; + } + leaf traffic-classes-supported { + type dot1q-types:num-traffic-class-type; + description + "Indicates number of traffic classes supported. The value of 8 is + encoded as 0 in the TLV since 3-bits are used to specify the + number"; + reference + "D.2.8.5 of IEEE Std 802.1Q"; + } + list priority-assignment-table { + key "priority"; + description + "Maps a priority to a traffic class"; + leaf priority { + type dot1q-types:priority-type; + description + "Indicates priority"; + reference + "D.2.8.6 of IEEE Std 802.1Q"; + } + leaf priority-traffic-class { + type dot1q-types:traffic-class-type; + description + "Indicates mapped traffic class for priority"; + reference + "D.2.8.6 of IEEE Std 802.1Q"; + } + leaf transmission-selection-algorithm { + type identityref { + base dot1q-types:transmission-selection-algorithm; + } + description + "Transmission selection algorithm"; + reference + "8.6.8 and Table 8-6 of IEEE Std 802.1Q"; + } + } + list tc-bandwidth-table { + key "traffic-class"; + description + "Indicates the current bandwidth percentage for each traffic + class"; + leaf traffic-class { + type dot1q-types:traffic-class-type; + description + "Indicates traffic class"; + reference + "D.2.8.7 of IEEE Std 802.1Q"; + } + leaf percentage-bandwidth { + type uint8 { + range "0..100"; + } + description + "Percentage configured for the traffic class"; + reference + "D.2.8.7 of IEEE Std 802.1Q"; + } + } + list tsa-assignment-table { + key "tsa-traffic-class"; + description + "Indicates the transmission selection algorithm used for a + traffic class"; + leaf tsa-traffic-class { + type dot1q-types:traffic-class-type; + description + "Indicates traffic class"; + reference + "D.2.8.8 of IEEE Std 802.1Q"; + } + leaf transmission-selection-algorithm { + type identityref { + base dot1q-types:transmission-selection-algorithm; + } + description + "Transmission selection algorithm"; + reference + "8.6.8 and Table 8-6 of IEEE Std 802.1Q"; + } + } + } + grouping ets-recommendation-tlv { + description + "Recommendation of Enhanced Transmission Selection configuration + TLV"; + reference + "D.2.9 of IEEE Std 802.1Q"; + list priority-assignment-table { + key "priority"; + description + "Maps a priority to a traffic class"; + leaf priority { + type dot1q-types:priority-type; + description + "Indicates priority"; + reference + "D.2.9.3 of IEEE Std 802.1Q"; + } + leaf priority-traffic-class { + type dot1q-types:traffic-class-type; + description + "Indicates mapped traffic class for priority"; + reference + "D.2.9.3 of IEEE Std 802.1Q"; + } + } + list tc-bandwidth-table { + key "traffic-class"; + description + "Indicates the current bandwidth percentage for each traffic + class"; + leaf traffic-class { + type dot1q-types:traffic-class-type; + description + "Indicates traffic class"; + reference + "D.2.9.4 of IEEE Std 802.1Q"; + } + leaf percentage-bandwidth { + type uint8 { + range "0..100"; + } + description + "Percentage configured for the traffic class"; + reference + "D.2.9.4 of IEEE Std 802.1Q"; + } + } + list tsa-assignment-table { + key "tsa-traffic-class"; + description + "Indicates the transmission selection algorithm used for a + traffic class"; + leaf tsa-traffic-class { + type dot1q-types:traffic-class-type; + description + "Indicates traffic class"; + reference + "D.2.9.5 of IEEE Std 802.1Q"; + } + leaf transmission-selection-algorithm { + type identityref { + base dot1q-types:transmission-selection-algorithm; + } + description + "Transmission selection algorithm"; + reference + "8.6.8 and Table 8-6 of IEEE Std 802.Q"; + } + } + } + grouping pfc-tlv { + description + "The Priority-based Flow Control configuration TLV"; + reference + "D.2.10 of IEEE Std 802.1Q"; + leaf willing { + type boolean; + description + "True indicates willing to accept configurations from remote + station"; + reference + "D.2.10.3 of IEEE Std 802.1Q"; + } + leaf macsec-bypass-capable { + type boolean; + description + "True indicates sending station is not capable of bypassing + MACsec"; + reference + "D.2.10.4 of IEEE Std 802.1Q"; + } + leaf number-tc-capable { + type dot1q-types:num-traffic-class-type; + description + "Indicates how many traffic classes may simultaneously support + PFC."; + reference + "D.2.10.5 of IEEE Std 802.1Q"; + } + leaf enable { + type bits { + bit p0 { + position 0; + description + "1 indicates PFC is enabled on the priority"; + } + bit p1 { + position 1; + description + "1 indicates PFC is enabled on the priority"; + } + bit p2 { + position 2; + description + "1 indicates PFC is enabled on the priority"; + } + bit p3 { + position 3; + description + "1 indicates PFC is enabled on the priority"; + } + bit p4 { + position 4; + description + "1 indicates PFC is enabled on the priority"; + } + bit p5 { + position 5; + description + "1 indicates PFC is enabled on the priority"; + } + bit p6 { + position 6; + description + "1 indicates PFC is enabled on the priority"; + } + bit p7 { + position 7; + description + "1 indicates PFC is enabled on the priority"; + } + } + description + "PFC enabled per priority"; + reference + "D.2.10.6 of IEEE Std 802.1Q"; + } + } + grouping application-priority-tlv { + description + "The application priority table TLV"; + reference + "D.2.11 of IEEE Std 802.1Q"; + list application-priority-table { + key "application-priority"; + description + "Specifies a 3-bit priority for a Protocol ID"; + leaf application-priority { + type dot1q-types:priority-type; + description + "Priority for which the Protocol ID is being used"; + reference + "D.2.11.3 of IEEE Std 802.1Q"; + } + leaf application-priority-selector { + type identityref { + base application-priority-selector; + } + description + "Selector to determine what the Protocol ID means."; + reference + "D.2.11.3 of IEEE Std 802.1Q"; + } + leaf application-priority-protocol { + type uint16 { + range "0..65535"; + } + description + "Protocol ID of the type indicated by the selector"; + reference + "D.2.11.3 of IEEE Std 802.1Q"; + } + } + } + grouping application-vlan-tlv { + description + "The Application VLAN table TLV"; + reference + "D.2.14 of IEEE Std 802.1Q"; + list application-vlan-table { + key "application-vlan"; + description + "Specifies a VLAN ID priority for a Protocol ID"; + leaf application-vlan { + type dot1q-types:vlanid; + description + "Vlan for which the Protocol ID is being used"; + reference + "D.2.14.3 of IEEE Std 802.1Q"; + } + leaf application-vlan-selector { + type identityref { + base application-vlan-selector; + } + description + "Selector to determine what the Protocol ID means."; + reference + "D.2.14.3 of IEEE Std 802.1Q"; + } + leaf application-vlan-protocol { + type uint16 { + range "0..65535"; + } + description + "Protocol ID of the type indicated by the selector"; + reference + "D.2.14.3 of IEEE Std 802.1Q"; + } + } + } + augment "/lldp:lldp/lldp:port" { + description + "Augments port with the dcbx extension tlv"; + leaf tlvs-tx-org-dcbx-enable { + type bits { + bit ets-configuration { + position 0; + description + "D.2.8 of IEEE Std 802.1Q"; + } + bit ets-recommendation { + position 1; + description + "D.2.9 of IEEE Std 802.1Q"; + } + bit pfc { + position 2; + description + "D.2.10 of IEEE Std 802.1Q"; + } + bit application-priority { + position 3; + description + "D.2.11 of IEEE Std 802.1Q"; + } + bit application-vlan { + position 4; + description + "D.2.14 of IEEE Std 802.1Q"; + } + } + description + "Bitmap including the dcbxSet of TLVs from Table D-1 of IEEE Std + 802.1Q"; + reference + "D.1 of IEEE Std 802.1Q"; + } + container ets-configuration-tlv-extension { + description + "The ETS Configuration TLV"; + uses ets-configuration-tlv; + } + container ets-recommendation-tlv-extension { + description + "The ETS Recommendation TLV"; + uses ets-recommendation-tlv; + } + container pfc-tlv-extension { + description + "The Priority-based Flow Control Configuration TLV"; + uses pfc-tlv; + } + container application-priority-tlv-extension { + description + "The Application Priority TLV"; + uses application-priority-tlv; + } + container application-vlan-tlv-extension { + description + "The Application VLAN TLV"; + uses application-vlan-tlv; + } + } + augment "/lldp:lldp/lldp:port/lldp:remote-systems-data" { + description + "Augments port remote-systems-data with received dcbx extension + TLVs"; + container ets-configuration-tlv-extension { + description + "Holds a received ETS Configuration TLV"; + uses ets-configuration-tlv; + } + container ets-recommendation-tlv-extension { + description + "Holds a received ETS Recommendation TLV"; + uses ets-recommendation-tlv; + } + container pfc-tlv-extension { + description + "Holds a received Proirity-based Flow Control Configuration TLV"; + uses pfc-tlv; + } + container application-priority-tlv-extension { + description + "Holds a received Application Priority TLV"; + uses application-priority-tlv; + } + container application-vlan-tlv-extension { + description + "Holds a received Application VLAN TLV"; + uses application-vlan-tlv; + } + } +} diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-lldp-evb-tlv.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-lldp-evb-tlv.yang new file mode 100644 index 000000000..ffcc78b46 --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-lldp-evb-tlv.yang @@ -0,0 +1,126 @@ +module ieee802-dot1q-lldp-evb-tlv { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-lldp-evb-tlv; + prefix lldp-evb-tlv; + import ieee802-dot1ab-lldp { + prefix lldp; + } + organization + "Institute of Electrical and Electronics Engineers"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + description + "IEEE Std 802.1Q extension TLVs for LLDP + + References in this YANG module to IEEE Std 802.1Q are to IEEE Std + 802.1Q-2022 as amended by IEEE Std 802.1Qcz-2023. + + Copyright (C) IEEE (2023). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + revision 2023-07-03 { + description + "LLDP extension tlv for EVB. Published as part of IEEE Std + 802.1Qcz-2023."; + reference + "Annex D of IEEE Std 802.1Q"; + } + grouping evb-tlv { + description + "Edge Virtual Bridging (EVB) TLV"; + reference + "D.2.12 of IEEE Std 802.1Q"; + leaf evb-tlv-info-string { + type binary { + length "0..9"; + } + config false; + description + "Opaque string containing EVB TLV information string. As the + elements within the string are not individually manipulated by + management (they are of concern only to the state machines), the + sub-structure of the string is not visible as separate objects + within the local database."; + reference + "D.2.12 of IEEE Std 802.1Q"; + } + } + grouping cdcp-tlv { + description + "Channel Discovery and Configuration TLV"; + reference + "D.2.13 of IEEE Std 802.1Q"; + leaf cdcp-tlv-info-string { + type binary { + length "0..511"; + } + config false; + description + "Opaque string containing CDCP TLV information. Up to 167 + S-channel numbers are supported. As the elements within the + string are not individually manipulated by management (they are + of concern only to the state machines), the sub-structure of the + string is not visible as separate objects within the local + database."; + reference + "D.2.13 and D.2.13.8 of IEEE Std 802.1Q"; + } + } + augment "/lldp:lldp/lldp:port" { + description + "Augments port with the EVB TLV"; + leaf tlvs-tx-org-evb-enable { + type bits { + bit evb { + position 0; + description + "D.2.12 of IEEE Std 802.1Q"; + } + bit cdcp { + position 1; + description + "D.2.13 of IEEE Std 802.1Q"; + } + } + description + "Bitmap that includes the evbSet of TLVs from Table D-1 of + IEEE Std 802.1Q"; + reference + "D.1 of IEEE Std 802.1Q"; + } + container evb-tlv-extension { + description + "The EVB TLV"; + uses evb-tlv; + } + container cdcp-tlv-extension { + description + "The CDCP TLV"; + uses cdcp-tlv; + } + } + augment "/lldp:lldp/lldp:port/lldp:remote-systems-data" { + description + "Augments port remote-systems-data with received EVB TLVs"; + container evb-tlv-extension { + description + "Holds a received EVB TLV"; + uses evb-tlv; + } + container cdcp-tlv-extension { + description + "Holds a received CDCP TLV"; + uses cdcp-tlv; + } + } +} diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-lldp-pbbn-aa-tlv.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-lldp-pbbn-aa-tlv.yang new file mode 100644 index 000000000..3fefd8fa5 --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-lldp-pbbn-aa-tlv.yang @@ -0,0 +1,420 @@ +module ieee802-dot1q-lldp-pbbn-aa-tlv { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-lldp-pbbn-aa-tlv; + prefix lldp-aa-tlv; + import ieee802-dot1ab-lldp { + prefix lldp; + } + import ieee802-dot1q-types { + prefix dot1qtypes; + } + organization + "Institute of Electrical and Electronics Engineers"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + description + "LLDP PBBN Auto Attach TLVs + + Copyright (C) IEEE (2023). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + revision 2023-10-26 { + description + "Published as part of IEEE Std 802.1Qcj-2023. + + The following reference statement identifies each referenced IEEE + Standard as updated by applicable amendments."; + reference + "IEEE Std 802.1Q Bridges and Bridged Networks: + IEEE Std 802.1Q-2022, IEEE Std 802.1Qcz-2023, IEEE Std 802.1Qcw-2023, + IEEE Std 802.1Qcj-2023. + IEEE Std 802 Overview and Architecture: IEEE Std 802-2014."; + } + identity assoc-state-selector { + description + "Specify the state of the association between the AAS entities as + described by D.2.17.5 of IEEE Std 802.1Q"; + } + identity not-ready { + base assoc-state-selector; + description + "Indicates the association state of NOT_READY as specified in D.2.17.5 + of IEEE Std 802.1Q. Signaled as the value 0x00."; + } + identity ready-to-assoc { + base assoc-state-selector; + description + "Indicates the association state of READY_TO_ASSOC as specified in + D.2.17.5 of IEEE Std 802.1Q. Signaled as the value 0x01."; + } + identity ready-to-attach { + base assoc-state-selector; + description + "Indicates the association state of READY_TO_ATTACH as specified in + D.2.17.5 of IEEE Std 802.1Q. Signaled as the value 0x02."; + } + identity assoc-failed-types { + base assoc-state-selector; + description + "Indicates the association state of ASSOC_FAILED_TYPES as specified + in D.2.17.5 of IEEE Std 802.1Q. Signaled as the value 0x12."; + } + identity assoc-failed-tags { + base assoc-state-selector; + description + "Indicates the association state of ASSOC_FAILED_TAGS as specified + in D.2.17.5 of IEEE Std 802.1Q. Signaled as the value 0x22."; + } + identity assoc-failed-topo { + base assoc-state-selector; + description + "Indicates the association state of ASSOC_FAILED_TOPO as specified + in D.2.17.5 of IEEE Std 802.1Q. Signaled as the value 0x32."; + } + identity assoc-failed-other { + base assoc-state-selector; + description + "Indicates the association state of ASSOC_FAILED_OTHER as specified + in D.2.17.5 of IEEE Std 802.1Q. Signaled as the value 0x42."; + } + identity assoc-attached { + base assoc-state-selector; + description + "Indicates the association state of ASSOC_ATTACHED as specified in + D.2.17.5 of IEEE Std 802.1Q. Signaled as the value 0x03."; + } + identity assoc-standby { + base assoc-state-selector; + description + "Indicates the association state of ASSOC_STANDBY as specified in + D.2.17.5 of IEEE Std 802.1Q. Signaled as the value 0x13."; + } + identity assoc-invalid { + base assoc-state-selector; + description + "Indicates the association state of ASSOC_INVALID as specified in + D.2.17.5 of IEEE Std 802.1Q. Signaled as the value 0x23."; + } + identity system-type-selector { + description + "Specify the selection of the PPBN Auto-attach system type as + specified in D.2.17.7 of IEEE Std 802.1Q"; + } + identity aab-system { + base system-type-selector; + description + "Indicates the system type of an Auto Attach BEB (AAB) in the PPBN + Auto Attach System TLV specified in D.2.17 of IEEE Std 802.1Q. + Signaled as the value 1."; + } + identity aad-cvlan-system { + base system-type-selector; + description + "Indicates the system type of a C-VLAN aware Auto Attach Device + (AAD) in the PPBN Auto Attach System TLV specified in D.2.17 of + IEEE Std 802.1Q. Signaled as the value 2."; + } + identity aad-vlan-unaware-system { + base system-type-selector; + description + "Indicates the system type of a VLAN unaware Auto Attach Device + (AAD) in the PPBN Auto Attach System TLV specified in D.2.17 of + IEEE Std 802.1Q. Signaled as the value 3."; + } + identity aad-svlan-system { + base system-type-selector; + description + "Indicates the system type of a S-VLAN aware Auto Attach Device + (AAD) in the PPBN Auto Attach System TLV specified in D.2.17 of + IEEE Std 802.1Q. Signaled as the value 4."; + } + identity tagging-selector { + description + "Specify the tagging field selection of the PPBN Auto Attach System + TLV as specified in D.2.17.8 of IEEE Std 802.1Q"; + } + identity tagged-only { + base tagging-selector; + description + "Indicates the AAD link tagging requirement of all VLAN tagged in + AAD sourced frames. Signaled as the value 0 in the PPBN Auto Attach + System TLV specified in D.2.17 of IEEE Std 802.1Q."; + } + identity untagged-or-tagged { + base tagging-selector; + description + "Indicates the AAD link tagging requirement of untagged and VLAN + tagged in AAD sourced frames. Signaled as the value 1 in the PPBN + Auto Attach System TLV specified in D.2.17 of IEEE Std 802.1Q."; + } + identity untagged-only { + base tagging-selector; + description + "Indicates the AAD link tagging requirement of all untagged in AAD + sourced frames. Signaled as the value 2 in the PPBN Auto Attach + System TLV specified in D.2.17 of IEEE Std 802.1Q."; + } + identity assignment-status-selector { + description + "Specify the status of an assignment in the PBBN Auto Attach + Assignment TLV sent by the AAB for each VID/I-SID assignment request."; + } + identity pending { + base assignment-status-selector; + description + "Indicates the AAB is processing the assignment. This status is + used by the AAD while it is waiting for a response from the AAB as + described in D.2.18.6 of IEEE Std 802.1Q. Signaled as the value 1."; + } + identity accepted { + base assignment-status-selector; + description + "Indicates the AAB assignment processing request is complete for + the VID/I-SID and the VLAN to BSI connection has been established + as described in D.2.18.6 of IEEE Std 802.1Q. Signaled as the value + 2."; + } + identity rejected-generic { + base assignment-status-selector; + description + "Indicates an undefined rejection has occurred as described in + D.2.18.6 of IEEE Std 802.1Q. Signaled as the value 3."; + } + identity rejected-resource { + base assignment-status-selector; + description + "Indicates a rejection has occurred due to system resources being + unavailable as described in D.2.18.6 of IEEE Std 802.1Q. Signaled + as the value 4."; + } + identity rejected-invalid-vlan { + base assignment-status-selector; + description + "Indicates a rejection has occurred because the VID value is + outside the range of 1 to 4094 as described in D.2.18.6 of IEEE Std + 802.1Q. Signaled as the value 5."; + } + identity rejected-vlan-resource { + base assignment-status-selector; + description + "Indicates a rejection has occurred due to maximum VLAN resource + limits have been reached as described in D.2.18.6 of IEEE Std + 802.1Q. Signaled as the value 6."; + } + identity rejected-invalid-isid { + base assignment-status-selector; + description + "Indicates a rejection has occurred because the I-SID value is + outside of the range 1 or 256 through 16777214 as described in + D.2.18.6 of IEEE Std 802.1Q. Signaled as the value 7."; + } + identity rejected-isid-resource { + base assignment-status-selector; + description + "Indicates a rejection has occurred due to maximum I-SID resource + limits have been reached as described in D.2.18.6 of IEEE Std + 802.1Q. Signaled as the value 8."; + } + identity rejected-application { + base assignment-status-selector; + description + "Indicates a rejection has occurred because of an issue with Auto + Attach agent functions on the AAB as described in D.2.18.6 of IEEE + Std 802.1Q. Signaled as the value 9."; + } + identity rejected-policy { + base assignment-status-selector; + description + "Indicates a rejection has occurred because the Auto Attach + assignment processing is subject to a policy or rule on the AAB + where the assignment requested is not permitted or denied as + described in D.2.18.6 of IEEE Std 802.1Q. Signaled as the value 10."; + } + typedef aa-isid-type { + type dot1qtypes:isid-type { + range "1 | 256..16777214"; + } + description + "The aa-i-sid type represents a Backbone Service Instance + Identifier (I-SID). This is the 24-bit I-SID field used in the + I-TAG TCI of a Provider Backbone Bridging frame. The values 0, + 2-254, and 16777215 are reserved for future standardization. The + value 255 is dedicated to use by the SPB protocol. For Auto Attach + values 2-255 are not allowed."; + reference + "D.2.18.8 of IEEE Std 802.1Q."; + } + typedef port-netid-type { + type binary { + length "12"; + } + description + "A 12-octet binary string representing the PortNetID fields of the + PPBN Auto Attach System TLV as specified in D.2.17 of IEEE Std + 802.1Q. The 12 octet field uniquely identifies an Auto Attach port + within the administrative domain used for Auto Attach. The first 6 + octets of the string are the binary representation of the system's + MAC address. The next 2 octets are reserved and have the value 0. + The last 4 octets are the integer IfIndex for the port."; + reference + "D.2.17.10 of IEEE Std 802.1Q"; + } + grouping aa-system-tlv { + description + "PBBN Auto Attach System TLV"; + reference + "D.2.17 of IEEE Std 802.1Q"; + leaf assoc-state { + type identityref { + base assoc-state-selector; + } + config false; + description + "Association state between AAS entities on the link"; + reference + "D.2.17.5 of IEEE Std 802.1Q."; + } + leaf system-type { + type identityref { + base system-type-selector; + } + config false; + description + "Identifies the capability of the advertising system type."; + reference + "D.2.17.7 of IEEE Std 802.1Q."; + } + leaf tagging { + type identityref { + base tagging-selector; + } + config false; + description + "Indicates AAD link tagging requirements in AAD-sourced frames + and current provisioning mode information."; + reference + "D.2.17.8 of IEEE Std 802.1Q."; + } + leaf portnetid { + type port-netid-type; + config false; + description + "Uniquely identifies an Auto Attach port within the + administrative domain used for Auto Attach connection management."; + reference + "D.2.17.10 of IEEE Std 802.1Q."; + } + } + grouping aa-assign-tlv { + description + "PBBN Auto Attach Assignment TLV"; + reference + "D.2.18 of IEEE Std 802.1Q"; + leaf num-assigns { + type uint8 { + range "0..101"; + } + config false; + description + "Contains the number of Status/VID/I-SID triples in the PBBN Auto + Attach assignment TLV."; + reference + "D.2.18.5 of IEEE Std 802.1Q."; + } + list assignments { + key "vlan-id i-sid"; + config false; + description + "A triplet of fields in the PBBN Auto Attach Assignment TLV that + indicates the mapping of VLAN ID to I-SID and the status of that + mapping."; + leaf assignment-status { + type identityref { + base assignment-status-selector; + } + config false; + reference + "D.2.18.6 of IEEE Std 802.1Q."; + } + leaf vlan-id { + type dot1qtypes:vlanid; + config false; + description + "Advertises the VLAN ID of the VLAN being mapped by the + assignment. If this is an association with a VLAN unaware AAD + this field is transmitted as zero and ignored on receive. If + this is a VLAN aware AAD, then this field is a valid VID."; + reference + "D.2.18.7 of IEEE Std 802.1Q."; + } + leaf i-sid { + type aa-isid-type; + config false; + description + "Advertises the value of the PBBN Backbone Service + Instance Identifier (I-SID) mapped by this assignment."; + reference + "D.2.18.8 of IEEE Std 802.1Q."; + } + } + } + augment "/lldp:lldp/lldp:port" { + description + "Augments port with the PBBN Auto Attach TLVs"; + leaf tlvs-tx-org-aa-system-enable { + type bits { + bit aaSystem { + position 0; + description + "D.2.17 of IEEE Std 802.1Q"; + } + bit aaAssign { + position 1; + description + "D.2.18 of IEEE Std 802.1Q"; + } + } + config false; + description + "Bitmap that includes the aaSet of TLVs from Table D-1 of IEEE + Std 802.1Q"; + reference + "D.1 of IEEE Std 802.1Q"; + } + container aa-system-tlv-extension { + description + "The PBBN Auto Attach System TLV"; + uses aa-system-tlv; + } + container aa-assign-tlv-extension { + description + "The PBBN Auto Attach Assignment TLV"; + uses aa-assign-tlv; + } + } + augment "/lldp:lldp/lldp:port/lldp:remote-systems-data" { + description + "Augments port remote-systems-data with received PBBN Auto Attach + TLVs"; + container aa-system-tlv-extension { + description + "Holds a received PBBN Auto Attach System TLV"; + uses aa-system-tlv; + } + container aa-assign-tlv-extension { + description + "Holds a received PBBN Auto Attach Assignment TLV"; + uses aa-assign-tlv; + } + } +} diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-lldp-tr-tlv.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-lldp-tr-tlv.yang new file mode 100644 index 000000000..4bddeca6d --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-lldp-tr-tlv.yang @@ -0,0 +1,181 @@ +module ieee802-dot1q-lldp-tr-tlv { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-lldp-tr-tlv; + prefix lldp-tr-tlv; + import ieee802-dot1ab-lldp { + prefix lldp; + } + organization + "Institute of Electrical and Electronics Engineers"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + description + "IEEE Std 802.1Q extension TLVs for LLDP from the Topology + Recognition set (trSet) + + References in this YANG module to IEEE Std 802.1Q are to IEEE Std + 802.1Q-2022 as amended by IEEE Std 802.1Qcz-2023. + + Copyright (C) IEEE (2023). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + revision 2023-07-03 { + description + "LLDP extension TLVs for the trSet. Published as part of IEEE Std + 802.1Qcz-2023."; + reference + "Annex D of IEEE Std 802.1Q"; + } + grouping topology-recognition-tlv-lldp { + description + "System level components of Topology Recognition TLV"; + reference + "D.2.16 of IEEE Std 802.1Q"; + leaf device-type { + type enumeration { + enum end-station { + value 0; + description + "Indicates that the device is a non-relay end-station or + server."; + } + enum bridge { + value 1; + description + "Indicates that the device is a layer-2 bridge."; + } + enum router { + value 2; + description + "Indicates that the device is a layer-3 router."; + } + enum unknown { + value 255; + description + "Indicates that the device type is unknown."; + } + } + config false; + description + "Identifies the type of system performing Topology Recognition"; + reference + "D.2.16.3 of IEEE Std 802.1Q"; + } + leaf topology-level { + type uint8; + description + "A single octet unsigned integer that indicates the system’s + understanding of its current level in the topology. The value of + 0 indicates the edge of the topology and the value 255 indicates + the level is currently unknown. Other non-zero values indicate + the minimum number of links between the system and the edge of + the topology. Initially systems may not know their position in + the topology and will use the value of unknown by default. As + systems discover the device type and topology level of their + peers the topology level of the sending system may change."; + reference + "D.2.16.4 of IEEE Std 802.1Q"; + } + } + grouping topology-recognition-tlv-port { + description + "Port level components of Topology Recognition TLV"; + reference + "D.2.16 of IEEE Std 802.1Q"; + leaf port-orientation { + type enumeration { + enum uplink { + value 0; + description + "Indicates that the port is facing a system deeper in the + topology."; + } + enum downlink { + value 1; + description + "Indicates that the port is facing a system closer to the + edge of the topology."; + } + enum crosslink { + value 2; + description + "Indicates that the port is facing a system at the same level + in the topology."; + } + enum unknown { + value 255; + description + "Indicates that the port orientation is unknown."; + } + } + description + "Indicates whether the port is facing an uplink, downlink, + crosslink or the orientation is currently unknown. Initially + systems may not know the port orientation and will use the value + of unknown by default. As systems discover the device type and + topology level of their peers the port orientation of the sending + system may change."; + reference + "D.2.16.5 of IEEE Std 802.1Q"; + } + } + augment "/lldp:lldp" { + description + "Augments lldp with information at the system level needed to + construct Topology Recognition TLVs"; + reference + "D.2.16 of IEEE Std 802.1Q"; + container topology-recognition-tlv-extension { + description + "The system level components of the Topology Recognition TLV"; + uses topology-recognition-tlv-lldp; + } + } + augment "/lldp:lldp/lldp:port" { + when + "lldp:name"; + description + "Augments port with Topology Recognition extension TLVs"; + leaf tlvs-tx-org-tr-enable { + type bits { + bit topology-recognition { + position 0; + description + "Enables transmission of the Topology Recognition TLV in the + trSet"; + } + } + description + "Bitmap that includes the trSet of TLVs from Table D-1 of + IEEE Std 802.1Q"; + reference + "D.2 of IEEE Std 802.1Q"; + } + container topology-recognition-tlv-extension { + description + "The port level components of the Topology Recognition TLV"; + uses topology-recognition-tlv-port; + } + } + augment "/lldp:lldp/lldp:port/lldp:remote-systems-data" { + description + "Augments port remote-systems-data with received Topology + Recognition extension TLVs"; + container congestion-isolation-tlv-extension { + description + "Holds a received Topology Recognition TLV"; + uses topology-recognition-tlv-lldp; + uses topology-recognition-tlv-port; + } + } +} diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-mstp.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-mstp.yang new file mode 100644 index 000000000..0dc397fe5 --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-mstp.yang @@ -0,0 +1,344 @@ +module ieee802-dot1q-mstp { + yang-version 1.1; + namespace "urn:ieee:std:802.1Q:yang:ieee802-dot1q-mstp"; + prefix mstp; + + import ietf-interfaces { + prefix if; + } + import ieee802-dot1q-types { + prefix dot1qtypes; + } + import ieee802-dot1q-bridge { + prefix dot1q; + } + import ieee802-dot1q-rstp { + prefix rstp; + } + + organization + "IEEE 802.1 Working Group"; + contact + "WG-URL: http://www.ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + description + "This module provides management of 802.1Q Bridge components that + support the Multiple Spanning Tree Algorithm and Protocol (MSTP). + + Copyright (C) IEEE (2024). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + + revision 2024-02-26 { + description + "Published as part of IEEE Std 802.1Qdy-2024. + + The following reference statement identifies each referenced IEEE + Standard as updated by applicable amendments."; + reference + "IEEE Std 802.1Q Bridges and Bridged Networks: + IEEE Std 802.1Q-2022, IEEE Std 802.1Qcz-2023, IEEE Std 802.1Qcw-2023, + IEEE Std 802.1Qcj-2023, IEEE Std 802.1Qdj-2024, IEEE Std 802.1Qdx-2024, + IEEE Std 802.1Qdy-2024."; + } + + augment "/dot1q:bridges/dot1q:bridge/dot1q:component/dot1q:bridge-mst" { + when "../rstp:rstp"; + + description + "Augment RSTP-capable Bridge component with MSTP configuration and + management."; + reference + "13.24, 13.25, and 13.26 of IEEE Std 802.1Q."; + + container mst-config-id { + presence "The presence of this container indicates that MSTP is supported"; + description + "Containing the MST Configuration Identifier of a Bridge."; + reference + "Item d) in 13.26."; + leaf format-selector { + type int32 { + range "0"; + } + config true; + description + "In an MSTP Bridge, the MST Configuration Identifier's + Configuration Identifier Format Selector. This has a value of 0 + indicating the format specified in IEEE Std 802.1Q."; + reference + "Item a) in 13.8 of IEEE Std 802.1Q."; + } + leaf configuration-name { + type string { + length "32"; + } + config true; + description + "The Configuration Name in the MST Configuration Identifier."; + reference + "Item b) in 13.8:2 of IEEE Std 802.1Q."; + } + leaf revision-level { + type uint32 { + range "0..65535"; + } + config true; + description + "The Revision Level in the MST Configuration Identifier."; + reference + "Item c) in 13.8 of IEEE Std 802.1Q."; + } + leaf configuration-digest { + type binary { + length "16"; + } + config false; + description + "The Configuration Digest in the MST Configuration Identifier."; + reference + "Item d) in 13.8 of IEEE Std 802.1Q."; + } + } + + container bridge-mstp { + presence "The presence of this container indicates that MSTP is supported"; + description + "Per-Bridge configuration and management parameters for the IST + and each MSTI in an MST Region."; + reference + "Clause 13, 13.26 of IEEE Std 802.1Q."; + leaf max-hops { + type int32 { + range "6..100"; + } + default "20"; + config true; + description + "In an MSTP Bridge, the MaxHops parameter for the IST, also used + for each of the MSTIs. + + The value of this object MUST be retained across reinitializations + of the management system."; + reference + "Clause 13, Table 13-5, 13.26.4, item g) in 13.26 of + IEEE Std 802.1Q."; + } + leaf ist-internal-root-path-cost { + type uint32; + config false; + description + "The Internal Root Path Cost for the IST calculated by this + Bridge after the addition of the Internal Port Path Cost for the + Root Port (or Master Port) for this IST (MSTID 0) or MST."; + reference + "13.9, 13.10, 13.5.3, 13.26.10 and item i) in 13.26 of + IEEE Std 802.1Q."; + } + list mst { + key "mstid"; + description + "Per-Bridge configuration and management parameters for each MST, + with an MSTID in the range allocated for MSTP configuration."; + reference + " "; + leaf mstid { + type uint16 { + range "1..4091"; + } + description + "MSTIDs allocated for use by MSTP (1..4091) to identify MSTIs. + Other MSTIDs in the 12-bit range are reserved [for use in + the MST Configuration Table, whose configuration is identified + by the Configuration Digest in the MST Configuration Identifier + (mst-config-id/configuration-digest)] for the CIST-MSTID, + SPBM-MSTID, SPBV-MSTID, TE-MSTID, and SPVID-Poll-MSTID."; + reference + "8.4, 8.6.1, 8.9.3, 13.2.1 of IEEE Std 802.1Q."; + } + leaf port-id-priority { + type dot1qtypes:priority-type; + config true; + description + "The priority component of this Bridge Port's Port Identifier for + the MSTI, encoded in the four most-significant bits of octet 15 of + the MSTI Configuration Message. + + The value of this object MUST be retained across reinitializations + of the management system."; + reference + "13.26.3, 13.11, 14.4.1, and + item f) in 13.26 of IEEE Std 802.1Q."; //!! + } + leaf internal-root-path-cost { + type uint32; + config false; + description + "The Internal Root Path Cost for this MSTI calculated by this + Bridge after the addition of the Internal Port Path Cost for the + Root Port (or Master Port) for this MSTI."; + reference + "13.9, 13.10, 13.5.3, 13.26.10 and item i) in 13.26 of + IEEE Std 802.1Q."; + } + leaf root-port-number { + type dot1qtypes:port-number-type; + config false; + description + "The port number of the Root Port for this MSTI."; + reference + "13.4, 13.5, 13.26.9, and item h) in 13.26 of IEEE Std 802.1Q.";//!! + } + } + } + } + augment "/if:interfaces/if:interface/dot1q:bridge-port" { + when "rstp:rstp"; + description + "Augment RSTP Bridge Port with MSTP configuration"; + reference + "13.24, 13.25, and 13.27 of IEEE Std 802.1Q."; + container port-mstp { + presence "The presence of this container indicates that MSTP is supported"; + description + "Per-Bridge Port configuration and management parameters for the IST + and each MSTI in an MST Region."; + list mst { + key "mstid"; + description + "Per-Bridge Port configuration and management parameters for each MST, + with an MSTID in the range allocated for MSTP configuration."; + reference + " "; + leaf mstid { + type uint16 { + range "1..4091"; + } + description + "MSTIDs allocated for use by MSTP (1..4091) to identify MSTIs."; + reference + "8.4, 8.6.1, 8.9.3, 13.2.1 of IEEE Std 802.1Q."; + } + leaf msti-port-state { + type enumeration { + enum discarding { + value 1; + } + enum learning { + value 2; + } + enum forwarding { + value 3; + } + } + config false; + description + "The port's Port State, summarizing the application of learning to + received frames, and the forwarding of relayed frames, for frames + assigned to this MSTI."; + reference + "8.4, 13.4, item aw) and item ba) in 13.27 of IEEE Std 802.1Q."; + } + leaf msti-port-role { + type enumeration { + enum disabled-port { + value 1; + } + enum root-port { + value 2; + } + enum designated-port { + value 3; + } + enum alternate-port { + value 4; + } + enum backup-port { + value 5; + } + enum master-port { + value 6; + } + } + config false; + description + "The port's Port Role for the MSTI. Disabled Port, Root Port, + Designated Port, Alternate Port, Backup Port, or Master Port."; + reference + "13.4, 13.5, 13.12, 13.24, 13.27.66, and item bn) in 13.27 of + IEEE Std 802.1Q.";//!! + } + leaf msti-bridge-id-priority { + type dot1qtypes:priority-type; + config true; + description + "The priority component of this Bridge's Bridge Identifier for the + MSTI, encoded in the four most-significant bits of octet 14 of the + MSTU Configuration Message. + + The value of this object MUST be retained across reinitializations + of the management system."; + reference + "13.26.3, 13.11, 14.4.1, and item f) in 13.26 of IEEE Std 802.1Q."; + } + leaf msti-internal-port-path-cost { + type uint32; + config true; + description + "The Internal Port Path Cost for this Bridge Port and MSTI."; + reference + "Item b) of 13.2.1, and item ay) in 13.26 of IEEE Std 802.1Q."; + } + leaf msti-regional-root-id { + type uint32; + config false; + description + "The MSTI Regional Root Identifier in Configuration BPDUs transmitted + by the Designated Bridge for the attached LAN and this MSTI."; + reference + "13.27.20, 13.10, and item ar) in 13.27 of IEEE Std 802.1Q."; + } + } + leaf msti-internal-root-path-cost { + type int32; + config false; + description + "The MSTI Internal Path Cost advertised in BPDUS by the Designated + Bridge for the attached LAN and this MSTI."; + reference + "27.6, 14.4.1, 13.27.20, 14.4.1, and item ar) in 13.27 of + IEEE Std 802.1Q."; //!! + } + leaf msti-designated-bridge-id { + type uint32; + config false; + description + "The Bridge Identifier of the Bridge that this port considers to be + the Designated Bridge for the attached LAN and this MSTI."; + reference + "13.27.20, 13.10, and item ar) in 13.27 of IEEE Std 802.1Q."; + } + leaf msti-designated-port-id { + type binary { + length "2"; + } + config false; + description + "The Port Identifier of the Bridge Port that this port considers to + be the Designated Port for the attached LAN and this MSTI."; + reference + "13.27.20, 13.10, and item ar) in 13.27 of IEEE Std 802.1Q."; + } + } + } +} diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-pb.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-pb.yang new file mode 100644 index 000000000..d195955dd --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-pb.yang @@ -0,0 +1,226 @@ +module ieee802-dot1q-pb { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-pb; + prefix dot1q-pb; + import ieee802-dot1q-bridge { + prefix dot1q; + } + import ieee802-dot1q-types { + prefix dot1qtypes; + } + import ietf-interfaces { + prefix if; + } + organization + "IEEE 802.1 Working Group"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + description + "This YANG module describes the Bridge configuration model for Provider + Bridges. + + Copyright (C) IEEE (2023). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + revision 2023-10-22 { + description + "Published as part of IEEE Std 802.1Qcw-2023. + + The following reference statement identifies each referenced IEEE + Standard as updated by applicable amendments."; + reference + "IEEE Std 802.1Q Bridges and Bridged Networks: + IEEE Std 802.1Q-2022, IEEE Std 802.1Qcz-2023, IEEE Std 802.1Qcw-2023."; + } + revision 2022-01-19 { + description + "Published as part of IEEE Std 802.1Q-2022."; + reference + "IEEE Std 802.1Q-2022, Bridges and Bridged Networks."; + } + revision 2020-06-04 { + description + "Published as part of IEEE Std 802.1Qcx-2020. Second version."; + reference + "IEEE Std 802.1Qcx-2020, Bridges and Bridged Networks - YANG Data + Model for Connectivity Fault Management."; + } + revision 2018-03-07 { + description + "Published as part of IEEE Std 802.1Q-2018. Initial version."; + reference + "IEEE Std 802.1Q-2018, Bridges and Bridged Networks."; + } + augment "/if:interfaces/if:interface/dot1q:bridge-port" { + description + "Augment the interface model with 802.1Q Bridge Port configuration + specific nodes."; + leaf svid { + type dot1qtypes:vlanid; + description + "Service VLAN identifier."; + reference + "12.13.2.1 of IEEE Std 802.1Q"; + } + list cvid-registration { + when + "/dot1q:bridges/dot1q:bridge[dot1q:name=current()"+ + "/../dot1q:bridge-name]/dot1q:component[dot1q:name=current()"+ + "/../dot1q:component-name]/dot1q:type = 'dot1q:c-vlan-component'"+ + " and ../dot1q:port-type = 'dot1q:customer-edge-port'" { + description + "Applies when the component associated with this interface is a + C-VLAN component and the port-type is a customer edge port."; + } + key "cvid"; + description + "The C-VID Registration Table, provides a mapping between a C-VID + and the service instance represented by an S-VID selected for that + C-VLAN. This table provides the equivalent functionality of + 1) Configuring the PVID of the internal CNP on the S-VLAN + component + 2) Adding the corresponding PEP on the C-VLAN component to the + member set of the C-VLAN + 3) Adding the PEP and/or CEP to the untagged set of the C-VLAN + (if it is desired that frames forwarded to that port are + transmitted untagged for this C-VLAN)."; + leaf cvid { + type dot1qtypes:vlanid; + description + "Customer VLAN identifiers associated with this bridge port."; + reference + "12.13.2.1 of IEEE Std 802.1Q"; + } + leaf svid { + type dot1qtypes:vlanid; + description + "Service VLAN identifier."; + reference + "12.13.2.1 of IEEE Std 802.1Q"; + } + leaf untagged-pep { + type boolean; + default "true"; + description + "A boolean indicating frames for this C-VLAN should be forwarded + untagged through the Provider Edge Port."; + reference + "12.13.2.1 of IEEE Std 802.1Q"; + } + leaf untagged-cep { + type boolean; + default "true"; + description + "A boolean indicating frames for this C-VLAN should be forwarded + untagged through the Customer Edge Port."; + reference + "12.13.2.1 of IEEE Std 802.1Q"; + } + } + list service-priority-regeneration { + when + "/dot1q:bridges/dot1q:bridge[dot1q:name=current() "+ + "/../dot1q:bridge-name]/dot1q:component[dot1q:name=current() "+ + "/../dot1q:component-name]/dot1q:type = 'dot1q:c-vlan-component' "+ + "and ../dot1q:port-type = 'dot1q:customer-edge-port'" { + description + "Applies when the component associated with this interface is a + C-VLAN component and the port-type is a customer edge port."; + } + key "svid"; + description + "The Service Priority Regeneration Table, which provides the + Priority Regeneration Table (12.6.2) for each internal CNP connected + to the C-VLAN component associated with the CEP."; + leaf svid { + type dot1qtypes:vlanid; + description + "Service VLAN identifier."; + reference + "12.13.2.6 of IEEE Std 802.1Q"; + } + container priority-regeneration { + description + "Contains Service Priority Regeneration table nodal information."; + reference + "12.13.2.6 of IEEE Std 802.1Q"; + uses dot1qtypes:priority-regeneration-table-grouping; + } + } + list rcap-internal-interface { + when + "/dot1q:bridges/dot1q:bridge[dot1q:name=current() "+ + "/../dot1q:bridge-name]/dot1q:component[dot1q:name=current() "+ + "/../dot1q:component-name]/dot1q:type = 'dot1q:s-vlan-component' "+ + "and ../dot1q:port-type = 'dot1q:remote-customer-access-port'" { + description + "Applies when the component associated with this interface is a + C-VLAN component and the port-type is a customer edge port."; + } + key "external-svid"; + description + "Designating an external port as an RCAP automatically creates a + Port-mapping S-VLAN component associated with that port. This + Port-mapping S-VLAN component includes one internal PNP."; + leaf external-svid { + type dot1qtypes:vlanid; + description + "External Service VLAN identifier."; + reference + "12.13.3.2 of IEEE Std 802.1Q"; + } + leaf internal-port-number { + type dot1qtypes:port-number-type; + description + "The number of the RCAP."; + reference + "12.13.3.2 of IEEE Std 802.1Q"; + } + leaf internal-svid { + type dot1qtypes:vlanid; + description + "Internal Service VLAN Identifier (not applicable for a C-tagged + RCSI)."; + reference + "12.13.3.2 of IEEE Std 802.1Q"; + } + leaf internal-interface-type { + type enumeration { + enum port-based-rcsi { + description + "Port-based RCSI"; + } + enum c-tagged-rcsi { + description + "C-tagged RCSI"; + } + enum pnp { + description + "Provider Network Port"; + } + enum discard { + description + "Discard (external S-VID is not associated with an internal + port)."; + } + } + description + "A value indicating the type of internal interface associated with + the external S-VID."; + reference + "12.13.3.2 of IEEE Std 802.1Q"; + } + } + } +} diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-preemption-bridge.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-preemption-bridge.yang new file mode 100644 index 000000000..8950e0219 --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-preemption-bridge.yang @@ -0,0 +1,58 @@ +module ieee802-dot1q-preemption-bridge { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-preemption-bridge; + prefix preempt-bridge; + import ietf-interfaces { + prefix if; + } + import ieee802-dot1q-bridge { + prefix dot1q; + } + import ieee802-dot1q-preemption { + prefix preempt; + } + organization + "IEEE 802.1 Working Group"; + contact + "WG-URL: http://www.ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: STDS-802-1-CHAIRS@IEEE.ORG"; + description + "This module provides for management of IEEE Std 802.1Q Bridges that + support frame preemption. + + Copyright (C) IEEE (2023). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + revision 2023-10-26 { + description + "Published as part of IEEE Std 802.1Qcw-2023. + + The following reference statement identifies each referenced IEEE + Standard as updated by applicable amendments."; + reference + "IEEE Std 802.1Q Bridges and Bridged Networks: + IEEE Std 802.1Q-2022, IEEE Std 802.1Qcz-2023, IEEE Std 802.1Qcw-2023."; + } + feature frame-preemption { + description + "Frame preemption supported."; + reference + "IEEE Std 802.1Q"; + } + augment "/if:interfaces/if:interface/dot1q:bridge-port" { + if-feature "frame-preemption"; + description + "Augment bridge-port with frame preemption configuration."; + uses preempt:preemption-parameters; + } +} diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-preemption.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-preemption.yang new file mode 100644 index 000000000..4b52ea957 --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-preemption.yang @@ -0,0 +1,219 @@ +module ieee802-dot1q-preemption { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-preemption; + prefix preempt; + organization + "IEEE 802.1 Working Group"; + contact + "WG-URL: http://www.ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: STDS-802-1-CHAIRS@IEEE.ORG"; + description + "This module provides for management of IEEE Std 802.1Q Bridges that + support frame preemption. + + Copyright (C) IEEE (2023). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + revision 2023-10-26 { + description + "Published as part of IEEE Std 802.1Qcw-2023. + + The following reference statement identifies each referenced IEEE + Standard as updated by applicable amendments."; + reference + "IEEE Std 802.1Q Bridges and Bridged Networks: + IEEE Std 802.1Q-2022, IEEE Std 802.1Qcz-2023, IEEE Std 802.1Qcw-2023."; + } + feature frame-preemption { + description + "Frame preemption supported."; + reference + "IEEE Std 802.1Q"; + } + typedef frame-preemption-status-enum { + type enumeration { + enum express { + description + "Frames queued for the priority are to be transmitted using the + express service for the Port."; + } + enum preemptable { + description + "Frames queued for the priority are to be transmitted using the + preemptable service for the Port."; + } + } + description + "Frame preemption status of each priority."; + } + grouping preemption-parameters { + description + "preemption-parameters comprises all of the parameters associated with + frame preemption configuration."; + container frame-preemption-parameters { + description + "A table containing a set of frame preemption parameters, one for + each Port. All writeable objects in this table must be persistent + over power up restart/reboot."; + reference + "12.30.1 of IEEE Std 802.1Q"; + container frame-preemption-status-table { + description + "The framePreemptionStatusTable consists of 8 frame-preemption + status parameter leafs, one per priority"; + reference + "12.30.1.1 of IEEE Std 802.1Q"; + leaf priority0 { + type frame-preemption-status-enum; + default "express"; + description + "The value of the frame-preemption status parameter for the + priority 0. The default value of the parameter is express (1). + The value of this object MUST be retained across + reinitializations of the management system."; + reference + "12.30.1.1.1 of IEEE Std 802.1Q"; + } + leaf priority1 { + type frame-preemption-status-enum; + default "express"; + description + "The value of the frame-preemption status parameter for the + priority 1. The default value of the parameter is express (1). + The value of this object MUST be retained across + reinitializations of the management system."; + reference + "12.30.1.1.1 of IEEE Std 802.1Q"; + } + leaf priority2 { + type frame-preemption-status-enum; + default "express"; + description + "The value of the frame-preemption status parameter for the + priority 2. The default value of the parameter is express (1). + The value of this object MUST be retained across + reinitializations of the management system."; + reference + "12.30.1.1.1 of IEEE Std 802.1Q"; + } + leaf priority3 { + type frame-preemption-status-enum; + default "express"; + description + "The value of the frame-preemption status parameter for the + priority 3. The default value of the parameter is express (1). + The value of this object MUST be retained across + reinitializations of the management system."; + reference + "12.30.1.1.1 of IEEE Std 802.1Q"; + } + leaf priority4 { + type frame-preemption-status-enum; + default "express"; + description + "The value of the frame-preemption-status parameter for the + priority 4. The default value of the parameter is express (1). + The value of this object MUST be retained across + reinitializations of the management system."; + reference + "12.30.1.1.1 of IEEE Std 802.1Q"; + } + leaf priority5 { + type frame-preemption-status-enum; + default "express"; + description + "The value of the frame-preemption status parameter for the + priority 5. The default value of the parameter is express (1). + The value of this object MUST be retained across + reinitializations of the management system."; + reference + "12.30.1.1.1 of IEEE Std 802.1Q"; + } + leaf priority6 { + type frame-preemption-status-enum; + default "express"; + description + "The value of the frame-preemption status parameter for the + priority 6. The default value of the parameter is express (1). + The value of this object MUST be retained across + reinitializations of the management system."; + reference + "12.30.1.1.1 of IEEE Std 802.1Q"; + } + leaf priority7 { + type frame-preemption-status-enum; + default "express"; + description + "The value of the frame-preemption status parameter for the + priority 7. The default value of the parameter is express (1). + The value of this object MUST be retained across + reinitializations of the management system."; + reference + "12.30.1.1.1 of IEEE Std 802.1Q"; + } + } + leaf hold-advance { + type uint32; + units "nanoseconds"; + config false; + description + "The value of the holdAdvance parameter for the Port in + nanoseconds. There is no default value; the holdAdvance is a + property of the underlying MAC."; + reference + "12.30.1.2 of IEEE Std 802.1Q"; + } + leaf release-advance { + type uint32; + units "nanoseconds"; + config false; + description + "The value of the releaseAdvance parameter for the Port in + nanoseconds. There is no default value; the releaseAdvance is a + property of the underlying MAC."; + reference + "12.30.1.3 of IEEE Std 802.1Q"; + } + leaf preemption-active { + type boolean; + config false; + description + "TRUE if preemption is both supported by the MAC and currently + active."; + reference + "12.30.1.4 of IEEE Std 802.1Q"; + } + leaf hold-request { + type enumeration { + enum hold { + value 1; + description + "A hold request has been issued to the MAC."; + } + enum release { + value 2; + description + "A release request has been issued to the MAC."; + } + } + config false; + description + "The value of the holdRequest parameter for the Port, either hold + (1) or release (2). The value of this object is release (2) on + system initialization."; + reference + "12.30.1.5 of IEEE Std 802.1Q"; + } + } + } +} diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-psfp-bridge.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-psfp-bridge.yang new file mode 100644 index 000000000..5d6b04892 --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-psfp-bridge.yang @@ -0,0 +1,54 @@ +module ieee802-dot1q-psfp-bridge { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-psfp-bridge; + prefix psfp-bridge; + import ieee802-dot1q-bridge { + prefix dot1q; + } + import ieee802-dot1q-psfp { + prefix psfp; + } + organization + "IEEE 802.1 Working Group"; + contact + "WG-URL: http://www.ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: STDS-802-1-CHAIRS@IEEE.ORG"; + description + "This module provides management of IEEE Std 802.1Q Bridge + components that support Per-Stream Filtering and Policing (PSFP). + + Copyright (C) IEEE (2023). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + revision 2023-10-26 { + description + "Published as part of IEEE Std 802.1Qcw-2023. + + The following reference statement identifies each referenced IEEE + Standard as updated by applicable amendments."; + reference + "IEEE Std 802.1Q Bridges and Bridged Networks: + IEEE Std 802.1Q-2022, IEEE Std 802.1Qcz-2023, IEEE Std 802.1Qcw-2023."; + } + feature psfp { + description + "Per-Stream Filtering and Policing supported."; + reference + "IEEE Std 802.1Q"; + } + augment "/dot1q:bridges/dot1q:bridge/dot1q:component" { + description + "Augment bridge with Per-Stream Filtering and Policing configuration"; + uses psfp:psfp-parameters; + } +} diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-psfp.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-psfp.yang new file mode 100644 index 000000000..e3212d9c9 --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-psfp.yang @@ -0,0 +1,664 @@ +module ieee802-dot1q-psfp { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-psfp; + prefix psfp; + import ietf-yang-types { + prefix yang; + } + import ieee802-types { + prefix ieee802; + } + import ieee802-dot1q-types { + prefix dot1q-types; + } + import ieee802-dot1q-stream-filters-gates { + prefix sfsg; + } + organization + "IEEE 802.1 Working Group"; + contact + "WG-URL: http://www.ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: STDS-802-1-CHAIRS@IEEE.ORG"; + description + "This module provides management of IEEE Std 802.1Q Bridge + components that support Per-Stream Filtering and Policing (PSFP). + + Copyright (C) IEEE (2023). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + revision 2023-10-26 { + description + "Published as part of IEEE Std 802.1Qcw-2023. + + The following reference statement identifies each referenced IEEE + Standard as updated by applicable amendments."; + reference + "IEEE Std 802.1Q Bridges and Bridged Networks: + IEEE Std 802.1Q-2022, IEEE Std 802.1Qcz-2023, IEEE Std 802.1Qcw-2023."; + } + feature psfp { + description + "Per-Stream Filtering and Policing supported."; + reference + "IEEE Std 802.1Q"; + } + identity set-gate-and-ipv { + base dot1q-types:type-of-operation; + description + "The StreamGateState parameter specifies a desired state, open or + closed, for the stream gate, and the IPV parameter specifies a desired + value of the IPV associated with the stream. On execution, the + StreamGateState and IPV parameter values are used to set the + operational values of the stream gate state and internal priority + specification parameters for the stream. After TimeInterval ticks have + elapsed since the completion of the previous stream gate control + operation in the stream gate control list, control passes to the next + stream gate control operation. The optional IntervalOctetMax parameter + specifies the maximum number of MSDU octets that are permitted to pass + the gate during the specified TimeInterval. If the IntervalOctetMax + parameter is omitted, there is no limit on the number of octets that + can pass the gate."; + reference + "8.6.5.4 of IEEE Std 802.1Q"; + } + grouping stream-gate-control-entries { + description + "A GateControlEntry consists of an operation name, followed by three + mandatory parameters and one optional parameter associated with the + operation. The first parameter is a gateStatesValue; the second + parameter is an IPV value; the third parameter is a timeIntervalValue; + and the fourth parameter is an IntervalOctetMaxValue. + IntervalOctetMaxValue is optional."; + uses dot1q-types:base-gate-control-entries { + refine "gate-control-entry/operation-name" { + must + ". = 'psfp:set-gate-and-ipv'"; + } + refine "gate-control-entry/time-interval-value" { + must + "(. <= ../../../../supported-interval-max )"; + } + augment "gate-control-entry" { + description + "Augment gate-control-entry from base-gate-control-entries with + parameters gate-state-value, ipv-spec and interval-octet-max."; + leaf gate-state-value { + type sfsg:gate-state-value-type; + mandatory true; + description + "The PSFPgateStatesValue indicates the desired gate state, open + or closed, for the stream gate."; + reference + "12.31.3.2.1 of IEEE Std 802.1Q"; + } + leaf ipv-spec { + type sfsg:ipv-spec-type; + mandatory true; + description + "The IPV value indicates the IPV to be associated with frames + that pass the gate."; + reference + "12.31.3.2.3 of IEEE Std 802.1Q"; + } + leaf interval-octet-max { + type uint32; + description + "An unsigned integer, denoting a IntervalOctetMax in MSDU + octets. If this parameter is omitted, there is no maximum."; + reference + "12.31.3.2.5 of IEEE Std 802.1Q"; + } + } + } + } + grouping psfp-parameters { + description + "psfp-parameters comprises all of the parameters associated with + Per-Stream Filtering and Policing configuration."; + container flow-meters { + description + "This container comprises all flow meter related nodes."; + list flow-meter-instance-table { + must + "(count(.) <= ../max-flow-meter-instances)" { + error-message + "Number of elements in flow-meter-instance-table must not be"+ + "greater than max-flow-meter-instances."; + } + key "flow-meter-instance-id"; + description + "There is one Flow Meter Instance Table per Bridge component. Each + table row contains a set of parameters that defines a single Flow + Meter Instance. Tables can be created or removed dynamically in + implementations that support dynamic configuration of Bridge + components. Rows in the table can be created or removed + dynamically in implementations that support dynamic configuration + of flow meters."; + reference + "12.31.4 of IEEE Std 802.1Q"; + leaf flow-meter-instance-id { + type uint32; + mandatory true; + description + "An integer table index that allows the Flow Meter to be + referenced from Stream Filter Instance Table entries."; + reference + "8.6.5.5 of IEEE Std 802.1Q"; + } + leaf committed-information-rate { + type uint64; + units "bits/second"; + mandatory true; + description + "Committed information rate (CIR), in bits per second."; + reference + "8.6.5.5 of IEEE Std 802.1Q"; + } + leaf committed-burst-size { + type uint32; + units "octets"; + mandatory true; + description + "Committed burst size (CBS), in octets."; + reference + "8.6.5.5 of IEEE Std 802.1Q"; + } + leaf excess-information-rate { + type uint64; + units "bits/second"; + mandatory true; + description + "Excess Information Rate (EIR), in bits per second."; + reference + "8.6.5.5 of IEEE Std 802.1Q"; + } + leaf excess-burst-size { + type uint32; + units "octets"; + mandatory true; + description + "Excess burst size (EBS) per bandwidth profile flow, in octets."; + reference + "8.6.5.5 of IEEE Std 802.1Q"; + } + leaf coupling-flag { + type enumeration { + enum zero { + value 0; + description + "Uncoupled"; + } + enum one { + value 1; + description + "Coupled"; + } + } + mandatory true; + description + "Coupling flag (CF), which takes the value 0 or 1."; + reference + "8.6.5.5 of IEEE Std 802.1Q"; + } + leaf color-mode { + type enumeration { + enum color-blind { + description + "Color-blind (i.e., the color of a frame is ignored by the + bandwidth profile algorithm)."; + } + enum color-aware { + description + "Color-aware (i.e., the color of a frame is considered by + the bandwidth profile algorithm)."; + } + } + mandatory true; + description + "Color mode (CM), which takes the value color-blind or + color-aware, as specified in Bandwidth Profile Parameters and + Algorithm in MEF 10.3."; + reference + "8.6.5.5 of IEEE Std 802.1Q"; + } + leaf drop-on-yellow { + type boolean; + mandatory true; + description + "DropOnYellow, which takes the value TRUE or FALSE. A value of + TRUE indicates that yellow frames are dropped (i.e., discarded); + a value of FALSE indicates that yellow frames will have the + drop_eligible parameter set to TRUE."; + reference + "8.6.5.5 of IEEE Std 802.1Q"; + } + leaf mark-all-frames-red-enable { + type boolean; + default "false"; + description + "MarkAllFramesRedEnable, which takes the value TRUE or FALSE. A + value of TRUE indicates that the MarkAllFramesRed function is + enabled; a value of FALSE indicates that the MarkAllFramesRed + function is disabled. The default value of MarkAllFramesRedEnable + is FALSE."; + reference + "8.6.5.5 of IEEE Std 802.1Q"; + } + leaf mark-all-frames-red { + type boolean; + default "false"; + description + "MarkAllFramesRed, which takes the value TRUE or FALSE. If + MarkAllFramesRedEnable is TRUE, a value of TRUE in + MarkAllFramesRed indicates that all frames are dropped (i.e., + discarded). If MarkAllFramesRed is FALSE, it has no effect. The + default value of MarkAllFramesRed is FALSE; if the operation of + the flow meter causes any frame to be discarded, then + MarkAllFramesRed is set TRUE."; + reference + "8.6.5.5 of IEEE Std 802.1Q"; + } + } + leaf max-flow-meter-instances { + type uint32; + description + "The maximum number of Flow Meter instances supported by this + Bridge component. The object may optionally be read-only."; + reference + "12.31.1.3 of IEEE Std 802.1Q"; + } + } + uses sfsg:sfsg-parameters { + augment "stream-filters/stream-filter-instance-table" { + description + "Augment the Bridge component Stream filter by frame counters."; + leaf matching-frames-count { + type yang:counter64; + config false; + description + "A count of frames matching both the stream_handle and priority + specifications."; + reference + "8.6.5.3 of IEEE Std 802.1Q"; + } + leaf passing-frames-count { + type yang:counter64; + config false; + description + "A count of frames that passed the stream gate."; + reference + "8.6.5.3 of IEEE Std 802.1Q"; + } + leaf not-passing-frames-count { + type yang:counter64; + config false; + description + "A count of frames that did not pass the stream gate."; + reference + "8.6.5.3 of IEEE Std 802.1Q"; + } + leaf red-frames-count { + type yang:counter64; + config false; + description + "A count of frames that were discarded as a result of the + operation of the flow meter."; + reference + "8.6.5.3 of IEEE Std 802.1Q"; + } + leaf passing-sdu-count { + type yang:counter64; + config false; + description + "A count of frames that passed the Maximum SDU size filter."; + reference + "8.6.5.3 of IEEE Std 802.1Q"; + } + leaf not-passing-sdu-count { + type yang:counter64; + config false; + description + "A count of frames that did not pass the Maximum SDU size + filter."; + reference + "8.6.5.3 of IEEE Std 802.1Q"; + } + leaf flow-meter-ref { + type leafref { + path + '..'+ + '/..'+ + '/..'+ + '/flow-meters'+ + '/flow-meter-instance-table'+ + '/flow-meter-instance-id'; + } + description + "Flow meter instance that is associated with the stream filter."; + reference + "8.6.5.5 and 12.31.2.6 of IEEE Std 802.1Q."; + } + leaf flow-meter-enable { + type boolean; + description + "If it is set to TRUE, flow-meter-instance-id identifies the + flow meter instance associated with the stream filter. If it is + set to FALSE, no flow meter instance is associated with the + stream filter."; + reference + "8.6.5.5 and 12.31.2.6 of IEEE Std 802.1Q."; + } + } + augment "stream-gates" { + description + "Augment the Bridge component Stream Gates by maximum control list + limits, as used for PTP-controlled open and close transitions"; + leaf supported-list-max { + type uint32; + description + "The maximum value supported by this Bridge component of the + AdminControlListLength and OperControlListLength parameters. It + is available for use by schedule computation software to + determine the Bridge component’s control list capacity prior to + computation. The object may optionally be read-only."; + reference + "12.31.1.4 of IEEE Std 802.1Q"; + } + container supported-cycle-max { + description + "The maximum value supported by this Bridge component of the + AdminCycleTime and OperCycleTime parameters. The object may + optionally be read-only."; + reference + "12.31.1.7 of IEEE Std 802.1Q"; + uses ieee802:rational-grouping; + } + leaf supported-interval-max { + type uint32; + description + "The maximum value supported by this Bridge component of the + TimeIntervalValue parameter. The object may optionally be + read-only."; + reference + "12.31.1.8 of IEEE Std 802.1Q"; + } + } + augment "stream-gates/stream-gate-instance-table" { + description + "Augment the Bridge component Stream Gate instances by + a) Operational gate states + b) Operational IPV values + c) PTP controlled open and close transitions + d) Management for PTP controlled open and close transitions"; + leaf oper-gate-state { + type sfsg:gate-state-value-type; + config false; + description + "The current operational state of the gate. The operational + state of the gate is set by the List Execute state machine, and + its initial value is determined by the value of the + administrative state of the gate."; + reference + "12.31.3.2.1 and 8.6.10.5 of IEEE Std 802.1Q"; + } + leaf oper-ipv { + type sfsg:ipv-spec-type; + description + "The operational internal priority value specification."; + reference + "12.31.3.3, 8.6.10.7, and 8.6.5.4 of IEEE Std 802.1Q"; + } + container admin-control-list { + must + "(count(./gate-control-entry) <= ../../supported-list-max)" { + error-message + "Number of elements in admin-control-list must not be"+ + "greater than supported-list-max"; + } + description + "The AdminControlList and OperControlList are ordered lists + containing AdminControlListLength or OperControlListLength + entries, respectively. Each entry represents a gate operation. + Each entry in the list is structured as a GateControlEntry."; + reference + "12.31.3.2, 12.31.3.2.2, and 8.6.9.4.2 of IEEE Std 802.1Q"; + uses stream-gate-control-entries; + } + container oper-control-list { + must + "(count(./gate-control-entry) <= ../../supported-list-max)" { + error-message + "Number of elements in oper-control-list must not be greater"+ + "than supported-list-max"; + } + config false; + description + "The AdminControlList and OperControlList are ordered lists + containing AdminControlListLength or OperControlListLength + entries, respectively. Each entry represents a gate operation. + Each entry in the list is structured as a GateControlEntry."; + reference + "12.31.3.2, 12.31.3.2.2 and 8.6.9.4.18 of IEEE Std 802.1Q"; + uses stream-gate-control-entries; + } + container admin-cycle-time { + must + "(./numerator div ./denominator <= "+ + "../../supported-cycle-max/numerator div "+ + "../../supported-cycle-max/denominator)" { + error-message + "admin-cycle-time must not be greater than"+ + "supported-cycle-max"; + } + description + "The administrative value of the gating cycle for the Port. This + value can be changed by management, and is used by the List + Config state machine to set the value of OperCycleTime. The + AdminCycleTime variable is a rational number of seconds, defined + by an integer numerator and an integer denominator."; + reference + "12.29.1.3 and 8.6.9.4.3 of IEEE Std 802.1Q"; + uses ieee802:rational-grouping; + } + container oper-cycle-time { + must + "(./numerator div ./denominator <= "+ + "../../supported-cycle-max/numerator div "+ + "../../supported-cycle-max/denominator)" { + error-message + "oper-cycle-time must not be greater than"+ + "supported-cycle-max"; + } + config false; + description + "The operational value of the gating cycle for the Port. This + variable is set dynamically from the AdminCycleTime variable + under the control of the List Config state machine OperCycleTime + is used by the Cycle Timer state machine to enforce the cycle + time for the Port. The OperCycleTime variable is a rational + number of seconds, defined by an integer numerator and an + integer denominator."; + reference + "12.29.1.3 and 8.6.9.4.19 of IEEE Std 802.1Q"; + uses ieee802:rational-grouping; + } + leaf admin-cycle-time-extension { + type uint32; + units "nanoseconds"; + description + "An integer number of nanoseconds, defining the maximum amount + of time by which the gating cycle for the Port is permitted to + be extended when a new cycle configuration is being installed. + This administrative value can be changed by management, and is + used by the List Config state machine to set the value of + OperCycleTimeExtension."; + reference + "8.6.9.4.4 of IEEE Std 802.1Q"; + } + leaf oper-cycle-time-extension { + type uint32; + units "nanoseconds"; + config false; + description + "An integer number of nanoseconds, defining the maximum amount + of time by which the gating cycle for the Port is permitted to + be extended when a new cycle configuration is installed. This + operational value is set by the List Config state machine to the + value of AdminCycleTimeExtension. The value of + OperCycleTimeExtension is used by the SetCycleStartTime() + procedure."; + reference + "8.6.9.4.20 of IEEE Std 802.1Q"; + } + container admin-base-time { + description + "The administrative value of base time, expressed as an IEEE + 1588 precision time protocol (PTP) timescale (see IEEE Std + 802.1AS-2011). This value can be changed by management, and is + used by the List Config state machine to set the value of + OperBaseTime."; + reference + "12.29.1.4 and 8.6.9.4.1 of IEEE Std 802.1Q"; + uses ieee802:ptp-time-grouping; + } + container oper-base-time { + config false; + description + "The operational value of base time, expressed as a PTP + timescale (see IEEE Std 802.1AS-2011). This variable is used by + the List Config state machine."; + reference + "12.29.1.4 and 8.6.9.4.17 of IEEE Std 802.1Q"; + uses ieee802:ptp-time-grouping; + } + leaf config-change { + type boolean; + description + "A Boolean variable that acts as a start signal to the List + Config state machine that the administrative variable values for + the Port are ready to be copied into their corresponding + operational variables. This variable is set TRUE by management + and is set FALSE by the List Config state machine."; + reference + "8.6.9.4.7 of IEEE Std 802.1Q"; + } + container config-change-time { + config false; + description + "The time at which the administrative variables that determine + the cycle are to be copied across to the corresponding + operational variables, expressed as a PTP timescale. The value + of this variable is set by the SetConfigChangeTime() procedure + in the List Config state machine."; + reference + "12.29.1.4 and 8.6.9.4.9 of IEEE Std 802.1Q"; + uses ieee802:ptp-time-grouping; + } + leaf tick-granularity { + type uint32; + config false; + description + "Characteristics of an implementation’s cycle timer clock + (TickGranularity)."; + reference + "8.6.9.4.16 of IEEE Std 802.1Q"; + } + container current-time { + config false; + description + "The current time maintained by the local system, expressed as a + PTP timescale (see IEEE Std 802.1AS-2011)."; + reference + "12.29.1.4 and 8.6.9.4.10 of IEEE Std 802.1Q"; + uses ieee802:ptp-time-grouping; + } + leaf config-pending { + type boolean; + config false; + description + "A Boolean variable, set TRUE by the List Config state machine + to signal that there is a new cycle configuration awaiting + installation. The variable is set FALSE when the List Config + state machine has installed the new configuration. The variable + is used by the SetCycleStartTime() procedure to control the + length of the cycle that immediately precedes the first cycle + that uses the new configuration values. This value can be read + by management."; + reference + "8.6.9.3 and 8.6.9.4.8 of IEEE Std 802.1Q"; + } + leaf config-change-error { + type yang:counter64; + config false; + description + "An error counter that is incremented if AdminBaseTime specifies + a time in the past, and the current schedule is running."; + reference + "8.6.9.3.1 of IEEE Std 802.1Q"; + } + leaf gate-closed-due-to-invalid-rx-enable { + type boolean; + default "false"; + description + "A value of TRUE indicates that the GateClosedDueToInvalidRx + function is enabled; a value of FALSE indicates that the + GateClosedDueToInvalidRx function is disabled. The default value + of GateClosedDueToInvalidRxEnable is FALSE."; + reference + "8.6.5.4 of IEEE Std 802.1Q"; + } + leaf gate-closed-due-to-invalid-rx { + type boolean; + default "false"; + description + "If GateClosedDueToInvalidRxEnable is TRUE, a value of TRUE in + GateClosedDueToInvalidRx indicates that all frames are dropped + (i.e., the gate behaves as if the operational stream gate state + is Closed). If GateClosedDueToInvalidRx is FALSE, it has no + effect. The default value of GateClosedDueToInvalidRx is FALSE; + if any frame is discarded because the gate is in the Closed + state, then GateClosedDueToInvalidRx is set TRUE."; + reference + "8.6.5.4 of IEEE Std 802.1Q"; + } + leaf gate-closed-due-octets-exceeded-enable { + type boolean; + default "false"; + description + "A value of TRUE indicates that the + GateClosedDueToOctetsExceeded function is enabled; a value of + FALSE indicates that the GateClosedDueToOctetsExceeded function + is disabled. The default value of GateClosedDueToOctetsExceed is + FALSE."; + reference + "8.6.5.4 of IEEE Std 802.1Q"; + } + leaf gate-closed-due-octets-exceeded { + type boolean; + default "false"; + description + "If GateClosedDueToOctetsExceededEnable is TRUE, a value of TRUE + in GateClosedDueToOctetsExceeded indicates that all frames are + dropped (i.e., the gate behaves as if the operational stream + gate state is Closed). If GateClosedDueToOctetsExceeded is + FALSE, it has no effect. The default value of + GateClosedDueToOctetsExceeded is FALSE; if any frame is + discarded because there are insufficient IntervalOctetsLeft, + then GateClosedDueToOctetsExceeded is set TRUE."; + reference + "8.6.5.4 of IEEE Std 802.1Q"; + } + } + } + } +} diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-rstp.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-rstp.yang new file mode 100644 index 000000000..3302e3183 --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-rstp.yang @@ -0,0 +1,533 @@ +module ieee802-dot1q-rstp { + yang-version 1.1; + namespace "urn:ieee:std:802.1Q:yang:ieee802-dot1q-rstp"; + prefix rstp; + + import ietf-yang-types { + prefix yang; + } + import ietf-interfaces { + prefix if; + } + import ietf-routing-types { + prefix rt-types; + } + import ieee802-dot1q-types { + prefix dot1qtypes; + } + import ieee802-dot1q-bridge { + prefix dot1q; + } + + organization + "IEEE 802.1 Working Group"; + contact + "WG-URL: http://www.ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + description + "This module provides management of 802.1Q Bridge components that + support the Rapid Spanning Tree Algorithm and Protocol (RSTP). + + Copyright (C) IEEE (2024). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + + revision 2024-02-26 { + description + "Published as part of IEEE Std 802.1Qdy-2024. + + The following reference statement identifies each referenced IEEE + Standard as updated by applicable amendments."; + reference + "IEEE Std 802.1Q Bridges and Bridged Networks: + IEEE Std 802.1Q-2022, IEEE Std 802.1Qcz-2023, IEEE Std 802.1Qcw-2023, + IEEE Std 802.1Qcj-2023, IEEE Std 802.1Qdj-2024, IEEE Std 802.1Qdx-2024, + IEEE Std 802.1Qdy-2024."; + } + + augment "/dot1q:bridges/dot1q:bridge/dot1q:component" { + description + "Augment Bridge with RSTP configuration."; + reference + "13.24, 13.25, and 13.26 of IEEE Std 802.1Q."; + container rstp { + presence "The presence of this container indicates that RSTP is supported"; + leaf force-protocol-version { + type enumeration { + enum emulate-stp { + value 0; + } + enum withdrawn { + value 1; // previously assigned to IEEE Std 802.1G-1996 (withdrawn) + } + enum rstp-rapid-spanning-tree-protocol { + value 2; + } + enum rstp-mstp { + value 3; + } + enum rstp-spb { + value 4; + } + } + default "rstp-rapid-spanning-tree-protocol"; + config true; + description + "By default RSTP will provide rapid reconfiguration, + but will interoperate with Bridges using STP as specified in + IEEE Std 802.1D (now withdrawn). Force Protocol Version can + force emulation of aspects of STP behavior, slowing reconfiguration + and ageing of FDB entries. Force Protocol Version can be configured + to enable MSTP and SPB behavior (if implemented) - interoperability + with Bridges that support only RSTP or STP will be maintained."; + reference + "13.7.2 and item a) of 13.26 of IEEE Std 802.1Q."; + } + leaf cist-bridge-id { + type uint64; + config false; + description + "The Bridge Identifier used by this Bridge for the CIST. Eight + octets with the four most significant bits of the first encoding the + manageable cist-bridge-id-priority, the next twelve bits being zero, + and last six ocets encoding the Bridge Address."; + reference + "13.26.2, 14.1.2, and item e) in 13.26 of IEEE Std 802.1Q."; + } + leaf cist-bridge-id-priority { + type dot1qtypes:priority-type; + config true; + description + "The priority component of this Bridge's Bridge Identifier for the + CIST, encoded in the four most-significant bits of the first octet + of the eight octet Bridge Identifier. + + The value of this object MUST be retained across reinitializations + of the management system."; + reference + "13.26.2, 14.2.5, and item e) in 13.26 of IEEE Std 802.1Q."; + } + leaf cist-root-id { + type uint64; + config false; + description + "The CIST Root Identifier, i.e. the Bridge Identifier of the + Common and Internal Spanning Tree calculated by RSTP and of the + logical continuation of that connectivity calculate by MSTP, as + determined by this node."; + reference + "13.9, 14.1.2, and item f) in 13.26 of IEEE Std 802.1Q."; + } + leaf external-root-path-cost { + type uint32; + config false; + description + "The External Root Path Cost (MSTP) or Root Path Cost (RSTP) + calculated by this Bridge after the addition of the receiving + Port Path Cost."; + reference + "13.9, 13.10, 13.5.3, and item i) in 13.26 of IEEE Std 802.1Q."; + } + leaf cist-root-port-number { + type dot1qtypes:port-number-type; + config false; + description + "The port number of the Root Port for the RSTP and for the CIST + Root Port (MSTP), i.e. the Port Identifier for the port that offers + the lowest cost path from this Bridge to the (CIST) Root."; + reference + "13.4, 13.5, 13.26.9, and item h) in 13.26 of IEEE Std 802.1Q."; + } + leaf max-age { + type uint8; + units "seconds"; + config false; + description + "For the CIST, the whole seconds (most-significant octet) part of + the maximum age of the spanning tree information (Max Age) currently + used by this Bridge. Set to the bridge-max-age if the Bridge is the + CIST Root, and to the whole seconds part of the value received on + the CIST Root Port otherwise."; + reference + "13.15, 13.20, 13.25, item l) in 13.28, and item g) in 13.26 of + IEEE Std 802.1Q."; + } + leaf hello-time { + type rt-types:timer-value-seconds16; + units "seconds"; + config false; + description + "The interval (Hello Time) between the periodic transmission of + Configuration Bridge PDUs on Designated Ports. Set to + bridge-hello-time if the Bridge is currently acting as the CIST Root, + and to the value received on the CIST Root Port otherwise."; + reference + "Table 13-5, 13.25.3, and 13.28.11 of IEEE Std 802.1Q."; + } + leaf forward-delay { + type uint8; + units "seconds"; + config false; + description + "If a Port is using STP rather than RSTP, either as a result of + setting force-protocol-version to be less than 2 or because STP BPDUs + have been received, this Forward Delay parameter determines the time + spent in the Listening and Learning Port States when transitioning + from Discarding to Forwarding, and also controls rapid ageing of FDB + entries after a topology change. Set to bridge-forward-delay if the + Bridge is currently acting as the CIST Root, and to the whole seconds + part of the value received on the CIST Root Port otherwise. If RSTP, + MSTP, or SPB is used, Port State transitions and FDB flushing are + rapid and not controlled by this parameter."; + reference + "Table 13-5, 13.25.2, 13.28.10, and item g) in 13.26.4 of + IEEE Std 802.1Q."; + } + leaf bridge-max-age { + type uint8 { + range "6..40"; + } + default "20"; + units "seconds"; + config true; + description + "The value of the whole seconds part of Max Age when this Bridge is + acting as the CIST Root. The fractional part, conveyed in the + less-significant octet of each BPDU's Max Age field, will be zero. + + The value of this object MUST be retained across reinitializations + of the management system."; + reference + "Table 13-5, 13.26.4, and item g) in 13.26 of IEEE Std 802.1Q."; + } + leaf bridge-hello-time { + type uint8; + default "2"; + units "seconds"; + config false; + description + "The value that this Bridge uses for HelloTime when acting as the + CIST Root."; + reference + "Table 13-5, 13.25.3, and 13.28.11 of IEEE Std 802.1Q."; + } + leaf bridge-forward-delay { + type uint8 { + range "4..30"; + } + default "15"; + units "seconds"; + config true; + description + "The value of the whole seconds part of Message Age when this + Bridge is acting as the CIST Root. The fractional part, conveyed in + the less-significant octet of each BPDU's Max Age field, will be + zero. + + The value of this object MUST be retained across reinitializations + of the management system."; + reference + "Table 13-5, 13.26.4, and item g) in 13.26 of IEEE Std 802.1Q."; + } + leaf tx-hold-count { + type int32 { + range "1..10"; + } + default "6"; + config true; + description + "Limits the rate of BPDU transmission. If the variable txCount + (which is incremented on each transmission and decremented once a + second) reaches TxHoldCount, transmission is delayed. + + The value of this object MUST be retained across + reinitializations of the management system."; + reference + "Table 13-5, 13.27.75, 13.26.12, and item b) in 13.26 of + IEEE Std 802.1Q."; + } + leaf migrate-time { + type int32; + default "3"; + units "seconds"; + config false; + description + "Management can force the transmission of RST (or MST or SPT) BPDUs + for MigrateTime to check that all STP Bridges have been removed + from a specified port's attached LAN, so RST/MST/SPT BPDU + transmission can persist. Fixed value of 3 seconds."; + reference + "Table 13-5, 13.27.38, and item c) in 13.26 of IEEE Std 802.1Q."; + } + leaf time-since-topology-change { + type uint32; + units "seconds"; + config false; + description + "The time (in seconds) since the Topology Change timer, tcWhile, for + any port on this Bridge was last running - i.e. since + Topology Change Notification (TCN) Messages were last transmitted."; + reference + "13.25.9 of IEEE Std 802.1Q."; + } + leaf topology-change-count { + type yang:counter64; + units "topology change count"; + config false; + description + "The number of times (since the management entity was last + reset or initialized) that at least one port's Topology Change timer + (tcWhile) has been non-zero. + + Discontinuities in the value of the counter can occur at + re-initialization of the management system, and at other times as + indicated by the value of 'discontinuity-time'."; + reference + "13.25.9 of IEEE Std 802.1Q."; + } + } + } + + augment "/if:interfaces/if:interface/dot1q:bridge-port" { + description + "Augment Bridge Port with RSTP configuration"; + reference + "13.24, 13.25, and 13.27 of IEEE Std 802.1Q."; + container rstp { + presence "The presence of this container indicates that RSTP is supported"; + leaf cist-port-state { + type enumeration { + enum discarding { + value 1; + } + enum learning { + value 2; + } + enum forwarding { + value 3; + } + } + config false; + description + "The port's Port State, summarizing the application of learning to + received frames, and the forwarding of relayed frames, for all frames + (for RSTP) or for frames assigned to the CIST (for MSTP). The + Port State is Discarding if both learning and forwarding are both + false, Learning if only learning, and Forwarding if both learning and + forwarding are true. The Discarding state encompasses all reasons for + not forwarding, including MAC_Operational false (if:oper-status not + up) and MAC_Enabled false (if:admin-status not up)."; + reference + "8.4, 13.4, item aw) and item ba) in 13.27 of IEEE Std 802.1Q."; + } + leaf cist-port-role { + type enumeration { + enum disabled-port { + value 1; + } + enum root-port { + value 2; + } + enum designated-port { + value 3; + } + enum alternate-port { + value 4; + } + enum backup-port { + value 5; + } + } + config false; + description + "The port's Port Role for the CIST. Disabled Port, Root Port, + Designated Port, Alternate Port, or Backup Port."; + reference + "13.4, 13.5, 13.12, 13.24, 13.27.66, and item bn) in 13.27 of + IEEE Std 802.1Q."; + } + leaf restricted-role { + type boolean; + default "false"; + config false; + reference + "13.20, 13.27.65, 13.29.34, 16.2, 16.3, 26.5, 27.6, 27.20, + item t) in 13.27 of IEEE Std 802.1Q."; + } + leaf restricted-tcn { + type boolean; + default "false"; + config false; + reference + "13.20, 13.27.64, 13.29.25, 16.2, 16.3, item s) in 13.27 of + IEEE Std 802.1Q."; + } + leaf cist-port-id { + type uint16; + config false; + description + "The Port Identifier used by this Bridge Port for the CIST. Two + octets with the four most-significant bits of the first encoding the + manageable cist-port-id-priority, and the next twelve bits encoding + the port's port-number."; + reference + "13.27.46, 14.1.2, item bd) in 13.27 of IEEE Std 802.1Q."; + } + leaf cist-port-priority { + type dot1qtypes:priority-type; + config true; + description + "The priority component of this Port's Port Identifier for the + CIST, encoded in the four most-significant bits of the first octet + of the two octet Port Identifier. + + The value of this object MUST be retained across reinitializations + of the management system."; + reference + "13.27.47, 14.2.7, and item be) in 13.27 of IEEE Std 802.1Q."; + } + leaf external-port-path-cost { + type int32 { + range "0..200000000"; + } + config true; + description + "The administratively assigned value for the port's contribution to + the External Root Path Cost for the Bridge, when the port is the + CST Root Port (for RSTP and MSTP) or the CIST Master Port (for MSTP + and ISIS-SPB). + + The value of this object MUST be retained across reinitializations + of the management system."; + reference + "13.27.25, Table 13-4, and item g) of 13.27 of IEEE Std 802.1Q."; + } + leaf cist-root-id { + type uint32; + config false; + description + "The CIST Root Identifier in Configuration BPDUs transmitted by the + Designated Bridge for the attached LAN."; + reference + "13.27.20, 13.10, and item ar) in 13.27 of IEEE Std 802.1Q."; + } + leaf cist-external-path-cost { + type int32; + config false; + description + "The External Path Cost advertised in BPDUS by the Designated Bridge + for the attached LAN."; + reference + "27.6, 14.1.2, 13.27.20, and item ar) in 13.27 of IEEE Std 802.1Q."; + } + leaf designated-bridge-id { + type uint32; + config false; + description + "The Bridge Identifier of the Bridge that this port considers to be + the Designated Bridge for the attached LAN."; + reference + "13.27.20, 13.10, and item ar) in 13.27 of IEEE Std 802.1Q."; + } + leaf designated-port-id { + type binary { + length "2"; + } + config false; + description + "The Port Identifier of the Bridge Port that this port considers to + be the Designated Port for the attached LAN."; + reference + "13.27.20, 13.10, and item ar) in 13.27 of IEEE Std 802.1Q."; + } + leaf port-protocol-migration-check { + type boolean; + config true; + description + "Writing true(1) to port-protocol-migration-check (mcheck) + forces transmission of RST (or MST or SPT) BPDUs for migrate-time to + check that all STP Bridges have been removed from the port's attached + LAN, so RST/MST/SPT BPDU transmission can persist. Has no effect if + force-protocol-version is emulate-stp(0) or withdrawn(1). Always + returns false(2) when read."; + reference + "13.27.38, 13.32, and item j) in 13.27 of IEEE Std 802.1Q."; + } + leaf admin-edge-port { + type boolean; + default "false"; + config true; + description + "Set if the port is to be identified as an Edge Port immediately + on initialization without a delay to detect other Bridges attached + to the LAN. Recommended default false(2). The operational value, + oper-edge-port, will become false(2) if a BPDU has been received. + + The value of this object MUST be retained across reinitializations + of the management system."; + reference + "13.33, and item a) in 13.27 of IEEE Std 802.1Q."; + } + leaf oper-edge-port { + type boolean; + config false; + description + "Set if the port is currently identified as an Edge Port. + Initialized to the value of admin-edge-port, and controlled by the + Bridge Detection state machine."; + reference + "13.33, and item l) in 13.27 of IEEE Std 802.1Q."; + } + leaf auto-edge-port { + type boolean; + default "true"; + config true; + description + "Administratively set true(1) to allow the value of oper-edge-port + is to be maintained automatically, with continuous monitoring of + the presence or absence of other Bridges attached to the LAN. + + The value of this object MUST be retained across reinitializations + of the management system."; + reference + "13.33, 13.27.18, and item c) in 13.27 of IEEE Std 802.1Q."; + } + leaf auto-isolate-port { + type boolean; + default "false"; + config true; + description + "Administratively set true(1) to allow automatic setting of + isolate-port, causing a Designated Port to transition to Discarding + if both admin-edge-port and auto-edge-port are false, but the other + Bridge presumed attached to the same point-to-point LAN appears + unable to transmit BPDUs, indicating failure of a Spanning Tree + Protocol Entity or of transmission and/or reception. + + The value of this object MUST be retained across reinitializations + of the management system."; + reference + "13.23, 13.27.19, 13.33, and item d) in 13.27 of IEEE Std 802.1Q."; + } + leaf isolate-port { + type boolean; + config false; + description + "Set by the Bridge Detection state machine when the Spanning Tree + Protocol Entity of a neighboring Bridge has apparently failed."; + reference + "13.23, 13.27.27, 13.33, and item i) in 13.27 of IEEE Std 802.1Q."; + } + } + } +} diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-sched-bridge.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-sched-bridge.yang new file mode 100644 index 000000000..56a2f3e95 --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-sched-bridge.yang @@ -0,0 +1,51 @@ +module ieee802-dot1q-sched-bridge { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-sched-bridge; + prefix sched-bridge; + import ietf-interfaces { + prefix if; + } + import ieee802-dot1q-bridge { + prefix dot1q; + } + import ieee802-dot1q-sched { + prefix sched; + } + organization + "IEEE 802.1 Working Group"; + contact + "WG-URL: http://www.ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: STDS-802-1-CHAIRS@IEEE.ORG"; + description + "This module provides for management of IEEE Std 802.1Q Bridges that + support Scheduled Traffic Enhancements. + + Copyright (C) IEEE (2023). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + revision 2023-10-26 { + description + "Published as part of IEEE Std 802.1Qcw-2023. + + The following reference statement identifies each referenced IEEE + Standard as updated by applicable amendments."; + reference + "IEEE Std 802.1Q Bridges and Bridged Networks: + IEEE Std 802.1Q-2022, IEEE Std 802.1Qcz-2023, IEEE Std 802.1Qcw-2023."; + } + augment "/if:interfaces/if:interface/dot1q:bridge-port" { + description + "Augment bridge-port with Scheduled Traffic configuration."; + uses sched:sched-parameters; + } +} diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-sched.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-sched.yang new file mode 100644 index 000000000..4ddc88d4d --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-sched.yang @@ -0,0 +1,385 @@ +module ieee802-dot1q-sched { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-sched; + prefix sched; + import ietf-yang-types { + prefix yang; + } + import ieee802-types { + prefix ieee802; + } + import ieee802-dot1q-types { + prefix dot1q-types; + } + organization + "IEEE 802.1 Working Group"; + contact + "WG-URL: http://www.ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: STDS-802-1-CHAIRS@IEEE.ORG"; + description + "This module provides for management of IEEE Std 802.1Q Bridges that + support Scheduled Traffic Enhancements. + + Copyright (C) IEEE (2023). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + revision 2023-10-22 { + description + "Published as part of IEEE Std 802.1Qcw-2023. + + The following reference statement identifies each referenced IEEE + Standard as updated by applicable amendments."; + reference + "IEEE Std 802.1Q Bridges and Bridged Networks: + IEEE Std 802.1Q-2022, IEEE Std 802.1Qcz-2023, IEEE Std 802.1Qcw-2023."; + } + feature scheduled-traffic { + description + "Enhancements for Scheduled Traffic supported."; + reference + "IEEE Std 802.1Q"; + } + identity set-gate-states { + base dot1q-types:type-of-operation; + description + "Operation to set the gate states."; + } + identity set-and-hold-mac { + base dot1q-types:type-of-operation; + description + "Operation to set and hold MAC."; + } + identity set-and-release-mac { + base dot1q-types:type-of-operation; + description + "Operation to set and release MAC."; + } + grouping sched-gate-control-entries { + description + "A GateControlEntry consists of an operation name, followed by up to 2 + parameters associated with the operation. The first parameter is a + gateStatesValue; the second parameter is a timeIntervalValue"; + uses dot1q-types:base-gate-control-entries { + refine "gate-control-entry/operation-name" { + must + "(. = 'sched:set-gate-states') or (. = "+ + "'sched:set-and-hold-mac') or (. = 'sched:set-and-release-mac')"; + } + refine "gate-control-entry/time-interval-value" { + must + "(. <= ../../../supported-interval-max )"; + } + augment "gate-control-entry" { + description + "Augment gate-control-entry from base-gate-control-entries with + parameter gate-states-value."; + leaf gate-states-value { + type uint8; + mandatory true; + description + "gateStatesValue is the gate states for this entry for the Port. + The gates are immediately set to the states in gateStatesValue + when this entry executes. The bits of the octet represent the + gate states for the corresponding traffic classes; the + most-significant bit corresponds to traffic class 7, the + least-significant bit to traffic class 0. A bit value of 0 + indicates closed; a bit value of 1 indicates open."; + reference + "12.29.1.2.2 and 8.6.8.4 of IEEE Std 802.1Q."; + } + } + } + } + grouping sched-parameters { + description + "sched-parameters comprises all of the parameters associated with + Scheduled Traffic configuration."; + container gate-parameter-table { + description + "A table that contains the per-port manageable parameters for + traffic scheduling. For a given Port, an entry in the table exists. + All writable objects in this table must be persistent over power up + restart/reboot."; + reference + "12.29.1, 8.6.8.4 and 8.6.9 of IEEE Std 802.1Q"; + list queue-max-sdu-table { + key "traffic-class"; + description + "A list containing a set of max SDU parameters, one for each + traffic class. All writable objects in this table must be + persistent over power up restart/reboot."; + reference + "12.29.1.1, 8.6.8.4 and 8.6.9 of IEEE Std 802.1Q"; + leaf traffic-class { + type dot1q-types:traffic-class-type; + description + "Traffic class"; + } + leaf queue-max-sdu { + type uint32; + default "0"; + description + "The value of the queueMaxSDU parameter for the traffic class. A + value of 0 is interpreted as the max SDU size supported by the + underlying MAC. The value must be retained across + reinitializations of the management system."; + reference + "12.29.1.1.1, 8.6.8.4 and 8.6.9 of IEEE Std 802.1Q."; + } + leaf transmission-overrun { + type yang:counter64; + default "0"; + config false; + description + "A counter of transmission overrun events, where a PDU is still + being transmitted by a MAC at the time when the transmission + gate for the queue closed."; + reference + "12.29.1.1.2, 8.6.8.4 and 8.6.9 of IEEE Std 802.1Q."; + } + } + leaf gate-enabled { + type boolean; + default "false"; + description + "The GateEnabled parameter determines whether traffic scheduling + is active (true) or inactive (false). The value must be retained + across reinitializations of the management system."; + reference + "12.29.1, 8.6.8.2 and 8.6.9.4.14 of IEEE Std 802.1Q."; + } + leaf admin-gate-states { + type uint8; + default "255"; + description + "AdminGateStates is the administrative value of the initial gate + states for the Port. The bits of the octet represent the gate + states for the corresponding traffic classes; the most-significant + bit corresponds to traffic class 7, the least-significant bit to + traffic class 0. A bit value of 0 indicates closed; a bit value of + 1 indicates open. The value must be retained across + reinitializations of the management system."; + reference + "12.29.1 and 8.6.9.4.5 of IEEE Std 802.1Q."; + } + leaf oper-gate-states { + type uint8; + config false; + description + "OperGateStates is the operational value of the current gate + states for the Port. The bits of the octet represent the gate + states for the corresponding traffic classes; the most-significant + bit corresponds to traffic class 7, the least-significant bit to + traffic class 0. A bit value of 0 indicates closed; a bit value of + 1 indicates open."; + reference + "12.29.1 and 8.6.9.4.21 of IEEE Std 802.1Q."; + } + container admin-control-list { + must + "(count(./gate-control-entry) <= ../supported-list-max)" { + error-message + "Number of elements in admin-control-list must not be greater"+ + "than supported-list-max"; + } + description + "AdminControlList is the administrative value of the gate control + list for the Port. The value must be retained across + reinitializations of the management system."; + reference + "12.29.1.2, 8.6.8.4 and 8.6.9.4.2 of IEEE Std 802.1Q."; + uses sched-gate-control-entries; + } + container oper-control-list { + must + "(count(./gate-control-entry) <= ../supported-list-max)" { + error-message + "Number of elements in oper-control-list must not be greater"+ + "than supported-list-max"; + } + config false; + description + "OperControlList is the operational value of the gate control list + for the Port."; + reference + "12.29.1.2, 8.6.8.4 and 8.6.9.4.18 of IEEE Std 802.1Q."; + uses sched-gate-control-entries; + } + container admin-cycle-time { + must + "(./numerator div ./denominator <= "+ + "../supported-cycle-max/numerator div "+ + "../supported-cycle-max/denominator )" { + error-message + "admin-cycle-time must not be greater than supported-cycle-max"; + } + description + "AdminCycleTime specifies the administrative value of the gating + cycle time for the Port. AdminCycleTime is a rational number of + seconds, defined by an integer numerator and an integer + denominator. The value must be retained across reinitializations + of the management system."; + reference + "12.29.1, 8.6.8.4 and 8.6.9.4.3 of IEEE Std 802.1Q."; + uses ieee802:rational-grouping; + } + container oper-cycle-time { + must + "(./numerator div ./denominator <= "+ + "../supported-cycle-max/numerator div "+ + "../supported-cycle-max/denominator )" { + error-message + "oper-cycle-time must not be greater than supported-cycle-max"; + } + config false; + description + "OperCycleTime specifies the operational value of the gating cycle + time for the Port. OperCycleTime is a rational number of seconds, + defined by an integer numerator and an integer denominator."; + reference + "12.29.1, 8.6.8.4 and 8.6.9.4.19 of IEEE Std 802.1Q."; + uses ieee802:rational-grouping; + } + leaf admin-cycle-time-extension { + type uint32; + units "nanoseconds"; + description + "An unsigned integer number of nanoseconds, defining the maximum + amount of time by which the gating cycle for the Port is permitted + to be extended when a new cycle configuration is being installed. + This is the administrative value. The value must be retained + across reinitializations of the management system."; + reference + "12.29.1 and 8.6.9.4.4 of IEEE Std 802.1Q."; + } + leaf oper-cycle-time-extension { + type uint32; + units "nanoseconds"; + config false; + description + "An unsigned integer number of nanoseconds, defining the maximum + amount of time by which the gating cycle for the Port is permitted + to be extended when a new cycle configuration is being installed. + This is the operational value."; + reference + "12.29.1 and 8.6.9.4.20 of IEEE Std 802.1Q."; + } + container admin-base-time { + description + "The administrative value of the base time at which gating cycles + begin, expressed as an IEEE 1588 precision time protocol (PTP) + timescale. The value must be retained across reinitializations of + the management system."; + reference + "12.29.1 and 8.6.9.4.1 of IEEE Std 802.1Q."; + uses ieee802:ptp-time-grouping; + } + container oper-base-time { + config false; + description + "The operational value of the base time at which gating cycles + begin, expressed as an IEEE 1588 precision time protocol (PTP) + timescale."; + reference + "12.29.1 and 8.6.9.4.17 of IEEE Std 802.1Q."; + uses ieee802:ptp-time-grouping; + } + leaf config-change { + type boolean; + description + "The ConfigChange parameter signals the start of a configuration + change when it is set to TRUE, indicating that the administrative + parameters for the Port are ready to be copied into their + corresponding operational parameters. This should only be done + when the various administrative parameters are all set to + appropriate values."; + reference + "12.29.1 and 8.6.9.4.7 of IEEE Std 802.1Q."; + } + container config-change-time { + config false; + description + "The time at which the next config change is scheduled to occur."; + reference + "12.29.1 and 8.6.9.4.9 of IEEE Std 802.1Q."; + uses ieee802:ptp-time-grouping; + } + leaf tick-granularity { + type uint32; + config false; + description + "The granularity of the cycle time clock, represented as an + unsigned number of tenths of nanoseconds. The value must be + retained across reinitializations of the management system."; + reference + "12.29.1 of IEEE Std 802.1Q"; + } + container current-time { + config false; + description + "The current time as maintained by the local system."; + reference + "12.29.1 and 8.6.9.4.10 of IEEE Std 802.1Q."; + uses ieee802:ptp-time-grouping; + } + leaf config-pending { + type boolean; + config false; + description + "The value of the ConfigPending state machine variable. The value + is TRUE if a configuration change is in progress but has not yet + completed."; + reference + "12.29.1 and 8.6.9.4.8 of IEEE Std 802.1Q."; + } + leaf config-change-error { + type yang:counter64; + config false; + description + "A counter of the number of times that a re-configuration of the + traffic schedule has been requested with the old schedule still + running and the requested base time was in the past."; + reference + "12.29.1 and 8.6.9.3.1 of IEEE Std 802.1Q."; + } + leaf supported-list-max { + type uint32; + description + "The maximum value supported by this Port for the + AdminControlListLength and OperControlListLength parameters. It is + available for use by schedule computation software to determine + the port’s control list capacity prior to computation. The object + may optionally be read-only."; + reference + "12.29.1.5 of IEEE Std 802.1Q"; + } + container supported-cycle-max { + description + "The maximum value supported by this Port of the AdminCycleTime + and OperCycleTime parameters. The object may optionally be + read-only."; + reference + "12.29.1.6 of IEEE Std 802.1Qcw"; + uses ieee802:rational-grouping; + } + leaf supported-interval-max { + type uint32; + description + "The maximum value supported by this Port of the TimeIntervalValue + parameter. The object may optionally be read-only."; + reference + "12.29.1.7 of IEEE Std 802.1Qcw"; + } + } + } +} diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-stream-filters-gates-bridge.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-stream-filters-gates-bridge.yang new file mode 100644 index 000000000..6e0ec8e6f --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-stream-filters-gates-bridge.yang @@ -0,0 +1,46 @@ +module ieee802-dot1q-stream-filters-gates-bridge { + yang-version "1.1"; + namespace + urn:ieee:std:802.1Q:yang:ieee802-dot1q-stream-filters-gates-bridge; + prefix sfsg-bridge; + import ieee802-dot1q-bridge { + prefix dot1q; + } + import ieee802-dot1q-stream-filters-gates { + prefix sfsg; + } + organization + "IEEE 802.1 Working Group"; + contact + "WG-URL: https://1.ieee802.org/ + WG-EMail: stds-802-1@ieee.org + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08855 + USA + + E-mail: STDS-802-1-CHAIRS@LISTSERV.IEEE.ORG"; + description + "This module provides management of IEEE 802.1Q Bridge components + that support Stream Filters and Stream Gates. + + Copyright (C) IEEE (2023). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + revision 2023-07-03 { + description + "Published as part of IEEE Std 802.1Qcz-2023."; + reference + "IEEE Std 802.1Qcz-2023 - Bridges and Bridged Networks - Amendment: + Congestion Isolation."; + } + augment "/dot1q:bridges/dot1q:bridge/dot1q:component" { + description + "Augments the Bridge component with stream filters and stream + gates."; + uses sfsg:sfsg-parameters; + } +} diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-stream-filters-gates.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-stream-filters-gates.yang new file mode 100644 index 000000000..ea7d996ce --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-stream-filters-gates.yang @@ -0,0 +1,399 @@ +module ieee802-dot1q-stream-filters-gates { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-stream-filters-gates; + prefix sfsg; + organization + "IEEE 802.1 Working Group"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + description + "This module provides management of IEEE 802.1Q Bridge components + that support Stream Filters and Stream Gates. + + References in this YANG module to IEEE Std 802.1Q are to IEEE Std + 802.1Q-2022 as amended by IEEE Std 802.1Qcz-2023. + + Copyright (C) IEEE (2023). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + revision 2023-07-03 { + description + "Published as part of IEEE Std 802.1Qcz-2023."; + reference + "IEEE Std 802.1Qcz-2023 - Bridges and Bridged Networks - Amendment: + Congestion Isolation."; + } + revision 2022-10-29 { + description + "Published as part of IEEE Std 802.1Q-2022."; + reference + "IEEE Std 802.1Q-2022, Bridges and Bridged Networks."; + } + revision 2020-11-06 { + description + "Published as part of IEEE Std 802.1Qcr-2020."; + reference + "IEEE Std 802.1Qcr-2020, Bridges and Bridged Networks - + Asynchronous Traffic Shaping."; + } + feature closed-gate-state { + description + "The bridge component supports gate state closed."; + reference + "IEEE Std 802.1Q"; + } + + /* Types and groupings */ + typedef priority-spec-type { + type enumeration { + enum zero { + value 0; + description + "Priority 0"; + } + enum one { + value 1; + description + "Priority 1"; + } + enum two { + value 2; + description + "Priority 2"; + } + enum three { + value 3; + description + "Priority 3"; + } + enum four { + value 4; + description + "Priority 4"; + } + enum five { + value 5; + description + "Priority 5"; + } + enum six { + value 6; + description + "Priority 6"; + } + enum seven { + value 7; + description + "Priority 7"; + } + enum wildcard { + description + "wildcard value"; + } + } + description + "The frame's priority value"; + reference + "8.6.5.2 of IEEE Std 802.1Q"; + } + typedef ipv-spec-type { + type enumeration { + enum zero { + value 0; + description + "Priority 0"; + } + enum one { + value 1; + description + "Priority 1"; + } + enum two { + value 2; + description + "Priority 2"; + } + enum three { + value 3; + description + "Priority 3"; + } + enum four { + value 4; + description + "Priority 4"; + } + enum five { + value 5; + description + "Priority 5"; + } + enum six { + value 6; + description + "Priority 6"; + } + enum seven { + value 7; + description + "Priority 7"; + } + enum null { + description + "null value"; + } + } + description + "An IPV can be either of the following: + 1) The null value. For a frame that passes through the gate, the + priority value associated with the frame is used to determine + the frame's traffic class, using the Traffic Class Table as + specified in 8.6.6. + 2) An internal priority value. For a frame that passes through + the gate, the IPV is used, in place of the priority value + associated with the frame, to determine the frame's traffic + class, using the Traffic Class Table as specified in 8.6.6."; + reference + "8.6.5.2 of IEEE Std 802.1Q"; + } + typedef gate-state-value-type { + type enumeration { + enum closed { + description + "Gate closed"; + } + enum open { + description + "Gate open"; + } + } + description + "The gate-state-value-type indicates a gate state, open or closed, + for the stream gate."; + reference + "12.31.3.2.1 of IEEE Std 802.1Q"; + } + grouping sfsg-parameters { + description + "The grouping of all stream filter and stream gate parameters."; + container stream-gates { + description + "This container encapsulates all nodes related to Stream Gates."; + list stream-gate-instance-table { + key "stream-gate-instance-id"; + description + "Each list entry contains a set of parameters that defines a + single stream gate (8.6.5.4), as detailed in Table 12-36. + Entries in the table can be created or removed dynamically in + implementations that support dynamic configuration of stream + gates."; + reference + "12.31.3 of IEEE Std 802.1Q"; + leaf stream-gate-instance-id { + type uint32; + description + "An integer table index that allows the stream gate to be + referenced from Stream Filter Instance Table entries."; + reference + "12.31.2.5 of IEEE Std 802.1Q + 8.6.5.3 of IEEE Std 802.1Q + 8.6.5.4 of IEEE Std 802.1Q"; + } + leaf gate-enable { + type boolean; + default "false"; + description + "A Boolean variable that indicates whether the operation of + the state machines is enabled (TRUE) or disabled (FALSE). + This variable is set by management. The default value of this + variable is FALSE."; + reference + "8.6.9.4.14 of IEEE Std 802.1Q"; + } + leaf admin-gate-states { + type gate-state-value-type; + default "open"; + description + "The administratively set gate state of this gate."; + reference + "12.31.3.2.1 of IEEE Std 802.1Q + 8.6.10.4 of IEEE Std 802.1Q"; + } + leaf admin-ipv { + type ipv-spec-type; + default "null"; + description + "The administratively set internal priority value + specification."; + reference + "12.31.3.3 of IEEE Std 802.1Q + 8.6.10.6 of IEEE Std 802.1Q + 8.6.5.4 of IEEE Std 802.1Q"; + } + } + leaf max-stream-gate-instances { + type uint32; + config false; + description + "The maximum number of Stream Gate instances supported by this + Bridge component."; + reference + "12.31.1.2 of IEEE Std 802.1Q"; + } + } + container stream-filters { + description + "This container encapsulates all nodes related to stream filters."; + reference + "12.31 of IEEE Std 802.1Q"; + list stream-filter-instance-table { + key "stream-filter-instance-id"; + description + "Each list entry contains a set of parameters that defines a + single stream filter (8.6.5.1) with associated maximum SDU size + filtering (8.6.5.3.1), as detailed in Table 12-35. Entries can + be created or removed dynamically in implementations that + support dynamic configuration of stream filters. The value of + the stream-handle-spec and priority-spec parameters associated + with a received frame determine which stream filter is selected + by the frame, and therefore what combination of filtering and + policing actions is applied to the frame. If the + stream-handle-spec and priority-spec parameters associated with + a received frame match more than one stream filter, the stream + filter that is selected is the one that appears earliest in the + ordered list. If a received frame's stream-handle-spec and + priority-spec does not match any of the stream filters in the + list, the frame is processed as if stream filters and stream + gates would not be supported."; + reference + "12.31.2 of IEEE Std 802.1Q"; + leaf stream-filter-instance-id { + type uint32; + mandatory true; + description + "An integer index value that determines the place of the + stream filter in the ordered list of stream filter instances. + The values are ordered according to their integer value; + smaller values appear earlier in the ordered list."; + reference + "12.31.2.1 of IEEE Std 802.1Q"; + } + choice stream-handle-spec { + description + "The stream_handle specification data type allows either of + the following to be represented: + a) A stream_handle value, represented as an integer. + b) The wildcard value, which matches any frame"; + reference + "12.31.2.2 of IEEE Std 802.1Q"; + + /* NOTE: The mapping of the wildcard literal is + * other than in the MIB definition, where + * the wildcard value is mapped to -1. + */ + case wildcard { + leaf wildcard { + type empty; + description + "The stream handle specification represents a wildcard + value."; + } + } + case stream-handle { + leaf stream-handle { + type uint32; + mandatory true; + description + "The stream handle specification refers to a + stream_handle value."; + } + } + } + leaf priority-spec { + type priority-spec-type; + mandatory true; + description + "The priority specification data type allows either of the + following to be represented: + a) A priority value, represented as an integer. + b) The wildcard value, which matches any priority."; + reference + "12.31.2.3 of IEEE Std 802.1Q"; + } + leaf max-sdu-size { + type uint32; + units "octets"; + mandatory true; + description + "The allowed maximum SDU size, in octets. If set to 0, any + SDU size is accepted."; + reference + "8.6.5.3.1 of IEEE Std 802.1Q"; + } + leaf stream-blocked-due-to-oversize-frame-enabled { + type boolean; + default "false"; + description + "A value of true indicates that + stream-blocked-due-to-oversize-frame is set to true as soon + as a frame exceeds max-sdu-size."; + reference + "8.6.5.3.1 of IEEE Std 802.1Q"; + } + leaf stream-blocked-due-to-oversize-frame { + type boolean; + default "false"; + description + "Indicates by value true that frames are permanently + discarded as a result of an initial frame exceeding + max-sdu-size. The value of + stream-blocked-due-to-oversize-frame can be administratively + reset to false."; + reference + "8.6.5.3.1 of IEEE Std 802.1Q"; + } + leaf stream-gate-ref { + type leafref { + path + '..'+ + '/..'+ + '/..'+ + '/stream-gates'+ + '/stream-gate-instance-table'+ + '/stream-gate-instance-id'; + } + mandatory true; + description + "This node refers to the stream gate (12.31.3) that is + associated with the stream filter. The relationship between + stream filters and stream gates is many to one; a given + stream filter can be associated with only one stream gate, + but there can be multiple stream filters associated with a + given stream gate."; + reference + "12.31.3.1 of IEEE Std 802.1Q"; + } + } + leaf max-stream-filter-instances { + type uint32; + config false; + description + "The maximum number of stream filter instances supported by + this Bridge component."; + reference + "12.31.1.1, 8.6.5.1 of IEEE Std 802.1Q"; + } + } + } +} diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-tpmr.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-tpmr.yang new file mode 100644 index 000000000..33da5bd92 --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-tpmr.yang @@ -0,0 +1,331 @@ +module ieee802-dot1q-tpmr { + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-tpmr; + prefix dot1q-tpmr; + import ieee802-dot1q-bridge { + prefix dot1q; + } + import ietf-yang-types { + prefix yang; + } + import ietf-interfaces { + prefix if; + } + organization + "IEEE 802.1 Working Group"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + description + "This YANG module describes the bridge configuration model for the + Two Port MAC Relays. + + Copyright (C) IEEE (2022). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + revision 2022-01-19 { + description + "Published as part of IEEE Std 802.1Q-2022. Third version."; + reference + "IEEE Std 802.1Q-2022, Bridges and Bridged Networks."; + } + revision 2020-06-04 { + description + "Published as part of IEEE Std 802.1Qcx-2020. Second version."; + reference + "IEEE Std 802.1Qcx-2020, Bridges and Bridged Networks - YANG Data + Model for Connectivity Fault Management."; + } + revision 2018-09-30 { + description + "Creation for Working Group review."; + reference + "IEEE Std 802.1Q-2018, Bridges and Bridged Networks."; + } + revision 2018-03-07 { + description + "Published as part of IEEE Std 802.1Q-2018. Initial version."; + reference + "IEEE Std 802.1Q-2018, Bridges and Bridged Networks."; + } + augment "/if:interfaces/if:interface/dot1q:bridge-port" { + when + "dot1q:port-type = 'dot1q:d-bridge-port'" { + description + "Applies to TPMRs ports"; + } + description + "Augment Interface model with TPMR port configuration specific + nodes."; + leaf managed-address { + type boolean; + default "true"; + description + "A Boolean value, which is TRUE if the MAC address is the + management address for the TPMR, and is otherwise FALSE. + + The TPMR management entity may make use of one or both Ports of + a TPMR to transmit and receive management frames. However, the + MAC address used by the TPMR management entity as the source MAC + address in transmitted management frames (the management MAC + address) is the individual MAC address associated with one of + the Ports of the TPMR"; + reference + "12.19.1.1.1.3 of IEEE Std 802.1Q-2022"; + } + container mac-status-propagation { + description + "MAC status propagation configuration node parameters."; + leaf link-notify { + type boolean; + default "true"; + description + "The current value (Boolean) of LinkNotify (23.5.1) being used + by the MSP state machines."; + reference + "12.19.4.1.1.3, 12.19.4.1.2.2 of IEEE Std 802.1Q-2022"; + } + leaf link-notify-wait { + type yang:timeticks { + range "20..100"; + } + default "40"; + description + "The current value, in centiseconds, of LinkNotifyWait + (23.5.2) being used by the MSP state machines."; + reference + "12.19.4.1.1.3, 12.19.4.1.2.2 of IEEE Std 802.1Q-2022"; + } + leaf link-notify-retry { + type yang:timeticks { + range "10..100"; + } + default "100"; + description + "The current value, in centiseconds, of LinkNotifyRetry + (23.5.3) being used by the MSP state machines."; + reference + "12.19.4.1.1.3, 12.19.4.1.2.2 of IEEE Std 802.1Q-2022"; + } + leaf mac-notify { + type boolean; + default "true"; + description + "The current value (Boolean) of MACNotify (23.5.4) being used + by the MSP state machines."; + reference + "12.19.4.1.1.3, 12.19.4.1.2.2 of IEEE Std 802.1Q-2022"; + } + leaf mac-notify-time { + type yang:timeticks { + range "1..50"; + } + default "20"; + description + "The current value, in centiseconds, of MACNotifyTime (23.5.5) + being used by the MSP state machines."; + reference + "12.19.4.1.1.3, 12.19.4.1.2.2 of IEEE Std 802.1Q-2022"; + } + leaf mac-recover-time { + type yang:timeticks { + range "2..50"; + } + default "10"; + description + "The current value, in centiseconds, of MACRecoverTime + (23.5.6) being used by the MSP state machines."; + reference + "12.19.4.1.1.3, 12.19.4.1.2.2 of IEEE Std 802.1Q-2022"; + } + } + } + augment + "/if:interfaces/if:interface/dot1q:bridge-port/dot1q:statistics" { + when + "../dot1q:port-type = 'dot1q:d-bridge-port'" { + description + "Applies to TPMRs ports"; + } + description + "Augment Interface model with TPMR port operational state specific + nodes."; + leaf acks-tx { + type yang:counter64; + config false; + description + "The number of acks transmitted (23.6.15) by the Ports Transmit + Process as a consequence of txAck being set. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other times + as indicated by the value of 'discontinuity-time'."; + reference + "12.19.4.1.3.3 of IEEE Std 802.1Q-2022"; + } + leaf add-notificatons-tx { + type yang:counter64; + config false; + description + "The number of adds transmitted (23.6.16) by the Ports Transmit + Process as a consequence of txAdd being set. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other times + as indicated by the value of 'discontinuity-time'."; + reference + "12.19.4.1.3.3 of IEEE Std 802.1Q-2022"; + } + leaf add-confirmations-tx { + type yang:counter64; + config false; + description + "The number of add confirms transmitted (23.6.17) by the Ports + Transmit Process as a consequence of txAddConfirm being set. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other times + as indicated by the value of 'discontinuity-time'."; + reference + "12.19.4.1.3.3 of IEEE Std 802.1Q-2022"; + } + leaf loss-notification-tx { + type yang:counter64; + config false; + description + "The number of losses transmitted (23.6.18) by the Ports + Transmit Process as a consequence of txLoss being set. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other times + as indicated by the value of 'discontinuity-time'."; + reference + "12.19.4.1.3.3 of IEEE Std 802.1Q-2022"; + } + leaf loss-confirmation-tx { + type yang:counter64; + config false; + description + "The number of loss confirms transmitted (23.6.19) by the Ports + Transmit Process as a consequence of txLossConfirm being set. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other times + as indicated by the value of 'discontinuity-time'."; + reference + "12.19.4.1.3.3 of IEEE Std 802.1Q-2022"; + } + leaf acks-rx { + type yang:counter64; + config false; + description + "The number of acks received (23.6.10) by the Ports Transmit + Process. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other times + as indicated by the value of 'discontinuity-time'."; + reference + "12.19.4.1.3.3 of IEEE Std 802.1Q-2022"; + } + leaf add-notificatons-rx { + type yang:counter64; + config false; + description + "The number of adds received (23.6.11) by the Ports Receive + Process. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other times + as indicated by the value of 'discontinuity-time'."; + reference + "12.19.4.1.3.3 of IEEE Std 802.1Q-2022"; + } + leaf add-confirmations-rx { + type yang:counter64; + config false; + description + "The number of add confirms received (23.6.12) by the Ports + Receive Process. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other times + as indicated by the value of 'discontinuity-time'."; + reference + "12.19.4.1.3.3 of IEEE Std 802.1Q-2022"; + } + leaf loss-notification-rx { + type yang:counter64; + config false; + description + "The number of losses received (23.6.13) by the Ports Receive + Process. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other times + as indicated by the value of 'discontinuity-time'."; + reference + "12.19.4.1.3.3 of IEEE Std 802.1Q-2022"; + } + leaf loss-confirmation-rx { + type yang:counter64; + config false; + description + "The number of loss confirms received (23.6.14) by the Ports + Receive Process. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other times + as indicated by the value of 'discontinuity-time'."; + reference + "12.19.4.1.3.3 of IEEE Std 802.1Q-2022"; + } + leaf add-events { + type yang:counter64; + config false; + description + "The number of transitions to STM:ADD directly from STM:DOWN or + STM:LOSS (23.8). + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other times + as indicated by the value of 'discontinuity-time'."; + reference + "12.19.4.1.3.3 of IEEE Std 802.1Q-2022"; + } + leaf loss-events { + type yang:counter64; + config false; + description + "The number of transitions to STM:LOSS directly from STM:UP or + STM:ADD (23.8). + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other times + as indicated by the value of 'discontinuity-time'."; + reference + "12.19.4.1.3.3 of IEEE Std 802.1Q-2022"; + } + leaf mac-status-notifications { + type yang:counter64; + config false; + description + "The number of transitions to SNM:MAC_NOTIFICATION (23.9). + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other times + as indicated by the value of 'discontinuity-time'."; + reference + "12.19.4.1.3.3 of IEEE Std 802.1Q-2022"; + } + } +} diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-tsn-types.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-tsn-types.yang new file mode 100644 index 000000000..28b1d4ebb --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-tsn-types.yang @@ -0,0 +1,1301 @@ +module ieee802-dot1q-tsn-types { + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-tsn-types; + prefix dot1q-tsn-types; + import ietf-inet-types { + prefix inet; + } + organization + "Institute of Electrical and Electronics Engineers"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1@ieee.org + + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway + NJ 08854 + USA + + E-mail: stds-802-1@ieee.org"; + description + "Common typedefs and groupings for TSN user/network configuration in + IEEE Std 802.1Q. + + Copyright (C) IEEE (2022). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + revision 2022-10-29 { + description + "Published as part of IEEE Std 802.1Q-2022. Second version"; + reference + "IEEE Std 802.1Q-2022, Bridges and Bridged Networks."; + } + revision 2018-02-15 { + description + "Amendment: Stream Reservation Protocol (SRP) Enhancements and + Performance Improvements. Initial version"; + reference + "46.3 of IEEE Std 802.1Qcc-2018"; + } + typedef stream-id-type { + type string { + pattern + "[0-9a-fA-F]{2}"+ + "(-[0-9a-fA-F]{2}){5}"+ + ":"+ + "[0-9a-fA-F]{2}"+ + "-"+ + "[0-9a-fA-F]{2}"; + } + description + "This typedef specifies a Stream ID, a unique identifier of the + Stream's configuration, used by protocols in the network to + associate the user's Stream with TSN resources. + + The Stream ID is a string that represents two fields: + + MAC Address: + + A 48-bit IEEE 802 MAC address associated with the Talker sourcing + the Stream to the bridged network. The entire range of MAC + addresses are acceptable. + + NOTE 1: The MAC address component of the StreamID can, but does not + necessarily, have the same value as the source_address parameter + of any frame in the actual data Stream. For example, the Stream ID + can be assigned by a TSN CUC (see 46.1.3.3 of IEEE Std + 802.1Q-2022), using a pool of MAC addresses that the TSN CUC + maintains. + + NOTE 2: If the MAC addresses used to construct Stream IDs are not + unique within the network, duplicate Stream IDs can be generated, + with unpredictable results. + + Unique ID: + + A 16-bit unique ID that is used to distinguish between multiple + Streams within the station identified by MAC Address. + + The string specifies eight octets, with each octet represented as + two hexadecimal characters. The first six octets specify the MAC + Address, using the canonical format of IEEE Std 802, with a dash + separating each octet. The last two octets specify the Unique ID, + with the high-order octet, a dash, and then the low-order octet. + The MAC Address and Unique ID are separated by colon. + + stream-id-type is intended for use by other modules as the type + for a key to a list of Stream configurations (using group-talker + and group-listener) and a list of Stream status (using + group-status-stream and group-status-talker-listener)."; + reference + "46.2.3.1 of IEEE Std 802.1Q-2022"; + } + grouping group-interface-id { + description + "This YANG grouping specifies the identification of a distinct + point of attachment (interface) in a station (end station or + Bridge)."; + reference + "46.2.3.3 of IEEE Std 802.1Q-2022"; + leaf mac-address { + type string { + pattern "[0-9a-fA-F]{2}(-[0-9a-fA-F]{2}){5}"; + } + description + "mac-address is the unique individual MAC address (IEEE Std 802) of + the interface in the station (end station or Bridge). This MAC + address uniquely identifies the station within the local + network. + + mac-address shall be included in an instance of a container + using group-interface-id. + + NOTE: This MAC address can be discovered in the physical topology + using protocols such as IEEE Std 802.1AB (LLDP). LLDP supports + MAC address as a subtype for the stations Chassis ID and Port + ID. If the station does not use MAC address for its LLDP IDs, + remote management can be used to associate this mac-address to + the values provided in the LLDP IDs. + + The string uses the hexadecimal representation specified in IEEE + Std 802 (i.e. canonical format)."; + } + leaf interface-name { + type string; + description + "interface-name is the name of the interface that is assigned + locally by the station (end station or Bridge). + + interface-name may be included in an instance of a container + using group-interface-id. + + IEEE Std 802 recommends that each distinct point of attachment + to an IEEE 802 network have its own EUI MAC address. If the + identified station follows this IEEE 802 recommendation, the + mac-address leaf uniquely identifies the interface as well as + the station, and interface-name is not needed. + + If the mac-address applies to more than one interface (distinct + point of attachment) within the station, interface-name provides + a locally assigned name that can help to identify the interface. + + When YANG is used for management of the station, interface-name + is the interface name that serves as the key for the stations + interface list (RFC7223). + + NOTE 1: The TSN CNC is typically located in a different physical + product than the station identified by this group-interface-id. + Since the interface-name is assigned locally by the identified + station, it is possible that the stations product will change + interface-name in a manner that the TSN CNC cannot detect. For + example, RFC7223 mentions that the YANG interface name can + change when a physical attachment point is inserted or removed. + + NOTE 2: This interface name can be discovered in the physical + topology using protocols such as IEEE Std 802.1AB (LLDP). LLDP + supports interface name as a subtype for its Port ID. If the + station does not use interface name for its LLDP Port ID, remote + management can be used to associate this interface-name to the + values provided in the LLDP Port ID."; + } + } + grouping group-ieee802-mac-addresses { + description + "This YANG grouping specifies the pair of IEEE 802 MAC addresses + for Stream identification. + + The use of these fields for Stream identification corresponds to + the managed objects for Stream identification in IEEE Std 802.1CB. + If inconsistency arises between this specification and IEEE Std + 802.1CB, IEEE Std 802.1CB takes precedence."; + reference + "46.2.3.4.1 of IEEE Std 802.1Q-2022"; + leaf destination-mac-address { + type string { + pattern "[0-9a-fA-F]{2}(-[0-9a-fA-F]{2}){5}"; + } + description + "Destination MAC address. + + An address of all 1's specifies that the destination MAC address + is ignored for purposes of Stream identification. + + The string uses the hexadecimal representation specified in IEEE + Std 802 (i.e. canonical format)."; + } + leaf source-mac-address { + type string { + pattern "[0-9a-fA-F]{2}(-[0-9a-fA-F]{2}){5}"; + } + description + "Source MAC address. + + An address of all 1's specifies that the source MAC address is + ignored for purposes of Stream identification. + + The string uses the hexadecimal representation specified in IEEE + Std 802 (i.e. canonical format)."; + } + } + grouping group-ieee802-vlan-tag { + description + "This YANG grouping specifies a customer VLAN Tag (C-TAG of clause + 9) for Stream identification. + + The Drop Eligible Indicator (DEI) field is not relevant from the + perspective of a TSN Talker/Listener. + + The use of these fields for Stream identification corresponds to + the managed objects for Stream identification in IEEE Std 802.1CB. + If inconsistency arises between this specification and IEEE Std + 802.1CB, IEEE Std 802.1CB takes precedence."; + reference + "46.2.3.4.2 of IEEE Std 802.1Q-2022"; + leaf priority-code-point { + type uint8 { + range "0 .. 7"; + } + description + "Priority Code Point (PCP) field. + + The priority-code-point is not used to identify the Stream, but + it does identify a traffic class (queue) in Bridges."; + } + leaf vlan-id { + type uint16 { + range "0 .. 4095"; + } + description + "VLAN ID (VID) field. + + If only the priority-code-point is known, the vlan-id is + specified as 0."; + } + } + grouping group-ipv4-tuple { + description + "This YANG grouping specifies parameters to identify an IPv4 + (RFC791) Stream. + + The use of these fields for Stream identification corresponds to + the managed objects for Stream identification in IEEE Std 802.1CB. + If inconsistency arises between this specification and IEEE Std + 802.1CB, IEEE Std 802.1CB takes precedence."; + reference + "46.2.3.4.3 of IEEE Std 802.1Q-2022"; + leaf source-ip-address { + type inet:ipv4-address; + description + "Source IPv4 address. + + An address of all 0's specifies that the IP source address is + ignored for purposes of Stream identification."; + } + leaf destination-ip-address { + type inet:ipv4-address; + description + "Destination IPv4 address."; + } + leaf dscp { + type uint8; + description + "Differentiated services code point, DSCP (RFC2474). + + A value of 64 decimal specifies that the DSCP is ignored for + purposes of Stream identification."; + } + leaf protocol { + type uint16; + description + "IPv4 Protocol (e.g. UDP). + + The special value of all 1s (FFFF hex) represents None, meaning + that protocol, source-port, and destination-port are ignored for + purposes of Stream identification. + + For any value other than all 1s, the lower octet is used to + match IPv4 Protocol."; + } + leaf source-port { + type uint16; + description + "This matches the source port of the protocol."; + } + leaf destination-port { + type uint16; + description + "This matches the destination port of the protocol."; + } + } + grouping group-ipv6-tuple { + description + "This YANG grouping specifies parameters to identify an IPv6 + (RFC8200) Stream. + + The use of these fields for Stream identification corresponds to + the managed objects for Stream identification in IEEE Std 802.1CB. + If inconsistency arises between this specification and IEEE Std + 802.1CB, IEEE Std 802.1CB takes precedence."; + reference + "46.2.3.4.4 of IEEE Std 802.1Q-2022"; + leaf source-ip-address { + type inet:ipv6-address; + description + "Source IPv6 address. + + An address of all 0's specifies that the IP source address is + ignored for purposes of Stream identification."; + } + leaf destination-ip-address { + type inet:ipv6-address; + description + "Destination IPv6 address."; + } + leaf dscp { + type uint8; + description + "Differentiated services code point, DSCP (RFC2474). + + A value of 64 decimal specifies that the DSCP is ignored for + purposes of Stream identification."; + } + leaf protocol { + type uint16; + description + "IPv6 Next Header (e.g. UDP). + + The special value of all 1s (FFFF hex) represents None, meaning + that protocol, source-port, and destination-port are ignored for + purposes of Stream identification. + + For any value other than all 1s, the lower octet is used to + match IPv6 Next Header."; + } + leaf source-port { + type uint16; + description + "This matches the source port of the protocol."; + } + leaf destination-port { + type uint16; + description + "This matches the destination port of the protocol."; + } + } + grouping group-user-to-network-requirements { + description + "This YANG grouping specifies specifies user requirements for the + Stream, such as latency and redundancy. + + The network (e.g. CNC) will merge all user-to-network-requirements + for a Stream to ensure that all requirements are met."; + reference + "46.2.3.6 of IEEE Std 802.1Q-2022"; + leaf num-seamless-trees { + type uint8; + default "1"; + description + "num-seamless-trees specifies the number of trees that the + network will configure to deliver seamless redundancy for the + Stream. + + The value zero is interpreted as one (i.e. no seamless + redundancy). + + This requirement is provided from the Talker only. Listeners + shall set this leaf to one. + + From each Talker to a single Listener, the network configures a + path that relays Stream data through Bridges. If the Talker has + more than one Listener, the network configures a tree of + multiple paths. + + num-seamless-trees specifies the number of maximally disjoint + trees that the network shall configure from the Talker to all + Listeners. Each tree is disjoint from other trees, in that the + network evaluates the physical topology to avoid sharing the + same Bridge and links in each trees paths. This computation of + disjoint trees is maximal, in that shared Bridges and links are + avoided to the maximum extent allowed by the physical topology. + For example, if a single link exists from a Bridge to a + Listener, and num-seamless-trees is 3, then all 3 trees will + share that link to the Listener. + + When num-seamless-trees is greater than one, the transfer of the + Streams data frames shall use a seamless redundancy standard, + such as IEEE Std 802.1CB. When a link shared by multiple trees + diverges to multiple disjoint links, the seamless redundancy + standard replicates (i.e. forwards a distinct copy of each data + frame to the disjoint trees). When disjoint trees converge to a + single link, the seamless redundancy standard eliminates the + duplicate copies of each data frame. Assuming that other sources + of frame loss are mitigated (e.g. congestion), failure of a link + or Bridge in one disjoint tree does not result in frame loss as + long as at least one remaining disjoint tree is operational. + + If the Talker sets this leaf to one, the network may make use of + redundancy standards that are not seamless (i.e. failure of link + results in lost frames), such as MSTP and IS-IS. + + If the Talker sets this leaf to greater than one, and seamless + redundancy is not possible in the current network (no disjoint + paths, or no seamless redundancy standard in Bridges), + group-status-stream.status-info.failure-code is non-zero + (46.2.4.1 of IEEE Std 802.1Q-2022). + + If group-user-to-network-requirements is not provided by the + Talker or Listener, the network shall use the default value of + one for this leaf."; + reference + "46.2.3.6.1 of IEEE Std 802.1Q-2022"; + } + leaf max-latency { + type uint32; + default "0"; + description + "Maximum latency from Talker to Listener(s) for a single frame + of the Stream. + + max-latency is specified as an integer number of nanoseconds. + + Latency shall use the definition of 3.102, with additional + context as follows: The Known reference point in the frame is + the message timestamp point specified in IEEE Std 802.1AS for + various media (i.e. start of the frame). The first point is in + the Talker, at the reference plane marking the boundary between + the network media and PHY (see IEEE Std 802.1AS). The second + point is in the Listener, at the reference plane marking the + boundary between the network media and PHY. + + When this requirement is specified by the Talker, it must be + satisfied for all Listeners. + + When this requirement is specified by the Listener, it must be + satisfied for this Listener only. + + If group-user-to-network-requirements is not provided by the + Talker or Listener, the network shall use the default value of + zero for this leaf. + + The special value of zero represents usage of the initial value + of group-status-talker-listener.accumulated-latency as the + maximum latency requirement. This effectively locks-down the + initial latency that the network calculates after successful + configuration of the Stream, such that any subsequent increase + in latency beyond that value causes the Stream to fail. + + The assumption for when the first point occurs in the Talker + depends on the presence of the time-aware container in the + Talkers traffic-specification. + + When time-aware is not present: + + The Talker is assumed to transmit at an arbitrary time (not + scheduled). + + When time-aware is present: + + The first point is assumed to occur at the start of each + traffic-specification.interval, as if the Talkers offsets + (earliest-transmit-offset and latest-transmit-offset) are both + zero. The Talkers offsets are not typically zero, but use of the + start of interval for purposes of max-latency allows the + Listener(s) to schedule their application independently from the + Talkers offset configuration. + + The Listener determines max-latency based on its scheduling of a + read function in the application. Nevertheless, the time from + frame reception (i.e. second point) to execution of the read + function is in the user scope, and therefore not included in + max-latency. + + max-latency can be set to a value greater than the Talkers + interval, in order to specify a longer latency requirement. For + example, if the Talkers interval is 500 microsec, and + max-latency is 700 microsec, the Listener receives the frame no + later than 200 microsec into the interval that follows the + Talkers interval."; + reference + "46.2.3.6.2 of IEEE Std 802.1Q-2022"; + } + } + grouping group-interface-capabilities { + description + "This YANG grouping specifies the network capabilities of all + interfaces (Ports) contained in end-station-interfaces. + + The network may provide configuration of these capabilities in + group-status-talker-listener.interface-configuration. + + NOTE: If an end station contains multiple interfaces with different + network capabilities, each interface should be specified as a + distinct Talker or Listener (i.e. one entry in + end-station-interfaces). Use of multiple entries in + end-station-interfaces is intended for network capabilities that + span multiple interfaces (e.g. seamless redundancy)."; + reference + "46.2.3.7 of IEEE Std 802.1Q-2022"; + leaf vlan-tag-capable { + type boolean; + default "false"; + description + "When vlan-tag-capable is true, the interface supports the + ability to tag/untag frames using a Customer VLAN Tag (C-TAG of + clause 9) provided by the network. + + For a Talker, the networks tag replaces the tag specified by the + data-frame-specification. If the data-frame-specification is + untagged (no group-ieee802-vlan-tag), the networks tag is + inserted in the frame as it passes through the interface. + + For a Listener, the users tag from the data-frame-specification + replaces the networks tag as the frame passes through the + interface. If the data-frame-specification is untagged (no + group-ieee802-vlan-tag), the networks tag is removed from the + frame as it passes through the interface. + + If the end station supports more than one interface (i.e. more + than one entry in end-station-interfaces), vlan-tag-capable of + true means that a distinct VLAN tag can be applied to each + interface. The list of VLAN tag (one for each interface) can be + provided by the network in + interface-configuration.interface-list (ieee802-vlan-tag + choice). + + When vlan-tag-capable is false, the interface does not support + the capability to tag/untag frames using a Customer VLAN Tag + (C-TAG of clause 9) provided by the network. + + If interface-capabilities is not provided by the Talker or + Listener, the network shall use the default value of false for + this leaf."; + reference + "46.2.3.7.1 of IEEE Std 802.1Q-2022"; + } + leaf-list cb-stream-iden-type-list { + type uint32; + description + "cb-stream-iden-type-list provides a list of the supported + Stream Identification types as specified in IEEE Std 802.1CB. + + Each Stream Identification type is provided as a 32-bit unsigned + integer. The upper three octets contain the OUI/CID, and the + lowest octet contains the type number. + + NOTE: If the Talker/Listener end system supports IEEE Std 802.1CB, + Null Stream identification is required, and that Stream + Identification type is included in this list. If the + Talker/Listener end system does not support IEEE Std 802.1CB, + this list is empty. + + If the end station supports more than one interface (i.e. more + than one interface-id in end-station-interfaces, an empty + cb-stream-iden-type-list means that the end station is capable + of transferring the Stream on any one of its interfaces (not + all). When this is specified, the network shall decide which + interface is best used for TSN purposes, and communicate that + decision by returning a single interface in + interface-configuration.interface-list. The Talker/Listener uses + this interface alone for the Stream. + + If interface-capabilities is not provided within group-talker or + group-listener, the network shall use an empty list as the + default value for this element."; + reference + "46.2.3.7.2 of IEEE Std 802.1Q-2022"; + } + leaf-list cb-sequence-type-list { + type uint32; + description + "cb-sequence-type-list provides a list of the supported Sequence + Encode/Decode types as specified in IEEE Std 802.1CB. + + Each sequence type is provided as a 32-bit unsigned integer. The + upper three octets contain the OUI/CID, and the lowest octet + contains the type number. + + If interface-capabilities is not provided within group-talker or + group-listener, the network shall use an empty list as the + default value for this element."; + reference + "46.2.3.7.3 of IEEE Std 802.1Q-2022"; + } + } + grouping group-interface-configuration { + description + "This YANG grouping provides configuration of interfaces in the + Talker/Listener. This configuration assists the network in meeting + the Streams requirements. The interface-configuration meets the + capabilities of the interface as provided in + interface-capabilities."; + reference + "46.2.5.3 of IEEE Std 802.1Q-2022"; + list interface-list { + key "mac-address interface-name"; + description + "A distinct configuration is provided for each interface in the + Talker/Listener (even if multiple interfaces use the same + configuration). Each entry in this interface-list consists of an + interface identification (group-interface-id), followed by a + list of configuration values for that interface (config-list). + + If interface-configuration is not provided within + group-status-talker-listener, the network shall assume zero + entries as the default (no interface configuration). + + Since the interface-name leaf is optional, empty string can be + used for its key value."; + uses group-interface-id; + list config-list { + key "index"; + description + "List of configuration values for the interface."; + leaf index { + type uint8; + description + "This index is provided in order to provide a unique key per + list entry. The value of index for each entry shall be + unique (but not necessarily contiguous)."; + } + choice config-value { + description + "One of the following choices is provided for each + configuration value. Each container name acts as the case + name for the choice."; + container ieee802-mac-addresses { + description + "Source and destination MAC addresses that apply to the + network side of the user/network boundary. + + NOTE 1: On the user side, the MAC addresses correspond to + the ieee802-mac-addresses of data-frame-specification. + + NOTE 2: The source MAC address of the network is typically + the same as the user. The destination MAC address can be + different. For example, the user can use an individual + address, but the network can use a group (multicast) + address. + + This configuration value is not provided unless IEEE Std + 802.1CB is supported, and a value for Active Destination + MAC and VLAN Stream identification is provided in + cb-stream-iden-type-list of interface-capabilities."; + reference + "46.2.5.3.1 of IEEE Std 802.1Q-2022"; + uses group-ieee802-mac-addresses; + } + container ieee802-vlan-tag { + description + "Customer VLAN Tag (C-TAG of clause 9) that applies to the + network side of the user/network boundary. + + NOTE: On the user side, the VLAN tag corresponds to the + ieee802-vlan-tag of data-frame-specification (including + untagged if this field is not provided). + + If the user provides a VLAN ID in the ieee802-vlan-tag of + data-frame-specification, the Streams data frames are + assumed to be limited to the active topology for that VLAN + ID. Therefore, if the network uses a different VLAN ID in + this config-value, the network shall ensure that the + replacement VLAN ID is limited to the equivalent active + topology. + + This configuration value is not provided unless + vlan-tag-capable of interface-capabilities is true."; + reference + "46.2.5.3.2 of IEEE Std 802.1Q-2022"; + uses group-ieee802-vlan-tag; + } + container ipv4-tuple { + description + "IPv4 identification that applies to the network side of + the user/network boundary. + + This configuration value is not provided unless IEEE Std + 802.1CB is supported, and a value for IP Stream + identification is provided in cb-stream-iden-type-list of + interface-capabilities."; + reference + "46.2.5.3.3 of IEEE Std 802.1Q-2022"; + uses group-ipv4-tuple; + } + container ipv6-tuple { + description + "IPv6 identification that applies to the network side of + the user/network boundary. + + This configuration value is not provided unless IEEE Std + 802.1CB is supported, and a value for IP Stream + identification is provided in cb-stream-iden-type-list of + interface-capabilities."; + reference + "46.2.5.3.4 of IEEE Std 802.1Q-2022"; + uses group-ipv6-tuple; + } + leaf time-aware-offset { + type uint32; + description + "If the time-aware container is present in the + traffic-specification of the Talker, this config-value + shall be provided by the network to the Talker. + + If the time-aware container is not present in the + traffic-specification of the Talker, this config-value + shall not be provided by the network. + + This config-value shall not be provided to Listeners, as + it is not applicable. + + time-aware-offset specifies the offset that the Talker + shall use for transmit. The network returns a value + between earliest-transmit-offset and + latest-transmit-offset of the Talkers + traffic-specification. The value is expressed as + nanoseconds after the start of the Talkers interval."; + reference + "46.2.5.3.5 of IEEE Std 802.1Q-2022"; + } + } + } + } + } + grouping group-talker { + description + "This YANG grouping specifies: - Talkers behavior for Stream + (how/when transmitted) - Talkers requirements from the network - + TSN capabilities of the Talkers interface(s) + + In the fully centralized model of TSN configuration, this grouping + originates from the CUC, and is delivered to the CNC."; + reference + "46.2.3 of IEEE Std 802.1Q-2022"; + container stream-rank { + description + "Rank of this Stream's configuration relative to other Streams + in the network. This rank is used to determine success/failure + of Stream resource configuration, and it is unrelated to the + Streams data."; + reference + "46.2.3.2 of IEEE Std 802.1Q-2022"; + leaf rank { + type uint8; + description + "The Rank is used by the network to decide which Streams can + and cannot exist when TSN resources reach their limit. If a + Bridges Port becomes oversubscribed (e.g. network + reconfiguration, IEEE 802.11 bandwidth reduction), the Rank is + used to help determine which Streams can be dropped (i.e. + removed from Bridge configuration). + + The only valid values for Rank shall be zero and one. The + configuration of a Stream with Rank zero is more important + than the configuration of a Stream with Rank one. The Rank + value of zero is intended for emergency traffic, and the Rank + value of one is intended for non-emergency traffic. + + NOTE: It is expected that higher layer applications and + protocols can use the Rank to indicate the relative importance + of Streams based on user preferences. Those user preferences + are expressed by means beyond the scope of this standard. When + multiple applications exist in a network (e.g. audio/video + along with industrial control), it can be challenging for the + varied applications and vendors to agree on multiple Rank + values. To mitigate such challenges, this Rank uses a simple + concept of emergency (zero) and non-emergency (one) that can + be applied over all applications. For example, in a network + that carries audio Streams for fire safety announcements, all + applications are likely to agree that those Streams use Rank + of zero."; + reference + "46.2.3.2.1 of IEEE Std 802.1Q-2022"; + } + } + list end-station-interfaces { + key "mac-address interface-name"; + min-elements 1; + description + "List of identifiers, one for each physical interface (distinct + point of attachment) in the end station acting as a Talker. + + Although many end stations contain a single interface, this list + allows for multiple interfaces. Some TSN features allow a single + Stream to span multiple interfaces (e.g. seamless redundancy). + + Each entry of end-station-interfaces is used by the CNC to + locate the Talker in the topology. + + Since the interface-name leaf is optional, empty string can be + used for its key value."; + reference + "46.2.3.3 of IEEE Std 802.1Q-2022"; + uses group-interface-id; + } + list data-frame-specification { + key "index"; + min-elements 1; + description + "data-frame-specification specifies the frame that carries the + Talkers Stream data. The network uses the specification to + identify this Streams frames as TSN, in order to apply the + required TSN configuration. + + The specification is based on the users knowledge of the frame, + without any network specifics. In other words, this specifies + the frame that the Talker would use in the absence of TSN. + + The specification is provided as a list of fields that the user + knows. The list is ordered from start of frame to end of header. + For example, if the Talker uses a VLAN-tagged Ethernet frame + (not IP), the list consists of ieee802-mac-addresses followed by + ieee802-vlan-tag. For example, if the Talker uses a UDP/IPv4 + packet without knowledge of the Ethernet header, the list + consists of ipv4-tuple. + + This list is optional, and its absence indicates that Stream + transformation is performed in the Talker and Listeners of this + Stream (46.2.2 of IEEE Std 802.1Q-2022)."; + reference + "46.2.3.4 of IEEE Std 802.1Q-2022"; + leaf index { + type uint8; + description + "This index is provided in order to provide a unique key per + list entry. The value of index for each entry shall be unique + (but not necessarily contiguous)."; + } + choice field { + description + "One of the following choices is provided for each field that + the user knows. Each container name acts as the case name for + the choice."; + container ieee802-mac-addresses { + description + "IEEE 802 MAC addresses."; + uses group-ieee802-mac-addresses; + } + container ieee802-vlan-tag { + description + "IEEE 802.1 CTAG"; + uses group-ieee802-vlan-tag; + } + container ipv4-tuple { + description + "IPv4 packet identification"; + uses group-ipv4-tuple; + } + container ipv6-tuple { + description + "IPv6 packet identification"; + uses group-ipv6-tuple; + } + } + } + container traffic-specification { + description + "This traffic-specification specifies how the Talker transmits + frames for the Stream. This is effectively the Talkers promise + to the network. The network uses this traffic spec to allocate + resources and adjust queue parameters in Bridges."; + reference + "46.2.3.5 of IEEE Std 802.1Q-2022"; + container interval { + description + "This interval specifies the period of time in which the + traffic specification cannot be exceeded. The traffic + specification is specified by max-frames-per-interval and + max-frame-size. + + The interval is a rational number of seconds, defined by an + integer numerator and an integer denominator. + + If the time-aware container is not present, the interval + specifies a sliding window of time. The Talkers transmission + is not synchronized to a time on the network, and therefore + the traffic specification cannot be exceeded during any + interval in time. + + If the time-aware container is present, the interval specifies + a window of time that is aligned with the time epoch that is + synchronized on the network. For example, if IEEE Std + 802.1AS-2011 is used with the PTP timescale, the first + interval begins at 1 January 00:00:00 TAI. If CurrentTime + represents the current time, then the start of the next + interval (StartOfNextInterval) is: StartOfNextInterval = N * + interval where N is the smallest integer for which the + relation StartOfNextInterval >= CurrentTime would be TRUE."; + reference + "46.2.3.5.1 of IEEE Std 802.1Q-2022"; + leaf numerator { + type uint32; + description + "intervals numerator."; + } + leaf denominator { + type uint32; + description + "intervals denominator."; + } + } + leaf max-frames-per-interval { + type uint16; + description + "max-frames-per-interval specifies the maximum number of + frames that the Talker can transmit in one interval."; + reference + "46.2.3.5.2 of IEEE Std 802.1Q-2022"; + } + leaf max-frame-size { + type uint16; + description + "max-frame-size specifies maximum frame size that the Talker + will transmit, excluding any overhead for media-specific + framing (e.g., preamble, IEEE 802.3 header, Priority/VID tag, + CRC, interframe gap). As the Talker or Bridge determines the + amount of bandwidth to reserve on the egress Port (interface), + it will calculate the media-specific framing overhead on that + Port and add it to the number specified in the max-frame-size + leaf."; + reference + "46.2.3.5.3 of IEEE Std 802.1Q-2022"; + } + leaf transmission-selection { + type uint8; + description + "transmission-selection specifies the algorithm that the + Talker uses to transmit this Streams traffic class. This + algorithm is often referred to as the shaper for the traffic + class. + + The value for this leaf uses Table 8-5 (Transmission selection + algorithm identifiers) of 8.6.8 of IEEE Std 802.1Q-2022. If no + algorithm is known, the value zero (strict priority) can be + used. + + The Talkers shaping and scheduling of the Stream is considered + to be on the user side of the user/network boundary, and this + leaf specifies the Talkers behavior to the network."; + reference + "46.2.3.5.4 of IEEE Std 802.1Q-2022"; + } + container time-aware { + presence + "Specifies that the Talkers traffic is synchronized to"+ + "a known time on the network (e.g. using IEEE Std 802.1AS)"; + description + "The time-aware container provides leafs to specify the + Talkers time-aware transmit to the network. + + The Talker and Listeners of a Stream are assumed to coordinate + using user (application) mechanisms, such that each Listener + is aware that its Talker transmits in a time-aware manner. + + If max-frames-per-interval is greater than one, the Talker + shall transmit multiple frames as a burst within the interval, + with the minimum inter-frame gap allowed by the media. + + NOTE: Although scheduled traffic (8.6.8.4 of IEEE Std + 802.1Q-2022) specifies a valid implementation of a time-aware + Talker, the time-aware container is intended to support + alternate implementations of scheduling."; + reference + "46.2.3.5 of IEEE Std 802.1Q-2022"; + leaf earliest-transmit-offset { + type uint32; + description + "earliest-transmit-offset specifies the earliest offset + within each interval at which the Talker is capable of + starting transmit of its frames. As part of + group-status-talker-listener.interface-configuration, the + network will return a specific time-aware-offset to the + Talker (within the earliest/latest range), which the Talker + uses to schedule its transmit. + + earliest-transmit-offset is specified as an integer number + of nanoseconds. + + The Talkers transmit offsets include + earliest-transmit-offset, latest-transmit-offset, and the + time-aware-offset returned to the Talker. Each of the + Talkers offsets is specified at the point when the message + timestamp point of the first frame of the Stream passes the + reference plane marking the boundary between the network + media and PHY. The message timestamp point is specified by + IEEE Std 802.1AS for various media."; + reference + "46.2.3.5.5 of IEEE Std 802.1Q-2022"; + } + leaf latest-transmit-offset { + type uint32; + description + "latest-transmit-offset specifies the latest offset within + the interval at which the Talker is capable of starting + transmit of its frames. As part of + group-status-talker-listener.interface-configuration, the + network will return a specific time-aware-offset to the + Talker within the earliest/latest range), which the Talker + uses to schedule its transmit. + + latest-transmit-offset is specified as an integer number of + nanoseconds."; + reference + "46.2.3.5.6 of IEEE Std 802.1Q-2022"; + } + leaf jitter { + type uint32; + description + "The jitter leaf specifies the maximum difference in time + between the Talkers transmit offsets, and the ideal + synchronized network time (e.g. IEEE 802.1AS time). Jitter + is specified as an unsigned integer number of nanoseconds. + + The maximum difference means sooner or later than the ideal + (e.g. transmit +/- 500 nanoseconds relative to IEEE 802.1AS + time results in jitter of 500). + + The ideal synchronized network time refers to time at the + source (e.g. IEEE 802.1AS grandmaster). The jitter does not + include inaccuracies as time is propagated from the time + source to the Talker, because those inaccuracies are assumed + to be known by the network, and time synchronization is a + network technology. The jitter leaf is intended to specify + inaccuracies in the Talkers implementation. For example, if + the Talkers IEEE 802.1AS time is +/- 812 nanoseconds + relative to the grandmaster, and the Talker schedules using + a 100 microsecond timer tick driven by IEEE 802.1AS time, + Jitter is 50000 (not 50812). + + The Talkers transmit offsets include + earliest-transmit-offset, latest-transmit-offset, and the + time-aware-offset returned to the Talker in + group-status-talker-listener.interface-configuration."; + reference + "46.2.3.5.7 of IEEE Std 802.1Q-2022"; + } + } + } + container user-to-network-requirements { + description + "user-to-network-requirements specifies user requirements for + the Stream, such as latency and redundancy. The network (CNC) + will merge all user-to-network-requirements for a Stream to + ensure that all requirements are met."; + reference + "46.2.3.6 of IEEE Std 802.1Q-2022"; + uses group-user-to-network-requirements; + } + container interface-capabilities { + description + "interface-capabilities specifies the network capabilities of + all interfaces (Ports) contained in end-station-interfaces. + + The network may provide configuration of these capabilities in + group-status-talker-listener.interface-configuration. + + NOTE: If an end station contains multiple interfaces with + different network capabilities, each interface should be + specified as a distinct Talker or Listener (i.e. one entry in + end-station-interfaces). Use of multiple entries in + end-station-interfaces is intended for network capabilities that + span multiple interfaces (e.g. seamless redundancy)."; + reference + "46.2.3.7 of IEEE Std 802.1Q-2022"; + uses group-interface-capabilities; + } + } + grouping group-listener { + description + "This YANG grouping specifies: - Listeners requirements from the + network - TSN capabilities of the Listeners interface(s) + + In the fully centralized model of TSN configuration, this grouping + originates from the CUC, and is delivered to the CNC."; + reference + "46.2.4 of IEEE Std 802.1Q-2022"; + list end-station-interfaces { + key "mac-address interface-name"; + min-elements 1; + description + "List of identifiers, one for each physical interface (distinct + point of attachment) in the end station acting as a Listener. + + Although many end stations contain a single interface, this list + allows for multiple interfaces. Some TSN features allow a single + Stream to span multiple interfaces (e.g. seamless redundancy). + + Each entry of end-station-interfaces is used by the CNC to + locate the Listener in the topology. + + Since the interface-name leaf is optional, empty string can be + used for its key value."; + reference + "46.2.3.3 of IEEE Std 802.1Q-2022"; + uses group-interface-id; + } + container user-to-network-requirements { + description + "user-to-network-requirements specifies user requirements for + the Stream, such as latency and redundancy. The network (CNC) + will merge all user-to-network-requirements for a Stream to + ensure that all requirements are met."; + reference + "46.2.3.6 of IEEE Std 802.1Q-2022"; + uses group-user-to-network-requirements; + } + container interface-capabilities { + description + "interface-capabilities specifies the network capabilities of + all interfaces (Ports) contained in end-station-interfaces. + + The network may provide configuration of these capabilities in + group-status-talker-listener.interface-configuration. + + NOTE: If an end station contains multiple interfaces with + different network capabilities, each interface should be + specified as a distinct Talker or Listener (i.e. one entry in + end-station-interfaces). Use of multiple entries in + end-station-interfaces is intended for network capabilities that + span multiple interfaces (e.g. seamless redundancy)."; + reference + "46.2.3.7 of IEEE Std 802.1Q-2022"; + uses group-interface-capabilities; + } + } + grouping group-status-stream { + description + "This YANG grouping provides the status of a Streams configuration + from the network to each user. The status in this grouping applies + to the entire Stream (Talker and all Listeners). + + In the fully centralized model of TSN configuration, this grouping + originates from the CNC, and is delivered to the CUC. + + The group-status-stream and group-status-talker-listener groupings + are intended to be used by other modules within a list of status + (state) for each Stream, with each list entry using: - leaf of + type stream-id-type, used as key to the list - container using + group-status-stream - container for Talker, using + group-status-talker-listener - list for Listeners, using + group-status-talker-listener"; + reference + "46.2.5 of IEEE Std 802.1Q-2022"; + container status-info { + description + "status-info provides information regarding the status of a + Streams configuration in the network."; + reference + "46.2.5.1 of IEEE Std 802.1Q-2022"; + leaf talker-status { + type enumeration { + enum none { + value 0; + description + "No Talker detected."; + } + enum ready { + value 1; + description + "Talker ready (configured)."; + } + enum failed { + value 2; + description + "Talker failed."; + } + } + description + "This is an enumeration for the status of the Streams Talker."; + reference + "46.2.5.1.1 of IEEE Std 802.1Q-2022"; + } + leaf listener-status { + type enumeration { + enum none { + value 0; + description + "No Listener detected."; + } + enum ready { + value 1; + description + "All Listeners ready (configured)."; + } + enum partial-failed { + value 2; + description + "One or more Listeners ready, and one or more Listeners + failed. If Talker is ready, Stream can be used."; + } + enum failed { + value 3; + description + "All Listeners failed"; + } + } + description + "This is an enumeration for the status of the Streams + Listener(s)."; + reference + "46.2.5.1.2 of IEEE Std 802.1Q-2022"; + } + leaf failure-code { + type uint8; + description + "If the Stream encounters a failure (talker-status is failed, + or listener-status is failed, or listener-status is + partial-failed), failure-code provides a non-zero code that + specifies the problem. Table 46-15 of IEEE Std 802.1Q-2022 + describes each code.)"; + reference + "46.2.5.1.3 of IEEE Std 802.1Q-2022"; + } + } + list failed-interfaces { + key "mac-address interface-name"; + description + "When a failure occurs in network configuration (i.e. non-zero + failure-code in status-info), failed-interfaces provides a list + of one or more physical interfaces (distinct points of + attachment) in the failed end station or Bridge. Each + identifier is sufficient to locate the interface in the physical + topology. + + The failed-interfaces list is optional. + + Since the interface-name leaf is optional, empty string can be + used for its key value."; + reference + "46.2.5.4 of IEEE Std 802.1Q-2022"; + uses group-interface-id; + } + } + grouping group-status-talker-listener { + description + "This YANG grouping provides the status for a specific Talker or + Listener. + + In the fully centralized model of TSN configuration, this grouping + originates from the CNC, and is delivered to the CUC."; + reference + "46.2.5 of IEEE Std 802.1Q-2022"; + leaf accumulated-latency { + type uint32; + description + "accumulated-latency provides the worst-case maximum latency + that a single frame of the Stream can encounter along its + current path(s). + + When provided to a Listener, accumulated-latency is the + worst-case maximum latency for that Listener only. + + When provided to a Talker, accumulated-latency is the worst-case + maximum latency for all Listeners (worst path). + + accumulated-latency is specified as an integer number of + nanoseconds. + + accumulated-latency uses the same definition for latency as + user-to-network-requirements.max-latency. + + For successful status-info, the network returns a value less + than or equal to user-to-network-requirements.max-latency. + + If the time-aware container is present in the + traffic-specification of the Talker, the value is expressed as + nanoseconds after the start of the Talkers + traffic-specification.interval. + + If the time-aware container is not present in the + traffic-specification of the Talker, the value is expressed as + nanoseconds after the Talkers transmit of any frame in the + Stream, at any arbitrary time. + + If user-to-network-requirements.num-seamless-trees is one, + accumulated-latency shall provide the worst-case maximum latency + for the current path from Talker to each Listener. If the path + is changed (e.g. by a spanning tree protocol), + accumulated-latency changes accordingly. + + If user-to-network-requirements.num-seamless-trees is greater + than one, accumulated-latency shall provide the worst-case + maximum latency for all paths configured from the Talker to each + Listener."; + reference + "46.2.5.2 of IEEE Std 802.1Q-2022"; + } + container interface-configuration { + description + "interface-configuration provides configuration of interfaces in + the Talker/Listener. This configuration assists the network in + meeting the Streams requirements. The interface-configuration + meets the capabilities of the interface as provided in + interface-capabilities."; + reference + "46.2.5.3 of IEEE Std 802.1Q-2022"; + uses group-interface-configuration; + } + } +} diff --git a/standard/ieee/draft/802.1/qrev/ieee802-dot1q-types.yang b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-types.yang new file mode 100644 index 000000000..9f436ca59 --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-dot1q-types.yang @@ -0,0 +1,1149 @@ +module ieee802-dot1q-types { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-types; + prefix dot1q-types; + import ietf-yang-types { + prefix yang; + } + organization + "IEEE 802.1 Working Group"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + description + "Common types used within dot1Q-bridge modules. + + Copyright (C) IEEE (2023). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + revision 2023-10-26 { + description + "Published as part of IEEE Std 802.1Qcj-2023. This revision adds + the isid-type. + + The following reference statement identifies each referenced IEEE + Standard as updated by applicable amendments."; + reference + "IEEE Std 802.1Q Bridges and Bridged Networks: + IEEE Std 802.1Q-2022, IEEE Std 802.1Qcz-2023, IEEE Std 802.1Qcw-2023, + IEEE Std 802.1Qcj-2023. + IEEE Std 802 Overview and Architecture: IEEE Std 802-2014."; + } + revision 2023-10-22 { + description + "Published as part of IEEE Std 802.1Qcw-2023. + + The following reference statement identifies each referenced IEEE + Standard as updated by applicable amendments."; + reference + "IEEE Std 802.1Q Bridges and Bridged Networks: + IEEE Std 802.1Q-2022, IEEE Std 802.1Qcz-2023, IEEE Std 802.1Qcw-2023. + IEEE Std 802 Overview and Architecture: + IEEE Std 802-2014."; + } + revision 2023-07-03 { + description + "Published as part of IEEE Std 802.1Qcz-2023."; + reference + "IEEE Std 802.1Qcz-2023, Bridges and Bridged Networks - Congestion + Isolation."; + } + revision 2022-10-29 { + description + "Published as part of IEEE Std 802.1Q-2022."; + reference + "IEEE Std 802.1Q-2022, Bridges and Bridged Networks."; + } + revision 2020-06-04 { + description + "Published as part of IEEE Std 802.1Qcx-2020."; + reference + "IEEE Std 802.1Qcx-2020, Bridges and Bridged Networks - YANG Data + Model for Connectivity Fault Management."; + } + revision 2018-03-07 { + description + "Published as part of IEEE Std 802.1Q-2018."; + reference + "IEEE Std 802.1Q-2018, Bridges and Bridged Networks."; + } + identity dot1q-vlan-type { + description + "Base identity from which all 802.1Q VLAN tag types are derived."; + } + identity c-vlan { + base dot1q-vlan-type; + description + "An 802.1Q Customer VLAN, using the 81-00 EtherType."; + reference + "5.5 of IEEE Std 802.1Q"; + } + identity s-vlan { + base dot1q-vlan-type; + description + "An 802.1Q Service VLAN, using the 88-A8 EtherType originally + introduced in 802.1ad, and incorporated into 802.1Q (2011)"; + reference + "5.6 of IEEE Std 802.1Q"; + } + identity transmission-selection-algorithm { + description + "Specify the transmission selection algorithms of IEEE Std 802.1Q + Table 8-6"; + } + identity strict-priority { + base transmission-selection-algorithm; + description + "Indicates the strict priority transmission selection algorithm."; + reference + "Table 8-6 of IEEE Std 802.1Q"; + } + identity credit-based-shaper { + base transmission-selection-algorithm; + description + "Indicates the credit-based shaper transmission selection algorithm."; + reference + "Table 8-6 of IEEE Std 802.1Q"; + } + identity enhanced-transmission-selection { + base transmission-selection-algorithm; + description + "Indicates the enhanced transmission selection algorithm."; + reference + "Table 8-6 of IEEE Std 802.1Q"; + } + identity asynchronous-traffic-shaping { + base transmission-selection-algorithm; + description + "Indicates the asynchronous transmission selection algorithm."; + reference + "Table 8-6 of IEEE Std 802.1Q"; + } + identity vendor-specific { + base transmission-selection-algorithm; + description + "Indicates a vendor specific transmission selection algorithm."; + reference + "Table 8-6 of IEEE Std 802.1Q"; + } + identity type-of-operation { + description + "Represents the operation type (name)."; + } + typedef name-type { + type string { + length "0..32"; + } + description + "A text string of up to 32 characters, of locally determined + significance."; + } + typedef port-number-type { + type uint32 { + range "1..4095"; + } + description + "The port number of the Bridge port for which this entry contains + Bridge management information."; + } + typedef priority-type { + type uint8 { + range "0..7"; + } + description + "A range of priorities from 0 to 7 (inclusive). The Priority Code + Point (PCP) is a 3-bit field that refers to the class of service + associated with an 802.1Q VLAN tagged frame. The field specifies a + priority value between 0 and 7, these values can be used by quality of + service (QoS) to prioritize different classes of traffic."; + } + typedef num-traffic-class-type { + type uint8 { + range "1..8"; + } + description + "The number of traffic classes supported or participating in a + particular feature. There are between 1 and 8 supported traffic + classes defined by IEEE Std 802.1Q."; + } + typedef vid-range-type { + type string { + pattern + "([1-9]"+ + "[0-9]{0,3}"+ + "(-[1-9][0-9]{0,3})?"+ + "(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)"; + } + description + "A list of VLAN IDs, or non overlapping VLAN ranges, in ascending + order, between 1 and 4094. + + This type is used to match an ordered list of VLAN IDs, or contiguous + ranges of VLAN IDs. Valid VLAN IDs must be in the range 1 to 4094, and + included in the list in non overlapping ascending order. + + For example: 1,10-100,250,500-1000"; + } + typedef vlanid { + type uint16 { + range "1..4094"; + } + description + "The vlanid type uniquely identifies a VLAN. This is the 12-bit + VLAN-ID used in the VLAN Tag header. The range is defined by the + referenced specification. This type is in the value set and its + semantics equivalent to the VlanId textual convention of the SMIv2."; + } + typedef vlan-index-type { + type uint32 { + range "1..4094 | 4096..4294967295"; + } + description + "A value used to index per-VLAN tables. Values of 0 and 4095 are not + permitted. The range of valid VLAN indices. If the value is greater + than 4095, then it represents a VLAN with scope local to the + particular agent, i.e., one without a global VLAN-ID assigned to it. + Such VLANs are outside the scope of IEEE 802.1Q, but it is convenient + to be able to manage them in the same way using this YANG module."; + reference + "9.6 of IEEE Std 802.1Q"; + } + typedef mstid-type { + type uint32 { + range "1..4094"; + } + description + "In an MSTP Bridge, an MSTID, i.e., a value used to identify a + spanning tree (or MST) instance"; + reference + "13.8 of IEEE Std 802.1Q"; + } + typedef pcp-selection-type { + type enumeration { + enum 8P0D { + description + "8 priorities, 0 drop eligible"; + } + enum 7P1D { + description + "7 priorities, 1 drop eligible"; + } + enum 6P2D { + description + "6 priorities, 2 drop eligible"; + } + enum 5P3D { + description + "5 priorities, 3 drop eligible"; + } + } + description + "Priority Code Point selection types."; + reference + "12.6.2.5.3, 6.9.3 of IEEE Std 802.1Q"; + } + typedef protocol-frame-format-type { + type enumeration { + enum Ethernet { + description + "Ethernet frame format"; + } + enum rfc1042 { + description + "RFC 1042 frame format"; + } + enum snap8021H { + description + "SNAP 802.1H frame format"; + } + enum snapOther { + description + "Other SNAP frame format"; + } + enum llcOther { + description + "Other LLC frame format"; + } + } + description + "A value representing the frame format to be matched."; + reference + "12.10.1.7.1 of IEEE Std 802.1Q"; + } + typedef ethertype-type { + type string { + pattern "[0-9a-fA-F]{2}-[0-9a-fA-F]{2}"; + } + description + "The EtherType value represented in the canonical order defined by + IEEE 802. The canonical representation uses uppercase characters."; + reference + "9.2 of IEEE Std 802"; + } + typedef dot1q-tag-type { + type identityref { + base dot1q-vlan-type; + } + description + "Identifies a specific 802.1Q tag type"; + reference + "9.5 IEEE Std 802.1Q"; + } + typedef traffic-class-type { + type uint8 { + range "0..7"; + } + description + "This is the numerical value associated with a traffic class in a + Bridge. Larger values are associated with higher priority traffic + classes."; + reference + "3.273 of IEEE Std 802.1Q"; + } + typedef isid-type { + type uint32 { + range "1|255..16777214"; + } + description + "The i-sid type represents a Backbone Service Instance Identifier + (I-SID). This is the 24-bit I-SID field used in the I-TAG TCI of a + Provider Backbone Bridging frame. The values 0, 2-254, and 16777215 + are reserved for future standardization. The value 255 is dedicated + to use by the SPB protocol."; + reference + "3.108, 9.7 of IEEE Std 802.1Q-2022"; + } + grouping dot1q-tag-classifier-grouping { + description + "A grouping which represents an 802.1Q VLAN, matching both the + EtherType and a single VLAN ID."; + leaf tag-type { + type dot1q-tag-type; + mandatory true; + description + "VLAN type"; + } + leaf vlan-id { + type vlanid; + mandatory true; + description + "VLAN ID"; + } + } + grouping dot1q-tag-or-any-classifier-grouping { + description + "A grouping which represents an 802.1Q VLAN, matching both the + EtherType and a single VLAN ID or 'any' to match on any VLAN ID."; + leaf tag-type { + type dot1q-tag-type; + mandatory true; + description + "VLAN type"; + } + leaf vlan-id { + type union { + type vlanid; + type enumeration { + enum any { + value 4095; + description + "Matches 'any' VLAN in the range 1 to 4094 that is not matched + by a more specific VLAN ID match"; + } + } + } + mandatory true; + description + "VLAN ID or any"; + } + } + grouping dot1q-tag-ranges-classifier-grouping { + description + "A grouping which represents an 802.1Q VLAN that matches a range of + VLAN IDs."; + leaf tag-type { + type dot1q-tag-type; + mandatory true; + description + "VLAN type"; + } + leaf vlan-ids { + type vid-range-type; + mandatory true; + description + "VLAN IDs"; + } + } + grouping dot1q-tag-ranges-or-any-classifier-grouping { + description + "A grouping which represents an 802.1Q VLAN, matching both the + EtherType and a single VLAN ID, ordered list of ranges, or 'any' to + match on any VLAN ID."; + leaf tag-type { + type dot1q-tag-type; + mandatory true; + description + "VLAN type"; + } + leaf vlan-id { + type union { + type vid-range-type; + type enumeration { + enum any { + value 4095; + description + "Matches 'any' VLAN in the range 1 to 4094."; + } + } + } + mandatory true; + description + "VLAN IDs or any"; + } + } + grouping priority-regeneration-table-grouping { + description + "The priority regeneration table provides the ability to map incoming + priority values on a per-Port basis, under management control."; + reference + "6.9.4 of IEEE Std 802.1Q"; + leaf priority0 { + type priority-type; + default "0"; + description + "Priority 0"; + reference + "12.6.2.3, 6.9.4 of IEEE Std 802.1Q"; + } + leaf priority1 { + type priority-type; + default "1"; + description + "Priority 1"; + reference + "12.6.2.3, 6.9.4 of IEEE Std 802.1Q"; + } + leaf priority2 { + type priority-type; + default "2"; + description + "Priority 2"; + reference + "12.6.2.3, 6.9.4 of IEEE Std 802.1Q"; + } + leaf priority3 { + type priority-type; + default "3"; + description + "Priority 3"; + reference + "12.6.2.3, 6.9.4 of IEEE Std 802.1Q"; + } + leaf priority4 { + type priority-type; + default "4"; + description + "Priority 4"; + reference + "12.6.2.3, 6.9.4 of IEEE Std 802.1Q"; + } + leaf priority5 { + type priority-type; + default "5"; + description + "Priority 5"; + reference + "12.6.2.3, 6.9.4 of IEEE Std 802.1Q"; + } + leaf priority6 { + type priority-type; + default "6"; + description + "Priority 6"; + reference + "12.6.2.3, 6.9.4 of IEEE Std 802.1Q"; + } + leaf priority7 { + type priority-type; + default "7"; + description + "Priority 7"; + reference + "12.6.2.3, 6.9.4 of IEEE Std 802.1Q"; + } + } + grouping pcp-decoding-table-grouping { + description + "The Priority Code Point decoding table enables the decoding of the + priority and drop-eligible parameters from the PCP."; + reference + "6.9.3 of IEEE Std 802.1Q"; + list pcp-decoding-map { + key "pcp"; + description + "This map associates the priority code point field found in the VLAN + with a priority and drop eligible value based upon the priority code + point selection type."; + leaf pcp { + type pcp-selection-type; + description + "The priority code point selection type."; + reference + "12.6.2.7, 6.9.3 of IEEE Std 802.1Q"; + } + list priority-map { + key "priority-code-point"; + description + "This map associates a priority code point value with priority + and drop eligible parameters."; + leaf priority-code-point { + type priority-type; + description + "Priority associated with the pcp."; + reference + "12.6.2.7, 6.9.3 of IEEE Std 802.1Q"; + } + leaf priority { + type priority-type; + description + "Priority associated with the pcp."; + reference + "12.6.2.7, 6.9.3 of IEEE Std 802.1Q"; + } + leaf drop-eligible { + type boolean; + description + "Drop eligible value for pcp"; + reference + "12.6.2.7, 6.9.3 of IEEE Std 802.1Q"; + } + } + } + } + grouping pcp-encoding-table-grouping { + description + "The Priority Code Point encoding table encodes the priority and + drop-eligible parameters in the PCP field of the VLAN tag."; + reference + "12.6.2.9, 6.9.3 of IEEE Std 802.1Q"; + list pcp-encoding-map { + key "pcp"; + description + "This map associates the priority and drop-eligible parameters + with the priority used to encode the PCP of the VLAN based upon + the priority code point selection type."; + leaf pcp { + type pcp-selection-type; + description + "The priority code point selection type."; + reference + "12.6.2.7, 6.9.3 of IEEE Std 802.1Q"; + } + list priority-map { + key "priority dei"; + description + "This map associates the priority and drop-eligible parameters + with the priority code point field of the VLAN tag."; + leaf priority { + type priority-type; + description + "Priority associated with the pcp."; + reference + "12.6.2.7, 6.9.3 of IEEE Std 802.1Q"; + } + leaf dei { + type boolean; + description + "The drop eligible value."; + reference + "12.6.2, 8.6.6 of IEEE Std 802.1Q"; + } + leaf priority-code-point { + type priority-type; + description + "PCP value for priority when DEI value"; + reference + "12.6.2.9, 6.9.3 of IEEE Std 802.1Q"; + } + } + } + } + grouping service-access-priority-table-grouping { + description + "The Service Access Priority Table associates a received priority with + a service access priority."; + reference + "12.6.2.17, 6.13.1 of IEEE Std 802.1Q"; + leaf priority0 { + type priority-type; + default "0"; + description + "Service access priority value for priority 0"; + reference + "12.6.2.17, 6.13.1 of IEEE Std 802.1Q"; + } + leaf priority1 { + type priority-type; + default "1"; + description + "Service access priority value for priority 1"; + reference + "12.6.2.17, 6.13.1 of IEEE Std 802.1Q"; + } + leaf priority2 { + type priority-type; + default "2"; + description + "Service access priority value for priority 2"; + reference + "12.6.2.17, 6.13.1 of IEEE Std 802.1Q"; + } + leaf priority3 { + type priority-type; + default "3"; + description + "Service access priority value for priority 3"; + reference + "12.6.2.17, 6.13.1 of IEEE Std 802.1Q"; + } + leaf priority4 { + type priority-type; + default "4"; + description + "Service access priority value for priority 4"; + reference + "12.6.2.17, 6.13.1 of IEEE Std 802.1Q"; + } + leaf priority5 { + type priority-type; + default "5"; + description + "Service access priority value for priority 5"; + reference + "12.6.2.17, 6.13.1 of IEEE Std 802.1Q"; + } + leaf priority6 { + type priority-type; + default "6"; + description + "Service access priority value for priority 6"; + reference + "12.6.2.17, 6.13.1 of IEEE Std 802.1Q"; + } + leaf priority7 { + type priority-type; + default "7"; + description + "Service access priority value for priority 7"; + reference + "12.6.2.17, 6.13.1 of IEEE Std 802.1Q"; + } + } + grouping traffic-class-table-grouping { + description + "The Traffic Class Table models the operations that can be + performed on, or can inquire about, the current contents of the + Traffic Class Table (8.6.6) for a given Port."; + reference + "12.6.3, 8.6.6 of IEEE Std 802.1Q"; + list traffic-class-map { + key "priority"; + status "deprecated"; + description + "The priority index into the traffic class table. This list modeled + the Traffic Class Table incorrectly. available-traffic-class should + be a single value per port and not a list of all possible + available-traffic-class. For more information see maintenance issue + 0230. The status of this object is deprecated. It is replaced by + sibling container traffic-class-table."; + leaf priority { + type priority-type; + description + "The priority of the traffic class entry."; + reference + "8.6.6 of IEEE Std 802.1Q"; + } + list available-traffic-class { + key "num-traffic-class"; + description + "The traffic class index associated with a given priority within + the traffic class table."; + reference + "8.6.6 of IEEE Std 802.1Q"; + leaf num-traffic-class { + type uint8 { + range "1..8"; + } + description + "The available number of traffic classes."; + reference + "8.6.6 of IEEE Std 802.1Q"; + } + leaf traffic-class { + type traffic-class-type; + description + "The traffic class index associated with a given traffic class + entry."; + reference + "8.6.6 of IEEE Std 802.1Q"; + } + } + } + container traffic-class-table { + description + "The priority to traffic class mapping."; + reference + "8.6.6 of IEEE Std 802.1Q"; + leaf number-of-traffic-classes { + type uint8 { + range "1..8"; + } + description + "The number of egress traffic classes supported on this port. This + object may be optionally read-only."; + reference + "12.6.3.1 of IEEE Std 802.1Q"; + } + leaf priority0 { + type traffic-class-type; + must + "current() < ../number-of-traffic-classes"; + description + "The traffic class index associated with priority 0"; + reference + "8.6.6 of IEEE Std 802.1Q"; + } + leaf priority1 { + type traffic-class-type; + must + "current() < ../number-of-traffic-classes"; + description + "The traffic class index associated with priority 1"; + reference + "8.6.6 of IEEE Std 802.1Q"; + } + leaf priority2 { + type traffic-class-type; + must + "current() < ../number-of-traffic-classes"; + description + "The traffic class index associated with priority 2"; + reference + "8.6.6 of IEEE Std 802.1Q"; + } + leaf priority3 { + type traffic-class-type; + must + "current() < ../number-of-traffic-classes"; + description + "The traffic class index associated with priority 3"; + reference + "8.6.6 of IEEE Std 802.1Q"; + } + leaf priority4 { + type traffic-class-type; + must + "current() < ../number-of-traffic-classes"; + description + "The traffic class index associated with priority 4"; + reference + "8.6.6 of IEEE Std 802.1Q"; + } + leaf priority5 { + type traffic-class-type; + must + "current() < ../number-of-traffic-classes"; + description + "The traffic class index associated with priority 5"; + reference + "8.6.6 of IEEE Std 802.1Q"; + } + leaf priority6 { + type traffic-class-type; + must + "current() < ../number-of-traffic-classes"; + description + "The traffic class index associated with priority 6"; + reference + "8.6.6 of IEEE Std 802.1Q"; + } + leaf priority7 { + type traffic-class-type; + must + "current() < ../number-of-traffic-classes"; + description + "The traffic class index associated with priority 7"; + reference + "8.6.6 of IEEE Std 802.1Q"; + } + } + } + grouping transmission-selection-table-grouping { + description + "The Transmission Selection Algorithm Table models the operations that + can be performed on, or can inquire about, the current contents of the + Transmission Selection Algorithm Table (12.20.2) for a given Port."; + reference + "12.20.2, 8.6.8 of IEEE Std 802.1Q"; + list transmission-selection-algorithm-map { + key "traffic-class"; + description + "The traffic class to index into the transmission selection table."; + leaf traffic-class { + type traffic-class-type; + description + "The traffic class of the entry."; + reference + "8.6.6 of IEEE Std 802.1Q"; + } + leaf transmission-selection-algorithm { + type identityref { + base dot1q-types:transmission-selection-algorithm; + } + description + "Transmission selection algorithm"; + reference + "8.6.8, Table 8-6 of IEEE Std 802.1Q"; + } + } + } + grouping port-map-grouping { + description + "A set of control indicators, one for each Port. A Port Map, + containing a control element for each outbound Port"; + reference + "8.8.1, 8.8.2 of IEEE Std 802.1Q"; + list port-map { + key "port-ref"; + description + "The list of entries composing the port map."; + leaf port-ref { + type port-number-type; + description + "The interface port reference associated with this map."; + reference + "8.8.1 of IEEE Std 802.1Q"; + } + choice map-type { + description + "Type of port map"; + container static-filtering-entries { + description + "Static filtering entries attributes."; + leaf control-element { + type enumeration { + enum forward { + description + "Forwarded, independently of any dynamic filtering + information held by the FDB."; + } + enum filter { + description + "Filtered, independently of any dynamic filtering + information."; + } + enum forward-filter { + description + "Forwarded or filtered on the basis of dynamic filtering + information, or on the basis of the default Group + filtering behavior for the outbound Port (8.8.6) if no + dynamic filtering information is present specifically for + the MAC address."; + } + } + description + "A control element for each outbound Port, specifying that + a frame with a destination MAC address, and in the case of + VLAN Bridge components, VID that meets this specification."; + reference + "8.8.1 of IEEE Std 802.1Q"; + } + leaf connection-identifier { + type port-number-type; + description + "A Port MAP may contain a connection identifier (8.8.12) for + each outbound port. The connection identifier may be + associated with the Bridge Port value maintained in a Dynamic + Filtering Entry of the FDB for Bridge Ports."; + reference + "8.8.1, 8.8.12 of IEEE Std 802.1Q"; + } + } + container static-vlan-registration-entries { + description + "Static VLAN registration entries."; + leaf registrar-admin-control { + type enumeration { + enum fixed-new-ignored { + description + "Registration Fixed (New ignored)."; + } + enum fixed-new-propagated { + description + "Registration Fixed (New propagated."; + } + enum forbidden { + description + "Registration Forbidden."; + } + enum normal { + description + "Normal Registration."; + } + } + description + "The Registrar Administrative Control values for MVRP and MIRP + for the VID."; + reference + "8.8.2 of IEEE Std 802.1Q"; + } + leaf vlan-transmitted { + type enumeration { + enum tagged { + description + "VLAN-tagged"; + } + enum untagged { + description + "VLAN-untagged"; + } + } + description + "Whether frames are to be VLAN-tagged or untagged when + transmitted."; + reference + "8.8.2 of IEEE Std 802.1Q"; + } + } + container mac-address-registration-entries { + description + "MAC address registration entries attributes."; + leaf control-element { + type enumeration { + enum registered { + description + "Forwarded, independently of any dynamic filtering + information held by the FDB."; + } + enum not-registered { + description + "Filtered, independently of any dynamic filtering + information."; + } + } + description + "A control element for each outbound Port, specifying that + a frame with a destination MAC address, and in the case of + VLAN Bridge components, VID that meets this specification."; + reference + "8.8.4 of IEEE Std 802.1Q"; + } + } + container dynamic-vlan-registration-entries { + description + "Dynamic VLAN registration entries attributes."; + leaf control-element { + type enumeration { + enum registered { + description + "Forwarded, independently of any dynamic filtering + information held by the FDB."; + } + } + description + "A control element for each outbound Port, specifying that + a frame with a destination MAC address, and in the case of + VLAN Bridge components, VID that meets this specification."; + reference + "8.8.5 of IEEE Std 802.1Q"; + } + } + container dynamic-reservation-entries { + description + "Dynamic reservation entries attributes."; + leaf control-element { + type enumeration { + enum forward { + description + "Forwarded, independently of any dynamic filtering + information held by the FDB."; + } + enum filter { + description + "Filtered, independently of any dynamic filtering + information."; + } + } + description + "A control element for each outbound Port, specifying that + a frame with a destination MAC address, and in the case of + VLAN Bridge components, VID that meets this specification."; + reference + "8.8.7 of IEEE Std 802.1Q"; + } + } + container dynamic-filtering-entries { + description + "Dynamic filtering entries attributes."; + leaf control-element { + type enumeration { + enum forward { + description + "Forwarded, independently of any dynamic filtering + information held by the FDB."; + } + } + description + "A control element for each outbound Port, specifying that + a frame with a destination MAC address, and in the case of + VLAN Bridge components, VID that meets this specification."; + reference + "8.8.3 of IEEE Std 802.1Q"; + } + } + } + } + } + grouping bridge-port-statistics-grouping { + description + "Grouping of bridge port statistics."; + reference + "12.6.1.1.3 of IEEE Std 802.1Q"; + leaf delay-exceeded-discards { + type yang:counter64; + description + "The number of frames discarded by this port due to excessive + transit delay through the Bridge. It is incremented by both + transparent and source route Bridges."; + reference + "12.6.1.1.3, 8.6.6 of IEEE Std 802.1Q"; + } + leaf mtu-exceeded-discards { + type yang:counter64; + description + "The number of frames discarded by this port due to an excessive + size. It is incremented by both transparent and source route + Bridges."; + reference + "Item g) in 12.6.1.1.3 of IEEE Std 802.1Q"; + } + leaf frame-rx { + type yang:counter64; + description + "The number of frames that have been received by this port from its + segment. Note that a frame received on the interface corresponding + to this port is only counted by this object if and only if it is for + a protocol being processed by the local bridging function, including + Bridge management frames."; + reference + "12.6.1.1.3 of IEEE Std 802.1Q"; + } + leaf octets-rx { + type yang:counter64; + description + "The total number of octets in all valid frames received (including + BPDUs, frames addressed to the Bridge as an end station, and frames + that were submitted to the Forwarding Process)."; + reference + "12.6.1.1.3 of IEEE Std 802.1Q"; + } + leaf frame-tx { + type yang:counter64; + description + "The number of frames that have been transmitted by this port to its + segment. Note that a frame transmitted on the interface + corresponding to this port is only counted by this object if and + only if it is for a protocol being processed by the local bridging + function, including Bridge management frames."; + } + leaf octets-tx { + type yang:counter64; + description + "The total number of octets that have been transmitted by this port + to its segment."; + } + leaf discard-inbound { + type yang:counter64; + description + "Count of received valid frames that were discarded (i.e., filtered) + by the Forwarding Process."; + reference + "12.6.1.1.3 of IEEE Std 802.1Q"; + } + leaf forward-outbound { + type yang:counter64; + description + "The number of frames forwarded to the associated MAC Entity (8.5)."; + reference + "12.6.1.1.3 of IEEE Std 802.1Q"; + } + leaf discard-lack-of-buffers { + type yang:counter64; + description + "The count of frames that were to be transmitted through the + associated Port but were discarded due to lack of buffers."; + reference + "12.6.1.1.3 of IEEE Std 802.1Q"; + } + leaf discard-transit-delay-exceeded { + type yang:counter64; + description + "The number of frames discarded by this port due to excessive + transit delay through the Bridge. It is incremented by both + transparent and source route Bridges."; + reference + "12.6.1.1.3 of IEEE Std 802.1Q"; + } + leaf discard-on-error { + type yang:counter64; + description + "The number of frames that were to be forwarded on the associated + MAC but could not be transmitted (e.g., frame would be too large, + 6.5.8)."; + reference + "12.6.1.1.3 of IEEE Std 802.1Q"; + } + } + grouping base-gate-control-entries { + description + "Grouping of gate control entries."; + list gate-control-entry { + key "index"; + description + "List of gate control entries."; + leaf index { + type uint32; + description + "The index for this entry."; + } + leaf operation-name { + type identityref { + base type-of-operation; + } + mandatory true; + description + "The name (type) of the operation for this entry."; + } + leaf time-interval-value { + type uint32; + description + "timeIntervalValue is a 32-bit unsigned integer, representing a + number of nanoseconds. After timeIntervalValue nanoseconds have + elapsed since the completion of the previous entry in the gate + control list, control passes to the next entry."; + reference + "12.29.1.2.3, 8.6.8.4 of IEEE Std 802.1Q"; + } + } + } +} diff --git a/standard/ieee/draft/802.1/qrev/ieee802-types.yang b/standard/ieee/draft/802.1/qrev/ieee802-types.yang new file mode 100644 index 000000000..bb4e1db42 --- /dev/null +++ b/standard/ieee/draft/802.1/qrev/ieee802-types.yang @@ -0,0 +1,336 @@ +module ieee802-types { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-types; + prefix ieee; + organization + "IEEE 802.1 Working Group"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + description + "This module contains a collection of generally useful derived data + types for IEEE YANG models. + + Copyright (C) IEEE (2023). All rights reserved. + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + revision 2023-10-22 { + description + "Published as part of IEEE Std 802.1Qcw-2023. + + The following reference statement identifies each referenced IEEE + Standard as updated by applicable amendments."; + reference + "IEEE Std 802.1Q Bridges and Bridged Networks: + IEEE Std 802.1Q-2022, IEEE Std 802.1Qcz-2023, IEEE Std 802.1Qcw-2023. + IEEE Std 802 Overview and Architecture: + IEEE Std 802-2014. + IEEE 802.1AS Timing and Synchronization for Time-Sensitive Applications: + IEEE Std 802.1AS-2020."; + } + revision 2022-10-29 { + description + "Published as part of IEEE Std 802.1Q-2022."; + reference + "IEEE Std 802.1Q-2022, Bridges and Bridged Networks."; + } + revision 2022-03-16 { + description + "Published as part of IEEE Std 802.1ABcu."; + reference + "IEEE Std 802.1AB-2016"; + } + revision 2020-06-04 { + description + "Published as part of IEEE Std 802.1Qcx-2020. Second version."; + reference + "IEEE Std 802.1Qcx-2020, Bridges and Bridged Networks - YANG Data + Model for Connectivity Fault Management."; + } + revision 2018-03-07 { + description + "Published as part of IEEE Std 802.1Q-2018. Initial version."; + reference + "IEEE Std 802.1Q-2018, Bridges and Bridged Networks."; + } + typedef mac-address { + type string { + pattern "[0-9a-fA-F]{2}(-[0-9a-fA-F]{2}){5}"; + } + description + "The mac-address type represents a MAC address in the canonical format + and hexadecimal format specified by IEEE Std 802. The hexadecimal + representation uses uppercase characters."; + reference + "3.1, 8.1 of IEEE Std 802"; + } + typedef chassis-id-subtype-type { + type enumeration { + enum chassis-component { + value 1; + description + "Represents a chassis identifier based on the value of the + entPhysicalAlias object (defined in IETF RFC 2737) for a chassis + component (i.e., an entPhysicalClass value of chassis(3))."; + } + enum interface-alias { + value 2; + description + "Represents a chassis identifier based on the value of the ifAlias + object (defined in IETF RFC 2863) for an interface on the + containing chassis."; + } + enum port-component { + value 3; + description + "Represents a chassis identifier based on the value of the + entPhysicalAlias object (defined in IETF RFC 2737) for a port or + backplane component (i.e., entPhysicalClass value of port(10) or + backplane(4)), within the containing chassis."; + } + enum mac-address { + value 4; + description + "Represents a chassis identifier based on the value of a unicast + source address (encoded in network byte order and IEEE 802.3 + bit significance), of a port on the containing chassis as + defined in IEEE Std 802."; + } + enum network-address { + value 5; + description + "Represents a chassis identifier based on a network address, + associated with a particular chassis. The encoded address is + actually composed of two fields. The first field is a single + octet, representing the IANA AddressFamilyNumbers value for the + specific address type, and the second field is the network address + value."; + } + enum interface-name { + value 6; + description + "Represents a chassis identifier based on the value of the ifName + object (defined in IETF RFC 2863) for an interface on the + containing chassis."; + } + enum local { + value 7; + description + "Represents a chassis identifier based on a locally defined value."; + } + } + description + "The source of a chassis identifier."; + reference + "IEEE Std 802 + IETF RFC 2737 + IETF RFC 2863"; + } + typedef chassis-id-type { + type string { + length "1..255"; + } + description + "The format of a chassis identifier string. Objects of this type are + always used with an associated chassis-id-subtype object, which + identifies the format of the particular chassis-id object + instance. + + If the associated chassis-id-subtype object has a value of + chassis-component, then the octet string identifies a particular + instance of the entPhysicalAlias object (defined in IETF RFC 2737) for + a chassis component (i.e., an entPhysicalClass value of chassis(3)). + + If the associated chassis-id-subtype object has a value of + interface-alias, then the octet string identifies a particular + instance of the ifAlias object (defined in IETF RFC 2863) for an + interface on the containing chassis. If the particular ifAlias object + does not contain any values, another chassis identifier type should be + used. + + If the associated chassis-id-subtype object has a value of + port-component, then the octet string identifies a particular instance + of the entPhysicalAlias object (defined in IETF RFC 2737) for a port + or backplane component within the containing chassis. + + If the associated chassis-id-subtype object has a value of + mac-address, then this string identifies a particular unicast source + address (encoded in network byte order and IEEE 802.3 bit + significance), of a port on the containing chassis as defined in + IEEE Std 802. + + If the associated chassis-id-subtype object has a value of + network-address, then this string identifies a particular network + address, encoded in network byte order, associated with one or more + ports on the containing chassis. The first octet contains the IANA + Address Family Numbers enumeration value for the specific address + type, and octets 2 through N contain the network address value in + network byte order. + + If the associated chassis-id-subtype object has a value of + interface-name, then the octet string identifies a particular instance + of the ifName object (defined in IETF RFC 2863) for an interface on + the containing chassis. If the particular ifName object does not + contain any values, another chassis identifier type should be used. + + If the associated chassis-id-subtype object has a value of local, + then this string identifies a locally assigned Chassis ID."; + reference + "IEEE Std 802 + IETF RFC 2737 + IETF RFC 2863"; + } + typedef port-id-subtype-type { + type enumeration { + enum interface-alias { + value 1; + description + "Represents a port identifier based on the ifAlias MIB object, + defined in IETF RFC 2863."; + } + enum port-component { + value 2; + description + "Represents a port identifier based on the value of + entPhysicalAlias (defined in IETF RFC 2737) for a port component + (i.e., entPhysicalClass value of port(10)), within the containing + chassis."; + } + enum mac-address { + value 3; + description + "Represents a port identifier based on a unicast source address + (encoded in network byte order and IEEE 802.3 bit significance), + which has been detected by the agent and associated with a + particular port (IEEE Std 802)."; + } + enum network-address { + value 4; + description + "Represents a port identifier based on a network address, detected + by the agent and associated with a particular port."; + } + enum interface-name { + value 5; + description + "Represents a port identifier based on the ifName MIB object, + defined in IETF RFC 2863."; + } + enum agent-circuit-id { + value 6; + description + "Represents a port identifier based on the agent-local identifier + of the circuit (defined in RFC 3046), detected by the agent and + associated with a particular port."; + } + enum local { + value 7; + description + "Represents a port identifier based on a value locally assigned."; + } + } + description + "The source of a particular type of port identifier."; + reference + "IEEE Std 802 + IETF RFC 2737 + IETF RFC 2863 + IETF RFC 3046"; + } + typedef port-id-type { + type string { + length "1..255"; + } + description + "The format of a port identifier string. Objects of this type are + always used with an associated port-id-subtype object, which + identifies the format of the particular port-id object instance. + + If the associated port-id-subtype object has a value of + interface-alias, then the octet string identifies a particular + instance of the ifAlias object (defined in IETF RFC 2863). If the + particular ifAlias object does not contain any values, another port + identifier type should be used. + + If the associated port-id-subtype object has a value of + port-component, then the octet string identifies a particular instance + of the entPhysicalAlias object (defined in IETF RFC 2737) for a port + or backplane component. + + If the associated port-id-subtype object has a value of + mac-address, then this string identifies a particular unicast source + address (encoded in network byte order and IEEE 802.3 bit + significance) associated with the port (IEEE Std 802). + + If the associated port-id-subtype object has a value of + network-address, then this string identifies a network address + associated with the port. The first octet contains the IANA + AddressFamilyNumbers enumeration value for the specific address type, + and octets 2 through N contain the networkAddress address value in + network byte order. + + If the associated port-id-subtype object has a value of + interface-name, then the octet string identifies a particular instance + of the ifName object (defined in IETF RFC 2863). If the particular + ifName object does not contain any values, another port identifier + type should be used. + + If the associated port-id-subtype object has a value of + agent-circuit-id, then this string identifies a agent-local identifier + of the circuit (defined in RFC 3046). + + If the associated port-id-subtype object has a value of local, + then this string identifies a locally assigned port ID."; + reference + "IEEE Std 802 + IETF RFC 2737 + IETF RFC 2863 + IETF RFC 3046"; + } + grouping rational-grouping { + description + "Definition of a non-negative rational number."; + leaf numerator { + type uint32; + description + "Numerator of the rational number."; + } + leaf denominator { + type uint32 { + range "1..4294967295"; + } + description + "Denominator of the rational number."; + } + } + grouping ptp-time-grouping { + description + "This grouping specifies a PTP timestamp, represented as a 48-bit + unsigned integer number of seconds and a 32-bit unsigned integer + number of nanoseconds."; + reference + "6.4.3.4 of IEEE Std 802.1AS"; + leaf seconds { + type uint64; + description + "This is the integer portion of the timestamp in units of seconds. + The upper 16 bits are always zero."; + } + leaf nanoseconds { + type uint32; + description + "This is the fractional portion of the timestamp in units of + nanoseconds. This value is always less than 10^9."; + } + } +}