Internet-Draft WDM Tunnel YANG Model October 2025
Guo, et al. Expires 23 April 2026 [Page]
Workgroup:
CCAMP Working Group
Internet-Draft:
draft-ietf-ccamp-wdm-tunnel-yang-06
Published:
Intended Status:
Standards Track
Expires:
Authors:
A. Guo
Futurewei Technologies
S. Belotti
Nokia
G. Galimberti
Individual
J.E.L.d.V. Mendez
Naudit HPCN
D.P. Burrero
Universidad Autonoma de Madrid

A YANG Data Model for WDM Tunnels

Abstract

This document defines a YANG data model for the provisioning and management of Traffic Engineering (TE) tunnels and Label Switched Paths (LSPs) in Optical Networks (Wavelength Switched Optical Networks (WSON) and Flexi-Grid Dense Wavelength Division Multiplexing (DWDM) Networks).

The YANG data model defined in this document conforms to the Network Management Datastore Architecture (NMDA).

Status of This Memo

This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.

Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.

Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

This Internet-Draft will expire on 23 April 2026.

Table of Contents

1. Introduction

Transport networks have evolved from traditional fixed-grid Wavelength Switched Optical Networks (WSON) [RFC6163] to more scalable and flexible elastic optical networks. These utilize flexi-grid Dense Wavelength Division Multiplexing (DWDM) technologies [RFC7698] to optimize bandwidth usage. Current DWDM Optical Network deployments may include fixed-grid WSON, flexi-grid DWDM, or a combination of both.

In the optical domain, a WDM tunnel typically originates and concludes at a pair of transponders using one or more transceivers dependent upon the data rate and encoding type of the transceivers. These transponders are then connected to an intermediate line system composed of optical switches and multiplexers, including Reconfigurable Optical Add-Drop Multiplexers (ROADMs) and add-drop multiplexers, complemented by optical amplifiers to boost the transmission distance. The optical wavelength can be routed from the transponder or an incoming fiber, through multiplexing, to various outgoing fibers in the DWDM network. At optical nodes, wavelengths may undergo conversion via optical-electrical-optical (OEO) regenerators, depending on the switching setup and fiber configuration.

Optical services, transmitted via analog signals, require careful provisioning across the network to maintain signal quality and prevent interference between different wavelength channels. The technology within optical nodes, like tunable transceivers or Colorless, Directionless and Contentionless Flexi-grid (CDC-F) ROADMs, introduces specific constraints that can limit WDM tunnel path options. These constraints must be factored into WDM tunnel provisioning and pre-computation. Additionally, assessing the end-to-end optical performance metrics like Generalized Signal-to-noise Ratio (G-SNR), Bit Error Rate (BER), and Q-factor is crucial to ensure transmission quality and receiver signal integrity.

This draft introduces a YANG [RFC7950] data model for setting up and managing TE tunnels and LSPs in DWDM Optical Networks. It aims to provide an intent-based interface used by a control entity such as a Software-defined Network (SDN) controller at its northbound to establish services between endpoints, typically optical transponders. Clients can utilize this model to either partially or fully delegate service provisioning to the SDN controller, while still capable to express additional constraints to guide its operation. Service provisioning can be as simple as identifying the source and destination transponders and delegate the rest of determination to the SDN controller, or as explicit as specifying a complete detailed path complete with tuned wavelengths and transceiver details.

This document identifies the WDM tunnel components, parameters and their values, and characterizes the features and the performances of the WDM elements. An application example is provided towards the end of the document to understand their utility better.

2. Conventions and Definitions

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

The terminology for describing YANG data models is found in [RFC7950].

Refer to [RFC7446] and [RFC7699] for the key terms used in this document.

The following terms are defined in [RFC7950] and are not redefined here: - client

The following terms are defined in [RFC6241] and are not redefined here: - configuration data

3. Overview

The YANG data model in this draft builds upon the generic TE tunnel model from [I-D.ietf-teas-yang-te]. This base model is suitable for all TE-enabled networks and includes universal TE tunnel elements like node addresses, tunnel termination points (TTPs), and path-level constraints such as explicit path hops, label restrictions, and path diversity. The current model enhances [I-D.ietf-teas-yang-te] by incorporating WDM-specific attributes and constraints relevant to WDM tunnels, including definitions for:

The attributes described above are optional, allowing the model to support both simplified and fully-explicit WDM tunnel provisioning to meet diverse client requirements.

Additionally, the YANG model provides the status of a WDM tunnel, which includes:

3.1. Integrated vs. External Optical Transponder

In optical networks built with traditional chassis-based DWDM optical equipment, optical transponder (OTs) are typically inserted into the chassis installed as cards. WDM tunnels are established between pairs of OTs, with the SDN controller serving as the central entity for provisioning and managing these tunnels.

In scenarios like data center interconnects (DCI), optical transponders may be externally mounted on a 'pizza box' and linked via dedicated fiber or wavelength multiplexer/demultiplexer to the optical line system. These external OTs could be managed by the same SDN controller or a different entity, such as an orchestrator. Consequently, a WDM tunnel might be composed of several segments joined to create a continuous end-to-end tunnel.

The YANG data model offers a cohesive interface for managing WDM tunnels and tunnel segments, irrespective of transponder location.

3.2. 3R Regenerators

A desired optical path may span a distance beyond the reach of a single optical transponder. In that case, one or more 3R regenerators can be deployed at intermediate nodes, reamplifying, reshaping, and retiming the optical signal before transmission continues. This scenario is described in detail in Section 2.7 of [I-D.ietf-ccamp-optical-impairment-topology-yang]. Deploying 3R regeneration is costly because it requires additional transponders; consequently, at most a single regenerator is typically used to regenerate the optical signals of an end-to-end optical tunnel.

According to [I-D.ietf-ccamp-optical-impairment-topology-yang], there are multiple ways to implement a 3R regenerator: - Back-to-back (bi-directional) regeneration, where two optical transponders are connected back-to-back; each transceiver receives and transmits the optical signal for the same segment of the end-to-end tunnel, operating in both directions. - Uni-directional regeneration, where two transponders are used with one performing 3R regeneration in the forward direction (source to destination) and the other performing 3R regeneration in the reverse direction.

When an optical signal is regenerated, it can be terminated and restored at different protocol layers depending on the transponder's capabilities. For example, if the transponder supports OTN, the signal can be regenerated at the OTU layer or at the ODU layer after the OTU overhead has been stripped; if the transponder supports Ethernet clients, the signal can be terminated at the Ethernet layer, which commonly occurs in the back-to-back configuration. Typically, the signal is regenerated at the lowest possible layer to minimize processing delay and complexity, but termination layer may be chosen deliberately during network planning for specific scenarios. To ensure correct transmission, the termination method used between the source and the receiving transponder at the regenerator node must match the method used between the sending transponder at the regenerator node and the destination transponder (or the receiving transponder at the next regenerator node).

The termination of an optical signal occurs at the reference point immediately before inverse multiplexing in the transmitting direction or immediately after inverse multiplexing in the receiving direction for the corresponding transceiver, and this applies to the entire OTSiG used by the optical tunnel. For 3R regeneration, to identify the transceiver configuration associated with these reference points consistently between uni-directional and bi-directional regeneration, the following definitions are used in this draft: - Forward direction: the direction of the optical path from the source to the destination. - Reverse direction: the direction of the optical path from the destination back to the source. - Incoming transponder: for back-to-back regeneration, the transponder in the regenerator that receives from and transmits toward the same segment of the optical path toward the source; for uni-directional regeneration, the transponder that performs regeneration in the forward direction of the optical path. - Outgoing transponder: for back-to-back regeneration, the transponder in the regenerator that receives from and transmits toward the same segment of the optical path toward the destination; for uni-directional regeneration, the transponder that performs regeneration in the reverse direction of the optical path.

Utilizing the figures in [I-D.ietf-ccamp-optical-impairment-topology-yang] for 3R regeneration, Figure 1 and Figure 2 further illustrate the aforementioned reference points for back-to-back regeneration and uni-directional regeneration, respectively.

                          Forward Direction
  |------------------------------>---------------------------------|
                          Reverse Direction
  |------------------------------<---------------------------------|

            Incoming Transponder     Outgoing Transponder          D
            +-------------------+   +--------------------+         E
  S         |Transceiver        |   |         Transceiver|         S
  O         |-----------+ +-----|   |-----+ +------------|         T
  U ------->|Receiver   |-|Sig. |-->|Sig. |-| Transmitter|-------> I
  R         |-----------+ |     |   |     | +------------|         N
  C <-------|Transmitter|-|Proc.|<--|Proc.|-|    Receiver|<------- A
  E         |-----------+ +-----|   |-----+ +------------|         T
            +-------------------+   +--------------------+         I
                                                                   O
                                                                   N
Figure 1: Reference Points in Back-to-back 3R Regeneration
                          Forward Direction
  |------------------------------>---------------------------------|
                          Reverse Direction
  |------------------------------<---------------------------------|

                           Incoming Transponder
                           3R in forward direction
                         +-----------------------+
                         |Transceiver            |
                         |-----------+ +--------+|
                 ------->|Receiver   |-|Sig. --+||
                         |-----------+ |       |||
                     +---|Transmitter|-|Proc.<-+||
                     |   |-----------+ +--------+|
                     |   +-----------------------+                 E
  S                  |                                             S
  O                  +------------------------------------>        T
  U                                                                I
  R              <-----------------------------------+             N
  C                                                  |             A
  E                      +-----------------------+   |             T
                         |            Transceiver|   |             I
                         |+--------+ +-----------|   |             O
                         ||+->Sig. |-|Transmitter|---+             N
                         |||       | +-----------|
                         ||+--Proc.|-|Receiver   |<--------
                         |+--------+ +-----------|
                         +-----------------------+
                          Outgoing Transponder
                          3R in reverse direction

Figure 2: Reference Points in Uni-directional 3R Regeneration

4. Example of Use

To illustrate the model's application, consider an optical network with various transponders, switches, and links. A depicted topology outlines two WDM tunnel scenarios. In the first, an end-to-end WDM tunnel (WDM Tunnel 1) comprises two physical paths (WDM Primary Path 1 and 2) linking two integrated optical transponders, Transponder A and E, through WSON and Flexi-grid nodes. The second scenario describes three WDM tunnel segments (WDM Tunnel Segment 2a to 2c) connecting two external OTs, External OT node X and Y, via the same nodes and links.

                              WDM Tunnel 1
        <===================================================>
                         WDM Primary Path 1
        <--------------------------------------------------->

            WDM Tunnel         WDM Tunnel      WDM Tunnel
            Segment 2a         Segment 2b      Segment 2c
        <=================><===============><===============>
   +----------+                                        +----------+
   | External |                                        | External |
   |    OT    |<----------+                +---------->|    OT    |
   |  node X  |           |                |           |  node Y  |
   +----------+           |                |           +----------+
                          |                |
                          |                |
   +----------+           |                |           +----------+
   |  Flexi-  |           |                |           |  Flexi-  |
   |   grid   |           |                |           |   grid   |
   |  node A  |           |                |           |  node E  |
   |          |        +--v---+        +---v--+        |          |
   |          | Link 1 |Flexi-| Link 2 | WSON | Link 3 |          |
   |          |<------>| grid |<------>|      |<------>|          |
   |......... |        |node B|        |node C|        | .........|
   | Trans- : |        +------+        +------+        | : Trans- |
   | ponder : |                                        | : ponder |
   |    A   : |                +------+                | :    E   |
   |........: |     Link 4     |Flexi-|     Link 5     | :........|
   |          |                | grid |                |          |
   |          |<-------------->|node D|<-------------->|          |
   |          |                +------+                |          |
   +----------+                                        +----------+

        <--------------------------------------------------->
                          WDM Secondary Path 1
Figure 3: Topology Example

To configure an end-to-end WDM tunnel to interconnect transponders A and E, first of all we have to populate the flexi-grid topology YANG model with all elements in the network:

After the nodes, links and transponders have been defined using [I-D.ietf-ccamp-flexigrid-yang] and [RFC9094] we can configure the tunnel from the information we have stored in the flexi-grid topology, by querying which elements are available, and planning the resources that have to be provided on each situation, taking into account the global and path-specific WDM tunnel constraints. Note that every element in the flexi-grid topology has a reference, and this is the way in which they are called in the tunnel.

5. YANG Model for WDM Tunnel

5.1. YANG Tree

