<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.4.19 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC7950 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7950.xml">
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC7446 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7446.xml">
<!ENTITY RFC7699 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7699.xml">
<!ENTITY RFC6241 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6241.xml">
<!ENTITY I-D.ietf-teas-yang-te SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-teas-yang-te.xml">
<!ENTITY I-D.ietf-ccamp-flexigrid-yang SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ccamp-flexigrid-yang.xml">
<!ENTITY RFC9094 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9094.xml">
<!ENTITY RFC8040 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8040.xml">
<!ENTITY RFC8341 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8341.xml">
<!ENTITY RFC3688 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3688.xml">
<!ENTITY RFC6020 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6020.xml">
<!ENTITY RFC6163 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6163.xml">
<!ENTITY RFC7698 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7698.xml">
]>


<rfc ipr="trust200902" docName="draft-ietf-ccamp-wdm-tunnel-yang-04" category="std" consensus="true" submissionType="IETF">

  <front>
    <title abbrev="WDM Tunnel YANG Model">A YANG Data Model for WDM Tunnels</title>

    <author initials="A." surname="Guo" fullname="Aihua Guo">
      <organization>Futurewei Technologies</organization>
      <address>
        <email>aihuaguo.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="S." surname="Belotti" fullname="Sergio Belotti">
      <organization>Nokia</organization>
      <address>
        <email>Sergio.belotti@nokia.com</email>
      </address>
    </author>
    <author initials="G." surname="Galimberti" fullname="G. Galimberti">
      <organization>Individual</organization>
      <address>
        <email>ggalimbe56@gmail.com</email>
      </address>
    </author>
    <author initials="J.E.L.d.V." surname="Mendez" fullname="Jorge E. Lopez de Vergara Mendez">
      <organization>Naudit HPCN</organization>
      <address>
        <email>jorge.lopez_vergara@uam.es</email>
      </address>
    </author>
    <author initials="D.P." surname="Burrero" fullname="Daniel Perdices Burrero">
      <organization>Universidad Autonoma de Madrid</organization>
      <address>
        <email>daniel.perdices@uam.es</email>
      </address>
    </author>

    <date year="2025" month="April" day="23"/>

    <area>Routing</area>
    <workgroup>CCAMP Working Group</workgroup>
    <keyword>next generation</keyword> <keyword>unicorn</keyword> <keyword>sparkling distributed ledger</keyword>

    <abstract>


<t>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).</t>

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



    </abstract>


  </front>

  <middle>


<section anchor="introduction"><name>Introduction</name>

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

<t>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.</t>

<t>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.</t>

<t>This draft introduces a YANG <xref target="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.</t>

<t>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.</t>

</section>
<section anchor="conventions-and-definitions"><name>Conventions and Definitions</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL</bcp14>
NOT", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<t>The terminology for describing YANG data models is found in
<xref target="RFC7950"/>.</t>

<t>Refer to <xref target="RFC7446"/> and <xref target="RFC7699"/> for the key terms used in this document.</t>

<t>The following terms are defined in <xref target="RFC7950"/> and are not redefined here:
-  client</t>

<t><list style="symbols">
  <t>server</t>
  <t>augment</t>
  <t>data model</t>
  <t>data node</t>
</list></t>

<t>The following terms are defined in <xref target="RFC6241"/> and are not redefined here:
-  configuration data</t>

<t><list style="symbols">
  <t>state data</t>
</list></t>

</section>
<section anchor="overview"><name>Overview</name>

<t>The YANG data model in this draft builds upon the generic TE tunnel model from <xref target="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 <xref target="I-D.ietf-teas-yang-te"/> by incorporating WDM-specific attributes and constraints relevant to WDM tunnels, including definitions for:</t>

<t><list style="symbols">
  <t>Network-scope optical transceiver configuration constraints, e.g., operational modes, transceiver tuning constraints</t>
  <t>Network-scope WDM path routing policies for influencing WDM TE path selection. For exmaple,  whether or not using regenerator or wavelength conversion is allowed, whether or not wavelength retuing is allowed for tunable transceivers, etc.</t>
  <t>Network-scope optical performance constraints, e.g. the generalized Signal-to-noise (G-SNR) margin and delta power of a feasible optical path</t>
  <t>Path-scope WDM layer constraints and transceiver configurations for working and protection path within a WDM tunnel</t>
  <t>List of WDM nodes, links, and optical wavelength that constitute an end-to-end WDM path</t>
  <t>Other relevant optical attributes which characterize the optical signal</t>
</list></t>

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

<t>Additionally, the YANG model provides the status of a WDM tunnel, which includes:</t>

<t><list style="symbols">
  <t>Computed paths for various roles such as working, protection, and restoration, indicating potential optical paths confirmed by the SDN controller via pre-computation.</t>
  <t>Actual LSPs for each tunnel path, representing the optical paths currently established in the network.</t>
</list></t>

<section anchor="integrated-vs-external-optical-transponder"><name>Integrated vs. External Optical Transponder</name>

<t>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.</t>

<t>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.</t>

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

</section>
</section>
<section anchor="example-of-use"><name>Example of Use</name>

<t>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.</t>

<figure title="Topology Example" anchor="fig-topology-example"><artwork type="ascii-art"><![CDATA[
                              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
]]></artwork></figure>

<t>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:</t>

<t><list style="symbols">
  <t>We define the transponders within nodes A and E as tunnel termination
points (TTPs) and provide their internal local link connectivity
towards the node interfaces.  We also provide nodes A and E identifiers,
addresses and interfaces.</t>
  <t>We do the same for the nodes B, C and D, providing their
identifiers, addresses and interfaces, as well as the internal
connectivity matrix between interfaces.</t>
  <t>Then, we also define the links 1 to 5 that interconnect nodes,
indicating which WSON or flexi-grid labels are available.</t>
  <t>Other information, such as the slot frequency and granularity are
also provided.</t>
</list></t>

<t>After the nodes, links and transponders have been defined using
<xref target="I-D.ietf-ccamp-flexigrid-yang"/> and <xref target="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.</t>

<t><list style="symbols">
  <t>Depending on the case, it is possible to define either the source
and destination node ports, or the source and destination node and
transponder.  In our case, we would define a network tunnel, with
source transponder A and source node B, and destination
transponder E and destination node C.  Thus, we are going to
follow path x.</t>
  <t>Then, for each link in the path x, we indicate which channel we
are going to use, providing information about the slots, and what
nodes are connected.</t>
  <t>Finally, the flexi-grid topology has to be updated with each
