--- /dev/null
+module org-openroadm-otn-odu-interfaces {
+ namespace "http://org/openroadm/otn-odu-interfaces";
+ prefix org-openroadm-otn-odu-interfaces;
+
+ import org-openroadm-device {
+ prefix org-openroadm-device;
+ }
+ import org-openroadm-interfaces {
+ prefix openROADM-if;
+ }
+ import org-openroadm-maintenance-testsignal {
+ prefix org-openroadm-maint-testsignal;
+ }
+
+ organization "Open ROADM MSA";
+ contact
+ "OpenROADM.org";
+ description
+ "YANG definitions for device facility otnodu interfaces.
+
+ Copyright of the Members of the Open ROADM MSA Agreement dated (c) 2016,
+ AT&T Intellectual Property. All other rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation and/or
+ other materials provided with the distribution.
+ * Neither the Members of the Open ROADM MSA Agreement nor the names of its
+ contributors may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE MEMBERS OF THE OPEN ROADM MSA AGREEMENT ''AS IS''
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ IN NO EVENT THE MEMBERS OF THE OPEN ROADM MSA AGREEMENT BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+ OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ Also contains code components extracted from IETF Interfaces. These code components
+ are copyrighted and licensed as follows:
+
+ Copyright (c) 2016 IETF Trust and the persons identified as the document authors.
+ All rights reserved.
+
+ This document is subject to BCP 78 and the IETF Trust’s Legal Provisions Relating
+ to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of
+ publication of this document. Please review these documents carefully, as they
+ describe your rights and restrictions with respect to this document. Code Components
+ extracted from this document must include Simplified BSD License text as described in
+ Section 4.e of the Trust Legal Provisions and are provided without warranty as
+ described in the Simplified BSD License.";
+
+ revision 2016-10-14 {
+ description
+ "Version 1.2";
+ }
+
+ identity odu-rate-identity {
+ description
+ "A unique rate identification of the ODUk.";
+ }
+
+ identity ODU4 {
+ base odu-rate-identity;
+ description
+ "Identity for an ODU4";
+ }
+
+ identity ODU3 {
+ base odu-rate-identity;
+ description
+ "Identity for an ODU3";
+ }
+
+ identity ODU2 {
+ base odu-rate-identity;
+ description
+ "Identity for an ODU2";
+ }
+
+ identity ODU2e {
+ base odu-rate-identity;
+ description
+ "Identity for an ODU2e";
+ }
+
+ identity ODU1 {
+ base odu-rate-identity;
+ description
+ "Identity for an ODU1";
+ }
+
+ identity ODU0 {
+ base odu-rate-identity;
+ description
+ "Identity for an ODU0";
+ }
+
+ identity ODUflex {
+ base odu-rate-identity;
+ description
+ "Identity for an ODUflex";
+ }
+
+ identity odtu-type-identity {
+ description
+ "A unique identification for the MSI odtu type.";
+ }
+
+ identity ODTU4.ts-Allocated {
+ base odtu-type-identity;
+ description
+ "OPU4 MSI - ODTU4.ts, TS is occupied/allocated";
+ }
+
+ identity ODTU4.1 {
+ base odtu-type-identity;
+ description
+ "ODTU4.1 MSI type";
+ }
+
+ identity ODTU4.2 {
+ base odtu-type-identity;
+ description
+ "ODTU4.2 MSI type";
+ }
+
+ identity ODTU4.8 {
+ base odtu-type-identity;
+ description
+ "ODTU4.8 MSI type";
+ }
+
+ identity ODTU4.31 {
+ base odtu-type-identity;
+ description
+ "ODTU4.31 MSI type";
+ }
+
+ identity ODTU01 {
+ base odtu-type-identity;
+ description
+ "ODTU01 MSI type";
+ }
+
+ identity ODTU12 {
+ base odtu-type-identity;
+ description
+ "ODTU12 MSI type";
+ }
+
+ identity ODTU13 {
+ base odtu-type-identity;
+ description
+ "ODTU13 MSI type";
+ }
+
+ identity ODTU23 {
+ base odtu-type-identity;
+ description
+ "ODTU23 MSI type";
+ }
+
+ identity ODTU2.ts {
+ base odtu-type-identity;
+ description
+ "ODTU2.ts MSI type";
+ }
+
+ identity ODTU3.ts {
+ base odtu-type-identity;
+ description
+ "ODTU3.ts MSI type";
+ }
+
+ identity unallocated {
+ base odtu-type-identity;
+ description
+ "Unallocated MSI type";
+ }
+
+ grouping msi-entry {
+ leaf trib-slot {
+ type uint16;
+ description
+ "tributary slot (TS)";
+ }
+ leaf odtu-type {
+ type identityref {
+ base odtu-type-identity;
+ }
+ description
+ "ODTU type, part of the MSI (Multiplex Structure Identifier)";
+ }
+ leaf trib-port {
+ type uint8;
+ description
+ "Tributray Port Number (0-based), part of the MSI";
+ }
+ leaf trib-port-payload {
+ type string;
+ description
+ "interface name being mapped to trib-port";
+ }
+ }
+
+ grouping odu-attributes {
+ description
+ "ODU attributes";
+ leaf rate {
+ type identityref {
+ base odu-rate-identity;
+ }
+ description
+ "rate identity of the ODU. 'identityref' is used
+ to allow to extend for future higher rates";
+ }
+ leaf monitoring-mode {
+ type enumeration {
+ enum "not-terminated" {
+ description
+ "Not Terminated: no detection or generation.
+ Overhead is passed through the interface transparently in receive direction";
+ }
+ enum "terminated" {
+ description
+ "Terminated: detection and generation enabled.
+ Overhead is erased (replaced with all zeros) in receive direction";
+ }
+ enum "monitored" {
+ description
+ "Monitored: detection enabled.
+ Overhead is passed through the interface transparently in receive direction";
+ }
+ }
+ description
+ "Monitoring mode of the ODU Overhead";
+ }
+ leaf proactive-delay-measurement-enabled {
+ type boolean;
+ description
+ "enable/disable proactive Delay Measurement";
+ }
+ list tcm {
+ key "layer";
+ uses tcm-attributes;
+ max-elements "6";
+ description
+ "Tandem Connection Management";
+ }
+ uses opu;
+ }
+
+ grouping opu {
+ container opu {
+ when "../monitoring-mode = 'terminated' or ../monitoring-mode = 'monitored'";
+ description
+ "Optical Channel Payload Unit (OPU)";
+ leaf payload-type {
+ type string {
+ length "2";
+ pattern "[0-9a-fA-F]*";
+ }
+ description
+ "Payload Type";
+ }
+ leaf rx-payload-type {
+ type string {
+ length "2";
+ pattern "[0-9a-fA-F]*";
+ }
+ description
+ "Received Payload Type";
+ }
+ leaf exp-payload-type {
+ type string {
+ length "2";
+ pattern "[0-9a-fA-F]*";
+ }
+ description
+ "Expected Payload Type";
+ }
+ leaf payload-interface {
+ type string;
+ description
+ "Expected Payload of OPU. It designates client interface name";
+ }
+ container msi {
+ when "../payload-type = '20' or ../payload-type = '21'";
+ list tx-msi {
+ key "trib-slot";
+ uses msi-entry;
+ description
+ "Transmit MSI";
+ }
+ list rx-msi {
+ key "trib-slot";
+ uses msi-entry;
+ description
+ "Receive MSI";
+ }
+ list exp-msi {
+ key "trib-slot";
+ uses msi-entry;
+ description
+ "Expected MSI";
+ }
+ }
+ }
+ }
+
+ grouping tcm-attributes {
+ description
+ "Tandem Connection Monitoring (TCM) attributes";
+ leaf layer {
+ type uint8 {
+ range "1..6";
+ }
+ description
+ "TCM layer";
+ }
+ leaf monitoring-mode {
+ type enumeration {
+ enum "not-terminated" {
+ description
+ "Not Terminated: no detection or generation.
+ Overhead is passed through the interface transparently in receive direction
+ unless extension is set for erase";
+ }
+ enum "terminated" {
+ description
+ "Terminated: detection and generation enabled.
+ Overhead is erased (replaced with all zeros) in receive direction, unless
+ extension is set to passthrough";
+ }
+ enum "monitored" {
+ description
+ "Monitored: detection enabled.
+ Overhead is passed through the interface transparently in receive direction
+ unless extension is set for erase";
+ }
+ }
+ description
+ "Monitoring mode of the TCM layer";
+ }
+ leaf ltc-act-enabled {
+ type boolean;
+ description
+ "enable/disable alarm transfer on detection of Loss of Tandem Connection (LTC)";
+ }
+ leaf proactive-delay-measurement-enabled {
+ type boolean;
+ description
+ "enable/disable proactive Delay Measurement";
+ }
+ }
+
+ grouping odu-container {
+ container odu {
+ presence "Attribute Nodes for Optical Data Unit (ODU)";
+ description
+ "Optical Channel Data Unit (ODU)";
+ uses odu-attributes {
+ refine "opu/rx-payload-type" {
+ config false;
+ }
+ refine "opu/msi" {
+ config false;
+ }
+ }
+ uses org-openroadm-maint-testsignal:maint-testsignal;
+ }
+ }
+
+ augment "/org-openroadm-device:org-openroadm-device/org-openroadm-device:interface" {
+ when "org-openroadm-device:type = 'openROADM-if:otnOdu'";
+ uses odu-container;
+ }
+}