module: ietf-wdm-tunnel

  augment /te:te/te:tunnels/te:tunnel:
    +--rw wdm-constraint
       +--rw transceiver-constraint
       |  +--rw operational-modes*            string
       |  +--rw otsi-carrier-frequency?       l0-types:frequency-thz
       |  +--rw tx-tune-constraints
       |  |  +--rw min-central-frequency?
       |  |  |       frequency-thz
       |  |  +--rw max-central-frequency?
       |  |  |       frequency-thz
       |  |  +--rw transceiver-tunability-granularity?
       |  |          frequency-ghz
       |  +--rw line-coding-bitrate*          identityref
       |  +--rw tx-channel-power?             l0-types:power-dbm
       |  +--rw preferred-rx-channel-power?   l0-types:power-dbm
       |  +--rw gsnr-extra-margin?            snr
       +--rw use-regen?                     boolean
       +--rw wavelength-conversion?         boolean
       +--rw wavelength-assignment?         identityref
       +--rw guard-band-size?               l0-types:frequency-thz
       +--rw matching-fwd-rev-wavelength?   boolean
       +--rw allow-retuning?                boolean
       +--rw delta-power?                   l0-types:power-ratio
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:explicit-route-objects
            /te:route-object-include-exclude/te:type
            /te:numbered-node-hop/te:numbered-node-hop:
    +--rw (node-position)?
       +--:(source)
       |  +--rw source-transponder
       |     +--rw transponder-id?         uint32
       |     +--rw digital-terminations
       |     |  +--rw digital-termination* [index]
       |     |     +--rw index               uint8
       |     |     +--rw termination-type?   identityref
       |     |     +--rw mapping-type?       identityref
       |     +--rw transceiver
       |        +--rw transceiver-id?               uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--rw otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--rw tx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw operational-mode?             string
       |        +--rw line-coding-bitrate?          identityref
       |        +--rw preferred-rx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw gsnr-extra-margin?            snr
       |        +--rw inverse-multiplexing!
       |           +--rw inverse-mux-type?             identityref
       |           +--rw otsi-lane-termination-type?   identityref
       |           +--rw additional-transceivers
       |              +--rw index?                    uint8
       |              +--rw transceiver-id?           uint32
       |              +--rw otsi-carrier-id?          uint16
       |              +--rw otsi-carrier-frequency?
       |              |       l0-types:frequency-thz
       |              +--rw tx-channel-power?
       |                      l0-types:power-dbm
       +--:(destination)
       |  +--rw destination-transponder
       |     +--rw transponder-id?         uint32
       |     +--rw digital-terminations
       |     |  +--rw digital-termination* [index]
       |     |     +--rw index               uint8
       |     |     +--rw termination-type?   identityref
       |     |     +--rw mapping-type?       identityref
       |     +--rw transceiver
       |        +--rw transceiver-id?               uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--rw otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--rw tx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw operational-mode?             string
       |        +--rw line-coding-bitrate?          identityref
       |        +--rw preferred-rx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw gsnr-extra-margin?            snr
       |        +--rw inverse-multiplexing!
       |           +--rw inverse-mux-type?             identityref
       |           +--rw otsi-lane-termination-type?   identityref
       |           +--rw additional-transceivers
       |              +--rw index?                    uint8
       |              +--rw transceiver-id?           uint32
       |              +--rw otsi-carrier-id?          uint16
       |              +--rw otsi-carrier-frequency?
       |              |       l0-types:frequency-thz
       |              +--rw tx-channel-power?
       |                      l0-types:power-dbm
       +--:(regenerator)
       |  +--rw regenerator
       |     +--rw regen-group-id?         uint32
       |     +--rw regeneration-layer?     identityref
       |     +--rw incoming-transponder
       |     |  +--rw transponder-id?         uint32
       |     |  +--rw digital-terminations
       |     |  |  +--rw digital-termination* [index]
       |     |  |     +--rw index               uint8
       |     |  |     +--rw termination-type?   identityref
       |     |  |     +--rw mapping-type?       identityref
       |     |  +--rw transceiver
       |     |     +--rw transceiver-id?               uint32
       |     |     +--rw otsi-carrier-id?              uint16
       |     |     +--rw otsi-carrier-frequency?
       |     |     |       l0-types:frequency-thz
       |     |     +--rw tx-channel-power?
       |     |     |       l0-types:power-dbm
       |     |     +--rw operational-mode?             string
       |     |     +--rw line-coding-bitrate?          identityref
       |     |     +--rw preferred-rx-channel-power?
       |     |     |       l0-types:power-dbm
       |     |     +--rw gsnr-extra-margin?            snr
       |     |     +--rw inverse-multiplexing!
       |     |        +--rw inverse-mux-type?             identityref
       |     |        +--rw otsi-lane-termination-type?   identityref
       |     |        +--rw additional-transceivers
       |     |           +--rw index?                    uint8
       |     |           +--rw transceiver-id?           uint32
       |     |           +--rw otsi-carrier-id?          uint16
       |     |           +--rw otsi-carrier-frequency?
       |     |           |       l0-types:frequency-thz
       |     |           +--rw tx-channel-power?
       |     |                   l0-types:power-dbm
       |     +--rw outgoing-transponder
       |        +--rw transponder-id?         uint32
       |        +--rw digital-terminations
       |        |  +--rw digital-termination* [index]
       |        |     +--rw index               uint8
       |        |     +--rw termination-type?   identityref
       |        |     +--rw mapping-type?       identityref
       |        +--rw transceiver
       |           +--rw transceiver-id?               uint32
       |           +--rw otsi-carrier-id?              uint16
       |           +--rw otsi-carrier-frequency?
       |           |       l0-types:frequency-thz
       |           +--rw tx-channel-power?
       |           |       l0-types:power-dbm
       |           +--rw operational-mode?             string
       |           +--rw line-coding-bitrate?          identityref
       |           +--rw preferred-rx-channel-power?
       |           |       l0-types:power-dbm
       |           +--rw gsnr-extra-margin?            snr
       |           +--rw inverse-multiplexing!
       |              +--rw inverse-mux-type?             identityref
       |              +--rw otsi-lane-termination-type?   identityref
       |              +--rw additional-transceivers
       |                 +--rw index?                    uint8
       |                 +--rw transceiver-id?           uint32
       |                 +--rw otsi-carrier-id?          uint16
       |                 +--rw otsi-carrier-frequency?
       |                 |       l0-types:frequency-thz
       |                 +--rw tx-channel-power?
       |                         l0-types:power-dbm
       +--:(regenerators)
          +--rw regenerators
             +--rw common-incoming
             |  +--rw operational-mode?             string
             |  +--rw line-coding-bitrate?          identityref
             |  +--rw preferred-rx-channel-power?
             |  |       l0-types:power-dbm
             |  +--rw gsnr-extra-margin?            snr
             +--rw common-outgoing
             |  +--rw operational-mode?             string
             |  +--rw line-coding-bitrate?          identityref
             |  +--rw preferred-rx-channel-power?
             |  |       l0-types:power-dbm
             |  +--rw gsnr-extra-margin?            snr
             +--rw regenerator* [index]
                +--rw index                   uint8
                +--rw regen-group-id?         uint32
                +--rw regeneration-layer?     identityref
                +--rw incoming-transponder
                |  +--rw transponder-id?   uint32
                |  +--rw transceiver
                |     +--rw transceiver-id?           uint32
                |     +--rw otsi-carrier-id?          uint16
                |     +--rw otsi-carrier-frequency?
                |     |       l0-types:frequency-thz
                |     +--rw tx-channel-power?
                |             l0-types:power-dbm
                +--rw outgoing-transponder
                   +--rw transponder-id?   uint32
                   +--rw transceiver
                      +--rw transceiver-id?           uint32
                      +--rw otsi-carrier-id?          uint16
                      +--rw otsi-carrier-frequency?
                      |       l0-types:frequency-thz
                      +--rw tx-channel-power?
                              l0-types:power-dbm
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:explicit-route-objects
            /te:route-object-exclude-always/te:type
            /te:numbered-node-hop/te:numbered-node-hop:
    +--rw (node-position)?
       +--:(source)
       |  +--rw source-transponder
       |     +--rw transponder-id?         uint32
       |     +--rw digital-terminations
       |     |  +--rw digital-termination* [index]
       |     |     +--rw index               uint8
       |     |     +--rw termination-type?   identityref
       |     |     +--rw mapping-type?       identityref
       |     +--rw transceiver
       |        +--rw transceiver-id?               uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--rw otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--rw tx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw operational-mode?             string
       |        +--rw line-coding-bitrate?          identityref
       |        +--rw preferred-rx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw gsnr-extra-margin?            snr
       |        +--rw inverse-multiplexing!
       |           +--rw inverse-mux-type?             identityref
       |           +--rw otsi-lane-termination-type?   identityref
       |           +--rw additional-transceivers
       |              +--rw index?                    uint8
       |              +--rw transceiver-id?           uint32
       |              +--rw otsi-carrier-id?          uint16
       |              +--rw otsi-carrier-frequency?
       |              |       l0-types:frequency-thz
       |              +--rw tx-channel-power?
       |                      l0-types:power-dbm
       +--:(destination)
       |  +--rw destination-transponder
       |     +--rw transponder-id?         uint32
       |     +--rw digital-terminations
       |     |  +--rw digital-termination* [index]
       |     |     +--rw index               uint8
       |     |     +--rw termination-type?   identityref
       |     |     +--rw mapping-type?       identityref
       |     +--rw transceiver
       |        +--rw transceiver-id?               uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--rw otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--rw tx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw operational-mode?             string
       |        +--rw line-coding-bitrate?          identityref
       |        +--rw preferred-rx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw gsnr-extra-margin?            snr
       |        +--rw inverse-multiplexing!
       |           +--rw inverse-mux-type?             identityref
       |           +--rw otsi-lane-termination-type?   identityref
       |           +--rw additional-transceivers
       |              +--rw index?                    uint8
       |              +--rw transceiver-id?           uint32
       |              +--rw otsi-carrier-id?          uint16
       |              +--rw otsi-carrier-frequency?
       |              |       l0-types:frequency-thz
       |              +--rw tx-channel-power?
       |                      l0-types:power-dbm
       +--:(regenerator)
       |  +--rw regenerator
       |     +--rw regen-group-id?         uint32
       |     +--rw regeneration-layer?     identityref
       |     +--rw incoming-transponder
       |     |  +--rw transponder-id?         uint32
       |     |  +--rw digital-terminations
       |     |  |  +--rw digital-termination* [index]
       |     |  |     +--rw index               uint8
       |     |  |     +--rw termination-type?   identityref
       |     |  |     +--rw mapping-type?       identityref
       |     |  +--rw transceiver
       |     |     +--rw transceiver-id?               uint32
       |     |     +--rw otsi-carrier-id?              uint16
       |     |     +--rw otsi-carrier-frequency?
       |     |     |       l0-types:frequency-thz
       |     |     +--rw tx-channel-power?
       |     |     |       l0-types:power-dbm
       |     |     +--rw operational-mode?             string
       |     |     +--rw line-coding-bitrate?          identityref
       |     |     +--rw preferred-rx-channel-power?
       |     |     |       l0-types:power-dbm
       |     |     +--rw gsnr-extra-margin?            snr
       |     |     +--rw inverse-multiplexing!
       |     |        +--rw inverse-mux-type?             identityref
       |     |        +--rw otsi-lane-termination-type?   identityref
       |     |        +--rw additional-transceivers
       |     |           +--rw index?                    uint8
       |     |           +--rw transceiver-id?           uint32
       |     |           +--rw otsi-carrier-id?          uint16
       |     |           +--rw otsi-carrier-frequency?
       |     |           |       l0-types:frequency-thz
       |     |           +--rw tx-channel-power?
       |     |                   l0-types:power-dbm
       |     +--rw outgoing-transponder
       |        +--rw transponder-id?         uint32
       |        +--rw digital-terminations
       |        |  +--rw digital-termination* [index]
       |        |     +--rw index               uint8
       |        |     +--rw termination-type?   identityref
       |        |     +--rw mapping-type?       identityref
       |        +--rw transceiver
       |           +--rw transceiver-id?               uint32
       |           +--rw otsi-carrier-id?              uint16
       |           +--rw otsi-carrier-frequency?
       |           |       l0-types:frequency-thz
       |           +--rw tx-channel-power?
       |           |       l0-types:power-dbm
       |           +--rw operational-mode?             string
       |           +--rw line-coding-bitrate?          identityref
       |           +--rw preferred-rx-channel-power?
       |           |       l0-types:power-dbm
       |           +--rw gsnr-extra-margin?            snr
       |           +--rw inverse-multiplexing!
       |              +--rw inverse-mux-type?             identityref
       |              +--rw otsi-lane-termination-type?   identityref
       |              +--rw additional-transceivers
       |                 +--rw index?                    uint8
       |                 +--rw transceiver-id?           uint32
       |                 +--rw otsi-carrier-id?          uint16
       |                 +--rw otsi-carrier-frequency?
       |                 |       l0-types:frequency-thz
       |                 +--rw tx-channel-power?
       |                         l0-types:power-dbm
       +--:(regenerators)
          +--rw regenerators
             +--rw common-incoming
             |  +--rw operational-mode?             string
             |  +--rw line-coding-bitrate?          identityref
             |  +--rw preferred-rx-channel-power?
             |  |       l0-types:power-dbm
             |  +--rw gsnr-extra-margin?            snr
             +--rw common-outgoing
             |  +--rw operational-mode?             string
             |  +--rw line-coding-bitrate?          identityref
             |  +--rw preferred-rx-channel-power?
             |  |       l0-types:power-dbm
             |  +--rw gsnr-extra-margin?            snr
             +--rw regenerator* [index]
                +--rw index                   uint8
                +--rw regen-group-id?         uint32
                +--rw regeneration-layer?     identityref
                +--rw incoming-transponder
                |  +--rw transponder-id?   uint32
                |  +--rw transceiver
                |     +--rw transceiver-id?           uint32
                |     +--rw otsi-carrier-id?          uint16
                |     +--rw otsi-carrier-frequency?
                |     |       l0-types:frequency-thz
                |     +--rw tx-channel-power?
                |             l0-types:power-dbm
                +--rw outgoing-transponder
                   +--rw transponder-id?   uint32
                   +--rw transceiver
                      +--rw transceiver-id?           uint32
                      +--rw otsi-carrier-id?          uint16
                      +--rw otsi-carrier-frequency?
                      |       l0-types:frequency-thz
                      +--rw tx-channel-power?
                              l0-types:power-dbm
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:explicit-route-objects
            /te:route-object-include-exclude/te:type
            /te:numbered-node-hop/te:numbered-node-hop:
    +--rw (node-position)?
       +--:(source)
       |  +--rw source-transponder
       |     +--rw transponder-id?         uint32
       |     +--rw digital-terminations
       |     |  +--rw digital-termination* [index]
       |     |     +--rw index               uint8
       |     |     +--rw termination-type?   identityref
       |     |     +--rw mapping-type?       identityref
       |     +--rw transceiver
       |        +--rw transceiver-id?               uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--rw otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--rw tx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw operational-mode?             string
       |        +--rw line-coding-bitrate?          identityref
       |        +--rw preferred-rx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw gsnr-extra-margin?            snr
       |        +--rw inverse-multiplexing!
       |           +--rw inverse-mux-type?             identityref
       |           +--rw otsi-lane-termination-type?   identityref
       |           +--rw additional-transceivers
       |              +--rw index?                    uint8
       |              +--rw transceiver-id?           uint32
       |              +--rw otsi-carrier-id?          uint16
       |              +--rw otsi-carrier-frequency?
       |              |       l0-types:frequency-thz
       |              +--rw tx-channel-power?
       |                      l0-types:power-dbm
       +--:(destination)
       |  +--rw destination-transponder
       |     +--rw transponder-id?         uint32
       |     +--rw digital-terminations
       |     |  +--rw digital-termination* [index]
       |     |     +--rw index               uint8
       |     |     +--rw termination-type?   identityref
       |     |     +--rw mapping-type?       identityref
       |     +--rw transceiver
       |        +--rw transceiver-id?               uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--rw otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--rw tx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw operational-mode?             string
       |        +--rw line-coding-bitrate?          identityref
       |        +--rw preferred-rx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw gsnr-extra-margin?            snr
       |        +--rw inverse-multiplexing!
       |           +--rw inverse-mux-type?             identityref
       |           +--rw otsi-lane-termination-type?   identityref
       |           +--rw additional-transceivers
       |              +--rw index?                    uint8
       |              +--rw transceiver-id?           uint32
       |              +--rw otsi-carrier-id?          uint16
       |              +--rw otsi-carrier-frequency?
       |              |       l0-types:frequency-thz
       |              +--rw tx-channel-power?
       |                      l0-types:power-dbm
       +--:(regenerator)
       |  +--rw regenerator
       |     +--rw regen-group-id?         uint32
       |     +--rw regeneration-layer?     identityref
       |     +--rw incoming-transponder
       |     |  +--rw transponder-id?         uint32
       |     |  +--rw digital-terminations
       |     |  |  +--rw digital-termination* [index]
       |     |  |     +--rw index               uint8
       |     |  |     +--rw termination-type?   identityref
       |     |  |     +--rw mapping-type?       identityref
       |     |  +--rw transceiver
       |     |     +--rw transceiver-id?               uint32
       |     |     +--rw otsi-carrier-id?              uint16
       |     |     +--rw otsi-carrier-frequency?
       |     |     |       l0-types:frequency-thz
       |     |     +--rw tx-channel-power?
       |     |     |       l0-types:power-dbm
       |     |     +--rw operational-mode?             string
       |     |     +--rw line-coding-bitrate?          identityref
       |     |     +--rw preferred-rx-channel-power?
       |     |     |       l0-types:power-dbm
       |     |     +--rw gsnr-extra-margin?            snr
       |     |     +--rw inverse-multiplexing!
       |     |        +--rw inverse-mux-type?             identityref
       |     |        +--rw otsi-lane-termination-type?   identityref
       |     |        +--rw additional-transceivers
       |     |           +--rw index?                    uint8
       |     |           +--rw transceiver-id?           uint32
       |     |           +--rw otsi-carrier-id?          uint16
       |     |           +--rw otsi-carrier-frequency?
       |     |           |       l0-types:frequency-thz
       |     |           +--rw tx-channel-power?
       |     |                   l0-types:power-dbm
       |     +--rw outgoing-transponder
       |        +--rw transponder-id?         uint32
       |        +--rw digital-terminations
       |        |  +--rw digital-termination* [index]
       |        |     +--rw index               uint8
       |        |     +--rw termination-type?   identityref
       |        |     +--rw mapping-type?       identityref
       |        +--rw transceiver
       |           +--rw transceiver-id?               uint32
       |           +--rw otsi-carrier-id?              uint16
       |           +--rw otsi-carrier-frequency?
       |           |       l0-types:frequency-thz
       |           +--rw tx-channel-power?
       |           |       l0-types:power-dbm
       |           +--rw operational-mode?             string
       |           +--rw line-coding-bitrate?          identityref
       |           +--rw preferred-rx-channel-power?
       |           |       l0-types:power-dbm
       |           +--rw gsnr-extra-margin?            snr
       |           +--rw inverse-multiplexing!
       |              +--rw inverse-mux-type?             identityref
       |              +--rw otsi-lane-termination-type?   identityref
       |              +--rw additional-transceivers
       |                 +--rw index?                    uint8
       |                 +--rw transceiver-id?           uint32
       |                 +--rw otsi-carrier-id?          uint16
       |                 +--rw otsi-carrier-frequency?
       |                 |       l0-types:frequency-thz
       |                 +--rw tx-channel-power?
       |                         l0-types:power-dbm
       +--:(regenerators)
          +--rw regenerators
             +--rw common-incoming
             |  +--rw operational-mode?             string
             |  +--rw line-coding-bitrate?          identityref
             |  +--rw preferred-rx-channel-power?
             |  |       l0-types:power-dbm
             |  +--rw gsnr-extra-margin?            snr
             +--rw common-outgoing
             |  +--rw operational-mode?             string
             |  +--rw line-coding-bitrate?          identityref
             |  +--rw preferred-rx-channel-power?
             |  |       l0-types:power-dbm
             |  +--rw gsnr-extra-margin?            snr
             +--rw regenerator* [index]
                +--rw index                   uint8
                +--rw regen-group-id?         uint32
                +--rw regeneration-layer?     identityref
                +--rw incoming-transponder
                |  +--rw transponder-id?   uint32
                |  +--rw transceiver
                |     +--rw transceiver-id?           uint32
                |     +--rw otsi-carrier-id?          uint16
                |     +--rw otsi-carrier-frequency?
                |     |       l0-types:frequency-thz
                |     +--rw tx-channel-power?
                |             l0-types:power-dbm
                +--rw outgoing-transponder
                   +--rw transponder-id?   uint32
                   +--rw transceiver
                      +--rw transceiver-id?           uint32
                      +--rw otsi-carrier-id?          uint16
                      +--rw otsi-carrier-frequency?
                      |       l0-types:frequency-thz
                      +--rw tx-channel-power?
                              l0-types:power-dbm
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:explicit-route-objects/te:route-object-exclude-always
            /te:type/te:numbered-node-hop/te:numbered-node-hop:
    +--rw (node-position)?
       +--:(source)
       |  +--rw source-transponder
       |     +--rw transponder-id?         uint32
       |     +--rw digital-terminations
       |     |  +--rw digital-termination* [index]
       |     |     +--rw index               uint8
       |     |     +--rw termination-type?   identityref
       |     |     +--rw mapping-type?       identityref
       |     +--rw transceiver
       |        +--rw transceiver-id?               uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--rw otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--rw tx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw operational-mode?             string
       |        +--rw line-coding-bitrate?          identityref
       |        +--rw preferred-rx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw gsnr-extra-margin?            snr
       |        +--rw inverse-multiplexing!
       |           +--rw inverse-mux-type?             identityref
       |           +--rw otsi-lane-termination-type?   identityref
       |           +--rw additional-transceivers
       |              +--rw index?                    uint8
       |              +--rw transceiver-id?           uint32
       |              +--rw otsi-carrier-id?          uint16
       |              +--rw otsi-carrier-frequency?
       |              |       l0-types:frequency-thz
       |              +--rw tx-channel-power?
       |                      l0-types:power-dbm
       +--:(destination)
       |  +--rw destination-transponder
       |     +--rw transponder-id?         uint32
       |     +--rw digital-terminations
       |     |  +--rw digital-termination* [index]
       |     |     +--rw index               uint8
       |     |     +--rw termination-type?   identityref
       |     |     +--rw mapping-type?       identityref
       |     +--rw transceiver
       |        +--rw transceiver-id?               uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--rw otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--rw tx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw operational-mode?             string
       |        +--rw line-coding-bitrate?          identityref
       |        +--rw preferred-rx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw gsnr-extra-margin?            snr
       |        +--rw inverse-multiplexing!
       |           +--rw inverse-mux-type?             identityref
       |           +--rw otsi-lane-termination-type?   identityref
       |           +--rw additional-transceivers
       |              +--rw index?                    uint8
       |              +--rw transceiver-id?           uint32
       |              +--rw otsi-carrier-id?          uint16
       |              +--rw otsi-carrier-frequency?
       |              |       l0-types:frequency-thz
       |              +--rw tx-channel-power?
       |                      l0-types:power-dbm
       +--:(regenerator)
       |  +--rw regenerator
       |     +--rw regen-group-id?         uint32
       |     +--rw regeneration-layer?     identityref
       |     +--rw incoming-transponder
       |     |  +--rw transponder-id?         uint32
       |     |  +--rw digital-terminations
       |     |  |  +--rw digital-termination* [index]
       |     |  |     +--rw index               uint8
       |     |  |     +--rw termination-type?   identityref
       |     |  |     +--rw mapping-type?       identityref
       |     |  +--rw transceiver
       |     |     +--rw transceiver-id?               uint32
       |     |     +--rw otsi-carrier-id?              uint16
       |     |     +--rw otsi-carrier-frequency?
       |     |     |       l0-types:frequency-thz
       |     |     +--rw tx-channel-power?
       |     |     |       l0-types:power-dbm
       |     |     +--rw operational-mode?             string
       |     |     +--rw line-coding-bitrate?          identityref
       |     |     +--rw preferred-rx-channel-power?
       |     |     |       l0-types:power-dbm
       |     |     +--rw gsnr-extra-margin?            snr
       |     |     +--rw inverse-multiplexing!
       |     |        +--rw inverse-mux-type?             identityref
       |     |        +--rw otsi-lane-termination-type?   identityref
       |     |        +--rw additional-transceivers
       |     |           +--rw index?                    uint8
       |     |           +--rw transceiver-id?           uint32
       |     |           +--rw otsi-carrier-id?          uint16
       |     |           +--rw otsi-carrier-frequency?
       |     |           |       l0-types:frequency-thz
       |     |           +--rw tx-channel-power?
       |     |                   l0-types:power-dbm
       |     +--rw outgoing-transponder
       |        +--rw transponder-id?         uint32
       |        +--rw digital-terminations
       |        |  +--rw digital-termination* [index]
       |        |     +--rw index               uint8
       |        |     +--rw termination-type?   identityref
       |        |     +--rw mapping-type?       identityref
       |        +--rw transceiver
       |           +--rw transceiver-id?               uint32
       |           +--rw otsi-carrier-id?              uint16
       |           +--rw otsi-carrier-frequency?
       |           |       l0-types:frequency-thz
       |           +--rw tx-channel-power?
       |           |       l0-types:power-dbm
       |           +--rw operational-mode?             string
       |           +--rw line-coding-bitrate?          identityref
       |           +--rw preferred-rx-channel-power?
       |           |       l0-types:power-dbm
       |           +--rw gsnr-extra-margin?            snr
       |           +--rw inverse-multiplexing!
       |              +--rw inverse-mux-type?             identityref
       |              +--rw otsi-lane-termination-type?   identityref
       |              +--rw additional-transceivers
       |                 +--rw index?                    uint8
       |                 +--rw transceiver-id?           uint32
       |                 +--rw otsi-carrier-id?          uint16
       |                 +--rw otsi-carrier-frequency?
       |                 |       l0-types:frequency-thz
       |                 +--rw tx-channel-power?
       |                         l0-types:power-dbm
       +--:(regenerators)
          +--rw regenerators
             +--rw common-incoming
             |  +--rw operational-mode?             string
             |  +--rw line-coding-bitrate?          identityref
             |  +--rw preferred-rx-channel-power?
             |  |       l0-types:power-dbm
             |  +--rw gsnr-extra-margin?            snr
             +--rw common-outgoing
             |  +--rw operational-mode?             string
             |  +--rw line-coding-bitrate?          identityref
             |  +--rw preferred-rx-channel-power?
             |  |       l0-types:power-dbm
             |  +--rw gsnr-extra-margin?            snr
             +--rw regenerator* [index]
                +--rw index                   uint8
                +--rw regen-group-id?         uint32
                +--rw regeneration-layer?     identityref
                +--rw incoming-transponder
                |  +--rw transponder-id?   uint32
                |  +--rw transceiver
                |     +--rw transceiver-id?           uint32
                |     +--rw otsi-carrier-id?          uint16
                |     +--rw otsi-carrier-frequency?
                |     |       l0-types:frequency-thz
                |     +--rw tx-channel-power?
                |             l0-types:power-dbm
                +--rw outgoing-transponder
                   +--rw transponder-id?   uint32
                   +--rw transceiver
                      +--rw transceiver-id?           uint32
                      +--rw otsi-carrier-id?          uint16
                      +--rw otsi-carrier-frequency?
                      |       l0-types:frequency-thz
                      +--rw tx-channel-power?
                              l0-types:power-dbm
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:explicit-route-objects
            /te:route-object-include-exclude/te:type
            /te:numbered-node-hop/te:numbered-node-hop:
    +--rw (node-position)?
       +--:(source)
       |  +--rw source-transponder
       |     +--rw transponder-id?         uint32
       |     +--rw digital-terminations
       |     |  +--rw digital-termination* [index]
       |     |     +--rw index               uint8
       |     |     +--rw termination-type?   identityref
       |     |     +--rw mapping-type?       identityref
       |     +--rw transceiver
       |        +--rw transceiver-id?               uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--rw otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--rw tx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw operational-mode?             string
       |        +--rw line-coding-bitrate?          identityref
       |        +--rw preferred-rx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw gsnr-extra-margin?            snr
       |        +--rw inverse-multiplexing!
       |           +--rw inverse-mux-type?             identityref
       |           +--rw otsi-lane-termination-type?   identityref
       |           +--rw additional-transceivers
       |              +--rw index?                    uint8
       |              +--rw transceiver-id?           uint32
       |              +--rw otsi-carrier-id?          uint16
       |              +--rw otsi-carrier-frequency?
       |              |       l0-types:frequency-thz
       |              +--rw tx-channel-power?
       |                      l0-types:power-dbm
       +--:(destination)
       |  +--rw destination-transponder
       |     +--rw transponder-id?         uint32
       |     +--rw digital-terminations
       |     |  +--rw digital-termination* [index]
       |     |     +--rw index               uint8
       |     |     +--rw termination-type?   identityref
       |     |     +--rw mapping-type?       identityref
       |     +--rw transceiver
       |        +--rw transceiver-id?               uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--rw otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--rw tx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw operational-mode?             string
       |        +--rw line-coding-bitrate?          identityref
       |        +--rw preferred-rx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw gsnr-extra-margin?            snr
       |        +--rw inverse-multiplexing!
       |           +--rw inverse-mux-type?             identityref
       |           +--rw otsi-lane-termination-type?   identityref
       |           +--rw additional-transceivers
       |              +--rw index?                    uint8
       |              +--rw transceiver-id?           uint32
       |              +--rw otsi-carrier-id?          uint16
       |              +--rw otsi-carrier-frequency?
       |              |       l0-types:frequency-thz
       |              +--rw tx-channel-power?
       |                      l0-types:power-dbm
       +--:(regenerator)
       |  +--rw regenerator
       |     +--rw regen-group-id?         uint32
       |     +--rw regeneration-layer?     identityref
       |     +--rw incoming-transponder
       |     |  +--rw transponder-id?         uint32
       |     |  +--rw digital-terminations
       |     |  |  +--rw digital-termination* [index]
       |     |  |     +--rw index               uint8
       |     |  |     +--rw termination-type?   identityref
       |     |  |     +--rw mapping-type?       identityref
       |     |  +--rw transceiver
       |     |     +--rw transceiver-id?               uint32
       |     |     +--rw otsi-carrier-id?              uint16
       |     |     +--rw otsi-carrier-frequency?
       |     |     |       l0-types:frequency-thz
       |     |     +--rw tx-channel-power?
       |     |     |       l0-types:power-dbm
       |     |     +--rw operational-mode?             string
       |     |     +--rw line-coding-bitrate?          identityref
       |     |     +--rw preferred-rx-channel-power?
       |     |     |       l0-types:power-dbm
       |     |     +--rw gsnr-extra-margin?            snr
       |     |     +--rw inverse-multiplexing!
       |     |        +--rw inverse-mux-type?             identityref
       |     |        +--rw otsi-lane-termination-type?   identityref
       |     |        +--rw additional-transceivers
       |     |           +--rw index?                    uint8
       |     |           +--rw transceiver-id?           uint32
       |     |           +--rw otsi-carrier-id?          uint16
       |     |           +--rw otsi-carrier-frequency?
       |     |           |       l0-types:frequency-thz
       |     |           +--rw tx-channel-power?
       |     |                   l0-types:power-dbm
       |     +--rw outgoing-transponder
       |        +--rw transponder-id?         uint32
       |        +--rw digital-terminations
       |        |  +--rw digital-termination* [index]
       |        |     +--rw index               uint8
       |        |     +--rw termination-type?   identityref
       |        |     +--rw mapping-type?       identityref
       |        +--rw transceiver
       |           +--rw transceiver-id?               uint32
       |           +--rw otsi-carrier-id?              uint16
       |           +--rw otsi-carrier-frequency?
       |           |       l0-types:frequency-thz
       |           +--rw tx-channel-power?
       |           |       l0-types:power-dbm
       |           +--rw operational-mode?             string
       |           +--rw line-coding-bitrate?          identityref
       |           +--rw preferred-rx-channel-power?
       |           |       l0-types:power-dbm
       |           +--rw gsnr-extra-margin?            snr
       |           +--rw inverse-multiplexing!
       |              +--rw inverse-mux-type?             identityref
       |              +--rw otsi-lane-termination-type?   identityref
       |              +--rw additional-transceivers
       |                 +--rw index?                    uint8
       |                 +--rw transceiver-id?           uint32
       |                 +--rw otsi-carrier-id?          uint16
       |                 +--rw otsi-carrier-frequency?
       |                 |       l0-types:frequency-thz
       |                 +--rw tx-channel-power?
       |                         l0-types:power-dbm
       +--:(regenerators)
          +--rw regenerators
             +--rw common-incoming
             |  +--rw operational-mode?             string
             |  +--rw line-coding-bitrate?          identityref
             |  +--rw preferred-rx-channel-power?
             |  |       l0-types:power-dbm
             |  +--rw gsnr-extra-margin?            snr
             +--rw common-outgoing
             |  +--rw operational-mode?             string
             |  +--rw line-coding-bitrate?          identityref
             |  +--rw preferred-rx-channel-power?
             |  |       l0-types:power-dbm
             |  +--rw gsnr-extra-margin?            snr
             +--rw regenerator* [index]
                +--rw index                   uint8
                +--rw regen-group-id?         uint32
                +--rw regeneration-layer?     identityref
                +--rw incoming-transponder
                |  +--rw transponder-id?   uint32
                |  +--rw transceiver
                |     +--rw transceiver-id?           uint32
                |     +--rw otsi-carrier-id?          uint16
                |     +--rw otsi-carrier-frequency?
                |     |       l0-types:frequency-thz
                |     +--rw tx-channel-power?
                |             l0-types:power-dbm
                +--rw outgoing-transponder
                   +--rw transponder-id?   uint32
                   +--rw transceiver
                      +--rw transceiver-id?           uint32
                      +--rw otsi-carrier-id?          uint16
                      +--rw otsi-carrier-frequency?
                      |       l0-types:frequency-thz
                      +--rw tx-channel-power?
                              l0-types:power-dbm
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:explicit-route-objects
            /te:route-object-exclude-always/te:type
            /te:numbered-node-hop/te:numbered-node-hop:
    +--rw (node-position)?
       +--:(source)
       |  +--rw source-transponder
       |     +--rw transponder-id?         uint32
       |     +--rw digital-terminations
       |     |  +--rw digital-termination* [index]
       |     |     +--rw index               uint8
       |     |     +--rw termination-type?   identityref
       |     |     +--rw mapping-type?       identityref
       |     +--rw transceiver
       |        +--rw transceiver-id?               uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--rw otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--rw tx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw operational-mode?             string
       |        +--rw line-coding-bitrate?          identityref
       |        +--rw preferred-rx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw gsnr-extra-margin?            snr
       |        +--rw inverse-multiplexing!
       |           +--rw inverse-mux-type?             identityref
       |           +--rw otsi-lane-termination-type?   identityref
       |           +--rw additional-transceivers
       |              +--rw index?                    uint8
       |              +--rw transceiver-id?           uint32
       |              +--rw otsi-carrier-id?          uint16
       |              +--rw otsi-carrier-frequency?
       |              |       l0-types:frequency-thz
       |              +--rw tx-channel-power?
       |                      l0-types:power-dbm
       +--:(destination)
       |  +--rw destination-transponder
       |     +--rw transponder-id?         uint32
       |     +--rw digital-terminations
       |     |  +--rw digital-termination* [index]
       |     |     +--rw index               uint8
       |     |     +--rw termination-type?   identityref
       |     |     +--rw mapping-type?       identityref
       |     +--rw transceiver
       |        +--rw transceiver-id?               uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--rw otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--rw tx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw operational-mode?             string
       |        +--rw line-coding-bitrate?          identityref
       |        +--rw preferred-rx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw gsnr-extra-margin?            snr
       |        +--rw inverse-multiplexing!
       |           +--rw inverse-mux-type?             identityref
       |           +--rw otsi-lane-termination-type?   identityref
       |           +--rw additional-transceivers
       |              +--rw index?                    uint8
       |              +--rw transceiver-id?           uint32
       |              +--rw otsi-carrier-id?          uint16
       |              +--rw otsi-carrier-frequency?
       |              |       l0-types:frequency-thz
       |              +--rw tx-channel-power?
       |                      l0-types:power-dbm
       +--:(regenerator)
       |  +--rw regenerator
       |     +--rw regen-group-id?         uint32
       |     +--rw regeneration-layer?     identityref
       |     +--rw incoming-transponder
       |     |  +--rw transponder-id?         uint32
       |     |  +--rw digital-terminations
       |     |  |  +--rw digital-termination* [index]
       |     |  |     +--rw index               uint8
       |     |  |     +--rw termination-type?   identityref
       |     |  |     +--rw mapping-type?       identityref
       |     |  +--rw transceiver
       |     |     +--rw transceiver-id?               uint32
       |     |     +--rw otsi-carrier-id?              uint16
       |     |     +--rw otsi-carrier-frequency?
       |     |     |       l0-types:frequency-thz
       |     |     +--rw tx-channel-power?
       |     |     |       l0-types:power-dbm
       |     |     +--rw operational-mode?             string
       |     |     +--rw line-coding-bitrate?          identityref
       |     |     +--rw preferred-rx-channel-power?
       |     |     |       l0-types:power-dbm
       |     |     +--rw gsnr-extra-margin?            snr
       |     |     +--rw inverse-multiplexing!
       |     |        +--rw inverse-mux-type?             identityref
       |     |        +--rw otsi-lane-termination-type?   identityref
       |     |        +--rw additional-transceivers
       |     |           +--rw index?                    uint8
       |     |           +--rw transceiver-id?           uint32
       |     |           +--rw otsi-carrier-id?          uint16
       |     |           +--rw otsi-carrier-frequency?
       |     |           |       l0-types:frequency-thz
       |     |           +--rw tx-channel-power?
       |     |                   l0-types:power-dbm
       |     +--rw outgoing-transponder
       |        +--rw transponder-id?         uint32
       |        +--rw digital-terminations
       |        |  +--rw digital-termination* [index]
       |        |     +--rw index               uint8
       |        |     +--rw termination-type?   identityref
       |        |     +--rw mapping-type?       identityref
       |        +--rw transceiver
       |           +--rw transceiver-id?               uint32
       |           +--rw otsi-carrier-id?              uint16
       |           +--rw otsi-carrier-frequency?
       |           |       l0-types:frequency-thz
       |           +--rw tx-channel-power?
       |           |       l0-types:power-dbm
       |           +--rw operational-mode?             string
       |           +--rw line-coding-bitrate?          identityref
       |           +--rw preferred-rx-channel-power?
       |           |       l0-types:power-dbm
       |           +--rw gsnr-extra-margin?            snr
       |           +--rw inverse-multiplexing!
       |              +--rw inverse-mux-type?             identityref
       |              +--rw otsi-lane-termination-type?   identityref
       |              +--rw additional-transceivers
       |                 +--rw index?                    uint8
       |                 +--rw transceiver-id?           uint32
       |                 +--rw otsi-carrier-id?          uint16
       |                 +--rw otsi-carrier-frequency?
       |                 |       l0-types:frequency-thz
       |                 +--rw tx-channel-power?
       |                         l0-types:power-dbm
       +--:(regenerators)
          +--rw regenerators
             +--rw common-incoming
             |  +--rw operational-mode?             string
             |  +--rw line-coding-bitrate?          identityref
             |  +--rw preferred-rx-channel-power?
             |  |       l0-types:power-dbm
             |  +--rw gsnr-extra-margin?            snr
             +--rw common-outgoing
             |  +--rw operational-mode?             string
             |  +--rw line-coding-bitrate?          identityref
             |  +--rw preferred-rx-channel-power?
             |  |       l0-types:power-dbm
             |  +--rw gsnr-extra-margin?            snr
             +--rw regenerator* [index]
                +--rw index                   uint8
                +--rw regen-group-id?         uint32
                +--rw regeneration-layer?     identityref
                +--rw incoming-transponder
                |  +--rw transponder-id?   uint32
                |  +--rw transceiver
                |     +--rw transceiver-id?           uint32
                |     +--rw otsi-carrier-id?          uint16
                |     +--rw otsi-carrier-frequency?
                |     |       l0-types:frequency-thz
                |     +--rw tx-channel-power?
                |             l0-types:power-dbm
                +--rw outgoing-transponder
                   +--rw transponder-id?   uint32
                   +--rw transceiver
                      +--rw transceiver-id?           uint32
                      +--rw otsi-carrier-id?          uint16
                      +--rw otsi-carrier-frequency?
                      |       l0-types:frequency-thz
                      +--rw tx-channel-power?
                              l0-types:power-dbm
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:explicit-route-objects
            /te:route-object-include-exclude/te:type
            /te:numbered-node-hop/te:numbered-node-hop:
    +--rw (node-position)?
       +--:(source)
       |  +--rw source-transponder
       |     +--rw transponder-id?         uint32
       |     +--rw digital-terminations
       |     |  +--rw digital-termination* [index]
       |     |     +--rw index               uint8
       |     |     +--rw termination-type?   identityref
       |     |     +--rw mapping-type?       identityref
       |     +--rw transceiver
       |        +--rw transceiver-id?               uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--rw otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--rw tx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw operational-mode?             string
       |        +--rw line-coding-bitrate?          identityref
       |        +--rw preferred-rx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw gsnr-extra-margin?            snr
       |        +--rw inverse-multiplexing!
       |           +--rw inverse-mux-type?             identityref
       |           +--rw otsi-lane-termination-type?   identityref
       |           +--rw additional-transceivers
       |              +--rw index?                    uint8
       |              +--rw transceiver-id?           uint32
       |              +--rw otsi-carrier-id?          uint16
       |              +--rw otsi-carrier-frequency?
       |              |       l0-types:frequency-thz
       |              +--rw tx-channel-power?
       |                      l0-types:power-dbm
       +--:(destination)
       |  +--rw destination-transponder
       |     +--rw transponder-id?         uint32
       |     +--rw digital-terminations
       |     |  +--rw digital-termination* [index]
       |     |     +--rw index               uint8
       |     |     +--rw termination-type?   identityref
       |     |     +--rw mapping-type?       identityref
       |     +--rw transceiver
       |        +--rw transceiver-id?               uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--rw otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--rw tx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw operational-mode?             string
       |        +--rw line-coding-bitrate?          identityref
       |        +--rw preferred-rx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw gsnr-extra-margin?            snr
       |        +--rw inverse-multiplexing!
       |           +--rw inverse-mux-type?             identityref
       |           +--rw otsi-lane-termination-type?   identityref
       |           +--rw additional-transceivers
       |              +--rw index?                    uint8
       |              +--rw transceiver-id?           uint32
       |              +--rw otsi-carrier-id?          uint16
       |              +--rw otsi-carrier-frequency?
       |              |       l0-types:frequency-thz
       |              +--rw tx-channel-power?
       |                      l0-types:power-dbm
       +--:(regenerator)
       |  +--rw regenerator
       |     +--rw regen-group-id?         uint32
       |     +--rw regeneration-layer?     identityref
       |     +--rw incoming-transponder
       |     |  +--rw transponder-id?         uint32
       |     |  +--rw digital-terminations
       |     |  |  +--rw digital-termination* [index]
       |     |  |     +--rw index               uint8
       |     |  |     +--rw termination-type?   identityref
       |     |  |     +--rw mapping-type?       identityref
       |     |  +--rw transceiver
       |     |     +--rw transceiver-id?               uint32
       |     |     +--rw otsi-carrier-id?              uint16
       |     |     +--rw otsi-carrier-frequency?
       |     |     |       l0-types:frequency-thz
       |     |     +--rw tx-channel-power?
       |     |     |       l0-types:power-dbm
       |     |     +--rw operational-mode?             string
       |     |     +--rw line-coding-bitrate?          identityref
       |     |     +--rw preferred-rx-channel-power?
       |     |     |       l0-types:power-dbm
       |     |     +--rw gsnr-extra-margin?            snr
       |     |     +--rw inverse-multiplexing!
       |     |        +--rw inverse-mux-type?             identityref
       |     |        +--rw otsi-lane-termination-type?   identityref
       |     |        +--rw additional-transceivers
       |     |           +--rw index?                    uint8
       |     |           +--rw transceiver-id?           uint32
       |     |           +--rw otsi-carrier-id?          uint16
       |     |           +--rw otsi-carrier-frequency?
       |     |           |       l0-types:frequency-thz
       |     |           +--rw tx-channel-power?
       |     |                   l0-types:power-dbm
       |     +--rw outgoing-transponder
       |        +--rw transponder-id?         uint32
       |        +--rw digital-terminations
       |        |  +--rw digital-termination* [index]
       |        |     +--rw index               uint8
       |        |     +--rw termination-type?   identityref
       |        |     +--rw mapping-type?       identityref
       |        +--rw transceiver
       |           +--rw transceiver-id?               uint32
       |           +--rw otsi-carrier-id?              uint16
       |           +--rw otsi-carrier-frequency?
       |           |       l0-types:frequency-thz
       |           +--rw tx-channel-power?
       |           |       l0-types:power-dbm
       |           +--rw operational-mode?             string
       |           +--rw line-coding-bitrate?          identityref
       |           +--rw preferred-rx-channel-power?
       |           |       l0-types:power-dbm
       |           +--rw gsnr-extra-margin?            snr
       |           +--rw inverse-multiplexing!
       |              +--rw inverse-mux-type?             identityref
       |              +--rw otsi-lane-termination-type?   identityref
       |              +--rw additional-transceivers
       |                 +--rw index?                    uint8
       |                 +--rw transceiver-id?           uint32
       |                 +--rw otsi-carrier-id?          uint16
       |                 +--rw otsi-carrier-frequency?
       |                 |       l0-types:frequency-thz
       |                 +--rw tx-channel-power?
       |                         l0-types:power-dbm
       +--:(regenerators)
          +--rw regenerators
             +--rw common-incoming
             |  +--rw operational-mode?             string
             |  +--rw line-coding-bitrate?          identityref
             |  +--rw preferred-rx-channel-power?
             |  |       l0-types:power-dbm
             |  +--rw gsnr-extra-margin?            snr
             +--rw common-outgoing
             |  +--rw operational-mode?             string
             |  +--rw line-coding-bitrate?          identityref
             |  +--rw preferred-rx-channel-power?
             |  |       l0-types:power-dbm
             |  +--rw gsnr-extra-margin?            snr
             +--rw regenerator* [index]
                +--rw index                   uint8
                +--rw regen-group-id?         uint32
                +--rw regeneration-layer?     identityref
                +--rw incoming-transponder
                |  +--rw transponder-id?   uint32
                |  +--rw transceiver
                |     +--rw transceiver-id?           uint32
                |     +--rw otsi-carrier-id?          uint16
                |     +--rw otsi-carrier-frequency?
                |     |       l0-types:frequency-thz
                |     +--rw tx-channel-power?
                |             l0-types:power-dbm
                +--rw outgoing-transponder
                   +--rw transponder-id?   uint32
                   +--rw transceiver
                      +--rw transceiver-id?           uint32
                      +--rw otsi-carrier-id?          uint16
                      +--rw otsi-carrier-frequency?
                      |       l0-types:frequency-thz
                      +--rw tx-channel-power?
                              l0-types:power-dbm
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:explicit-route-objects
            /te:route-object-exclude-always/te:type
            /te:numbered-node-hop/te:numbered-node-hop:
    +--rw (node-position)?
       +--:(source)
       |  +--rw source-transponder
       |     +--rw transponder-id?         uint32
       |     +--rw digital-terminations
       |     |  +--rw digital-termination* [index]
       |     |     +--rw index               uint8
       |     |     +--rw termination-type?   identityref
       |     |     +--rw mapping-type?       identityref
       |     +--rw transceiver
       |        +--rw transceiver-id?               uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--rw otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--rw tx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw operational-mode?             string
       |        +--rw line-coding-bitrate?          identityref
       |        +--rw preferred-rx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw gsnr-extra-margin?            snr
       |        +--rw inverse-multiplexing!
       |           +--rw inverse-mux-type?             identityref
       |           +--rw otsi-lane-termination-type?   identityref
       |           +--rw additional-transceivers
       |              +--rw index?                    uint8
       |              +--rw transceiver-id?           uint32
       |              +--rw otsi-carrier-id?          uint16
       |              +--rw otsi-carrier-frequency?
       |              |       l0-types:frequency-thz
       |              +--rw tx-channel-power?
       |                      l0-types:power-dbm
       +--:(destination)
       |  +--rw destination-transponder
       |     +--rw transponder-id?         uint32
       |     +--rw digital-terminations
       |     |  +--rw digital-termination* [index]
       |     |     +--rw index               uint8
       |     |     +--rw termination-type?   identityref
       |     |     +--rw mapping-type?       identityref
       |     +--rw transceiver
       |        +--rw transceiver-id?               uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--rw otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--rw tx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw operational-mode?             string
       |        +--rw line-coding-bitrate?          identityref
       |        +--rw preferred-rx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw gsnr-extra-margin?            snr
       |        +--rw inverse-multiplexing!
       |           +--rw inverse-mux-type?             identityref
       |           +--rw otsi-lane-termination-type?   identityref
       |           +--rw additional-transceivers
       |              +--rw index?                    uint8
       |              +--rw transceiver-id?           uint32
       |              +--rw otsi-carrier-id?          uint16
       |              +--rw otsi-carrier-frequency?
       |              |       l0-types:frequency-thz
       |              +--rw tx-channel-power?
       |                      l0-types:power-dbm
       +--:(regenerator)
       |  +--rw regenerator
       |     +--rw regen-group-id?         uint32
       |     +--rw regeneration-layer?     identityref
       |     +--rw incoming-transponder
       |     |  +--rw transponder-id?         uint32
       |     |  +--rw digital-terminations
       |     |  |  +--rw digital-termination* [index]
       |     |  |     +--rw index               uint8
       |     |  |     +--rw termination-type?   identityref
       |     |  |     +--rw mapping-type?       identityref
       |     |  +--rw transceiver
       |     |     +--rw transceiver-id?               uint32
       |     |     +--rw otsi-carrier-id?              uint16
       |     |     +--rw otsi-carrier-frequency?
       |     |     |       l0-types:frequency-thz
       |     |     +--rw tx-channel-power?
       |     |     |       l0-types:power-dbm
       |     |     +--rw operational-mode?             string
       |     |     +--rw line-coding-bitrate?          identityref
       |     |     +--rw preferred-rx-channel-power?
       |     |     |       l0-types:power-dbm
       |     |     +--rw gsnr-extra-margin?            snr
       |     |     +--rw inverse-multiplexing!
       |     |        +--rw inverse-mux-type?             identityref
       |     |        +--rw otsi-lane-termination-type?   identityref
       |     |        +--rw additional-transceivers
       |     |           +--rw index?                    uint8
       |     |           +--rw transceiver-id?           uint32
       |     |           +--rw otsi-carrier-id?          uint16
       |     |           +--rw otsi-carrier-frequency?
       |     |           |       l0-types:frequency-thz
       |     |           +--rw tx-channel-power?
       |     |                   l0-types:power-dbm
       |     +--rw outgoing-transponder
       |        +--rw transponder-id?         uint32
       |        +--rw digital-terminations
       |        |  +--rw digital-termination* [index]
       |        |     +--rw index               uint8
       |        |     +--rw termination-type?   identityref
       |        |     +--rw mapping-type?       identityref
       |        +--rw transceiver
       |           +--rw transceiver-id?               uint32
       |           +--rw otsi-carrier-id?              uint16
       |           +--rw otsi-carrier-frequency?
       |           |       l0-types:frequency-thz
       |           +--rw tx-channel-power?
       |           |       l0-types:power-dbm
       |           +--rw operational-mode?             string
       |           +--rw line-coding-bitrate?          identityref
       |           +--rw preferred-rx-channel-power?
       |           |       l0-types:power-dbm
       |           +--rw gsnr-extra-margin?            snr
       |           +--rw inverse-multiplexing!
       |              +--rw inverse-mux-type?             identityref
       |              +--rw otsi-lane-termination-type?   identityref
       |              +--rw additional-transceivers
       |                 +--rw index?                    uint8
       |                 +--rw transceiver-id?           uint32
       |                 +--rw otsi-carrier-id?          uint16
       |                 +--rw otsi-carrier-frequency?
       |                 |       l0-types:frequency-thz
       |                 +--rw tx-channel-power?
       |                         l0-types:power-dbm
       +--:(regenerators)
          +--rw regenerators
             +--rw common-incoming
             |  +--rw operational-mode?             string
             |  +--rw line-coding-bitrate?          identityref
             |  +--rw preferred-rx-channel-power?
             |  |       l0-types:power-dbm
             |  +--rw gsnr-extra-margin?            snr
             +--rw common-outgoing
             |  +--rw operational-mode?             string
             |  +--rw line-coding-bitrate?          identityref
             |  +--rw preferred-rx-channel-power?
             |  |       l0-types:power-dbm
             |  +--rw gsnr-extra-margin?            snr
             +--rw regenerator* [index]
                +--rw index                   uint8
                +--rw regen-group-id?         uint32
                +--rw regeneration-layer?     identityref
                +--rw incoming-transponder
                |  +--rw transponder-id?   uint32
                |  +--rw transceiver
                |     +--rw transceiver-id?           uint32
                |     +--rw otsi-carrier-id?          uint16
                |     +--rw otsi-carrier-frequency?
                |     |       l0-types:frequency-thz
                |     +--rw tx-channel-power?
                |             l0-types:power-dbm
                +--rw outgoing-transponder
                   +--rw transponder-id?   uint32
                   +--rw transceiver
                      +--rw transceiver-id?           uint32
                      +--rw otsi-carrier-id?          uint16
                      +--rw otsi-carrier-frequency?
                      |       l0-types:frequency-thz
                      +--rw tx-channel-power?
                              l0-types:power-dbm
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:computed-paths-properties
            /te:computed-path-properties/te:path-properties
            /te:path-route-objects/te:path-route-object/te:type
            /te:numbered-node-hop/te:numbered-node-hop:
    +--ro (node-position)?
       +--:(source)
       |  +--ro source-transponder
       |     +--ro transponder-id?         uint32
       |     +--ro digital-terminations
       |     |  +--ro digital-termination* [index]
       |     |     +--ro index               uint8
       |     |     +--ro termination-type?   identityref
       |     |     +--ro mapping-type?       identityref
       |     +--ro transceiver
       |        +--ro transceiver-id?           uint32
       |        +--ro otsi-carrier-id?          uint16
       |        +--ro otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--ro tx-channel-power?         l0-types:power-dbm
       |        +--ro operational-mode?         string
       |        +--ro line-coding-bitrate?      identityref
       |        +--ro rx-channel-power?         power-dbm-or-unknown
       |        +--ro rx-total-power?           power-dbm-or-unknown
       |        +--ro inverse-multiplexing!
       |        |  +--ro inverse-mux-type?             identityref
       |        |  +--ro otsi-lane-termination-type?   identityref
       |        |  +--ro additional-transceivers
       |        |     +--ro index?                    uint8
       |        |     +--ro transceiver-id?           uint32
       |        |     +--ro otsi-carrier-id?          uint16
       |        |     +--ro otsi-carrier-frequency?
       |        |     |       l0-types:frequency-thz
       |        |     +--ro tx-channel-power?
       |        |             l0-types:power-dbm
       |        +--ro estimated-gsnr?           snr
       |        +--ro estimated-eol-gsnr?       snr
       |        +--ro estimated-lowest-gsnr?    snr
       +--:(destination)
       |  +--ro destination-transponder
       |     +--ro transponder-id?         uint32
       |     +--ro digital-terminations
       |     |  +--ro digital-termination* [index]
       |     |     +--ro index               uint8
       |     |     +--ro termination-type?   identityref
       |     |     +--ro mapping-type?       identityref
       |     +--ro transceiver
       |        +--ro transceiver-id?           uint32
       |        +--ro otsi-carrier-id?          uint16
       |        +--ro otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--ro tx-channel-power?         l0-types:power-dbm
       |        +--ro operational-mode?         string
       |        +--ro line-coding-bitrate?      identityref
       |        +--ro rx-channel-power?         power-dbm-or-unknown
       |        +--ro rx-total-power?           power-dbm-or-unknown
       |        +--ro inverse-multiplexing!
       |        |  +--ro inverse-mux-type?             identityref
       |        |  +--ro otsi-lane-termination-type?   identityref
       |        |  +--ro additional-transceivers
       |        |     +--ro index?                    uint8
       |        |     +--ro transceiver-id?           uint32
       |        |     +--ro otsi-carrier-id?          uint16
       |        |     +--ro otsi-carrier-frequency?
       |        |     |       l0-types:frequency-thz
       |        |     +--ro tx-channel-power?
       |        |             l0-types:power-dbm
       |        +--ro estimated-gsnr?           snr
       |        +--ro estimated-eol-gsnr?       snr
       |        +--ro estimated-lowest-gsnr?    snr
       +--:(regenerator)
       |  +--ro regenerator
       |     +--ro regen-group-id?         uint32
       |     +--ro regeneration-layer?     identityref
       |     +--ro incoming-transponder
       |     |  +--ro transponder-id?         uint32
       |     |  +--ro digital-terminations
       |     |  |  +--ro digital-termination* [index]
       |     |  |     +--ro index               uint8
       |     |  |     +--ro termination-type?   identityref
       |     |  |     +--ro mapping-type?       identityref
       |     |  +--ro transceiver
       |     |     +--ro transceiver-id?           uint32
       |     |     +--ro otsi-carrier-id?          uint16
       |     |     +--ro otsi-carrier-frequency?
       |     |     |       l0-types:frequency-thz
       |     |     +--ro tx-channel-power?         l0-types:power-dbm
       |     |     +--ro operational-mode?         string
       |     |     +--ro line-coding-bitrate?      identityref
       |     |     +--ro rx-channel-power?
       |     |     |       power-dbm-or-unknown
       |     |     +--ro rx-total-power?
       |     |     |       power-dbm-or-unknown
       |     |     +--ro inverse-multiplexing!
       |     |     |  +--ro inverse-mux-type?             identityref
       |     |     |  +--ro otsi-lane-termination-type?   identityref
       |     |     |  +--ro additional-transceivers
       |     |     |     +--ro index?                    uint8
       |     |     |     +--ro transceiver-id?           uint32
       |     |     |     +--ro otsi-carrier-id?          uint16
       |     |     |     +--ro otsi-carrier-frequency?
       |     |     |     |       l0-types:frequency-thz
       |     |     |     +--ro tx-channel-power?
       |     |     |             l0-types:power-dbm
       |     |     +--ro estimated-gsnr?           snr
       |     |     +--ro estimated-eol-gsnr?       snr
       |     |     +--ro estimated-lowest-gsnr?    snr
       |     +--ro outgoing-transponder
       |        +--ro transponder-id?         uint32
       |        +--ro digital-terminations
       |        |  +--ro digital-termination* [index]
       |        |     +--ro index               uint8
       |        |     +--ro termination-type?   identityref
       |        |     +--ro mapping-type?       identityref
       |        +--ro transceiver
       |           +--ro transceiver-id?           uint32
       |           +--ro otsi-carrier-id?          uint16
       |           +--ro otsi-carrier-frequency?
       |           |       l0-types:frequency-thz
       |           +--ro tx-channel-power?         l0-types:power-dbm
       |           +--ro operational-mode?         string
       |           +--ro line-coding-bitrate?      identityref
       |           +--ro rx-channel-power?
       |           |       power-dbm-or-unknown
       |           +--ro rx-total-power?
       |           |       power-dbm-or-unknown
       |           +--ro inverse-multiplexing!
       |           |  +--ro inverse-mux-type?             identityref
       |           |  +--ro otsi-lane-termination-type?   identityref
       |           |  +--ro additional-transceivers
       |           |     +--ro index?                    uint8
       |           |     +--ro transceiver-id?           uint32
       |           |     +--ro otsi-carrier-id?          uint16
       |           |     +--ro otsi-carrier-frequency?
       |           |     |       l0-types:frequency-thz
       |           |     +--ro tx-channel-power?
       |           |             l0-types:power-dbm
       |           +--ro estimated-gsnr?           snr
       |           +--ro estimated-eol-gsnr?       snr
       |           +--ro estimated-lowest-gsnr?    snr
       +--:(regenerators)
          +--ro regenerators
             +--ro common-incoming
             |  +--ro operational-mode?        string
             |  +--ro line-coding-bitrate?     identityref
             |  +--ro estimated-gsnr?          snr
             |  +--ro estimated-eol-gsnr?      snr
             |  +--ro estimated-lowest-gsnr?   snr
             +--ro common-outgoing
             |  +--ro operational-mode?        string
             |  +--ro line-coding-bitrate?     identityref
             |  +--ro estimated-gsnr?          snr
             |  +--ro estimated-eol-gsnr?      snr
             |  +--ro estimated-lowest-gsnr?   snr
             +--ro regenerator* [index]
                +--ro index                   uint8
                +--ro regen-group-id?         uint32
                +--ro regeneration-layer?     identityref
                +--ro incoming-transponder
                |  +--ro transponder-id?   uint32
                |  +--ro transceiver
                |     +--ro transceiver-id?           uint32
                |     +--ro otsi-carrier-id?          uint16
                |     +--ro otsi-carrier-frequency?
                |     |       l0-types:frequency-thz
                |     +--ro tx-channel-power?
                |             l0-types:power-dbm
                +--ro outgoing-transponder
                   +--ro transponder-id?   uint32
                   +--ro transceiver
                      +--ro transceiver-id?           uint32
                      +--ro otsi-carrier-id?          uint16
                      +--ro otsi-carrier-frequency?
                      |       l0-types:frequency-thz
                      +--ro tx-channel-power?
                              l0-types:power-dbm
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:computed-paths-properties/te:computed-path-properties
            /te:path-properties/te:path-route-objects
            /te:path-route-object/te:type/te:numbered-node-hop
            /te:numbered-node-hop:
    +--ro (node-position)?
       +--:(source)
       |  +--ro source-transponder
       |     +--ro transponder-id?         uint32
       |     +--ro digital-terminations
       |     |  +--ro digital-termination* [index]
       |     |     +--ro index               uint8
       |     |     +--ro termination-type?   identityref
       |     |     +--ro mapping-type?       identityref
       |     +--ro transceiver
       |        +--ro transceiver-id?           uint32
       |        +--ro otsi-carrier-id?          uint16
       |        +--ro otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--ro tx-channel-power?         l0-types:power-dbm
       |        +--ro operational-mode?         string
       |        +--ro line-coding-bitrate?      identityref
       |        +--ro rx-channel-power?         power-dbm-or-unknown
       |        +--ro rx-total-power?           power-dbm-or-unknown
       |        +--ro inverse-multiplexing!
       |        |  +--ro inverse-mux-type?             identityref
       |        |  +--ro otsi-lane-termination-type?   identityref
       |        |  +--ro additional-transceivers
       |        |     +--ro index?                    uint8
       |        |     +--ro transceiver-id?           uint32
       |        |     +--ro otsi-carrier-id?          uint16
       |        |     +--ro otsi-carrier-frequency?
       |        |     |       l0-types:frequency-thz
       |        |     +--ro tx-channel-power?
       |        |             l0-types:power-dbm
       |        +--ro estimated-gsnr?           snr
       |        +--ro estimated-eol-gsnr?       snr
       |        +--ro estimated-lowest-gsnr?    snr
       +--:(destination)
       |  +--ro destination-transponder
       |     +--ro transponder-id?         uint32
       |     +--ro digital-terminations
       |     |  +--ro digital-termination* [index]
       |     |     +--ro index               uint8
       |     |     +--ro termination-type?   identityref
       |     |     +--ro mapping-type?       identityref
       |     +--ro transceiver
       |        +--ro transceiver-id?           uint32
       |        +--ro otsi-carrier-id?          uint16
       |        +--ro otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--ro tx-channel-power?         l0-types:power-dbm
       |        +--ro operational-mode?         string
       |        +--ro line-coding-bitrate?      identityref
       |        +--ro rx-channel-power?         power-dbm-or-unknown
       |        +--ro rx-total-power?           power-dbm-or-unknown
       |        +--ro inverse-multiplexing!
       |        |  +--ro inverse-mux-type?             identityref
       |        |  +--ro otsi-lane-termination-type?   identityref
       |        |  +--ro additional-transceivers
       |        |     +--ro index?                    uint8
       |        |     +--ro transceiver-id?           uint32
       |        |     +--ro otsi-carrier-id?          uint16
       |        |     +--ro otsi-carrier-frequency?
       |        |     |       l0-types:frequency-thz
       |        |     +--ro tx-channel-power?
       |        |             l0-types:power-dbm
       |        +--ro estimated-gsnr?           snr
       |        +--ro estimated-eol-gsnr?       snr
       |        +--ro estimated-lowest-gsnr?    snr
       +--:(regenerator)
       |  +--ro regenerator
       |     +--ro regen-group-id?         uint32
       |     +--ro regeneration-layer?     identityref
       |     +--ro incoming-transponder
       |     |  +--ro transponder-id?         uint32
       |     |  +--ro digital-terminations
       |     |  |  +--ro digital-termination* [index]
       |     |  |     +--ro index               uint8
       |     |  |     +--ro termination-type?   identityref
       |     |  |     +--ro mapping-type?       identityref
       |     |  +--ro transceiver
       |     |     +--ro transceiver-id?           uint32
       |     |     +--ro otsi-carrier-id?          uint16
       |     |     +--ro otsi-carrier-frequency?
       |     |     |       l0-types:frequency-thz
       |     |     +--ro tx-channel-power?         l0-types:power-dbm
       |     |     +--ro operational-mode?         string
       |     |     +--ro line-coding-bitrate?      identityref
       |     |     +--ro rx-channel-power?
       |     |     |       power-dbm-or-unknown
       |     |     +--ro rx-total-power?
       |     |     |       power-dbm-or-unknown
       |     |     +--ro inverse-multiplexing!
       |     |     |  +--ro inverse-mux-type?             identityref
       |     |     |  +--ro otsi-lane-termination-type?   identityref
       |     |     |  +--ro additional-transceivers
       |     |     |     +--ro index?                    uint8
       |     |     |     +--ro transceiver-id?           uint32
       |     |     |     +--ro otsi-carrier-id?          uint16
       |     |     |     +--ro otsi-carrier-frequency?
       |     |     |     |       l0-types:frequency-thz
       |     |     |     +--ro tx-channel-power?
       |     |     |             l0-types:power-dbm
       |     |     +--ro estimated-gsnr?           snr
       |     |     +--ro estimated-eol-gsnr?       snr
       |     |     +--ro estimated-lowest-gsnr?    snr
       |     +--ro outgoing-transponder
       |        +--ro transponder-id?         uint32
       |        +--ro digital-terminations
       |        |  +--ro digital-termination* [index]
       |        |     +--ro index               uint8
       |        |     +--ro termination-type?   identityref
       |        |     +--ro mapping-type?       identityref
       |        +--ro transceiver
       |           +--ro transceiver-id?           uint32
       |           +--ro otsi-carrier-id?          uint16
       |           +--ro otsi-carrier-frequency?
       |           |       l0-types:frequency-thz
       |           +--ro tx-channel-power?         l0-types:power-dbm
       |           +--ro operational-mode?         string
       |           +--ro line-coding-bitrate?      identityref
       |           +--ro rx-channel-power?
       |           |       power-dbm-or-unknown
       |           +--ro rx-total-power?
       |           |       power-dbm-or-unknown
       |           +--ro inverse-multiplexing!
       |           |  +--ro inverse-mux-type?             identityref
       |           |  +--ro otsi-lane-termination-type?   identityref
       |           |  +--ro additional-transceivers
       |           |     +--ro index?                    uint8
       |           |     +--ro transceiver-id?           uint32
       |           |     +--ro otsi-carrier-id?          uint16
       |           |     +--ro otsi-carrier-frequency?
       |           |     |       l0-types:frequency-thz
       |           |     +--ro tx-channel-power?
       |           |             l0-types:power-dbm
       |           +--ro estimated-gsnr?           snr
       |           +--ro estimated-eol-gsnr?       snr
       |           +--ro estimated-lowest-gsnr?    snr
       +--:(regenerators)
          +--ro regenerators
             +--ro common-incoming
             |  +--ro operational-mode?        string
             |  +--ro line-coding-bitrate?     identityref
             |  +--ro estimated-gsnr?          snr
             |  +--ro estimated-eol-gsnr?      snr
             |  +--ro estimated-lowest-gsnr?   snr
             +--ro common-outgoing
             |  +--ro operational-mode?        string
             |  +--ro line-coding-bitrate?     identityref
             |  +--ro estimated-gsnr?          snr
             |  +--ro estimated-eol-gsnr?      snr
             |  +--ro estimated-lowest-gsnr?   snr
             +--ro regenerator* [index]
                +--ro index                   uint8
                +--ro regen-group-id?         uint32
                +--ro regeneration-layer?     identityref
                +--ro incoming-transponder
                |  +--ro transponder-id?   uint32
                |  +--ro transceiver
                |     +--ro transceiver-id?           uint32
                |     +--ro otsi-carrier-id?          uint16
                |     +--ro otsi-carrier-frequency?
                |     |       l0-types:frequency-thz
                |     +--ro tx-channel-power?
                |             l0-types:power-dbm
                +--ro outgoing-transponder
                   +--ro transponder-id?   uint32
                   +--ro transceiver
                      +--ro transceiver-id?           uint32
                      +--ro otsi-carrier-id?          uint16
                      +--ro otsi-carrier-frequency?
                      |       l0-types:frequency-thz
                      +--ro tx-channel-power?
                              l0-types:power-dbm
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:computed-paths-properties
            /te:computed-path-properties/te:path-properties
            /te:path-route-objects/te:path-route-object/te:type
            /te:numbered-node-hop/te:numbered-node-hop:
    +--ro (node-position)?
       +--:(source)
       |  +--ro source-transponder
       |     +--ro transponder-id?         uint32
       |     +--ro digital-terminations
       |     |  +--ro digital-termination* [index]
       |     |     +--ro index               uint8
       |     |     +--ro termination-type?   identityref
       |     |     +--ro mapping-type?       identityref
       |     +--ro transceiver
       |        +--ro transceiver-id?           uint32
       |        +--ro otsi-carrier-id?          uint16
       |        +--ro otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--ro tx-channel-power?         l0-types:power-dbm
       |        +--ro operational-mode?         string
       |        +--ro line-coding-bitrate?      identityref
       |        +--ro rx-channel-power?         power-dbm-or-unknown
       |        +--ro rx-total-power?           power-dbm-or-unknown
       |        +--ro inverse-multiplexing!
       |        |  +--ro inverse-mux-type?             identityref
       |        |  +--ro otsi-lane-termination-type?   identityref
       |        |  +--ro additional-transceivers
       |        |     +--ro index?                    uint8
       |        |     +--ro transceiver-id?           uint32
       |        |     +--ro otsi-carrier-id?          uint16
       |        |     +--ro otsi-carrier-frequency?
       |        |     |       l0-types:frequency-thz
       |        |     +--ro tx-channel-power?
       |        |             l0-types:power-dbm
       |        +--ro estimated-gsnr?           snr
       |        +--ro estimated-eol-gsnr?       snr
       |        +--ro estimated-lowest-gsnr?    snr
       +--:(destination)
       |  +--ro destination-transponder
       |     +--ro transponder-id?         uint32
       |     +--ro digital-terminations
       |     |  +--ro digital-termination* [index]
       |     |     +--ro index               uint8
       |     |     +--ro termination-type?   identityref
       |     |     +--ro mapping-type?       identityref
       |     +--ro transceiver
       |        +--ro transceiver-id?           uint32
       |        +--ro otsi-carrier-id?          uint16
       |        +--ro otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--ro tx-channel-power?         l0-types:power-dbm
       |        +--ro operational-mode?         string
       |        +--ro line-coding-bitrate?      identityref
       |        +--ro rx-channel-power?         power-dbm-or-unknown
       |        +--ro rx-total-power?           power-dbm-or-unknown
       |        +--ro inverse-multiplexing!
       |        |  +--ro inverse-mux-type?             identityref
       |        |  +--ro otsi-lane-termination-type?   identityref
       |        |  +--ro additional-transceivers
       |        |     +--ro index?                    uint8
       |        |     +--ro transceiver-id?           uint32
       |        |     +--ro otsi-carrier-id?          uint16
       |        |     +--ro otsi-carrier-frequency?
       |        |     |       l0-types:frequency-thz
       |        |     +--ro tx-channel-power?
       |        |             l0-types:power-dbm
       |        +--ro estimated-gsnr?           snr
       |        +--ro estimated-eol-gsnr?       snr
       |        +--ro estimated-lowest-gsnr?    snr
       +--:(regenerator)
       |  +--ro regenerator
       |     +--ro regen-group-id?         uint32
       |     +--ro regeneration-layer?     identityref
       |     +--ro incoming-transponder
       |     |  +--ro transponder-id?         uint32
       |     |  +--ro digital-terminations
       |     |  |  +--ro digital-termination* [index]
       |     |  |     +--ro index               uint8
       |     |  |     +--ro termination-type?   identityref
       |     |  |     +--ro mapping-type?       identityref
       |     |  +--ro transceiver
       |     |     +--ro transceiver-id?           uint32
       |     |     +--ro otsi-carrier-id?          uint16
       |     |     +--ro otsi-carrier-frequency?
       |     |     |       l0-types:frequency-thz
       |     |     +--ro tx-channel-power?         l0-types:power-dbm
       |     |     +--ro operational-mode?         string
       |     |     +--ro line-coding-bitrate?      identityref
       |     |     +--ro rx-channel-power?
       |     |     |       power-dbm-or-unknown
       |     |     +--ro rx-total-power?
       |     |     |       power-dbm-or-unknown
       |     |     +--ro inverse-multiplexing!
       |     |     |  +--ro inverse-mux-type?             identityref
       |     |     |  +--ro otsi-lane-termination-type?   identityref
       |     |     |  +--ro additional-transceivers
       |     |     |     +--ro index?                    uint8
       |     |     |     +--ro transceiver-id?           uint32
       |     |     |     +--ro otsi-carrier-id?          uint16
       |     |     |     +--ro otsi-carrier-frequency?
       |     |     |     |       l0-types:frequency-thz
       |     |     |     +--ro tx-channel-power?
       |     |     |             l0-types:power-dbm
       |     |     +--ro estimated-gsnr?           snr
       |     |     +--ro estimated-eol-gsnr?       snr
       |     |     +--ro estimated-lowest-gsnr?    snr
       |     +--ro outgoing-transponder
       |        +--ro transponder-id?         uint32
       |        +--ro digital-terminations
       |        |  +--ro digital-termination* [index]
       |        |     +--ro index               uint8
       |        |     +--ro termination-type?   identityref
       |        |     +--ro mapping-type?       identityref
       |        +--ro transceiver
       |           +--ro transceiver-id?           uint32
       |           +--ro otsi-carrier-id?          uint16
       |           +--ro otsi-carrier-frequency?
       |           |       l0-types:frequency-thz
       |           +--ro tx-channel-power?         l0-types:power-dbm
       |           +--ro operational-mode?         string
       |           +--ro line-coding-bitrate?      identityref
       |           +--ro rx-channel-power?
       |           |       power-dbm-or-unknown
       |           +--ro rx-total-power?
       |           |       power-dbm-or-unknown
       |           +--ro inverse-multiplexing!
       |           |  +--ro inverse-mux-type?             identityref
       |           |  +--ro otsi-lane-termination-type?   identityref
       |           |  +--ro additional-transceivers
       |           |     +--ro index?                    uint8
       |           |     +--ro transceiver-id?           uint32
       |           |     +--ro otsi-carrier-id?          uint16
       |           |     +--ro otsi-carrier-frequency?
       |           |     |       l0-types:frequency-thz
       |           |     +--ro tx-channel-power?
       |           |             l0-types:power-dbm
       |           +--ro estimated-gsnr?           snr
       |           +--ro estimated-eol-gsnr?       snr
       |           +--ro estimated-lowest-gsnr?    snr
       +--:(regenerators)
          +--ro regenerators
             +--ro common-incoming
             |  +--ro operational-mode?        string
             |  +--ro line-coding-bitrate?     identityref
             |  +--ro estimated-gsnr?          snr
             |  +--ro estimated-eol-gsnr?      snr
             |  +--ro estimated-lowest-gsnr?   snr
             +--ro common-outgoing
             |  +--ro operational-mode?        string
             |  +--ro line-coding-bitrate?     identityref
             |  +--ro estimated-gsnr?          snr
             |  +--ro estimated-eol-gsnr?      snr
             |  +--ro estimated-lowest-gsnr?   snr
             +--ro regenerator* [index]
                +--ro index                   uint8
                +--ro regen-group-id?         uint32
                +--ro regeneration-layer?     identityref
                +--ro incoming-transponder
                |  +--ro transponder-id?   uint32
                |  +--ro transceiver
                |     +--ro transceiver-id?           uint32
                |     +--ro otsi-carrier-id?          uint16
                |     +--ro otsi-carrier-frequency?
                |     |       l0-types:frequency-thz
                |     +--ro tx-channel-power?
                |             l0-types:power-dbm
                +--ro outgoing-transponder
                   +--ro transponder-id?   uint32
                   +--ro transceiver
                      +--ro transceiver-id?           uint32
                      +--ro otsi-carrier-id?          uint16
                      +--ro otsi-carrier-frequency?
                      |       l0-types:frequency-thz
                      +--ro tx-channel-power?
                              l0-types:power-dbm
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:computed-paths-properties
            /te:computed-path-properties/te:path-properties
            /te:path-route-objects/te:path-route-object/te:type
            /te:numbered-node-hop/te:numbered-node-hop:
    +--ro (node-position)?
       +--:(source)
       |  +--ro source-transponder
       |     +--ro transponder-id?         uint32
       |     +--ro digital-terminations
       |     |  +--ro digital-termination* [index]
       |     |     +--ro index               uint8
       |     |     +--ro termination-type?   identityref
       |     |     +--ro mapping-type?       identityref
       |     +--ro transceiver
       |        +--ro transceiver-id?           uint32
       |        +--ro otsi-carrier-id?          uint16
       |        +--ro otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--ro tx-channel-power?         l0-types:power-dbm
       |        +--ro operational-mode?         string
       |        +--ro line-coding-bitrate?      identityref
       |        +--ro rx-channel-power?         power-dbm-or-unknown
       |        +--ro rx-total-power?           power-dbm-or-unknown
       |        +--ro inverse-multiplexing!
       |        |  +--ro inverse-mux-type?             identityref
       |        |  +--ro otsi-lane-termination-type?   identityref
       |        |  +--ro additional-transceivers
       |        |     +--ro index?                    uint8
       |        |     +--ro transceiver-id?           uint32
       |        |     +--ro otsi-carrier-id?          uint16
       |        |     +--ro otsi-carrier-frequency?
       |        |     |       l0-types:frequency-thz
       |        |     +--ro tx-channel-power?
       |        |             l0-types:power-dbm
       |        +--ro estimated-gsnr?           snr
       |        +--ro estimated-eol-gsnr?       snr
       |        +--ro estimated-lowest-gsnr?    snr
       +--:(destination)
       |  +--ro destination-transponder
       |     +--ro transponder-id?         uint32
       |     +--ro digital-terminations
       |     |  +--ro digital-termination* [index]
       |     |     +--ro index               uint8
       |     |     +--ro termination-type?   identityref
       |     |     +--ro mapping-type?       identityref
       |     +--ro transceiver
       |        +--ro transceiver-id?           uint32
       |        +--ro otsi-carrier-id?          uint16
       |        +--ro otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--ro tx-channel-power?         l0-types:power-dbm
       |        +--ro operational-mode?         string
       |        +--ro line-coding-bitrate?      identityref
       |        +--ro rx-channel-power?         power-dbm-or-unknown
       |        +--ro rx-total-power?           power-dbm-or-unknown
       |        +--ro inverse-multiplexing!
       |        |  +--ro inverse-mux-type?             identityref
       |        |  +--ro otsi-lane-termination-type?   identityref
       |        |  +--ro additional-transceivers
       |        |     +--ro index?                    uint8
       |        |     +--ro transceiver-id?           uint32
       |        |     +--ro otsi-carrier-id?          uint16
       |        |     +--ro otsi-carrier-frequency?
       |        |     |       l0-types:frequency-thz
       |        |     +--ro tx-channel-power?
       |        |             l0-types:power-dbm
       |        +--ro estimated-gsnr?           snr
       |        +--ro estimated-eol-gsnr?       snr
       |        +--ro estimated-lowest-gsnr?    snr
       +--:(regenerator)
       |  +--ro regenerator
       |     +--ro regen-group-id?         uint32
       |     +--ro regeneration-layer?     identityref
       |     +--ro incoming-transponder
       |     |  +--ro transponder-id?         uint32
       |     |  +--ro digital-terminations
       |     |  |  +--ro digital-termination* [index]
       |     |  |     +--ro index               uint8
       |     |  |     +--ro termination-type?   identityref
       |     |  |     +--ro mapping-type?       identityref
       |     |  +--ro transceiver
       |     |     +--ro transceiver-id?           uint32
       |     |     +--ro otsi-carrier-id?          uint16
       |     |     +--ro otsi-carrier-frequency?
       |     |     |       l0-types:frequency-thz
       |     |     +--ro tx-channel-power?         l0-types:power-dbm
       |     |     +--ro operational-mode?         string
       |     |     +--ro line-coding-bitrate?      identityref
       |     |     +--ro rx-channel-power?
       |     |     |       power-dbm-or-unknown
       |     |     +--ro rx-total-power?
       |     |     |       power-dbm-or-unknown
       |     |     +--ro inverse-multiplexing!
       |     |     |  +--ro inverse-mux-type?             identityref
       |     |     |  +--ro otsi-lane-termination-type?   identityref
       |     |     |  +--ro additional-transceivers
       |     |     |     +--ro index?                    uint8
       |     |     |     +--ro transceiver-id?           uint32
       |     |     |     +--ro otsi-carrier-id?          uint16
       |     |     |     +--ro otsi-carrier-frequency?
       |     |     |     |       l0-types:frequency-thz
       |     |     |     +--ro tx-channel-power?
       |     |     |             l0-types:power-dbm
       |     |     +--ro estimated-gsnr?           snr
       |     |     +--ro estimated-eol-gsnr?       snr
       |     |     +--ro estimated-lowest-gsnr?    snr
       |     +--ro outgoing-transponder
       |        +--ro transponder-id?         uint32
       |        +--ro digital-terminations
       |        |  +--ro digital-termination* [index]
       |        |     +--ro index               uint8
       |        |     +--ro termination-type?   identityref
       |        |     +--ro mapping-type?       identityref
       |        +--ro transceiver
       |           +--ro transceiver-id?           uint32
       |           +--ro otsi-carrier-id?          uint16
       |           +--ro otsi-carrier-frequency?
       |           |       l0-types:frequency-thz
       |           +--ro tx-channel-power?         l0-types:power-dbm
       |           +--ro operational-mode?         string
       |           +--ro line-coding-bitrate?      identityref
       |           +--ro rx-channel-power?
       |           |       power-dbm-or-unknown
       |           +--ro rx-total-power?
       |           |       power-dbm-or-unknown
       |           +--ro inverse-multiplexing!
       |           |  +--ro inverse-mux-type?             identityref
       |           |  +--ro otsi-lane-termination-type?   identityref
       |           |  +--ro additional-transceivers
       |           |     +--ro index?                    uint8
       |           |     +--ro transceiver-id?           uint32
       |           |     +--ro otsi-carrier-id?          uint16
       |           |     +--ro otsi-carrier-frequency?
       |           |     |       l0-types:frequency-thz
       |           |     +--ro tx-channel-power?
       |           |             l0-types:power-dbm
       |           +--ro estimated-gsnr?           snr
       |           +--ro estimated-eol-gsnr?       snr
       |           +--ro estimated-lowest-gsnr?    snr
       +--:(regenerators)
          +--ro regenerators
             +--ro common-incoming
             |  +--ro operational-mode?        string
             |  +--ro line-coding-bitrate?     identityref
             |  +--ro estimated-gsnr?          snr
             |  +--ro estimated-eol-gsnr?      snr
             |  +--ro estimated-lowest-gsnr?   snr
             +--ro common-outgoing
             |  +--ro operational-mode?        string
             |  +--ro line-coding-bitrate?     identityref
             |  +--ro estimated-gsnr?          snr
             |  +--ro estimated-eol-gsnr?      snr
             |  +--ro estimated-lowest-gsnr?   snr
             +--ro regenerator* [index]
                +--ro index                   uint8
                +--ro regen-group-id?         uint32
                +--ro regeneration-layer?     identityref
                +--ro incoming-transponder
                |  +--ro transponder-id?   uint32
                |  +--ro transceiver
                |     +--ro transceiver-id?           uint32
                |     +--ro otsi-carrier-id?          uint16
                |     +--ro otsi-carrier-frequency?
                |     |       l0-types:frequency-thz
                |     +--ro tx-channel-power?
                |             l0-types:power-dbm
                +--ro outgoing-transponder
                   +--ro transponder-id?   uint32
                   +--ro transceiver
                      +--ro transceiver-id?           uint32
                      +--ro otsi-carrier-id?          uint16
                      +--ro otsi-carrier-frequency?
                      |       l0-types:frequency-thz
                      +--ro tx-channel-power?
                              l0-types:power-dbm
  augment /te:te/te:lsps/te:lsp/te:lsp-actual-route-information
            /te:lsp-actual-route-information/te:type
            /te:numbered-node-hop/te:numbered-node-hop:
    +--ro (node-position)?
       +--:(source)
       |  +--ro source-transponder
       |     +--ro transponder-id?         uint32
       |     +--ro digital-terminations
       |     |  +--ro digital-termination* [index]
       |     |     +--ro index               uint8
       |     |     +--ro termination-type?   identityref
       |     |     +--ro mapping-type?       identityref
       |     +--ro transceiver
       |        +--ro transceiver-id?           uint32
       |        +--ro otsi-carrier-id?          uint16
       |        +--ro otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--ro tx-channel-power?         l0-types:power-dbm
       |        +--ro operational-mode?         string
       |        +--ro line-coding-bitrate?      identityref
       |        +--ro rx-channel-power?         power-dbm-or-unknown
       |        +--ro rx-total-power?           power-dbm-or-unknown
       |        +--ro inverse-multiplexing!
       |        |  +--ro inverse-mux-type?             identityref
       |        |  +--ro otsi-lane-termination-type?   identityref
       |        |  +--ro additional-transceivers
       |        |     +--ro index?                    uint8
       |        |     +--ro transceiver-id?           uint32
       |        |     +--ro otsi-carrier-id?          uint16
       |        |     +--ro otsi-carrier-frequency?
       |        |     |       l0-types:frequency-thz
       |        |     +--ro tx-channel-power?
       |        |             l0-types:power-dbm
       |        +--ro pre-fec-ber
       |        |  +--ro timestamp?   yang:timestamp
       |        |  +--ro value?       decimal64
       |        +--ro q-factor
       |           +--ro timestamp?   yang:timestamp
       |           +--ro value?       l0-types:decimal-2-or-unknown
       +--:(destination)
       |  +--ro destination-transponder
       |     +--ro transponder-id?         uint32
       |     +--ro digital-terminations
       |     |  +--ro digital-termination* [index]
       |     |     +--ro index               uint8
       |     |     +--ro termination-type?   identityref
       |     |     +--ro mapping-type?       identityref
       |     +--ro transceiver
       |        +--ro transceiver-id?           uint32
       |        +--ro otsi-carrier-id?          uint16
       |        +--ro otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--ro tx-channel-power?         l0-types:power-dbm
       |        +--ro operational-mode?         string
       |        +--ro line-coding-bitrate?      identityref
       |        +--ro rx-channel-power?         power-dbm-or-unknown
       |        +--ro rx-total-power?           power-dbm-or-unknown
       |        +--ro inverse-multiplexing!
       |        |  +--ro inverse-mux-type?             identityref
       |        |  +--ro otsi-lane-termination-type?   identityref
       |        |  +--ro additional-transceivers
       |        |     +--ro index?                    uint8
       |        |     +--ro transceiver-id?           uint32
       |        |     +--ro otsi-carrier-id?          uint16
       |        |     +--ro otsi-carrier-frequency?
       |        |     |       l0-types:frequency-thz
       |        |     +--ro tx-channel-power?
       |        |             l0-types:power-dbm
       |        +--ro pre-fec-ber
       |        |  +--ro timestamp?   yang:timestamp
       |        |  +--ro value?       decimal64
       |        +--ro q-factor
       |           +--ro timestamp?   yang:timestamp
       |           +--ro value?       l0-types:decimal-2-or-unknown
       +--:(regenerator)
       |  +--ro regenerator
       |     +--ro regen-group-id?         uint32
       |     +--ro regeneration-layer?     identityref
       |     +--ro incoming-transponder
       |     |  +--ro transponder-id?         uint32
       |     |  +--ro digital-terminations
       |     |  |  +--ro digital-termination* [index]
       |     |  |     +--ro index               uint8
       |     |  |     +--ro termination-type?   identityref
       |     |  |     +--ro mapping-type?       identityref
       |     |  +--ro transceiver
       |     |     +--ro transceiver-id?           uint32
       |     |     +--ro otsi-carrier-id?          uint16
       |     |     +--ro otsi-carrier-frequency?
       |     |     |       l0-types:frequency-thz
       |     |     +--ro tx-channel-power?         l0-types:power-dbm
       |     |     +--ro operational-mode?         string
       |     |     +--ro line-coding-bitrate?      identityref
       |     |     +--ro rx-channel-power?
       |     |     |       power-dbm-or-unknown
       |     |     +--ro rx-total-power?
       |     |     |       power-dbm-or-unknown
       |     |     +--ro inverse-multiplexing!
       |     |     |  +--ro inverse-mux-type?             identityref
       |     |     |  +--ro otsi-lane-termination-type?   identityref
       |     |     |  +--ro additional-transceivers
       |     |     |     +--ro index?                    uint8
       |     |     |     +--ro transceiver-id?           uint32
       |     |     |     +--ro otsi-carrier-id?          uint16
       |     |     |     +--ro otsi-carrier-frequency?
       |     |     |     |       l0-types:frequency-thz
       |     |     |     +--ro tx-channel-power?
       |     |     |             l0-types:power-dbm
       |     |     +--ro pre-fec-ber
       |     |     |  +--ro timestamp?   yang:timestamp
       |     |     |  +--ro value?       decimal64
       |     |     +--ro q-factor
       |     |        +--ro timestamp?   yang:timestamp
       |     |        +--ro value?
       |     |                l0-types:decimal-2-or-unknown
       |     +--ro outgoing-transponder
       |        +--ro transponder-id?         uint32
       |        +--ro digital-terminations
       |        |  +--ro digital-termination* [index]
       |        |     +--ro index               uint8
       |        |     +--ro termination-type?   identityref
       |        |     +--ro mapping-type?       identityref
       |        +--ro transceiver
       |           +--ro transceiver-id?           uint32
       |           +--ro otsi-carrier-id?          uint16
       |           +--ro otsi-carrier-frequency?
       |           |       l0-types:frequency-thz
       |           +--ro tx-channel-power?         l0-types:power-dbm
       |           +--ro operational-mode?         string
       |           +--ro line-coding-bitrate?      identityref
       |           +--ro rx-channel-power?
       |           |       power-dbm-or-unknown
       |           +--ro rx-total-power?
       |           |       power-dbm-or-unknown
       |           +--ro inverse-multiplexing!
       |           |  +--ro inverse-mux-type?             identityref
       |           |  +--ro otsi-lane-termination-type?   identityref
       |           |  +--ro additional-transceivers
       |           |     +--ro index?                    uint8
       |           |     +--ro transceiver-id?           uint32
       |           |     +--ro otsi-carrier-id?          uint16
       |           |     +--ro otsi-carrier-frequency?
       |           |     |       l0-types:frequency-thz
       |           |     +--ro tx-channel-power?
       |           |             l0-types:power-dbm
       |           +--ro pre-fec-ber
       |           |  +--ro timestamp?   yang:timestamp
       |           |  +--ro value?       decimal64
       |           +--ro q-factor
       |              +--ro timestamp?   yang:timestamp
       |              +--ro value?
       |                      l0-types:decimal-2-or-unknown
       +--:(regenerators)
          +--ro regenerators
             +--ro common-incoming
             |  +--ro operational-mode?      string
             |  +--ro line-coding-bitrate?   identityref
             |  +--ro pre-fec-ber
             |  |  +--ro timestamp?   yang:timestamp
             |  |  +--ro value?       decimal64
             |  +--ro q-factor
             |     +--ro timestamp?   yang:timestamp
             |     +--ro value?       l0-types:decimal-2-or-unknown
             +--ro common-outgoing
             |  +--ro operational-mode?      string
             |  +--ro line-coding-bitrate?   identityref
             |  +--ro pre-fec-ber
             |  |  +--ro timestamp?   yang:timestamp
             |  |  +--ro value?       decimal64
             |  +--ro q-factor
             |     +--ro timestamp?   yang:timestamp
             |     +--ro value?       l0-types:decimal-2-or-unknown
             +--ro regenerator* [index]
                +--ro index                   uint8
                +--ro regen-group-id?         uint32
                +--ro regeneration-layer?     identityref
                +--ro incoming-transponder
                |  +--ro transponder-id?   uint32
                |  +--ro transceiver
                |     +--ro transceiver-id?           uint32
                |     +--ro otsi-carrier-id?          uint16
                |     +--ro otsi-carrier-frequency?
                |     |       l0-types:frequency-thz
                |     +--ro tx-channel-power?
                |             l0-types:power-dbm
                +--ro outgoing-transponder
                   +--ro transponder-id?   uint32
                   +--ro transceiver
                      +--ro transceiver-id?           uint32
                      +--ro otsi-carrier-id?          uint16
                      +--ro otsi-carrier-frequency?
                      |       l0-types:frequency-thz
                      +--ro tx-channel-power?
                              l0-types:power-dbm
  augment /te:te/te:lsps/te:lsp/te:lsp-actual-route-information
            /te:lsp-actual-route-information/te:type
            /te:numbered-link-hop/te:numbered-link-hop:
    +--ro e2e-mc-path-id*   uint16
  augment /te:te/te:lsps/te:lsp/te:lsp-actual-route-information
            /te:lsp-actual-route-information/te:type
            /te:unnumbered-link-hop/te:unnumbered-link-hop:
    +--ro e2e-mc-path-id*   uint16
  augment /te:te/te:globals/te:named-path-constraints
            /te:named-path-constraint/te:path-in-segment
            /te:label-restrictions/te:label-restriction:
    +--rw wdm-label-range
       +--rw grid-type?    identityref
       +--rw priority?     uint8
       +--rw flexi-grid
          +--rw slot-width-granularity?   identityref
          +--rw min-slot-width-factor?    uint16
          +--rw max-slot-width-factor?    uint16
  augment /te:te/te:globals/te:named-path-constraints
            /te:named-path-constraint/te:path-out-segment
            /te:label-restrictions/te:label-restriction:
    +--rw wdm-label-range
       +--rw grid-type?    identityref
       +--rw priority?     uint8
       +--rw flexi-grid
          +--rw slot-width-granularity?   identityref
          +--rw min-slot-width-factor?    uint16
          +--rw max-slot-width-factor?    uint16
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:path-in-segment/te:label-restrictions
            /te:label-restriction:
    +--rw wdm-label-range
       +--rw grid-type?    identityref
       +--rw priority?     uint8
       +--rw flexi-grid
          +--rw slot-width-granularity?   identityref
          +--rw min-slot-width-factor?    uint16
          +--rw max-slot-width-factor?    uint16
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction:
    +--rw wdm-label-range
       +--rw grid-type?    identityref
       +--rw priority?     uint8
       +--rw flexi-grid
          +--rw slot-width-granularity?   identityref
          +--rw min-slot-width-factor?    uint16
          +--rw max-slot-width-factor?    uint16
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:path-in-segment/te:label-restrictions
            /te:label-restriction:
    +--rw wdm-label-range
       +--rw grid-type?    identityref
       +--rw priority?     uint8
       +--rw flexi-grid
          +--rw slot-width-granularity?   identityref
          +--rw min-slot-width-factor?    uint16
          +--rw max-slot-width-factor?    uint16
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:path-out-segment/te:label-restrictions
            /te:label-restriction:
    +--rw wdm-label-range
       +--rw grid-type?    identityref
       +--rw priority?     uint8
       +--rw flexi-grid
          +--rw slot-width-granularity?   identityref
          +--rw min-slot-width-factor?    uint16
          +--rw max-slot-width-factor?    uint16
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:path-in-segment
            /te:label-restrictions/te:label-restriction:
    +--rw wdm-label-range
       +--rw grid-type?    identityref
       +--rw priority?     uint8
       +--rw flexi-grid
          +--rw slot-width-granularity?   identityref
          +--rw min-slot-width-factor?    uint16
          +--rw max-slot-width-factor?    uint16
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction:
    +--rw wdm-label-range
       +--rw grid-type?    identityref
       +--rw priority?     uint8
       +--rw flexi-grid
          +--rw slot-width-granularity?   identityref
          +--rw min-slot-width-factor?    uint16
          +--rw max-slot-width-factor?    uint16
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:path-in-segment
            /te:label-restrictions/te:label-restriction:
    +--rw wdm-label-range
       +--rw grid-type?    identityref
       +--rw priority?     uint8
       +--rw flexi-grid
          +--rw slot-width-granularity?   identityref
          +--rw min-slot-width-factor?    uint16
          +--rw max-slot-width-factor?    uint16
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction:
    +--rw wdm-label-range
       +--rw grid-type?    identityref
       +--rw priority?     uint8
       +--rw flexi-grid
          +--rw slot-width-granularity?   identityref
          +--rw min-slot-width-factor?    uint16
          +--rw max-slot-width-factor?    uint16
  augment /te:te/te:globals/te:named-path-constraints
            /te:named-path-constraint/te:explicit-route-objects
            /te:route-object-exclude-always/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw (grid-type)?
             +--:(fixed-dwdm)
             |  +--rw (fixed-single-or-multi-channel)?
             |     +--:(single)
             |     |  +--rw dwdm-n?               dwdm-n
             |     +--:(multi)
             |        +--rw subcarrier-dwdm-n*    dwdm-n
             +--:(cwdm)
             |  +--rw cwdm-n?                     cwdm-n
             +--:(flexi-grid)
                +--rw (single-or-super-channel)?
                   +--:(single)
                   |  +--rw flexi-n?              flexi-n
                   |  +--rw flexi-m?              flexi-m
                   o--:(super)
                   |  o--rw subcarrier-flexi-n* [flexi-n]
                   |     +--rw flexi-n    flexi-n
                   |     +--rw flexi-m?   flexi-m
                   +--:(multi)
                      +--rw frequency-slots
                         +--rw frequency-slot* [flexi-n]
                            +--rw flexi-n    flexi-n
                            +--rw flexi-m?   flexi-m
  augment /te:te/te:globals/te:named-path-constraints
            /te:named-path-constraint/te:explicit-route-objects
            /te:route-object-include-exclude/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw (grid-type)?
             +--:(fixed-dwdm)
             |  +--rw (fixed-single-or-multi-channel)?
             |     +--:(single)
             |     |  +--rw dwdm-n?               dwdm-n
             |     +--:(multi)
             |        +--rw subcarrier-dwdm-n*    dwdm-n
             +--:(cwdm)
             |  +--rw cwdm-n?                     cwdm-n
             +--:(flexi-grid)
                +--rw (single-or-super-channel)?
                   +--:(single)
                   |  +--rw flexi-n?              flexi-n
                   |  +--rw flexi-m?              flexi-m
                   o--:(super)
                   |  o--rw subcarrier-flexi-n* [flexi-n]
                   |     +--rw flexi-n    flexi-n
                   |     +--rw flexi-m?   flexi-m
                   +--:(multi)
                      +--rw frequency-slots
                         +--rw frequency-slot* [flexi-n]
                            +--rw flexi-n    flexi-n
                            +--rw flexi-m?   flexi-m
  augment /te:te/te:globals/te:named-path-constraints
            /te:named-path-constraint/te:path-in-segment
            /te:label-restrictions/te:label-restriction
            /te:label-start/te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw dwdm-n?    dwdm-n
          +--rw cwdm-n?    cwdm-n
          +--rw flexi-n?   flexi-n
  augment /te:te/te:globals/te:named-path-constraints
            /te:named-path-constraint/te:path-in-segment
            /te:label-restrictions/te:label-restriction/te:label-end
            /te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw dwdm-n?    dwdm-n
          +--rw cwdm-n?    cwdm-n
          +--rw flexi-n?   flexi-n
  augment /te:te/te:globals/te:named-path-constraints
            /te:named-path-constraint/te:path-in-segment
            /te:label-restrictions/te:label-restriction/te:label-step
            /te:technology:
    +--:(wdm)
       +--rw wdm-label-step
          +--rw wson-dwdm-channel-spacing?   identityref
          +--rw wson-cwdm-channel-spacing?   identityref
          +--rw flexi-grid-cfg
             o--rw flexi-grid-channel-spacing?   identityref
             +--rw flexi-ncfg?                   identityref
             +--rw flexi-n-step?                 uint8
  augment /te:te/te:globals/te:named-path-constraints
            /te:named-path-constraint/te:path-out-segment
            /te:label-restrictions/te:label-restriction
            /te:label-start/te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw dwdm-n?    dwdm-n
          +--rw cwdm-n?    cwdm-n
          +--rw flexi-n?   flexi-n
  augment /te:te/te:globals/te:named-path-constraints
            /te:named-path-constraint/te:path-out-segment
            /te:label-restrictions/te:label-restriction/te:label-end
            /te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw dwdm-n?    dwdm-n
          +--rw cwdm-n?    cwdm-n
          +--rw flexi-n?   flexi-n
  augment /te:te/te:globals/te:named-path-constraints
            /te:named-path-constraint/te:path-out-segment
            /te:label-restrictions/te:label-restriction/te:label-step
            /te:technology:
    +--:(wdm)
       +--rw wdm-label-step
          +--rw wson-dwdm-channel-spacing?   identityref
          +--rw wson-cwdm-channel-spacing?   identityref
          +--rw flexi-grid-cfg
             o--rw flexi-grid-channel-spacing?   identityref
             +--rw flexi-ncfg?                   identityref
             +--rw flexi-n-step?                 uint8
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:optimizations/te:algorithm/te:metric
            /te:optimization-metric/te:explicit-route-exclude-objects
            /te:route-object-exclude-object/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw (grid-type)?
             +--:(fixed-dwdm)
             |  +--rw (fixed-single-or-multi-channel)?
             |     +--:(single)
             |     |  +--rw dwdm-n?               dwdm-n
             |     +--:(multi)
             |        +--rw subcarrier-dwdm-n*    dwdm-n
             +--:(cwdm)
             |  +--rw cwdm-n?                     cwdm-n
             +--:(flexi-grid)
                +--rw (single-or-super-channel)?
                   +--:(single)
                   |  +--rw flexi-n?              flexi-n
                   |  +--rw flexi-m?              flexi-m
                   o--:(super)
                   |  o--rw subcarrier-flexi-n* [flexi-n]
                   |     +--rw flexi-n    flexi-n
                   |     +--rw flexi-m?   flexi-m
                   +--:(multi)
                      +--rw frequency-slots
                         +--rw frequency-slot* [flexi-n]
                            +--rw flexi-n    flexi-n
                            +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:optimizations/te:algorithm/te:metric
            /te:optimization-metric/te:explicit-route-include-objects
            /te:route-object-include-object/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw (grid-type)?
             +--:(fixed-dwdm)
             |  +--rw (fixed-single-or-multi-channel)?
             |     +--:(single)
             |     |  +--rw dwdm-n?               dwdm-n
             |     +--:(multi)
             |        +--rw subcarrier-dwdm-n*    dwdm-n
             +--:(cwdm)
             |  +--rw cwdm-n?                     cwdm-n
             +--:(flexi-grid)
                +--rw (single-or-super-channel)?
                   +--:(single)
                   |  +--rw flexi-n?              flexi-n
                   |  +--rw flexi-m?              flexi-m
                   o--:(super)
                   |  o--rw subcarrier-flexi-n* [flexi-n]
                   |     +--rw flexi-n    flexi-n
                   |     +--rw flexi-m?   flexi-m
                   +--:(multi)
                      +--rw frequency-slots
                         +--rw frequency-slot* [flexi-n]
                            +--rw flexi-n    flexi-n
                            +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:explicit-route-objects
            /te:route-object-exclude-always/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw (grid-type)?
             +--:(fixed-dwdm)
             |  +--rw (fixed-single-or-multi-channel)?
             |     +--:(single)
             |     |  +--rw dwdm-n?               dwdm-n
             |     +--:(multi)
             |        +--rw subcarrier-dwdm-n*    dwdm-n
             +--:(cwdm)
             |  +--rw cwdm-n?                     cwdm-n
             +--:(flexi-grid)
                +--rw (single-or-super-channel)?
                   +--:(single)
                   |  +--rw flexi-n?              flexi-n
                   |  +--rw flexi-m?              flexi-m
                   o--:(super)
                   |  o--rw subcarrier-flexi-n* [flexi-n]
                   |     +--rw flexi-n    flexi-n
                   |     +--rw flexi-m?   flexi-m
                   +--:(multi)
                      +--rw frequency-slots
                         +--rw frequency-slot* [flexi-n]
                            +--rw flexi-n    flexi-n
                            +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:explicit-route-objects
            /te:route-object-include-exclude/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw (grid-type)?
             +--:(fixed-dwdm)
             |  +--rw (fixed-single-or-multi-channel)?
             |     +--:(single)
             |     |  +--rw dwdm-n?               dwdm-n
             |     +--:(multi)
             |        +--rw subcarrier-dwdm-n*    dwdm-n
             +--:(cwdm)
             |  +--rw cwdm-n?                     cwdm-n
             +--:(flexi-grid)
                +--rw (single-or-super-channel)?
                   +--:(single)
                   |  +--rw flexi-n?              flexi-n
                   |  +--rw flexi-m?              flexi-m
                   o--:(super)
                   |  o--rw subcarrier-flexi-n* [flexi-n]
                   |     +--rw flexi-n    flexi-n
                   |     +--rw flexi-m?   flexi-m
                   +--:(multi)
                      +--rw frequency-slots
                         +--rw frequency-slot* [flexi-n]
                            +--rw flexi-n    flexi-n
                            +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:path-in-segment/te:label-restrictions
            /te:label-restriction/te:label-start/te:te-label
            /te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw dwdm-n?    dwdm-n
          +--rw cwdm-n?    cwdm-n
          +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:path-in-segment/te:label-restrictions
            /te:label-restriction/te:label-end/te:te-label
            /te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw dwdm-n?    dwdm-n
          +--rw cwdm-n?    cwdm-n
          +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:path-in-segment/te:label-restrictions
            /te:label-restriction/te:label-step/te:technology:
    +--:(wdm)
       +--rw wdm-label-step
          +--rw wson-dwdm-channel-spacing?   identityref
          +--rw wson-cwdm-channel-spacing?   identityref
          +--rw flexi-grid-cfg
             o--rw flexi-grid-channel-spacing?   identityref
             +--rw flexi-ncfg?                   identityref
             +--rw flexi-n-step?                 uint8
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction
            /te:label-start/te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw dwdm-n?    dwdm-n
          +--rw cwdm-n?    cwdm-n
          +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction/te:label-end
            /te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw dwdm-n?    dwdm-n
          +--rw cwdm-n?    cwdm-n
          +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction/te:label-step
            /te:technology:
    +--:(wdm)
       +--rw wdm-label-step
          +--rw wson-dwdm-channel-spacing?   identityref
          +--rw wson-cwdm-channel-spacing?   identityref
          +--rw flexi-grid-cfg
             o--rw flexi-grid-channel-spacing?   identityref
             +--rw flexi-ncfg?                   identityref
             +--rw flexi-n-step?                 uint8
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:computed-paths-properties
            /te:computed-path-properties/te:path-properties
            /te:path-route-objects/te:path-route-object/te:type
            /te:label/te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--ro wdm-label
          +--ro (grid-type)?
             +--:(fixed-dwdm)
             |  +--ro (fixed-single-or-multi-channel)?
             |     +--:(single)
             |     |  +--ro dwdm-n?               dwdm-n
             |     +--:(multi)
             |        +--ro subcarrier-dwdm-n*    dwdm-n
             +--:(cwdm)
             |  +--ro cwdm-n?                     cwdm-n
             +--:(flexi-grid)
                +--ro (single-or-super-channel)?
                   +--:(single)
                   |  +--ro flexi-n?              flexi-n
                   |  +--ro flexi-m?              flexi-m
                   o--:(super)
                   |  o--ro subcarrier-flexi-n* [flexi-n]
                   |     +--ro flexi-n    flexi-n
                   |     +--ro flexi-m?   flexi-m
                   +--:(multi)
                      +--ro frequency-slots
                         +--ro frequency-slot* [flexi-n]
                            +--ro flexi-n    flexi-n
                            +--ro flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path/te:optimizations
            /te:algorithm/te:metric/te:optimization-metric
            /te:explicit-route-exclude-objects
            /te:route-object-exclude-object/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw (grid-type)?
             +--:(fixed-dwdm)
             |  +--rw (fixed-single-or-multi-channel)?
             |     +--:(single)
             |     |  +--rw dwdm-n?               dwdm-n
             |     +--:(multi)
             |        +--rw subcarrier-dwdm-n*    dwdm-n
             +--:(cwdm)
             |  +--rw cwdm-n?                     cwdm-n
             +--:(flexi-grid)
                +--rw (single-or-super-channel)?
                   +--:(single)
                   |  +--rw flexi-n?              flexi-n
                   |  +--rw flexi-m?              flexi-m
                   o--:(super)
                   |  o--rw subcarrier-flexi-n* [flexi-n]
                   |     +--rw flexi-n    flexi-n
                   |     +--rw flexi-m?   flexi-m
                   +--:(multi)
                      +--rw frequency-slots
                         +--rw frequency-slot* [flexi-n]
                            +--rw flexi-n    flexi-n
                            +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path/te:optimizations
            /te:algorithm/te:metric/te:optimization-metric
            /te:explicit-route-include-objects
            /te:route-object-include-object/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw (grid-type)?
             +--:(fixed-dwdm)
             |  +--rw (fixed-single-or-multi-channel)?
             |     +--:(single)
             |     |  +--rw dwdm-n?               dwdm-n
             |     +--:(multi)
             |        +--rw subcarrier-dwdm-n*    dwdm-n
             +--:(cwdm)
             |  +--rw cwdm-n?                     cwdm-n
             +--:(flexi-grid)
                +--rw (single-or-super-channel)?
                   +--:(single)
                   |  +--rw flexi-n?              flexi-n
                   |  +--rw flexi-m?              flexi-m
                   o--:(super)
                   |  o--rw subcarrier-flexi-n* [flexi-n]
                   |     +--rw flexi-n    flexi-n
                   |     +--rw flexi-m?   flexi-m
                   +--:(multi)
                      +--rw frequency-slots
                         +--rw frequency-slot* [flexi-n]
                            +--rw flexi-n    flexi-n
                            +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:explicit-route-objects/te:route-object-exclude-always
            /te:type/te:label/te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw (grid-type)?
             +--:(fixed-dwdm)
             |  +--rw (fixed-single-or-multi-channel)?
             |     +--:(single)
             |     |  +--rw dwdm-n?               dwdm-n
             |     +--:(multi)
             |        +--rw subcarrier-dwdm-n*    dwdm-n
             +--:(cwdm)
             |  +--rw cwdm-n?                     cwdm-n
             +--:(flexi-grid)
                +--rw (single-or-super-channel)?
                   +--:(single)
                   |  +--rw flexi-n?              flexi-n
                   |  +--rw flexi-m?              flexi-m
                   o--:(super)
                   |  o--rw subcarrier-flexi-n* [flexi-n]
                   |     +--rw flexi-n    flexi-n
                   |     +--rw flexi-m?   flexi-m
                   +--:(multi)
                      +--rw frequency-slots
                         +--rw frequency-slot* [flexi-n]
                            +--rw flexi-n    flexi-n
                            +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:explicit-route-objects
            /te:route-object-include-exclude/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw (grid-type)?
             +--:(fixed-dwdm)
             |  +--rw (fixed-single-or-multi-channel)?
             |     +--:(single)
             |     |  +--rw dwdm-n?               dwdm-n
             |     +--:(multi)
             |        +--rw subcarrier-dwdm-n*    dwdm-n
             +--:(cwdm)
             |  +--rw cwdm-n?                     cwdm-n
             +--:(flexi-grid)
                +--rw (single-or-super-channel)?
                   +--:(single)
                   |  +--rw flexi-n?              flexi-n
                   |  +--rw flexi-m?              flexi-m
                   o--:(super)
                   |  o--rw subcarrier-flexi-n* [flexi-n]
                   |     +--rw flexi-n    flexi-n
                   |     +--rw flexi-m?   flexi-m
                   +--:(multi)
                      +--rw frequency-slots
                         +--rw frequency-slot* [flexi-n]
                            +--rw flexi-n    flexi-n
                            +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:path-in-segment/te:label-restrictions
            /te:label-restriction/te:label-start/te:te-label
            /te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw dwdm-n?    dwdm-n
          +--rw cwdm-n?    cwdm-n
          +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:path-in-segment/te:label-restrictions
            /te:label-restriction/te:label-end/te:te-label
            /te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw dwdm-n?    dwdm-n
          +--rw cwdm-n?    cwdm-n
          +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:path-in-segment/te:label-restrictions
            /te:label-restriction/te:label-step/te:technology:
    +--:(wdm)
       +--rw wdm-label-step
          +--rw wson-dwdm-channel-spacing?   identityref
          +--rw wson-cwdm-channel-spacing?   identityref
          +--rw flexi-grid-cfg
             o--rw flexi-grid-channel-spacing?   identityref
             +--rw flexi-ncfg?                   identityref
             +--rw flexi-n-step?                 uint8
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:path-out-segment/te:label-restrictions
            /te:label-restriction/te:label-start/te:te-label
            /te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw dwdm-n?    dwdm-n
          +--rw cwdm-n?    cwdm-n
          +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:path-out-segment/te:label-restrictions
            /te:label-restriction/te:label-end/te:te-label
            /te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw dwdm-n?    dwdm-n
          +--rw cwdm-n?    cwdm-n
          +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:path-out-segment/te:label-restrictions
            /te:label-restriction/te:label-step/te:technology:
    +--:(wdm)
       +--rw wdm-label-step
          +--rw wson-dwdm-channel-spacing?   identityref
          +--rw wson-cwdm-channel-spacing?   identityref
          +--rw flexi-grid-cfg
             o--rw flexi-grid-channel-spacing?   identityref
             +--rw flexi-ncfg?                   identityref
             +--rw flexi-n-step?                 uint8
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:computed-paths-properties/te:computed-path-properties
            /te:path-properties/te:path-route-objects
            /te:path-route-object/te:type/te:label/te:label-hop
            /te:te-label/te:technology:
    +--:(wdm)
       +--ro wdm-label
          +--ro (grid-type)?
             +--:(fixed-dwdm)
             |  +--ro (fixed-single-or-multi-channel)?
             |     +--:(single)
             |     |  +--ro dwdm-n?               dwdm-n
             |     +--:(multi)
             |        +--ro subcarrier-dwdm-n*    dwdm-n
             +--:(cwdm)
             |  +--ro cwdm-n?                     cwdm-n
             +--:(flexi-grid)
                +--ro (single-or-super-channel)?
                   +--:(single)
                   |  +--ro flexi-n?              flexi-n
                   |  +--ro flexi-m?              flexi-m
                   o--:(super)
                   |  o--ro subcarrier-flexi-n* [flexi-n]
                   |     +--ro flexi-n    flexi-n
                   |     +--ro flexi-m?   flexi-m
                   +--:(multi)
                      +--ro frequency-slots
                         +--ro frequency-slot* [flexi-n]
                            +--ro flexi-n    flexi-n
                            +--ro flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:optimizations/te:algorithm
            /te:metric/te:optimization-metric
            /te:explicit-route-exclude-objects
            /te:route-object-exclude-object/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw (grid-type)?
             +--:(fixed-dwdm)
             |  +--rw (fixed-single-or-multi-channel)?
             |     +--:(single)
             |     |  +--rw dwdm-n?               dwdm-n
             |     +--:(multi)
             |        +--rw subcarrier-dwdm-n*    dwdm-n
             +--:(cwdm)
             |  +--rw cwdm-n?                     cwdm-n
             +--:(flexi-grid)
                +--rw (single-or-super-channel)?
                   +--:(single)
                   |  +--rw flexi-n?              flexi-n
                   |  +--rw flexi-m?              flexi-m
                   o--:(super)
                   |  o--rw subcarrier-flexi-n* [flexi-n]
                   |     +--rw flexi-n    flexi-n
                   |     +--rw flexi-m?   flexi-m
                   +--:(multi)
                      +--rw frequency-slots
                         +--rw frequency-slot* [flexi-n]
                            +--rw flexi-n    flexi-n
                            +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:optimizations/te:algorithm
            /te:metric/te:optimization-metric
            /te:explicit-route-include-objects
            /te:route-object-include-object/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw (grid-type)?
             +--:(fixed-dwdm)
             |  +--rw (fixed-single-or-multi-channel)?
             |     +--:(single)
             |     |  +--rw dwdm-n?               dwdm-n
             |     +--:(multi)
             |        +--rw subcarrier-dwdm-n*    dwdm-n
             +--:(cwdm)
             |  +--rw cwdm-n?                     cwdm-n
             +--:(flexi-grid)
                +--rw (single-or-super-channel)?
                   +--:(single)
                   |  +--rw flexi-n?              flexi-n
                   |  +--rw flexi-m?              flexi-m
                   o--:(super)
                   |  o--rw subcarrier-flexi-n* [flexi-n]
                   |     +--rw flexi-n    flexi-n
                   |     +--rw flexi-m?   flexi-m
                   +--:(multi)
                      +--rw frequency-slots
                         +--rw frequency-slot* [flexi-n]
                            +--rw flexi-n    flexi-n
                            +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:explicit-route-objects
            /te:route-object-exclude-always/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw (grid-type)?
             +--:(fixed-dwdm)
             |  +--rw (fixed-single-or-multi-channel)?
             |     +--:(single)
             |     |  +--rw dwdm-n?               dwdm-n
             |     +--:(multi)
             |        +--rw subcarrier-dwdm-n*    dwdm-n
             +--:(cwdm)
             |  +--rw cwdm-n?                     cwdm-n
             +--:(flexi-grid)
                +--rw (single-or-super-channel)?
                   +--:(single)
                   |  +--rw flexi-n?              flexi-n
                   |  +--rw flexi-m?              flexi-m
                   o--:(super)
                   |  o--rw subcarrier-flexi-n* [flexi-n]
                   |     +--rw flexi-n    flexi-n
                   |     +--rw flexi-m?   flexi-m
                   +--:(multi)
                      +--rw frequency-slots
                         +--rw frequency-slot* [flexi-n]
                            +--rw flexi-n    flexi-n
                            +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:explicit-route-objects
            /te:route-object-include-exclude/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw (grid-type)?
             +--:(fixed-dwdm)
             |  +--rw (fixed-single-or-multi-channel)?
             |     +--:(single)
             |     |  +--rw dwdm-n?               dwdm-n
             |     +--:(multi)
             |        +--rw subcarrier-dwdm-n*    dwdm-n
             +--:(cwdm)
             |  +--rw cwdm-n?                     cwdm-n
             +--:(flexi-grid)
                +--rw (single-or-super-channel)?
                   +--:(single)
                   |  +--rw flexi-n?              flexi-n
                   |  +--rw flexi-m?              flexi-m
                   o--:(super)
                   |  o--rw subcarrier-flexi-n* [flexi-n]
                   |     +--rw flexi-n    flexi-n
                   |     +--rw flexi-m?   flexi-m
                   +--:(multi)
                      +--rw frequency-slots
                         +--rw frequency-slot* [flexi-n]
                            +--rw flexi-n    flexi-n
                            +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:path-in-segment
            /te:label-restrictions/te:label-restriction
            /te:label-start/te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw dwdm-n?    dwdm-n
          +--rw cwdm-n?    cwdm-n
          +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:path-in-segment
            /te:label-restrictions/te:label-restriction/te:label-end
            /te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw dwdm-n?    dwdm-n
          +--rw cwdm-n?    cwdm-n
          +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:path-in-segment
            /te:label-restrictions/te:label-restriction/te:label-step
            /te:technology:
    +--:(wdm)
       +--rw wdm-label-step
          +--rw wson-dwdm-channel-spacing?   identityref
          +--rw wson-cwdm-channel-spacing?   identityref
          +--rw flexi-grid-cfg
             o--rw flexi-grid-channel-spacing?   identityref
             +--rw flexi-ncfg?                   identityref
             +--rw flexi-n-step?                 uint8
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction
            /te:label-start/te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw dwdm-n?    dwdm-n
          +--rw cwdm-n?    cwdm-n
          +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction/te:label-end
            /te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw dwdm-n?    dwdm-n
          +--rw cwdm-n?    cwdm-n
          +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction/te:label-step
            /te:technology:
    +--:(wdm)
       +--rw wdm-label-step
          +--rw wson-dwdm-channel-spacing?   identityref
          +--rw wson-cwdm-channel-spacing?   identityref
          +--rw flexi-grid-cfg
             o--rw flexi-grid-channel-spacing?   identityref
             +--rw flexi-ncfg?                   identityref
             +--rw flexi-n-step?                 uint8
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:computed-paths-properties
            /te:computed-path-properties/te:path-properties
            /te:path-route-objects/te:path-route-object/te:type
            /te:label/te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--ro wdm-label
          +--ro (grid-type)?
             +--:(fixed-dwdm)
             |  +--ro (fixed-single-or-multi-channel)?
             |     +--:(single)
             |     |  +--ro dwdm-n?               dwdm-n
             |     +--:(multi)
             |        +--ro subcarrier-dwdm-n*    dwdm-n
             +--:(cwdm)
             |  +--ro cwdm-n?                     cwdm-n
             +--:(flexi-grid)
                +--ro (single-or-super-channel)?
                   +--:(single)
                   |  +--ro flexi-n?              flexi-n
                   |  +--ro flexi-m?              flexi-m
                   o--:(super)
                   |  o--ro subcarrier-flexi-n* [flexi-n]
                   |     +--ro flexi-n    flexi-n
                   |     +--ro flexi-m?   flexi-m
                   +--:(multi)
                      +--ro frequency-slots
                         +--ro frequency-slot* [flexi-n]
                            +--ro flexi-n    flexi-n
                            +--ro flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:optimizations/te:algorithm
            /te:metric/te:optimization-metric
            /te:explicit-route-exclude-objects
            /te:route-object-exclude-object/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw (grid-type)?
             +--:(fixed-dwdm)
             |  +--rw (fixed-single-or-multi-channel)?
             |     +--:(single)
             |     |  +--rw dwdm-n?               dwdm-n
             |     +--:(multi)
             |        +--rw subcarrier-dwdm-n*    dwdm-n
             +--:(cwdm)
             |  +--rw cwdm-n?                     cwdm-n
             +--:(flexi-grid)
                +--rw (single-or-super-channel)?
                   +--:(single)
                   |  +--rw flexi-n?              flexi-n
                   |  +--rw flexi-m?              flexi-m
                   o--:(super)
                   |  o--rw subcarrier-flexi-n* [flexi-n]
                   |     +--rw flexi-n    flexi-n
                   |     +--rw flexi-m?   flexi-m
                   +--:(multi)
                      +--rw frequency-slots
                         +--rw frequency-slot* [flexi-n]
                            +--rw flexi-n    flexi-n
                            +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:optimizations/te:algorithm
            /te:metric/te:optimization-metric
            /te:explicit-route-include-objects
            /te:route-object-include-object/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw (grid-type)?
             +--:(fixed-dwdm)
             |  +--rw (fixed-single-or-multi-channel)?
             |     +--:(single)
             |     |  +--rw dwdm-n?               dwdm-n
             |     +--:(multi)
             |        +--rw subcarrier-dwdm-n*    dwdm-n
             +--:(cwdm)
             |  +--rw cwdm-n?                     cwdm-n
             +--:(flexi-grid)
                +--rw (single-or-super-channel)?
                   +--:(single)
                   |  +--rw flexi-n?              flexi-n
                   |  +--rw flexi-m?              flexi-m
                   o--:(super)
                   |  o--rw subcarrier-flexi-n* [flexi-n]
                   |     +--rw flexi-n    flexi-n
                   |     +--rw flexi-m?   flexi-m
                   +--:(multi)
                      +--rw frequency-slots
                         +--rw frequency-slot* [flexi-n]
                            +--rw flexi-n    flexi-n
                            +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:explicit-route-objects
            /te:route-object-exclude-always/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw (grid-type)?
             +--:(fixed-dwdm)
             |  +--rw (fixed-single-or-multi-channel)?
             |     +--:(single)
             |     |  +--rw dwdm-n?               dwdm-n
             |     +--:(multi)
             |        +--rw subcarrier-dwdm-n*    dwdm-n
             +--:(cwdm)
             |  +--rw cwdm-n?                     cwdm-n
             +--:(flexi-grid)
                +--rw (single-or-super-channel)?
                   +--:(single)
                   |  +--rw flexi-n?              flexi-n
                   |  +--rw flexi-m?              flexi-m
                   o--:(super)
                   |  o--rw subcarrier-flexi-n* [flexi-n]
                   |     +--rw flexi-n    flexi-n
                   |     +--rw flexi-m?   flexi-m
                   +--:(multi)
                      +--rw frequency-slots
                         +--rw frequency-slot* [flexi-n]
                            +--rw flexi-n    flexi-n
                            +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:explicit-route-objects
            /te:route-object-include-exclude/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw (grid-type)?
             +--:(fixed-dwdm)
             |  +--rw (fixed-single-or-multi-channel)?
             |     +--:(single)
             |     |  +--rw dwdm-n?               dwdm-n
             |     +--:(multi)
             |        +--rw subcarrier-dwdm-n*    dwdm-n
             +--:(cwdm)
             |  +--rw cwdm-n?                     cwdm-n
             +--:(flexi-grid)
                +--rw (single-or-super-channel)?
                   +--:(single)
                   |  +--rw flexi-n?              flexi-n
                   |  +--rw flexi-m?              flexi-m
                   o--:(super)
                   |  o--rw subcarrier-flexi-n* [flexi-n]
                   |     +--rw flexi-n    flexi-n
                   |     +--rw flexi-m?   flexi-m
                   +--:(multi)
                      +--rw frequency-slots
                         +--rw frequency-slot* [flexi-n]
                            +--rw flexi-n    flexi-n
                            +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:path-in-segment
            /te:label-restrictions/te:label-restriction
            /te:label-start/te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw dwdm-n?    dwdm-n
          +--rw cwdm-n?    cwdm-n
          +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:path-in-segment
            /te:label-restrictions/te:label-restriction/te:label-end
            /te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw dwdm-n?    dwdm-n
          +--rw cwdm-n?    cwdm-n
          +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:path-in-segment
            /te:label-restrictions/te:label-restriction/te:label-step
            /te:technology:
    +--:(wdm)
       +--rw wdm-label-step
          +--rw wson-dwdm-channel-spacing?   identityref
          +--rw wson-cwdm-channel-spacing?   identityref
          +--rw flexi-grid-cfg
             o--rw flexi-grid-channel-spacing?   identityref
             +--rw flexi-ncfg?                   identityref
             +--rw flexi-n-step?                 uint8
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction
            /te:label-start/te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw dwdm-n?    dwdm-n
          +--rw cwdm-n?    cwdm-n
          +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction/te:label-end
            /te:te-label/te:technology:
    +--:(wdm)
       +--rw wdm-label
          +--rw dwdm-n?    dwdm-n
          +--rw cwdm-n?    cwdm-n
          +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction/te:label-step
            /te:technology:
    +--:(wdm)
       +--rw wdm-label-step
          +--rw wson-dwdm-channel-spacing?   identityref
          +--rw wson-cwdm-channel-spacing?   identityref
          +--rw flexi-grid-cfg
             o--rw flexi-grid-channel-spacing?   identityref
             +--rw flexi-ncfg?                   identityref
             +--rw flexi-n-step?                 uint8
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:computed-paths-properties
            /te:computed-path-properties/te:path-properties
            /te:path-route-objects/te:path-route-object/te:type
            /te:label/te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--ro wdm-label
          +--ro (grid-type)?
             +--:(fixed-dwdm)
             |  +--ro (fixed-single-or-multi-channel)?
             |     +--:(single)
             |     |  +--ro dwdm-n?               dwdm-n
             |     +--:(multi)
             |        +--ro subcarrier-dwdm-n*    dwdm-n
             +--:(cwdm)
             |  +--ro cwdm-n?                     cwdm-n
             +--:(flexi-grid)
                +--ro (single-or-super-channel)?
                   +--:(single)
                   |  +--ro flexi-n?              flexi-n
                   |  +--ro flexi-m?              flexi-m
                   o--:(super)
                   |  o--ro subcarrier-flexi-n* [flexi-n]
                   |     +--ro flexi-n    flexi-n
                   |     +--ro flexi-m?   flexi-m
                   +--:(multi)
                      +--ro frequency-slots
                         +--ro frequency-slot* [flexi-n]
                            +--ro flexi-n    flexi-n
                            +--ro flexi-m?   flexi-m
  augment /te:te/te:lsps/te:lsp/te:lsp-actual-route-information
            /te:lsp-actual-route-information/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--ro wdm-label
          +--ro (grid-type)?
             +--:(fixed-dwdm)
             |  +--ro (fixed-single-or-multi-channel)?
             |     +--:(single)
             |     |  +--ro dwdm-n?               dwdm-n
             |     +--:(multi)
             |        +--ro subcarrier-dwdm-n*    dwdm-n
             +--:(cwdm)
             |  +--ro cwdm-n?                     cwdm-n
             +--:(flexi-grid)
                +--ro (single-or-super-channel)?
                   +--:(single)
                   |  +--ro flexi-n?              flexi-n
                   |  +--ro flexi-m?              flexi-m
                   o--:(super)
                   |  o--ro subcarrier-flexi-n* [flexi-n]
                   |     +--ro flexi-n    flexi-n
                   |     +--ro flexi-m?   flexi-m
                   +--:(multi)
                      +--ro frequency-slots
                         +--ro frequency-slot* [flexi-n]
                            +--ro flexi-n    flexi-n
                            +--ro flexi-m?   flexi-m