element usage status each time a tunnel is created or torn down.</t>
</list></t>

</section>
<section anchor="yang-model-for-wdm-tunnel"><name>YANG Model for WDM Tunnel</name>

<section anchor="yang-tree"><name>YANG Tree</name>

<figure title="WDM Tunnel YANG tree" anchor="fig-wdm-tunnel-tree"><artwork type="ascii-art" name="ietf-wdm-tunnel.tree"><![CDATA[
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?   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-exclude-always/te:type
            /te:numbered-node-hop/te:numbered-node-hop:
    +--rw (node-position)?
       +--:(source)
       |  +--rw source-transceiver
       |     +--rw transponder-id?   uint32
       |     +--rw transceivers* [transceiver-id]
       |        +--rw transceiver-id                uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--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?   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
       +--:(destination)
       |  +--rw destination-transceiver
       |     +--rw transponder-id?   uint32
       |     +--rw transceivers* [transceiver-id]
       |        +--rw transceiver-id                uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--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?   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
       +--:(transit)
          +--rw regen-transceivers
             +--rw regen-group-id?         uint32
             +--rw incoming-transceiver
             |  +--rw transponder-id?   uint32
             |  +--rw transceivers* [transceiver-id]
             |     +--rw transceiver-id                uint32
             |     +--rw otsi-carrier-id?              uint16
             |     +--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?   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 outgoing-transceiver
                +--rw transponder-id?   uint32
                +--rw transceivers* [transceiver-id]
                   +--rw transceiver-id                uint32
                   +--rw otsi-carrier-id?              uint16
                   +--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?   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
  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-transceiver
       |     +--rw transponder-id?   uint32
       |     +--rw transceivers* [transceiver-id]
       |        +--rw transceiver-id                uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--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?   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
       +--:(destination)
       |  +--rw destination-transceiver
       |     +--rw transponder-id?   uint32
       |     +--rw transceivers* [transceiver-id]
       |        +--rw transceiver-id                uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--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?   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
       +--:(transit)
          +--rw regen-transceivers
             +--rw regen-group-id?         uint32
             +--rw incoming-transceiver
             |  +--rw transponder-id?   uint32
             |  +--rw transceivers* [transceiver-id]
             |     +--rw transceiver-id                uint32
             |     +--rw otsi-carrier-id?              uint16
             |     +--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?   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 outgoing-transceiver
                +--rw transponder-id?   uint32
                +--rw transceivers* [transceiver-id]
                   +--rw transceiver-id                uint32
                   +--rw otsi-carrier-id?              uint16
                   +--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?   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
  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-transceiver
       |     +--rw transponder-id?   uint32
       |     +--rw transceivers* [transceiver-id]
       |        +--rw transceiver-id                uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--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?   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
       +--:(destination)
       |  +--rw destination-transceiver
       |     +--rw transponder-id?   uint32
       |     +--rw transceivers* [transceiver-id]
       |        +--rw transceiver-id                uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--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?   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
       +--:(transit)
          +--rw regen-transceivers
             +--rw regen-group-id?         uint32
             +--rw incoming-transceiver
             |  +--rw transponder-id?   uint32
             |  +--rw transceivers* [transceiver-id]
             |     +--rw transceiver-id                uint32
             |     +--rw otsi-carrier-id?              uint16
             |     +--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?   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 outgoing-transceiver
                +--rw transponder-id?   uint32
                +--rw transceivers* [transceiver-id]
                   +--rw transceiver-id                uint32
                   +--rw otsi-carrier-id?              uint16
                   +--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?   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
  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-transceiver
       |     +--rw transponder-id?   uint32
       |     +--rw transceivers* [transceiver-id]
       |        +--rw transceiver-id                uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--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?   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
       +--:(destination)
       |  +--rw destination-transceiver
       |     +--rw transponder-id?   uint32
       |     +--rw transceivers* [transceiver-id]
       |        +--rw transceiver-id                uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--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?   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
       +--:(transit)
          +--rw regen-transceivers
             +--rw regen-group-id?         uint32
             +--rw incoming-transceiver
             |  +--rw transponder-id?   uint32
             |  +--rw transceivers* [transceiver-id]
             |     +--rw transceiver-id                uint32
             |     +--rw otsi-carrier-id?              uint16
             |     +--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?   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 outgoing-transceiver
                +--rw transponder-id?   uint32
                +--rw transceivers* [transceiver-id]
                   +--rw transceiver-id                uint32
                   +--rw otsi-carrier-id?              uint16
                   +--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?   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
  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-transceiver
       |     +--ro transponder-id?   uint32
       |     +--ro transceivers* [transceiver-id]
       |        +--ro otsi-carrier-id?          uint16
       |        +--ro transceiver-id            uint32
       |        +--ro otsi-carrier-frequency?   union
       |        +--ro rx-channel-power?         power-dbm-or-null
       |        +--ro rx-total-power?           power-dbm-or-null
       |        +--ro estimated-gsnr?           snr
       |        +--ro estimated-eol-gsnr?       snr
       |        +--ro estimated-lowest-gsnr?    snr
       +--:(destination)
       |  +--ro destination-transceiver
       |     +--ro transponder-id?   uint32
       |     +--ro transceivers* [transceiver-id]
       |        +--ro otsi-carrier-id?          uint16
       |        +--ro transceiver-id            uint32
       |        +--ro otsi-carrier-frequency?   union
       |        +--ro rx-channel-power?         power-dbm-or-null
       |        +--ro rx-total-power?           power-dbm-or-null
       |        +--ro estimated-gsnr?           snr
       |        +--ro estimated-eol-gsnr?       snr
       |        +--ro estimated-lowest-gsnr?    snr
       +--:(transit)
          +--ro regen-transceivers
             +--ro regen-group-id?         uint32
             +--ro incoming-transceiver
             |  +--ro transponder-id?   uint32
             |  +--ro transceivers* [transceiver-id]
             |     +--ro otsi-carrier-id?          uint16
             |     +--ro transceiver-id            uint32
             |     +--ro otsi-carrier-frequency?   union
             |     +--ro rx-channel-power?         power-dbm-or-null
             |     +--ro rx-total-power?           power-dbm-or-null
             |     +--ro estimated-gsnr?           snr
             |     +--ro estimated-eol-gsnr?       snr
             |     +--ro estimated-lowest-gsnr?    snr
             +--ro outgoing-transceiver
                +--ro transponder-id?   uint32
                +--ro transceivers* [transceiver-id]
                   +--ro otsi-carrier-id?          uint16
                   +--ro transceiver-id            uint32
                   +--ro otsi-carrier-frequency?   union
                   +--ro rx-channel-power?         power-dbm-or-null
                   +--ro rx-total-power?           power-dbm-or-null
                   +--ro estimated-gsnr?           snr
                   +--ro estimated-eol-gsnr?       snr
                   +--ro estimated-lowest-gsnr?    snr
  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-transceiver
       |     +--ro transponder-id?   uint32
       |     +--ro transceivers* [transceiver-id]
       |        +--ro otsi-carrier-id?          uint16
       |        +--ro transceiver-id            uint32
       |        +--ro otsi-carrier-frequency?   union
       |        +--ro rx-channel-power?         power-dbm-or-null
       |        +--ro rx-total-power?           power-dbm-or-null
       |        +--ro estimated-gsnr?           snr
       |        +--ro estimated-eol-gsnr?       snr
       |        +--ro estimated-lowest-gsnr?    snr
       +--:(destination)
       |  +--ro destination-transceiver
       |     +--ro transponder-id?   uint32
       |     +--ro transceivers* [transceiver-id]
       |        +--ro otsi-carrier-id?          uint16
       |        +--ro transceiver-id            uint32
       |        +--ro otsi-carrier-frequency?   union
       |        +--ro rx-channel-power?         power-dbm-or-null
       |        +--ro rx-total-power?           power-dbm-or-null
       |        +--ro estimated-gsnr?           snr
       |        +--ro estimated-eol-gsnr?       snr
       |        +--ro estimated-lowest-gsnr?    snr
       +--:(transit)
          +--ro regen-transceivers
             +--ro regen-group-id?         uint32
             +--ro incoming-transceiver
             |  +--ro transponder-id?   uint32
             |  +--ro transceivers* [transceiver-id]
             |     +--ro otsi-carrier-id?          uint16
             |     +--ro transceiver-id            uint32
             |     +--ro otsi-carrier-frequency?   union
             |     +--ro rx-channel-power?         power-dbm-or-null
             |     +--ro rx-total-power?           power-dbm-or-null
             |     +--ro estimated-gsnr?           snr
             |     +--ro estimated-eol-gsnr?       snr
             |     +--ro estimated-lowest-gsnr?    snr
             +--ro outgoing-transceiver
                +--ro transponder-id?   uint32
                +--ro transceivers* [transceiver-id]
                   +--ro otsi-carrier-id?          uint16
                   +--ro transceiver-id            uint32
                   +--ro otsi-carrier-frequency?   union
                   +--ro rx-channel-power?         power-dbm-or-null
                   +--ro rx-total-power?           power-dbm-or-null
                   +--ro estimated-gsnr?           snr
                   +--ro estimated-eol-gsnr?       snr
                   +--ro estimated-lowest-gsnr?    snr
  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-transceiver
       |     +--ro transponder-id?   uint32
       |     +--ro transceivers* [transceiver-id]
       |        +--ro otsi-carrier-id?          uint16
       |        +--ro transceiver-id            uint32
       |        +--ro otsi-carrier-frequency?   union
       |        +--ro rx-channel-power?         power-dbm-or-null
       |        +--ro rx-total-power?           power-dbm-or-null
       |        +--ro estimated-gsnr?           snr
       |        +--ro estimated-eol-gsnr?       snr
       |        +--ro estimated-lowest-gsnr?    snr
       +--:(destination)
       |  +--ro destination-transceiver
       |     +--ro transponder-id?   uint32
       |     +--ro transceivers* [transceiver-id]
       |        +--ro otsi-carrier-id?          uint16
       |        +--ro transceiver-id            uint32
       |        +--ro otsi-carrier-frequency?   union
       |        +--ro rx-channel-power?         power-dbm-or-null
       |        +--ro rx-total-power?           power-dbm-or-null
       |        +--ro estimated-gsnr?           snr
       |        +--ro estimated-eol-gsnr?       snr
       |        +--ro estimated-lowest-gsnr?    snr
       +--:(transit)
          +--ro regen-transceivers
             +--ro regen-group-id?         uint32
             +--ro incoming-transceiver
             |  +--ro transponder-id?   uint32
             |  +--ro transceivers* [transceiver-id]
             |     +--ro otsi-carrier-id?          uint16
             |     +--ro transceiver-id            uint32
             |     +--ro otsi-carrier-frequency?   union
             |     +--ro rx-channel-power?         power-dbm-or-null
             |     +--ro rx-total-power?           power-dbm-or-null
             |     +--ro estimated-gsnr?           snr
             |     +--ro estimated-eol-gsnr?       snr
             |     +--ro estimated-lowest-gsnr?    snr
             +--ro outgoing-transceiver
                +--ro transponder-id?   uint32
                +--ro transceivers* [transceiver-id]
                   +--ro otsi-carrier-id?          uint16
                   +--ro transceiver-id            uint32
                   +--ro otsi-carrier-frequency?   union
                   +--ro rx-channel-power?         power-dbm-or-null
                   +--ro rx-total-power?           power-dbm-or-null
                   +--ro estimated-gsnr?           snr
                   +--ro estimated-eol-gsnr?       snr
                   +--ro estimated-lowest-gsnr?    snr
  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-transceiver
       |     +--ro transponder-id?   uint32
       |     +--ro transceivers* [transceiver-id]
       |        +--ro otsi-carrier-id?          uint16
       |        +--ro transceiver-id            uint32
       |        +--ro otsi-carrier-frequency?   union
       |        +--ro rx-channel-power?         power-dbm-or-null
       |        +--ro rx-total-power?           power-dbm-or-null
       |        +--ro estimated-gsnr?           snr
       |        +--ro estimated-eol-gsnr?       snr
       |        +--ro estimated-lowest-gsnr?    snr
       +--:(destination)
       |  +--ro destination-transceiver
       |     +--ro transponder-id?   uint32
       |     +--ro transceivers* [transceiver-id]
       |        +--ro otsi-carrier-id?          uint16
       |        +--ro transceiver-id            uint32
       |        +--ro otsi-carrier-frequency?   union
       |        +--ro rx-channel-power?         power-dbm-or-null
       |        +--ro rx-total-power?           power-dbm-or-null
       |        +--ro estimated-gsnr?           snr
       |        +--ro estimated-eol-gsnr?       snr
       |        +--ro estimated-lowest-gsnr?    snr
       +--:(transit)
          +--ro regen-transceivers
             +--ro regen-group-id?         uint32
             +--ro incoming-transceiver
             |  +--ro transponder-id?   uint32
             |  +--ro transceivers* [transceiver-id]
             |     +--ro otsi-carrier-id?          uint16
             |     +--ro transceiver-id            uint32
             |     +--ro otsi-carrier-frequency?   union
             |     +--ro rx-channel-power?         power-dbm-or-null
             |     +--ro rx-total-power?           power-dbm-or-null
             |     +--ro estimated-gsnr?           snr
             |     +--ro estimated-eol-gsnr?       snr
             |     +--ro estimated-lowest-gsnr?    snr
             +--ro outgoing-transceiver
                +--ro transponder-id?   uint32
                +--ro transceivers* [transceiver-id]
                   +--ro otsi-carrier-id?          uint16
                   +--ro transceiver-id            uint32
                   +--ro otsi-carrier-frequency?   union
                   +--ro rx-channel-power?         power-dbm-or-null
                   +--ro rx-total-power?           power-dbm-or-null
                   +--ro estimated-gsnr?           snr
                   +--ro estimated-eol-gsnr?       snr
                   +--ro estimated-lowest-gsnr?    snr
  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-transceiver
       |     +--ro transponder-id?   uint32
       |     +--ro transceivers* [transceiver-id]
       |        +--ro otsi-carrier-id?          uint16
       |        +--ro transceiver-id            uint32
       |        +--ro otsi-carrier-frequency?   union
       |        +--ro rx-channel-power?         power-dbm-or-null
       |        +--ro rx-total-power?           power-dbm-or-null
       |        +--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-null
       +--:(destination)
       |  +--ro destination-transceiver
       |     +--ro transponder-id?   uint32
       |     +--ro transceivers* [transceiver-id]
       |        +--ro otsi-carrier-id?          uint16
       |        +--ro transceiver-id            uint32
       |        +--ro otsi-carrier-frequency?   union
       |        +--ro rx-channel-power?         power-dbm-or-null
       |        +--ro rx-total-power?           power-dbm-or-null
       |        +--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-null
       +--:(transit)
          +--ro regen-transceivers
             +--ro regen-group-id?         uint32
             +--ro incoming-transceiver
             |  +--ro transponder-id?   uint32
             |  +--ro transceivers* [transceiver-id]
             |     +--ro otsi-carrier-id?          uint16
             |     +--ro transceiver-id            uint32
             |     +--ro otsi-carrier-frequency?   union
             |     +--ro rx-channel-power?         power-dbm-or-null
             |     +--ro rx-total-power?           power-dbm-or-null
             |     +--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-null
             +--ro outgoing-transceiver
                +--ro transponder-id?   uint32
                +--ro transceivers* [transceiver-id]
                   +--ro otsi-carrier-id?          uint16
                   +--ro transceiver-id            uint32
                   +--ro otsi-carrier-frequency?   union
                   +--ro rx-channel-power?         power-dbm-or-null
                   +--ro rx-total-power?           power-dbm-or-null
                   +--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-null
  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 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 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 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 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 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 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 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 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 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 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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types: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 (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +--rw wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +--rw wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x--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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types: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 (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +--rw wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +--rw wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x--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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types: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 (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +--rw wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +--rw wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x--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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types: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 (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +--rw wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +--rw wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x--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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--ro (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--ro dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--ro subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--ro cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--ro (single-or-super-channel)?
                +--:(single)
                |  +--ro flexi-n?              l0-types:flexi-n
                |  +--ro flexi-m?              l0-types:flexi-m
                x--:(super)
                |  x--ro subcarrier-flexi-n* [flexi-n]
                |     +--ro flexi-n    l0-types:flexi-n
                |     +--ro flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--ro frequency-slots
                      +--ro frequency-slot* [flexi-n]
                         +--ro flexi-n    l0-types:flexi-n
                         +--ro flexi-m?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types: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 (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +--rw wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +--rw wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x--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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types: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 (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +--rw wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +--rw wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x--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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--ro (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--ro dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--ro subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--ro cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--ro (single-or-super-channel)?
                +--:(single)
                |  +--ro flexi-n?              l0-types:flexi-n
                |  +--ro flexi-m?              l0-types:flexi-m
                x--:(super)
                |  x--ro subcarrier-flexi-n* [flexi-n]
                |     +--ro flexi-n    l0-types:flexi-n
                |     +--ro flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--ro frequency-slots
                      +--ro frequency-slot* [flexi-n]
                         +--ro flexi-n    l0-types:flexi-n
                         +--ro flexi-m?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types: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 (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +--rw wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +--rw wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x--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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types: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 (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +--rw wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +--rw wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x--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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--ro (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--ro dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--ro subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--ro cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--ro (single-or-super-channel)?
                +--:(single)
                |  +--ro flexi-n?              l0-types:flexi-n
                |  +--ro flexi-m?              l0-types:flexi-m
                x--:(super)
                |  x--ro subcarrier-flexi-n* [flexi-n]
                |     +--ro flexi-n    l0-types:flexi-n
                |     +--ro flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--ro frequency-slots
                      +--ro frequency-slot* [flexi-n]
                         +--ro flexi-n    l0-types:flexi-n
                         +--ro flexi-m?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types: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 (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +--rw wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +--rw wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x--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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types: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 (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +--rw wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +--rw wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x--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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--ro (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--ro dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--ro subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--ro cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--ro (single-or-super-channel)?
                +--:(single)
                |  +--ro flexi-n?              l0-types:flexi-n
                |  +--ro flexi-m?              l0-types:flexi-m
                x--:(super)
                |  x--ro subcarrier-flexi-n* [flexi-n]
                |     +--ro flexi-n    l0-types:flexi-n
                |     +--ro flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--ro frequency-slots
                      +--ro frequency-slot* [flexi-n]
                         +--ro flexi-n    l0-types:flexi-n
                         +--ro flexi-m?   l0-types: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 (grid-type)?
          +--:(fixed-dwdm)
          |  +--ro (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--ro dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--ro subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--ro cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--ro (single-or-super-channel)?
                +--:(single)
                |  +--ro flexi-n?              l0-types:flexi-n
                |  +--ro flexi-m?              l0-types:flexi-m
                x--:(super)
                |  x--ro subcarrier-flexi-n* [flexi-n]
                |     +--ro flexi-n    l0-types:flexi-n
                |     +--ro flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--ro frequency-slots
                      +--ro frequency-slot* [flexi-n]
                         +--ro flexi-n    l0-types:flexi-n
                         +--ro flexi-m?   l0-types:flexi-m
]]></artwork></figure>

</section>
<section anchor="yang-code"><name>YANG Code</name>

<figure title="WDM Tunnel YANG module" anchor="fig-wdm-tunnel-yang"><sourcecode type="yang" markers="true" name="ietf-wdm-tunnel@2024-07-02.yang"><![CDATA[
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 "2024-07-02" {
    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
  }

  /*
   * 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.";
    }

    /*
    leaf inverse-multiplexing-mode {
      //type l0-types:inverse-multiplexing-mode;
      type string;
      description
        "The inverse multiplexing mode.";
    }
    */

    uses l0-types:l0-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-config {
    description
      "This grouping defines explicit transceiver
       configurations.";

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

    list transceivers {
      key "transceiver-id";
      description
        "List of transceivers used within the transponder.";

      leaf transceiver-id {
        type uint32;
        description
        "transceiver identifier";
      }
      leaf otsi-carrier-id {
        type uint16;
        description
          "OTSi carrier identifier associated with the
           transceiver.";
      }

      uses transceiver-constraints;
    }
  }

  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-transceiver {
          description
            "Constraints for transceiver configurations at the
             source node";

          uses transceiver-config;
        }
      }
      case destination {
        container destination-transceiver {
          description
            "Constraints for transceiver configurations at the
             destination node";

          uses transceiver-config;
        }
      }
      case transit {
        container regen-transceivers {
          description
            "Constraints for transceiver configurations at the
             transit node equipped with regenerators";

          leaf regen-group-id {
            type uint32;
            description
              "3R regen group identifier.";
          }

          /*
          leaf regen-level {
            //type l0-types:regen-level;
            type string;
            description
              "Indicate the chosen level of 3R regeneration.";
          }
          */

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

            uses transceiver-config;
          }

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

            uses 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-null;
        units "dB";
        description
          "Estimated Q-factor based on the pre-FEC BER.";
      }
    }
  }
  
  grouping transceiver-state {
    description
      "This grouping includes common transceiver state
       information.";

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

    list transceivers {
      key "transceiver-id";
      description
        "List of transceivers used within the transponder.";

      leaf otsi-carrier-id {
        type uint16;
        description
          "OTSi carrier identifier associated with the
           transceiver.";
      }
      leaf transceiver-id {
        type uint32;
        description
        "transceiver identifier";
      }

      leaf otsi-carrier-frequency {
        type union {
          type l0-types:frequency-thz;
          type empty;
        }
        description
          "OTSi carrier frequency, equivalent to the
          actual configured transmitter frequency, when known, or
          an empty value when unknown.";
      }

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

  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 the state of transceivers on a
       node functioning as starting, terminating transceivers,
       or regenerators.";

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

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

          uses transceiver-state;
        }
      }
      case transit {
        container regen-transceivers {
          description
            "Transceiver state at the transit node equipped
             with regenerators.";

          leaf regen-group-id {
            type uint32;
            description
              "3R regen group identifier.";
          }

          /*
          leaf regen-level {
            //type l0-types:regen-level;
            type string;
            description
              "Indicate the chosen level of 3R regeneration.";
          }
          */
          
          container incoming-transceiver {
            description
              "Transceiver state on the incoming direction of
               the regenerator.";

            uses transceiver-state;
          }

          container outgoing-transceiver {
            description
              "Transceiver state on the outgoing direction of
               the regenerator.";

            uses transceiver-state;
          }
        }
      }
    }
  }
  
  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:l0-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.";
      }
    }
  }

  /*
  grouping digital-layer-constraint {
    description
      "Grouping for digital layer constraints";

    container digital-constraint {
      description
        "Digital layer constraints.";

      leaf digital-termination {
        //type l0-types:digital-termination-type;
        type string;
        description
          "Identifies how digital signal is terminated.";
      }

      leaf multiplexing-label-type {
        //type l0-types:multiplexing-label-type;
        type string;
        description
          "Identifies the type of multiplexing technology
           used (e.g. ODUj,k).";
      }
    }
  }
  */

  /*
   * 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-exclude-always/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop" {
    description
      "Augment TE primary path 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-exclude-always/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop" {
    description
      "Augment TE primary reverse path 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-exclude-always/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop" {
    description
      "Augment TE secondary path 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-exclude-always/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop" {
    description
      "Augment TE secondary reverse path 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-transceiver/wdm-tnl:transceivers" {
    description
      "Augment source transceiver with additional estimated
       parameters.";

    uses l0-types:l0-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-transceiver/wdm-tnl:transceivers" {
    description
      "Augment destination transceiver with additional estimated
       parameters.";

    uses l0-types:l0-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:transit/"
        + "wdm-tnl:regen-transceivers/"
        + "wdm-tnl:incoming-transceiver/wdm-tnl:transceivers" {
    description
      "Augment regen incoming transceiver with additional estimated
       parameters.";

    uses l0-types:l0-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:transit/"
        + "wdm-tnl:regen-transceivers/"
        + "wdm-tnl:outgoing-transceiver/wdm-tnl:transceivers" {
    description
      "Augment regen outgoing transceiver with additional estimated
       parameters.";

    uses l0-types:l0-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-transceiver/wdm-tnl:transceivers" {
    description
      "Augment source transceiver with additional estimated
       parameters.";

    uses l0-types:l0-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-transceiver/wdm-tnl:transceivers" {
    description
      "Augment destination transceiver with additional estimated
       parameters.";

    uses l0-types:l0-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:transit/"
        + "wdm-tnl:regen-transceivers/"
        + "wdm-tnl:incoming-transceiver/wdm-tnl:transceivers" {
    description
      "Augment regen incoming transceiver with additional estimated
       parameters.";

    uses l0-types:l0-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:transit/"
        + "wdm-tnl:regen-transceivers/"
        + "wdm-tnl:outgoing-transceiver/wdm-tnl:transceivers" {
    description
      "Augment regen outgoing transceiver with additional estimated
       parameters.";

    uses l0-types:l0-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-transceiver/wdm-tnl:transceivers" {
    description
      "Augment source transceiver with additional estimated
       parameters.";

    uses l0-types:l0-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-transceiver/wdm-tnl:transceivers" {
    description
      "Augment destination transceiver with additional estimated
       parameters.";

    uses l0-types:l0-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:transit/"
        + "wdm-tnl:regen-transceivers/"
        + "wdm-tnl:incoming-transceiver/wdm-tnl:transceivers" {
    description
      "Augment regen incoming transceiver with additional estimated
       parameters.";

    uses l0-types:l0-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:transit/"
        + "wdm-tnl:regen-transceivers/"
        + "wdm-tnl:outgoing-transceiver/wdm-tnl:transceivers" {
    description
      "Augment regen outgoing transceiver with additional estimated
       parameters.";

    uses l0-types:l0-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-transceiver/wdm-tnl:transceivers" {
    description
      "Augment source transceiver with additional estimated
       parameters.";

    uses l0-types:l0-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-transceiver/wdm-tnl:transceivers" {
    description
      "Augment destination transceiver with additional estimated
       parameters.";

    uses l0-types:l0-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:transit/"
        + "wdm-tnl:regen-transceivers/"
        + "wdm-tnl:incoming-transceiver/wdm-tnl:transceivers" {
    description
      "Augment regen incoming transceiver with additional estimated
       parameters.";

    uses l0-types:l0-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:transit/"
        + "wdm-tnl:regen-transceivers/"
        + "wdm-tnl:outgoing-transceiver/wdm-tnl:transceivers" {
    description
      "Augment regen outgoing transceiver with additional estimated
       parameters.";

    uses l0-types:l0-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-transceiver/wdm-tnl:transceivers" {
    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-transceiver/wdm-tnl:transceivers" {
    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:transit/"
        + "wdm-tnl:regen-transceivers/"
        + "wdm-tnl:incoming-transceiver/wdm-tnl:transceivers" {
    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:transit/"
        + "wdm-tnl:regen-transceivers/"
        + "wdm-tnl:outgoing-transceiver/wdm-tnl:transceivers" {
    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;
    }
  }
}
]]></sourcecode></figure>

</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>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 <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>.
The NETCONF access control model <xref target="RFC8341"/> provides the means to
restrict access for particular NETCONF users to a preconfigured
subset of all available NETCONF protocol operations and content.</t>

<t>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:</t>

<t><list style="symbols">
  <t>/te:te/te:tunnels/te:tunnel</t>
  <t>/te:te/.../te:te-bandwidth/te:technology</t>
  <t>/te:te/.../te:type/te:label/te:label-hop/te:te-label/te:technology</t>
  <t>/te:te/.../te:label-restrictions/te:label-restriction/te:label-
start/te:te-label/te:technology</t>
  <t>/te:te/.../te:label-restrictions/te:label-restriction/te:label-
end/te:te-label/te:technology</t>
  <t>/te:te/.../te:label-restrictions/te:label-restriction/</t>
</list></t>

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

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document requests IANA to register the following URIs in the "ns" subregistry within the "IETF XML Registry" <xref target="RFC3688"/>. Following the format in <xref target="RFC3688"/>, the following registrations are requested.</t>

<figure><artwork><![CDATA[
   URI: urn:ietf:params:xml:ns:yang:ietf-wdm-tunnel
   Registrant Contact: The IESG
   XML: N/A; the requested URI is an XML namespace.
]]></artwork></figure>

<t>This document requests IANA to register the following YANG modules in the "IANA Module Names" <xref target="RFC6020"/>. Following the format in <xref target="RFC6020"/>, the following registrations are requested:</t>

<figure><artwork><![CDATA[
   name: ietf-wdm-tunnel
   namespace: urn:ietf:params:xml:ns:yang:ietf-wdm-tunnel
   prefix: wdm-tnl
   reference: RFC XXXX
]]></artwork></figure>

<t>RFC Editor: Please replace XXXX with the RFC number assigned to this document.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>

&RFC7950;
&RFC2119;
&RFC8174;
&RFC7446;
&RFC7699;
&RFC6241;
&I-D.ietf-teas-yang-te;
&I-D.ietf-ccamp-flexigrid-yang;
&RFC9094;
&RFC8040;
&RFC8341;
&RFC3688;
&RFC6020;


    </references>

    <references title='Informative References'>

&RFC6163;
&RFC7698;


    </references>


<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t>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).</t>

</section>

    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
        <name>Contributors</name>
    <contact initials="D." surname="King" fullname="Daniel King">
      <organization>Old Dog Consulting</organization>
      <address>
        <email>daniel@olddog.co.uk</email>
      </address>
    </contact>
    <contact initials="H." surname="Zheng" fullname="Haomian Zheng">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <street>H1, Xiliu Beipo Village, Songshan Lake</street>
          <city>Dongguan</city>
          <country>China</country>
        </postal>
        <email>zhenghaomian@huawei.com</email>
      </address>
    </contact>
    <contact initials="I." surname="Busi" fullname="Italo Busi">
      <organization>Huawei Technologies</organization>
      <address>
        <email>italo.busi@huawei.com</email>
      </address>
    </contact>
    <contact initials="O." surname="Gonzalez de Dios" fullname="Oscar Gonzalez de Dios">
      <organization>Telefonica</organization>
      <address>
        <email>oscar.gonzalezdedios@telefonica.com</email>
      </address>
    </contact>
    <contact initials="V." surname="Lopez" fullname="Victor Lopez">
      <organization>Nokia</organization>
      <address>
        <email>victor.lopez@nokia.com</email>
      </address>
    </contact>
    <contact initials="D." surname="Beller" fullname="Dieter Beller">
      <organization>Nokia</organization>
      <address>
        <email>Dieter.Beller@nokia.com</email>
      </address>
    </contact>
    <contact initials="R." surname="Vilalta" fullname="Ricard Vilalta">
      <organization>CTTC</organization>
      <address>
        <email>ricard.vilalta@cttc.es</email>
      </address>
    </contact>
    <contact initials="Y." surname="Lee" fullname="Young Lee">
      <organization>Samsung</organization>
      <address>
        <email>younglee.tx@gmail.com</email>
      </address>
    </contact>
    <contact initials="B.Y." surname="Yoon" fullname="Bin Yeong Yoon">
      <organization>ETRI</organization>
      <address>
        <email>byyun@etri.re.kr</email>
      </address>
    </contact>
    <contact initials="D.M." surname="Vallinoto" fullname="Daniel Michaud Vallinoto">
      <organization>Universidad Autonoma de Madrid</organization>
      <address>
        <email>daniel.michaud@estudiante.uam.es</email>
      </address>
    </contact>
    <contact initials="Z." surname="Ali" fullname="Zafar Ali">
      <organization>Cisco</organization>
      <address>
        <email>zali@cisco.com</email>
      </address>
    </contact>
    <contact initials="E.L." surname="Rouzic" fullname="Esther Le Rouzic">
      <organization>Orange</organization>
      <address>
        <email>esther.lerouzic@orange.com</email>
      </address>
    </contact>
    <contact initials="J." surname="Meuric" fullname="Julien Meuric">
      <organization>Orange</organization>
      <address>
        <email>julien.meuric@orange.com</email>
      </address>
    </contact>
    <contact initials="G." surname="Grammel" fullname="Gert Grammel">
      <organization>Juniper</organization>
      <address>
        <email>ggrammel@juniper.net</email>
      </address>
    </contact>
    <contact initials="R." surname="Manzotti" fullname="Roberto Manzotti">
      <organization>Cisco</organization>
      <address>
        <email>manzoro@gmail.com</email>
      </address>
    </contact>
    </section>

  </back>

<!-- ##markdown-source:
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
5GmNVDVfndby5YTq9kXws8XwzdfbfSDicAWttH2oC0XT8TX7b/1Xs+1e7lEU
q1p2KaxlNRcuoV2v7NuIsHjHIbqb1jc2doxdtNQ64AqrbQXtWvDa+UAZKR+o
faFzgubjnKBzghqMOSd4d5zgNVVMHXBpxpPsy3s+y0Vdg/O4mq+wTLtFLe6C
bMuLIgoaSJxk74Nk00w0X7W2rDhh9ZeX6FkaRyram9Mf6Zz7EDBbi/plBEwY
/Utg7JT3h1qzoA1x53vAK8rijydtCclywCSlJrhpatyJ3WYXKNbVnVyDcF2k
eACidaHiPoaKa9hRjueZnMmPvFAiHk6w9z6d4ZeZQFVqILGBPDWmpTdjWs8r
9ambb5d1LRrXonEtGteiWWa1raDLt2jW25+aNvZKPW/nT6sf50+dP9VgzPnT
9fen7syDBcOc77M463yf833O97mzDs75scpd5/yc82sFvFPO75oeOFqwW9UA
dvsbi/Y31lGmIgqcRO+VRHELxO1NWZ8HvDflji/cV4/hji04kbrjChdgdCGh
qWp34/cHCtdzteZKfHmfFN9McyW+ueZKfK3NlfjGmivxdTdX4is2V+IbbK7E
l26uxJdsrsTX3VyJV2iu1Mcu3VxZbbWtoF+2udLyHpHG6YUGlpajDB2nFxqg
7miY62i7jjZzHe2Lx97fjvYtO113fsw53TpnndN1TvfBOd2LHKVV8y84V9bs
T9kO0vnEGm7nE6sf5xMXwDmfuKY+cbmk0R0+q4naeUjnITUYcx7ynnhId0Lt
Hm5l34rg3TG2Byl2d9bNHWy4lTf7u5BzJ33PtUrexZyHKXcXdFzQWUkFO4/c
NW5eeKSu5RTe4u5S55G79j57ixNzR+7ckbsWUt2RO3fk7qotpdV/hKj75UAN
YHe8rrzlevauZ98K73r297pnv74O1h2lcw62zlnnYJ2DvfcO1r2OzYJhzv9Z
nHX+z/k/5//cqTjrpnOAJZ3OAToH2AS8cw7Q/fTcXdiJvjW5Vs4XNJA4qd51
qboX8zyYowSX1Db3vrYminvhRtw725xYXXhw4eHS6ube3VaqiDtI5g6SuYNk
7iBZzZXaB3EXudSFrxC6wXMP7mCZa3vXOeva3q7tfWfb3uvucN1BM+dw65x1
Dtc53AfncN3BMwuGOX9ocdb5Q+cPnT90B9GcQ3QOscTtHOLDcojuYNrd2qS+
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
aphNeyBOpTLWcRLPdCmPHQU9FqGLllhzow/y3nlObSsesbeHx+19+p6OlmVa
ifs7kLzQA16rJ10anBH44rzLzLRs7rXfhbreDDeIiwZMJebUg2nLaLpzychq
6tWUTeOzgh36KCtorpmm1fEqT2YfiVQPcxMF3UvogLjyCijKIGhcpYqVT5Lb
Gkf7FSqbfLv/6x/991tde0MqTTDPYdDDkpE5Wl6995JS6UaBU7oSDVI+gr+x
4PUmC56K2dXg6oGT8vi9tSmN0UsafwMUmLWXBUGtwtJMSWslhrqxvU23uuzt
h4p5AidOqrVVhR3zRM7wxDQ6WzXaygcgv2lvSqogVORPCtDuMQ1WYi69fUUR
ol78sr1RaMef8enZyt3ud/o2wJZ5x3kdRj0nJAKPuqj6ZQiNi0vow8lBhbu6
d99Z55YaX0q/45jgpSRskoY7JmnzvfKmoDrQHVMHWxQNtTDzfxntKF7FdPt6
UfuZxIYkmj+TeEfEXuXxbfmBkor18ATd4q28PGzJcXfVJbRL5Qs4hT39/rTq
cbjinWmN5OCm/Xznm98akCu8+a0565JvfqvDmfcmXafozToWZwmGkHJRS0m9
2GUgoTuRXSSyKrh+s8uwspG+ba6qfeh2iOamdwFm+8olNKT5hEajwihOJhZK
UjnOWqpH45G1kt9OR25ER6xt/nawjtMFl9UW+1iBU5k7qTL6YEU7SPMYR/u4
tv39y+qU2lYptvadWj1ctWo7YXE1tSoOV3wxtbpM5msn5WvR6bhPWnzzafIt
J8gPTqIui3aK5FJtp1f3Qq9cPu50707r3kNL2qv7LF9iA+o+qecdzMYftsBc
su30xOXSTm3WQG1cquxUa51V6+FmwldrYF/xTM49U9s7nSE7AbqM2emNy6Cd
Gt0JNXIZtVO1u6Rq9ynD3lXvTrPnpexrYf5s/2prXXYLf5V1pcFGEW7ySPrr
43eKz/ioHCWvavVXzE/vAoPuZIJo3oJ7kQnY0mp5c+5Dkt26JmlOlA8qUXLi
flDJysMRdyij9w1xm4srZiFd73I1c7e9w5XY2P4u2fXlHpQybfxrubwmHCzy
5XJOeoWE/pE6C61OnNu5rt55RozHH+YOGj+q1dSztmFFGSUjLxU0S1Mu9IYL
8wuH+AjldtvV5fjbsdbi3V3gDgAnvuOMQDQG82pVXILKrsslVN78UFQs6Jg0
iTjXhVp83fwEBV6FoRcOuR7uitth7sXPMVdPwdUutLcDLI29VZ4u1Fhaxnnl
HcBryEpbWddWP9eflcuczbxzqlvZC73jfL9Len4bfK8fsGhcusPqXDvnut4c
vROKetscrW5ZdN66Fzp7u97gSpy+Y7p8RU53lXcLt0Guq/ioj7rG1/kYsXQI
S5fdgEaNor/NSwtXER8gKgVmfkuYCGSafKYo0xg0ufjS5PK11mqrUUm/+PGX
sr7RoM0qh34XAsRbvPuxS/BApYL4vMDC1kmq+jXgRrrrKFZNomn0weC1kO0a
dl8uHFL6WXorWXNb/MryVF6WsF9D62Zp2dCE2JP7ctZ34yKC1dyYgLB76cSz
XP+yAy7NxPzqdiLmX1YO4gvGp5tqed6OF7t0i/QuWMnNiehLeTEnnvXwYl9C
Dss4setuJuJv3czkR15wmIeTOIE8c4ZfZgL5vBDI02OaibqprFYqw/TBxtvM
1+3VFT/vrJemEVQz+QvzdrvTmZh32tsF9/UWYndIR0ydtlJRdxd1xFR791VH
XOulLsJ7Lrz72WG5syK8pib/GnZSWvbBbyK3XXuBrEXfxAnjNrokV+P6bZQV
17UTtn49kbtsAdcqkHXogDhhXKM/+jJMvw1vdDce2vziabOdLRvhGgaYAvTu
JcLLnI5zXa/b6nq1HTdxCuVaZJdukd1ThbqGftraxJmbaK5p5pkw5YRf78et
u/Sv3py71ypw7/t5V/Lbt1m73Yr01qn55yS39p3CK4roVjqGX/KpprVtK95/
27qvPUgnudt1izcvorX1it3tzfrNC9uXLR3PxTVIs715m7XGCh3NdegbrP60
pGtcfrHGpYZtf+rzQWuK60jeK01xR/cKbXhIIrzXB/juqiDvb9vvihK51gpp
DeSyFg29m5DJ3RXJl+3UXZn311OO3t4LW9avB3cPXNS96645mdxi3+zO+qhr
OPD3QNtj65Y4X/ZVTK5RdnuNsvVqra6hBrkG2oPQINdYa+nHrM+prdsR8ANp
u90nMT+Eptz6HF9YQ3mtWbPOyWoNu3hrcbhkfV5hu87dvXtnP/e46+dktYbd
wHvi61yX8Opdwpuv1On3thrLT+f63jX/3tZtMFwRZfiuGP76+N1V2fm592/4
9D4N2VdjOfHop+vIlLxzjj9CJ7NQ/LSBv996QpfZ77tvXrJZHOSh2NC/Kerj
7+vNePIehPzTRpbk1Tv45sOfNqTIxhb6ZzuPdp54j/7iPdoZ4EwbINmv2LHw
80Rm52wPfJwMRKIaa73eCalXBCTm6lpf/ZRsn3GIFpw8Hgt4xoGvYxlBESoj
YJFMWRD7Obkpnghkupzg3SxmI+SpD44Mvp5Kzjib8YhPBIkArDOL/TjUv7yH
upwnoke/pzePIZkI+blIgIjch9spe3Nwsvf2zQv26dN/HL3Ye7rz5PHnz1gT
Hx0c2ze+e/Tk0efPA1qOAVFE4OqyBCYE1gKX9fBvCA8QcwrMSEnmMwEkAP09
4+sNAlSUOYQy6echTwr0oAcJjodFzBNheAhGmuajVJDt8jBk/JRLUJCwpKtg
AfopJQdiNhIKLBqQUICnyFfO1C/LITaSAv7kYtqQhaU7cIFnCNs7A4HjxNt+
Irj6Czgg6C+2KQdi0NeiZ6hafXY2lcB0SezowRQ8D7OtAWNADtiANT0e5x6R
3pAuASGpwJ98lKcCZXOahxGsDKbpAYFpPBMsEtlZnLyHFORUJnGEqpAC5t+A
RGHzYVMMJkCWCGTmKdq2esDirE4Bag8YLFPOnlgqlK76PGJTfkqsExOONPXE
eEzeNCroKKcs1ofspkCbj7JECCWTcsoefoX7MikWC/a0bdYqQ/g27PU8xhaE
Ufv+YDDQzmwEqM9koH7ivHRobYMrTnI5v9iCpiXtWZzpoF9TlcSNT4MJ8E1M
0usdgFLFYLIR6MqQnSmJ5yn+JGgqZ/NQjiVoshU+sN82jsNAjwAzTnojcFT+
VCjDP41lADF4LjL6/dABetpXu292W7ys5TAB4p85UJaqsYAoERMJiZmKRzBj
GJ/hnL8evUqViQu2EaUbqJpqKIR+tABz79XByQv2j8PX7Ejf3dB+7pun330H
bpG9KHCqGTDuImZ7VL82u57JOCjglaZbBLBQCm4gLqBxyPIkGmIYGtIvoKbD
D7NwGKVDDD/DWnhCGE0lB1YAozIIMkO0Qfbq4Pgl3oeVDNmb7d0fVEJkZsW5
0DuBgeNaMfqlc+6LgSLmkky2XGfJbII5VP70Dc5jGPr00c6jixmqRq3A0GHJ
UFzWkLVwrVjvyvyG8DSWH4ZM/3wuXoIr4LcjRAb0sn/AR3MRvypLGbJ3ocDs
BzQ8hHlpVPkrGDhQByeeltG/khuAoniex0bcf4+2seu/j+KzUASUjqWQHJnf
Tf1pY8zDVGCyQmIkJ42yDtNYBV+IpWCNeWT1wY/nPJLplB1jwgJalQqe+NPe
7gQWds5waKIfQIopm96dyFAcgl1v7h68Yu9e7e88evy99/jRkyffPj567u3t
PN4ipz8679noD2WkTA5i8LEvkWt99iqK4lPVfUeQXyP6MWKJZYeauadnnoCE
ilyTXk6NugCocgNyzkKgDlIH8E2bL8ksFFuGvRfvfn38/fajb5/+5butQe//
A1rqvCwtcgIA

-->

</rfc>