Figure 4: WDM Tunnel YANG tree

5.2. YANG Code

<CODE BEGINS> file "ietf-wdm-tunnel@2024-07-02.yang"

module ietf-wdm-tunnel {
  yang-version 1.1;
  namespace
    "urn:ietf:params:xml:ns:yang:ietf-wdm-tunnel";
  prefix "wdm-tnl";

  import ietf-te {
    prefix "te";
    reference
      "RFC YYYY: A YANG Data Model for Traffic Engineering Tunnels,
      Label Switched Paths and Interfaces.";
  }
  /* RFC Ed.: replace YYYY with the number assigned
     to the RFC once draft-ietf-teas-yang-te becomes an RFC.*/

  import ietf-layer0-types {
    prefix "l0-types";
  }

  import ietf-yang-types {
    prefix "yang";
  }

  organization
    "IETF CCAMP Working Group";
  contact
    "WG Web:   <http://tools.ietf.org/wg/ccamp/>
     WG List:  <mailto:ccamp@ietf.org>

     Editor:   Jorge E. Lopez de Vergara
               <jorge.lopez_vergara@uam.es>

     Editor:   Daniel Perdices
               <daniel.perdices@naudit.es>

     Editor:   Victor Lopez
               <victor.lopez@nokia.com>

     Editor:   Italo Busi
               <italo.busi@nokia.com>

     Editor:   Aihua Guo
               <aihuaguo.ietf@gmail.com>";

  description
    "This module defines a YANG data model for configuring
     and managing Wavelength-Division Multiplexing (WDM) switched
     optical tunnels.

    The model fully conforms to the Network Management
    Datastore Architecture (NMDA).

    Copyright (c) 2021 IETF Trust and the persons
    identified as authors of the code.  All rights reserved.

    Redistribution and use in source and binary forms, with or
    without modification, is permitted pursuant to, and subject
    to the license terms contained in, the Simplified BSD License
    set forth in Section 4.c of the IETF Trust's Legal Provisions
    Relating to IETF Documents
    (https://trustee.ietf.org/license-info).

    This version of this YANG module is part of RFC XXXX; see
    the RFC itself for full legal notices.";

  revision "2025-10-20" {
    description
      "Updated revision with combined WSON and Flexi-grid tunnel
       YANG model";

    reference
      "RFC XXXX: YANG data model for WDM tunnels";
    // RFC Ed.: replace XXXX with actual RFC number, update date
    // information and remove this note
  }

  /*
   * Identities
   */
  identity otsig-termination-type {
    description
      "Digital termination type applicable to OTSiG";
  }
  identity otsi-lane-termination-type {
    description
      "Digital termination type applicable to a single OTSi.
       The termination of an optical signal occurs at the
       reference point immediately before inverse multiplexing
       in the transmitting direction or immediately after
       inverse multiplexing in the receiving direction.";
  }
  identity digital-mapping-type {
    description
      "Digital mapping type for the client payload of
       transceivers";
  }
  identity inverse-mux-type {
    description
      "Inverse multiplexing type";
  }
  identity otsig-regeneration-layer {
    description
      "Level of 3R regeneration";
  }
  //TBD: types to be added

  /*
   * Groupings
   */
  grouping additional-transceiver-configuration-constraints {
    description
      "This grouping defines additional optional constraints for
       transceiver configurations related to tunnel selection.
       These constraints further limit the resources available
       to the tunnel. All constraints operate inclusively, using
       an AND logic. For example, if a specific frequency range
       is selected, the tunnel must also be constrained to match
       only that range.

       When these constraints are combined with the operational
       mode, the list of operational modes should exclude any
       modes that cannot satisfy the additional constraints.
       For instance, if the frequency is restricted to the C-band,
       the list of operational modes should not include any modes
       applicable only to the L-band.";

    leaf otsi-carrier-frequency {
        type l0-types:frequency-thz;
        description
          "OTSi carrier frequency, i.e. configured transmitter
           frequency.";
    }

    container tx-tune-constraints {
      description
        "The permissible tuning frequency range for the
         transmitter.";

      uses l0-types:transceiver-tuning-range;
    }

    leaf-list line-coding-bitrate {
      type identityref {
        base l0-types:line-coding;
      }
      description
        "The list of the bit rate/line coding of the optical
        tributary signal that constrains the configuration of
        the transceiver.";
      reference
        "ITU-T G.698.2 section 7.1.2";
    }

    leaf tx-channel-power {
      type l0-types:power-dbm;
      description
        "The preferred channel transmit power.";
    }

    leaf preferred-rx-channel-power {
      type l0-types:power-dbm;
      description
        "The preferred channel received power.";
    }

    uses l0-types:path-constraints;
  }

  grouping transceiver-constraints {
    description
      "This grouping defines constraints for transceiver
       configurations";

    leaf-list operational-modes {
      type string {
        length "1..255";
      }
      description
        "List of operational mode ids of the transceiver.";
    }

    uses additional-transceiver-configuration-constraints;
  }

  grouping transceiver-common-config {
    description
      "This grouping specifies common configurations
       for transceivers.";

    leaf transceiver-id {
      type uint32;
      description
        "Transceiver identifier";
    }
    leaf otsi-carrier-id {
      type uint16;
        description
          "OTSi carrier identifier associated with the
           transceiver.";
    }
    leaf otsi-carrier-frequency {
        type l0-types:frequency-thz;
        description
          "OTSi carrier frequency, i.e. configured transmitter
           frequency.";
    }
    leaf tx-channel-power {
      type l0-types:power-dbm;
      description
        "The preferred channel transmit power.";
    }
  }

  grouping regenerator-incoming-outgoing-common-state {
    description
      "This grouping specifies common states
       for incoming and outgoing transceivers
       associated with a regenerator group.";


    leaf operational-mode {
      type string {
        length "1..255";
      }
      description
        "Operational mode of the transceiver.";
    }

    leaf line-coding-bitrate {
      type identityref {
        base l0-types:line-coding;
      }
      description
        "The bit rate/line coding of the optical tributary
         signal that constrains the configuration of
         the transceiver.";
      reference
        "ITU-T G.698.2 section 7.1.2";
    }
  }

  grouping regenerator-incoming-outgoing-common-config {
    description
      "This grouping specifies common configurations
       for incoming and outgoing transceivers
       associated with a regenerator group.";

    uses regenerator-incoming-outgoing-common-state;

    leaf preferred-rx-channel-power {
      type l0-types:power-dbm;
      description
        "The preferred channel received power.";
    }

    uses l0-types:path-constraints;
  }

  grouping transponder-digital-termination-config {
    description
      "This grouping specifies the configuration of
       digital layer termination applicable to the
       transceivers.";

    container digital-terminations {
      description
        "Digital layer termination applicable to the transceivers.";

      list digital-termination {
        key "index";
        description
          "Sequence of digital layer terminations.";

        leaf index {
          type uint8;
          description
            "An index number used to identify entries in the list,
             organized in ascending order of their values.";
        }

        leaf termination-type {
          type identityref {
            base otsig-termination-type;
          }
          description
          "Digital layer termination before/after inverse
           multiplexing in the tx/rx direction of the transceiver,
           that applies to the whole OTSiG, also applicable to
           the special case when there is a single OTSi in the
           OTSiG, i.e. without inverse multiplexing.";
        }

        leaf mapping-type {
          type identityref {
            base digital-mapping-type;
          }
          description
            "Identifies the type of digital mapping of the
             client payload.";
        }
      }
    }
  }

  grouping transceiver-inverse-multiplexing-config {
    description
      "This grouping specifies inverse-multiplexing configurations
       applicable to multi-carrier transceivers.";

    container inverse-multiplexing {
      presence
        "When present, it indicates that the transceiver
         supports inverse multiplexing.";

      description
        "Transceiver configuration for inverse multiplexing.";

      leaf inverse-mux-type {
        type identityref {
          base inverse-mux-type;
        }
        description
          "Type of inverse multiplexing.";
      }

      leaf otsi-lane-termination-type {
        type identityref {
          base otsi-lane-termination-type;
        }
        description
          "Digital layer termination before/after inverse
           multiplexing in the rx/tx direction of the
           transceiver, that applies to a single OTSi within
           the inverse multiplexing group.";
      }

      container additional-transceivers {
        description
          "Configuration for additional transceivers with
           an index value 1 and higher within the same
           inverse multiplexing group.";

        leaf index {
          type uint8 {
            range "1..max";
          }
          description
            "The index of the transceiver in the inverse
             multiplexing group starting from value 1.";
        }

        uses transceiver-common-config;
      }
    }
  }

  grouping transceiver-config {
    description
      "This grouping specifies configurations for transceivers
       at source, destination nodes, as well as at regenerator
       nodes with a single pair of regenerator.";

    leaf transponder-id {
      type uint32;
      description "transponder identifier";
    }

    uses transponder-digital-termination-config;

    container transceiver {
      description
         "Specifies transceiver configurations. The attributes
          specified in this container, excluding those within
          the inverse-multiplexing container, apply to a single
          transceiver when inverse multiplexing is not supported,
          as well as to the first transceiver, identified by an
          index value of 0 when inverse multiplexing is enabled.

          Attributes within the inverse-multiplexing container
          are applicable exclusively to transceivers with an
          index value of 1 or higher, belonging to the same
          inverse multiplexing group.";

      uses transceiver-common-config;

      uses regenerator-incoming-outgoing-common-config;

      uses transceiver-inverse-multiplexing-config;
    }
  }

  grouping multi-regen-transceiver-config {
    description
      "This grouping specifies configurations for transceivers
       at at regenerator nodes with multiple pairs of
       regenerators.";

    leaf transponder-id {
      type uint32;
      description "transponder identifier";
    }
    container transceiver {
      description
         "Specifies transceiver configurations at a regenerator
          node with multiple pairs of regenerators.";

      uses transceiver-common-config;
    }
  }

  grouping regenerator-common-config {
    description
      "This grouping defines a set of common attributes
      applicable to 3R regenerators.";

    leaf regen-group-id {
      type uint32;
      description
        "3R group identifier.";
    }
    leaf regeneration-layer {
      type identityref {
        base otsig-regeneration-layer;
      }
      description
        "Indicate the chosen level of digital layer
        regeneration, e.g. ODU, FlexOnM, before/after inverse
        multiplexing in the tx/rx direction, that applies to
        the whole OTSiG. It also applies to the case when
        there is only one OTSi in the OTSiG, i.e. without
        inverse multiplexing, in which case the number of
        OTSis in the OTSiGs before/after the regenerator
        may be different.";
    }
  }
  grouping path-transceiver-config {
    description
      "This grouping defines a set of transceivers on a node,
       serving as either source transceivers, destination
       transceivers, or regenerators.";

    choice node-position {
      description
        "The relative position of the node within the path.";
      case source {
        container source-transponder {
          description
            "Constraints for configuring transceivers at the
             source node transponder.";

          uses transceiver-config;
        }
      }
      case destination {
        container destination-transponder {
          description
            "Constraints for configuring transceivers at the
             source node transponder.";

          uses transceiver-config;
        }
      }
      case regenerator {
        container regenerator {
          description
            "Constraints for configuring transponders at the
             regenerator node with a pair of transponder as
             regenerator.

             The forward direction refers to the direction of
             the optical path traversing from the source to the
             destination, while the reverse direction refers to
             direction of the optical path, traveling from the
             destination back to the source.

             For uni-directional regenerators, one transponder,
             labeled 'incoming', regenerates signals in the
             forward direction, while another transponder,
             labeled 'outgoing', handles signal regeneration
             in the reverse direction.

             For bi-directional, or back-to-back regenerators,
             one transponder, labeled 'incoming', receives and
             transmits signal from/to the same segment of the
             optical path toward the source, while another
             transponder, labeled 'outgoing', receives and
             transmits signal from/to the same segment of the
             optical path toward the destination.";

          uses regenerator-common-config;

          container incoming-transponder {
            description
              "Constraints for transceiver configurations in the
               incoming direction of the regenerator.";

            uses transceiver-config;
          }

          container outgoing-transponder {
            description
              "Constraints for transceiver configurations at the
               outgoing direction of the regenerator";

            uses transceiver-config;
          }
        }
      }
      case regenerators {
        container regenerators {
          description
            "Constraints for configuring transponders at the
             regenerator node with multiple transponder pairs
             (therefore, in multiple regenerator groups) as
             regenerators. A such example is described in
             ITU-T G.798 Amd.3 for FlexOxR.

             The forward direction refers to the direction of
             the optical path traversing from the source to the
             destination, while the reverse direction refers to
             direction of the optical path, traveling from the
             destination back to the source.

             For uni-directional regenerators, mulitple
             transponders, labeled 'incoming', together regenerate
             signals in the forward direction, while another
             multiple transponders, labeled 'outgoing', handles
             signal regeneration in the reverse direction.

             For bi-directional, or back-to-back regenerators,
             mulitple transponder, labeled 'incoming', receive and
             transmits signal from/to the same segment of the
             optical path toward the source, while another
             multiple transponder, labeled 'outgoing', receives and
             transmits signal from/to the same segment of the
             optical path toward the destination.";

          container common-incoming {
            description
              "Common configuration for transponders in the incoming
               direction.";

            uses regenerator-incoming-outgoing-common-config;
          }

          container common-outgoing {
            description
              "Common configuration for transponders in the outgoing
               direction.";

            uses regenerator-incoming-outgoing-common-config;
          }

          list regenerator {
            key "index";

            description
              "A list of regenerators used at the regenerator
               node.";

            leaf index {
              type uint8;
              description
                "An index number used to identify a regenerator
                 in the list, organized in ascending order of their
                 values.";
            }
            uses regenerator-common-config;

            container incoming-transponder {
              description
                "Constraints for transceiver configurations in the
                 incoming direction of the regenerator.";

              uses multi-regen-transceiver-config;
            }

            container outgoing-transponder {
              description
                "Constraints for transceiver configurations at the
                 outgoing direction of the regenerator";

              uses multi-regen-transceiver-config;
            }
          }
        }
      }
    }
  }

  grouping transceiver-measured-parameters {
    description
      "Measured transceiver parameters.";

    container pre-fec-ber {
      description
        "Timestamp and value of the Pre-FEC Bit Error Rate (BER)
         of the received signal.";

      leaf timestamp {
        type yang:timestamp;
        description
          "Timestamp associated with the Pre-FEC BER.";
      }

      leaf value {
        type decimal64 {
          fraction-digits 18;
        }
        description
          "Pre-FEC BER of the received signal.";
      }
    }

    container q-factor {
      description
        "Timestamp and value of the estimated Q-factor based on
         the pre-FEC BER.";

      leaf timestamp {
        type yang:timestamp;
        description
          "Timestamp associated with the Q-factor.";
      }

      leaf value {
        type l0-types:decimal-2-or-unknown;
        units "dB";
        description
          "Estimated Q-factor based on the pre-FEC BER.";
      }
    }
  }

  grouping transceiver-state {
    description
      "This grouping specifies transceiver state parameters
       at source, destination nodes, as well as at regenerator
       nodes with a single pair of regenerator.";

    leaf transponder-id {
      type uint32;
      description "transponder identifier";
    }

    uses transponder-digital-termination-config;

    container transceiver {
      description
         "Specifies transceiver states. The attributes
          specified in this container, excluding those within
          the inverse-multiplexing container, apply to a single
          transceiver when inverse multiplexing is not supported,
          as well as to the first transceiver, identified by an
          index value of 0 when inverse multiplexing is enabled.

          Attributes within the inverse-multiplexing container
          are applicable exclusively to transceivers with an
          index value of 1 or higher, belonging to the same
          inverse multiplexing group.";

      uses transceiver-common-config;

      uses regenerator-incoming-outgoing-common-state;

      uses l0-types:common-transceiver-readonly-param;

      uses transceiver-inverse-multiplexing-config;
    }
  }

  grouping e2e-media-channel-info {
    description
      "This grouping includes end-to-end media channel path id
       information.";

    leaf-list e2e-mc-path-id {
      type uint16;
      description
        "The list of the possible end-to-end Media Channel
        (e2e-MC) paths associated with the OTSi which have
        different optical impairments.

        This list is meaningful in case the OTSi can be associated
        with multiple end-to-end Media Channel (e2e-MC) paths
        (e.g., when OPS protection is configured).

        The list can be empty when the OTSi has only one
        e2e-MC path.";
    }
  }

  grouping path-transceiver-state {
    description
      "This grouping defines a set of transceivers on a node,
       serving as either source transceivers, destination
       transceivers, or regenerators.";

    choice node-position {
      description
        "The relative position of the node within the path.";
      case source {
        container source-transponder {
          description
            "Transceiver states at the source node transponder.";

          uses transceiver-state;
        }
      }
      case destination {
        container destination-transponder {
          description
            "Transceiver states at the destination node
             transponder.";

          uses transceiver-state;
        }
      }
      case regenerator {
        container regenerator {
          description
            "The states of a regenerator node with a pair of
             transponder as regenerator.

             The forward direction refers to the direction of
             the optical path traversing from the source to the
             destination, while the reverse direction refers to
             direction of the optical path, traveling from the
             destination back to the source.

             For uni-directional regenerators, one transponder,
             labeled 'incoming', regenerates signals in the
             forward direction, while another transponder,
             labeled 'outgoing', handles signal regeneration
             in the reverse direction.

             For bi-directional, or back-to-back regenerators,
             one transponder, labeled 'incoming', receives and
             transmits signal from/to the same segment of the
             optical path toward the source, while another
             transponder, labeled 'outgoing', receives and
             transmits signal from/to the same segment of the
             optical path toward the destination.";

          uses regenerator-common-config;

          container incoming-transponder {
            description
              "Constraints for transceiver configurations in the
               incoming direction of the regenerator.";

            uses transceiver-state;
          }

          container outgoing-transponder {
            description
              "Constraints for transceiver configurations at the
               outgoing direction of the regenerator";

            uses transceiver-state;
          }
        }
      }
      case regenerators {
        container regenerators {
          description
            "Regenerator states at a regenerator node formed by
             multiple parallel regenerators. A such example is
             described in ITU-T G.798 Amd.3 for FlexOxR.

             The forward direction refers to the direction of
             the optical path traversing from the source to the
             destination, while the reverse direction refers to
             direction of the optical path, traveling from the
             destination back to the source.

             For uni-directional regenerators, mulitple
             transponders, labeled 'incoming', together regenerate
             signals in the forward direction, while another
             multiple transponders, labeled 'outgoing', handles
             signal regeneration in the reverse direction.

             For bi-directional, or back-to-back regenerators,
             mulitple transponder, labeled 'incoming', receive and
             transmits signal from/to the same segment of the
             optical path toward the source, while another
             multiple transponder, labeled 'outgoing', receives and
             transmits signal from/to the same segment of the
             optical path toward the destination.";

          container common-incoming {
            description
              "Common configuration for transponders in the incoming
               direction.";

            uses regenerator-incoming-outgoing-common-state;
          }

          container common-outgoing {
            description
              "Common configuration for transponders in the outgoing
               direction.";

            uses regenerator-incoming-outgoing-common-state;
          }

          list regenerator {
            key "index";

            description
              "A list of regenerators used at the
               regenerator node.";

            leaf index {
              type uint8;
              description
                "An index number used to identify a regenerator
                 in the list, organized in ascending order of their
                 values.";
            }
            uses regenerator-common-config;

            container incoming-transponder {
              description
                "Constraints for transceiver configurations in the
                 incoming direction of the regenerator.";

              uses multi-regen-transceiver-config;
            }

            container outgoing-transponder {
              description
                "Constraints for transceiver configurations at the
                 outgoing direction of the regenerator";

              uses multi-regen-transceiver-config;
            }
          }
        }
      }
    }
  }

  grouping global-transceiver-constraint {
    description
      "This grouping defines the constraints for transceiver
       configurations.";

    container transceiver-constraint {
      description
        "Constraints for transceiver configurations";

      uses transceiver-constraints;
    }
  }

  grouping wdm-constraint {
    description
      "Grouping for WDM tunnel constraints";

    container wdm-constraint {
      description
        "WDM tunnel constraints.";

      uses global-transceiver-constraint;

      leaf use-regen {
        type boolean;
        default false;
        description
          "Indicate whether or not regenerators (e.g. 3R) should be
           considered. When this parameter is set to true, the
           tunnel path may include a regen when the path is not
           feasible for direct optical reach.";
      }

      /*
      leaf-list regen-levels {
        when '../use-regen = "true"' {
          description
            "Regenerator must be enabled for the regen levels
             to be considered.";
        }
        //type l0-types:regen-level;
        type string;
        description
          "Indicate the levels of 3R regeration permitted by
           the tunnel.";
      }
      */

      leaf wavelength-conversion {
        when '../use-regen = "true"' {
          description
            "Regenerator must be enabled for wavelength conversion
             to be considered.";
        }
        type boolean;
        default false;
        description
          "Indicate whether or not wavelength conversion is allowed
           along the tunnel path. Applicable only when 3R
           regeneration is enabled.";
      }

      uses l0-types:tunnel-attributes;

      leaf guard-band-size {
        type l0-types:frequency-thz;
        description
          "Guard band size in THz.";
      }

      leaf matching-fwd-rev-wavelength {
        type boolean;
        default true;
        description
          "Indicate whether or not the assigned channels for
           forward and reverse wavelength path must be the same.";
      }

      leaf allow-retuning {
        type boolean;
        default false;
        description
          "Indicate whether or not re-tuning is allowed when one or
           more paths of a WDM tunnel is being restored. Typically,
           wavelength retuning is not preferred for wavelength
           planning considerations.";
      }
      leaf delta-power {
        type l0-types:power-ratio;
        description
          "Delta power in dB indicating the per-channel power
           deviation from the nominal power per channel at the
           output of an OMS.";
      }
    }
  }

  /*
   * Data nodes
   */

  /*
   * Global constraints for WDM tunnel
   */
  augment "/te:te/te:tunnels/te:tunnel" {
    description
      "Augment with additional parameters required for WDM
       tunnel configurations.";
    uses wdm-constraint;
    //uses digital-layer-constraint;
  }

  /*
   * Transceiver constraints for primary path
   * Applicable to starting, terminating and regenerator
   * transceivers.
   */
  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:explicit-route-objects/"
        + "te:route-object-include-exclude/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop" {
    description
      "Augment TE primary explicit path (include or exclude)
       with transceiver configurations.";

    uses path-transceiver-config;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:explicit-route-objects/"
        + "te:route-object-exclude-always/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop" {
    description
      "Augment TE primary explicit path (exclude always)
       with transceiver configurations.";

    uses path-transceiver-config;
  }

  /*
   * Transceiver constraints for primary reverse path
   * Applicable to starting, terminating and regenerator
   * transceivers.
   */
  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:primary-reverse-path/"
        + "te:explicit-route-objects/"
        + "te:route-object-include-exclude/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop" {
    description
      "Augment TE primary reverse explicit path (include or exclude)
       with transceiver configurations.";

    uses path-transceiver-config;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:primary-reverse-path/"
        + "te:explicit-route-objects/"
        + "te:route-object-exclude-always/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop" {
    description
      "Augment TE primary reverse explicit path (exclude always)
       with transceiver configurations.";

    uses path-transceiver-config;
  }

  /*
   * Transceiver constraints for secondary path
   * Applicable to starting, terminating and regenerator
   * transceivers.
   */
  augment "/te:te/te:tunnels/te:tunnel/te:secondary-paths/"
        + "te:secondary-path/te:explicit-route-objects/"
        + "te:route-object-include-exclude/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop" {
    description
      "Augment TE secondary explicit path (include or exclude)
       with transceiver configurations.";

    uses path-transceiver-config;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:secondary-paths/"
        + "te:secondary-path/te:explicit-route-objects/"
        + "te:route-object-exclude-always/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop" {
    description
      "Augment TE secondary explicit path (exclude always)
       with transceiver configurations.";

    uses path-transceiver-config;
  }

  /*
   * Transceiver constraints for secondary reverse path
   * Applicable to starting, terminating and regenerator
   * transceivers.
   */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/"
        + "te:secondary-reverse-path/"
        + "te:explicit-route-objects/"
        + "te:route-object-include-exclude/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop" {
    description
      "Augment TE secondary reverse explicit path (include or
       exclude) with transceiver configurations.";

    uses path-transceiver-config;
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/"
        + "te:secondary-reverse-path/"
        + "te:explicit-route-objects/"
        + "te:route-object-exclude-always/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop" {
    description
      "Augment TE secondary reverse explicit path (exclude always)
       with transceiver configurations.";

    uses path-transceiver-config;
  }

  /*
   * Computed transceiver properties for primary path.
   */
  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop" {
    description
      "Augment TE computed primary path with transceiver
       properties.";

    uses path-transceiver-state;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:source/"
        + "wdm-tnl:source-transponder/wdm-tnl:transceiver" {
    description
      "Augment source transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:destination/"
        + "wdm-tnl:destination-transponder/wdm-tnl:transceiver" {
    description
      "Augment destination transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:regenerator/"
        + "wdm-tnl:regenerator/"
        + "wdm-tnl:incoming-transponder/wdm-tnl:transceiver" {
    description
      "Augment regen incoming transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:regenerator/"
        + "wdm-tnl:regenerator/"
        + "wdm-tnl:outgoing-transponder/wdm-tnl:transceiver" {
    description
      "Augment regen outgoing transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:regenerators/"
        + "wdm-tnl:regenerators/wdm-tnl:common-incoming" {
    description
      "Augment regen incoming transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:regenerators/"
        + "wdm-tnl:regenerators/wdm-tnl:common-outgoing" {
    description
      "Augment regen outgoing transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  /*
   * Computed transceiver properties for primary reverse path.
   */
  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:primary-reverse-path/"
        + "te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop" {
    description
      "Augment TE computed primary path with transceiver
       properties.";

    uses path-transceiver-state;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:primary-reverse-path/"
        + "te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:source/"
        + "wdm-tnl:source-transponder/wdm-tnl:transceiver" {
    description
      "Augment source transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:primary-reverse-path/"
        + "te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:destination/"
        + "wdm-tnl:destination-transponder/wdm-tnl:transceiver" {
    description
      "Augment destination transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:primary-reverse-path/"
        + "te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:regenerator/"
        + "wdm-tnl:regenerator/"
        + "wdm-tnl:incoming-transponder/wdm-tnl:transceiver" {
    description
      "Augment regen incoming transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:primary-reverse-path/"
        + "te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:regenerator/"
        + "wdm-tnl:regenerator/"
        + "wdm-tnl:outgoing-transponder/wdm-tnl:transceiver" {
    description
      "Augment regen outgoing transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:primary-reverse-path/"
        + "te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:regenerators/"
        + "wdm-tnl:regenerators/wdm-tnl:common-incoming" {
    description
      "Augment regen incoming transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:primary-reverse-path/"
        + "te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:regenerators/"
        + "wdm-tnl:regenerators/wdm-tnl:common-outgoing" {
    description
      "Augment regen outgoing transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  /*
   * Computed transceiver properties for secondary path.
   */
  augment "/te:te/te:tunnels/te:tunnel/te:secondary-paths/"
        + "te:secondary-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop" {
    description
      "Augment TE computed primary path with transceiver
       properties.";

    uses path-transceiver-state;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:secondary-paths/"
        + "te:secondary-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:source/"
        + "wdm-tnl:source-transponder/wdm-tnl:transceiver" {
    description
      "Augment source transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:secondary-paths/"
        + "te:secondary-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:destination/"
        + "wdm-tnl:destination-transponder/wdm-tnl:transceiver" {
    description
      "Augment destination transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:secondary-paths/"
        + "te:secondary-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:regenerator/"
        + "wdm-tnl:regenerator/"
        + "wdm-tnl:incoming-transponder/wdm-tnl:transceiver" {
    description
      "Augment regen incoming transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:secondary-paths/"
        + "te:secondary-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:regenerator/"
        + "wdm-tnl:regenerator/"
        + "wdm-tnl:outgoing-transponder/wdm-tnl:transceiver" {
    description
      "Augment regen outgoing transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:secondary-paths/"
        + "te:secondary-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:regenerators/"
        + "wdm-tnl:regenerators/wdm-tnl:common-incoming" {
    description
      "Augment regen incoming transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:secondary-paths/"
        + "te:secondary-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:regenerators/"
        + "wdm-tnl:regenerators/wdm-tnl:common-outgoing" {
    description
      "Augment regen outgoing transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  /*
   * Computed transceiver properties for secondary reverse path.
   */
  augment "/te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths/"
        + "te:secondary-reverse-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop" {
    description
      "Augment TE computed primary path with transceiver
       properties.";

    uses path-transceiver-state;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths/"
        + "te:secondary-reverse-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:source/"
        + "wdm-tnl:source-transponder/wdm-tnl:transceiver" {
    description
      "Augment source transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths/"
        + "te:secondary-reverse-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:destination/"
        + "wdm-tnl:destination-transponder/wdm-tnl:transceiver" {
    description
      "Augment destination transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths/"
        + "te:secondary-reverse-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:regenerator/"
        + "wdm-tnl:regenerator/"
        + "wdm-tnl:incoming-transponder/wdm-tnl:transceiver" {
    description
      "Augment regen incoming transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths/"
        + "te:secondary-reverse-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:regenerator/"
        + "wdm-tnl:regenerator/"
        + "wdm-tnl:outgoing-transponder/wdm-tnl:transceiver" {
    description
      "Augment regen outgoing transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths/"
        + "te:secondary-reverse-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:regenerators/"
        + "wdm-tnl:regenerators/wdm-tnl:common-incoming" {
    description
      "Augment regen incoming transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths/"
        + "te:secondary-reverse-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:regenerators/"
        + "wdm-tnl:regenerators/wdm-tnl:common-outgoing" {
    description
      "Augment regen outgoing transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  /*
   * Actual transceiver state.
   */
  augment "/te:te/te:lsps/te:lsp/"
        + "te:lsp-actual-route-information/"
        + "te:lsp-actual-route-information/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop" {
    description
      "Augment TE LSP with WDM path state.";

    uses path-transceiver-state;
  }

  augment "/te:te/te:lsps/te:lsp/"
        + "te:lsp-actual-route-information/"
        + "te:lsp-actual-route-information/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:source/"
        + "wdm-tnl:source-transponder/wdm-tnl:transceiver" {
    description
      "Augment source transceiver with additional measured
       parameters.";

    uses transceiver-measured-parameters;
  }

  augment "/te:te/te:lsps/te:lsp/"
        + "te:lsp-actual-route-information/"
        + "te:lsp-actual-route-information/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:destination/"
        + "wdm-tnl:destination-transponder/wdm-tnl:transceiver" {
    description
      "Augment destination transceiver with additional measured
       parameters.";

    uses transceiver-measured-parameters;
  }

  augment "/te:te/te:lsps/te:lsp/"
        + "te:lsp-actual-route-information/"
        + "te:lsp-actual-route-information/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:regenerator/"
        + "wdm-tnl:regenerator/"
        + "wdm-tnl:incoming-transponder/wdm-tnl:transceiver" {
    description
      "Augment regen incoming transceiver with additional measured
       parameters.";

    uses transceiver-measured-parameters;
  }

  augment "/te:te/te:lsps/te:lsp/"
        + "te:lsp-actual-route-information/"
        + "te:lsp-actual-route-information/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:regenerator/"
        + "wdm-tnl:regenerator/"
        + "wdm-tnl:outgoing-transponder/wdm-tnl:transceiver" {
    description
      "Augment regen outgoing transceiver with additional measured
       parameters.";

    uses transceiver-measured-parameters;
  }

  augment "/te:te/te:lsps/te:lsp/"
        + "te:lsp-actual-route-information/"
        + "te:lsp-actual-route-information/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:regenerators/"
        + "wdm-tnl:regenerators/wdm-tnl:common-incoming" {
    description
      "Augment regen incoming transceiver with additional measured
       parameters.";

    uses transceiver-measured-parameters;
  }

  augment "/te:te/te:lsps/te:lsp/"
        + "te:lsp-actual-route-information/"
        + "te:lsp-actual-route-information/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:regenerators/"
        + "wdm-tnl:regenerators/wdm-tnl:common-outgoing" {
    description
      "Augment regen outgoing transceiver with additional measured
       parameters.";

    uses transceiver-measured-parameters;
  }

  augment "/te:te/te:lsps/te:lsp/"
        + "te:lsp-actual-route-information/"
        + "te:lsp-actual-route-information/te:type/"
        + "te:numbered-link-hop/te:numbered-link-hop" {
    description
      "Augment TE LSP with end-to-end media channel
       information.";

    uses e2e-media-channel-info;
  }

  augment "/te:te/te:lsps/te:lsp/"
        + "te:lsp-actual-route-information/"
        + "te:lsp-actual-route-information/te:type/"
        + "te:unnumbered-link-hop/te:unnumbered-link-hop" {
    description
      "Augment TE LSP with end-to-end media channel
       information.";

    uses e2e-media-channel-info;
  }

  /*
   * Augment TE label range information
   */

  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-in-segment/"
        + "te:label-restrictions/te:label-restriction" {
    description
      "Augment TE label range information for the ingress segment
      of the named path constraint.";
    uses l0-types:wdm-label-range-info;
  }

  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-out-segment/"
        + "te:label-restrictions/"
        + "te:label-restriction" {
    description
      "Augment TE label range information for the egress segment
      of the named path constraint.";
    uses l0-types:wdm-label-range-info;
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description
      "Augment TE label range information for the ingress segment
      of the primay path.";
    uses l0-types:wdm-label-range-info;
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description
      "Augment TE label range information for the egress segment
      of the primay path.";
    uses l0-types:wdm-label-range-info;
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description
      "Augment TE label range information for the ingress segment
      of the primay reverse path.";
    uses l0-types:wdm-label-range-info;
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description
      "Augment TE label range information for the egress segment
      of the primay reverse path.";
    uses l0-types:wdm-label-range-info;
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description
      "Augment TE label range information for the ingress segment
      of the secondary path.";
    uses l0-types:wdm-label-range-info;
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description
      "Augment TE label range information for the egress segment
      of the secondary path.";
    uses l0-types:wdm-label-range-info;
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description
      "Augment TE label range information for the ingress segment
      of the secondary reverse path.";
    uses l0-types:wdm-label-range-info;
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description
      "Augment TE label range information for the egress segment
      of the secondary reverse path.";
    uses l0-types:wdm-label-range-info;
  }

  /*
   * Augment TE label.
   */
  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/"
        + "te:explicit-route-objects/"
        + "te:route-object-exclude-always/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the explicit route objects always
      excluded by the path computation with the named path
      constraint.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/"
        + "te:explicit-route-objects/"
        + "te:route-object-include-exclude/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the explicit route objects included
      or excluded by the path computation with the named path
      constraint.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }
  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-in-segment/"
        + "te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range start for the ingress segment
      of the named path constraint.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-in-segment/"
        + "te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range end for the ingress segment
      of the named path constraint.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-in-segment/"
        + "te:label-restrictions/te:label-restriction/"
        + "te:label-step/te:technology" {
    description
      "Augment TE label range step for the ingress segment
      of the named path constraint.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-out-segment/"
        + "te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range start for the egress segment
      of the named path constraint.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-out-segment/"
        + "te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range end for the egress segment
      of the named path constraint.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-out-segment/"
        + "te:label-restrictions/te:label-restriction/"
        + "te:label-step/te:technology" {
    description
      "Augment TE label range step for the egress segment
      of the named path constraint.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-exclude-objects/"
        + "te:route-object-exclude-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the optimization of the explicit
      route objects excluded by the path computation of the primary
      path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-include-objects/"
        + "te:route-object-include-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the optimization of the explicit
      route objects included by the path computation of the primary
      path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:explicit-route-objects/"
        + "te:route-object-exclude-always/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the explicit route objects always
      excluded by the path computation of the primary path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:explicit-route-objects/"
        + "te:route-object-include-exclude/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the explicit route objects included
      or excluded by the path computation of the primary path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range start for the ingress segment
      of the primay path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range end for the ingress segment
      of the primay path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-step/te:technology" {
    description
      "Augment TE label range step for the ingress segment
      of the primay path.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range start for the egress segment
      of the primay path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range end for the egress segment
      of the primay path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-step/te:technology" {
    description
      "Augment TE label range end for the egress segment
      of the primay path.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the route object of the computed
      primary path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-exclude-objects/"
        + "te:route-object-exclude-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the optimization of the explicit
      route objects excluded by the path computation of the primary
      reverse path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-include-objects/"
        + "te:route-object-include-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the optimization of the explicit
      route objects included by the path computation of the primary
      reverse path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:explicit-route-objects/"
        + "te:route-object-exclude-always/"
        + "te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the explicit route objects always
      excluded by the path computation of the primary reverse
      path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:explicit-route-objects/"
        + "te:route-object-include-exclude/"
        + "te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the explicit route objects included
      or excluded by the path computation of the primary reverse
      path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range start for the ingress segment
      of the primay reverse path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range end for the ingress segment
      of the primay reverse path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-step/te:technology" {
    description
      "Augment TE label range step for the ingress segment
      of the primay reverse path.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range start for the egress segment
      of the primay reverse path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range end for the egress segment
      of the primay reverse path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-step/te:technology" {
    description
      "Augment TE label range step for the egress segment
      of the primay reverse path.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:computed-paths-properties/te:computed-path-properties/"
        + "te:path-properties/te:path-route-objects/"
        + "te:path-route-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the route object of the computed
      primary reverse path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-exclude-objects/"
        + "te:route-object-exclude-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the optimization of the explicit
      route objects excluded by the path computation of the
      secondary path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-include-objects/"
        + "te:route-object-include-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the optimization of the explicit
      route objects included by the path computation of the
      secondary path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:explicit-route-objects/"
        + "te:route-object-exclude-always/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the explicit route objects always
      excluded by the path computation of the secondary path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:explicit-route-objects/"
        + "te:route-object-include-exclude/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the explicit route objects included
      or excluded by the path computation of the secondary path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range start for the ingress segment
      of the secondary path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range end for the ingress segment
      of the secondary path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-step/te:technology" {
    description
      "Augment TE label range step for the ingress segment
      of the secondary path.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range start for the egress segment
      of the secondary path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range end for the egress segment
      of the secondary path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-step/te:technology" {
    description
      "Augment TE label range step for the egress segment
      of the secondary path.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:computed-paths-properties/"
        + "te:computed-path-properties/"
        + "te:path-properties/te:path-route-objects/"
        + "te:path-route-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the route object of the computed
      secondary path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-exclude-objects/"
        + "te:route-object-exclude-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the optimization of the explicit
      route objects excluded by the path computation of the
      secondary reverse path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-include-objects/"
        + "te:route-object-include-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the optimization of the explicit
      route objects included by the path computation of the
      secondary reverse path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:explicit-route-objects/"
        + "te:route-object-exclude-always/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the explicit route objects always
      excluded by the path computation of the secondary reverse
      path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:explicit-route-objects/"
        + "te:route-object-include-exclude/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the explicit route objects included
      or excluded by the path computation of the secondary reverse
      path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range start for the ingress segment
      of the secondary reverse path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range end for the ingress segment
      of the secondary reverse path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-step/te:technology" {
    description
      "Augment TE label range step for the ingress segment
      of the secondary reverse path.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range start for the egress segment
      of the secondary reverse path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range end for the egress segment
      of the secondary reverse path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-step/te:technology" {
    description
      "Augment TE label range step for the egress segment
      of the secondary reverse path.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:computed-paths-properties/"
        + "te:computed-path-properties/"
        + "te:path-properties/te:path-route-objects/"
        + "te:path-route-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the route object of the computed
      secondary reverse path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:lsps/"
        + "te:lsp/te:lsp-actual-route-information/"
        + "te:lsp-actual-route-information/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the actual route of the LSP.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }
}

<CODE ENDS>
Figure 5: WDM Tunnel YANG module

6. Security Considerations

The configuration, state, and action data defined in this document are designed to be accessed via a management protocol with a secure transport layer, such as NETCONF [RFC6241] or RESTCONF [RFC8040]. The NETCONF access control model [RFC8341] provides the means to restrict access for particular NETCONF users to a preconfigured subset of all available NETCONF protocol operations and content.

There are a number of data nodes defined in this YANG module that are writable/creatable/deletable (i.e., config true, which is the default). These data nodes may be considered sensitive or vulnerable in some network environments. Write operations (e.g., edit-config) to these data nodes without proper protection can have a negative effect on network operations. These are the subtrees and data nodes and their sensitivity/vulnerability:

Editors note: we are using simplified description by folding similar branches to avoid repetition.

7. IANA Considerations

This document requests IANA to register the following URIs in the "ns" subregistry within the "IETF XML Registry" [RFC3688]. Following the format in [RFC3688], the following registrations are requested.

   URI: urn:ietf:params:xml:ns:yang:ietf-wdm-tunnel
   Registrant Contact: The IESG
   XML: N/A; the requested URI is an XML namespace.

This document requests IANA to register the following YANG modules in the "IANA Module Names" [RFC6020]. Following the format in [RFC6020], the following registrations are requested:

   name: ietf-wdm-tunnel
   namespace: urn:ietf:params:xml:ns:yang:ietf-wdm-tunnel
   prefix: wdm-tnl
   reference: RFC XXXX

RFC Editor: Please replace XXXX with the RFC number assigned to this document.

8. References

8.1. Normative References

[RFC7950]
Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", RFC 7950, DOI 10.17487/RFC7950, , <https://www.rfc-editor.org/info/rfc7950>.
[RFC2119]
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/info/rfc2119>.
[RFC8174]
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/info/rfc8174>.
[RFC7446]
Lee, Y., Ed., Bernstein, G., Ed., Li, D., and W. Imajuku, "Routing and Wavelength Assignment Information Model for Wavelength Switched Optical Networks", RFC 7446, DOI 10.17487/RFC7446, , <https://www.rfc-editor.org/info/rfc7446>.
[RFC7699]
Farrel, A., King, D., Li, Y., and F. Zhang, "Generalized Labels for the Flexi-Grid in Lambda Switch Capable (LSC) Label Switching Routers", RFC 7699, DOI 10.17487/RFC7699, , <https://www.rfc-editor.org/info/rfc7699>.
[RFC6241]
Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., and A. Bierman, Ed., "Network Configuration Protocol (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, , <https://www.rfc-editor.org/info/rfc6241>.
[I-D.ietf-teas-yang-te]
Saad, T., Gandhi, R., Liu, X., Beeram, V. P., and I. Bryskin, "A YANG Data Model for Traffic Engineering Tunnels, Label Switched Paths, and Interfaces", Work in Progress, Internet-Draft, draft-ietf-teas-yang-te-39, , <https://datatracker.ietf.org/doc/html/draft-ietf-teas-yang-te-39>.
[I-D.ietf-ccamp-optical-impairment-topology-yang]
Beller, D., Le Rouzic, E., Belotti, S., Galimberti, G., and I. Busi, "A YANG Data Model for Optical Impairment-aware Topology", Work in Progress, Internet-Draft, draft-ietf-ccamp-optical-impairment-topology-yang-20, , <https://datatracker.ietf.org/doc/html/draft-ietf-ccamp-optical-impairment-topology-yang-20>.
[I-D.ietf-ccamp-flexigrid-yang]
de Madrid, U. A., Burrero, D. P., King, D., Lee, Y., and H. Zheng, "A YANG Data Model for Flexi-Grid Optical Networks", Work in Progress, Internet-Draft, draft-ietf-ccamp-flexigrid-yang-18, , <https://datatracker.ietf.org/doc/html/draft-ietf-ccamp-flexigrid-yang-18>.
[RFC9094]
Zheng, H., Lee, Y., Guo, A., Lopez, V., and D. King, "A YANG Data Model for Wavelength Switched Optical Networks (WSONs)", RFC 9094, DOI 10.17487/RFC9094, , <https://www.rfc-editor.org/info/rfc9094>.
[RFC8040]
Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF Protocol", RFC 8040, DOI 10.17487/RFC8040, , <https://www.rfc-editor.org/info/rfc8040>.
[RFC8341]
Bierman, A. and M. Bjorklund, "Network Configuration Access Control Model", STD 91, RFC 8341, DOI 10.17487/RFC8341, , <https://www.rfc-editor.org/info/rfc8341>.
[RFC3688]
Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, DOI 10.17487/RFC3688, , <https://www.rfc-editor.org/info/rfc3688>.
[RFC6020]
Bjorklund, M., Ed., "YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)", RFC 6020, DOI 10.17487/RFC6020, , <https://www.rfc-editor.org/info/rfc6020>.

8.2. Informative References

[RFC6163]
Lee, Y., Ed., Bernstein, G., Ed., and W. Imajuku, "Framework for GMPLS and Path Computation Element (PCE) Control of Wavelength Switched Optical Networks (WSONs)", RFC 6163, DOI 10.17487/RFC6163, , <https://www.rfc-editor.org/info/rfc6163>.
[RFC7698]
Gonzalez de Dios, O., Ed., Casellas, R., Ed., Zhang, F., Fu, X., Ceccarelli, D., and I. Hussain, "Framework and Requirements for GMPLS-Based Control of Flexi-Grid Dense Wavelength Division Multiplexing (DWDM) Networks", RFC 7698, DOI 10.17487/RFC7698, , <https://www.rfc-editor.org/info/rfc7698>.

Acknowledgments

This work is also partially funded by the Spanish State Research Agency under the project AgileMon (AEI PID2019-104451RB-C21) and by the Spanish Ministry of Science, Innovation and Universities under the program for the training of university lecturers (Grant number: FPU19/05678).

Contributors

Daniel King
Old Dog Consulting
Haomian Zheng
Huawei Technologies
H1, Xiliu Beipo Village, Songshan Lake
Dongguan
China
Italo Busi
Huawei Technologies
Oscar Gonzalez de Dios
Telefonica
Victor Lopez
Nokia
Dieter Beller
Nokia
Ricard Vilalta
CTTC
Young Lee
Samsung
Bin Yeong Yoon
ETRI
Daniel Michaud Vallinoto
Universidad Autonoma de Madrid
Zafar Ali
Cisco
Esther Le Rouzic
Orange
Julien Meuric
Orange
Gert Grammel
Juniper
Roberto Manzotti
Cisco

Authors' Addresses

Aihua Guo
Futurewei Technologies
Sergio Belotti
Nokia
G. Galimberti
Individual
Jorge E. Lopez de Vergara Mendez
Naudit HPCN
Daniel Perdices Burrero
Universidad Autonoma de Madrid