<?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-03" 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="2024" month="October" day="18"/>

    <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:transmitter-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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
1ELX5GmNVDVfndby5YTq9kXws8XwzdfbfSDicAWttH2oC0XT8TX7b/1Xs+1e
7lEUq1p2KaxlNRcuoV2v7NuIsHjHIbqb1jc2doxdtNQ64AqrbQXtWvDa+UAZ
KR+ofaFzgubjnKBzghqMOSd4d5zgNVVMHXBpxpPsy3s+y0Vdg/O4mq+wTLtF
Le6CbMuLIgoaSJxk74Nk00w0X7W2rDhh9ZeX6FkaRyram9Mf6Zz7EDBbi/pl
BEwY/Utg7JT3h1qzoA1x53vAK8rijydtCclywCSlJrhpatyJ3WYXKNbVnVyD
cF2keACidaHiPoaKa9hRjueZnMmPvFAiHk6w9z6d4ZeZQFVqILGBPDWmpTdj
Ws8r9ambb5d1LRrXonEtGteiWWa1raDLt2jW25+aNvZKPW/nT6sf50+dP9Vg
zPnT9fen7syDBcOc77M463yf833O97mzDs75scpd5/yc82sFvFPO75oeOFqw
W9UAdvsbi/Y31lGmIgqcRO+VRHELxO1NWZ8HvDflji/cV4/hji04kbrjChdg
dCGhqWp34/cHCtdzteZKfHmfFN9McyW+ueZKfK3NlfjGmivxdTdX4is2V+Ib
bK7El26uxJdsrsTX3VyJV2iu1Mcu3VxZbbWtoF+2udLyHpHG6YUGlpajDB2n
Fxqg7miY62i7jjZzHe2Lx97fjvYtO113fsw53TpnndN1TvfBOd2LHKVV8y84
V9bsT9kO0vnEGm7nE6sf5xMXwDmfuKY+cbmk0R0+q4naeUjnITUYcx7ynnhI
d0LtHm5l34rg3TG2Byl2d9bNHWy4lTf7u5BzJ33PtUrexZyHKXcXdFzQWUkF
O4/cNW5eeKSu5RTe4u5S55G79j57ixNzR+7ckbsWUt2RO3fk7qotpdV/hKj7
5UANYHe8rrzlevauZ98K73r297pnv74O1h2lcw62zlnnYJ2DvfcO1r2OzYJh
zv9ZnHX+z/k/5//cqTjrpnOAJZ3OAToH2AS8cw7Q/fTcXdiJvjW5Vs4XNJA4
qd51qboX8zyYowSX1Db3vrYminvhRtw725xYXXhw4eHS6ube3VaqiDtI5g6S
uYNk7iBZzZXaB3EXudSFrxC6wXMP7mCZa3vXOeva3q7tfWfb3uvucN1BM+dw
65x1Dtc53AfncN3BMwuGOX9ocdb5Q+cPnT90B9GcQ3QOscTtHOLDcojuYNrd
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
bD3IqYbZtAfiVCpjHSfxTJfy2FHQYxG6aIk1N/og753n1LbiEXt7eNzep+/p
aFmmlbi/A8kLPeC1etKlwRmBL867zEzL5l77XajrzXCDuGjAVGJOPZi2jKY7
l4yspl5N2TQ+K9ihj7KC5pppWh2v8mT2kUj1MDdR0L2EDogrr4CiDILGVapY
+SS5rXG0X6Gyybf7v/7Rf7/VtTek0gTzHAY9LBmZo+XVey8plW4UOKUr0SDl
I/gbC15vsuCpmF0Nrh44KY/fW5vSGL2k8TdAgVl7WRDUKizNlLRWYqgb29t0
q8vefqiYJ3DipFpbVdgxT+QMT0yjs1WjrXwA8pv2pqQKQkX+pADtHtNgJebS
21cUIerFL9sbhXb8GZ+erdztfqdvA2yZd5zXYdRzQiLwqIuqX4bQuLiEPpwc
VLire/eddW6p8aX0O44JXkrCJmm4Y5I23ytvCqoD3TF1sEXRUAsz/5fRjuJV
TLevF7WfSWxIovkziXdE7FUe35YfKKlYD0/QLd7Ky8OWHHdXXUK7VL6AU9jT
70+rHocr3pnWSA5u2s93vvmtAbnCm9+asy755rc6nHlv0nWK3qxjcZZgCCkX
tZTUi10GEroT2UUiq4LrN7sMKxvp2+aq2oduh2huehdgtq9cQkOaT2g0Kozi
ZGKhJJXjrKV6NB5ZK/ntdORGdMTa5m8H6zhdcFltsY8VOJW5kyqjD1a0gzSP
cbSPa9vfv6xOqW2VYmvfqdXDVau2ExZXU6vicMUXU6vLZL52Ur4WnY77pMU3
nybfcoL84CTqsminSC7Vdnp1L/TK5eNO9+607j20pL26z/IlNqDuk3rewWz8
YQvMJdtOT1wu7dRmDdTGpcpOtdZZtR5uJny1BvYVz+TcM7W90xmyE6DLmJ3e
uAzaqdGdUCOXUTtVu0uqdp8y7F317jR7Xsq+FubP9q+21mW38FdZVxpsFOEm
j6S/Pn6n+IyPylHyqlZ/xfz0LjDoTiaI5i24F5mALa2WN+c+JNmta5LmRPmg
EiUn7geVrDwccYcyet8Qt7m4YhbS9S5XM3fbO1yJje3vkl1f7kEp08a/lstr
wsEiXy7npFdI6B+ps9DqxLmd6+qdZ8R4/GHuoPGjWk09axtWlFEy8lJBszTl
Qm+4ML9wiI9QbrddXY6/HWst3t0F7gBw4jvOCERjMK9WxSWo7LpcQuXND0XF
go5Jk4hzXajF181PUOBVGHrhkOvhrrgd5l78HHP1FFztQns7wNLYW+XpQo2l
ZZxX3gG8hqy0lXVt9XP9WbnM2cw7p7qVvdA7zve7pOe3wff6AYvGpTuszrVz
ruvN0TuhqLfN0eqWReete6Gzt+sNrsTpO6bLV+R0V3m3cBvkuoqP+qhrfJ2P
EUuHsHTZDWjUKPrbvLRwFfEBolJg5reEiUCmyWeKMo1Bk4svTS5fa622GpX0
ix9/KesbDdqscuh3IUC8xbsfuwQPVCqIzwssbJ2kql8DbqS7jmLVJJpGHwxe
C9muYfflwiGln6W3kjW3xa8sT+VlCfs1tG6Wlg1NiD25L2d9Ny4iWM2NCQi7
l048y/UvO+DSTMyvbidi/mXlIL5gfLqplufteLFLt0jvgpXcnIi+lBdz4lkP
L/Yl5LCME7vuZiL+1s1MfuQFh3k4iRPIM2f4ZSaQzwuBPD2mmaibymqlMkwf
bLzNfN1eXfHzznppGkE1k78wb7c7nYl5p71dcF9vIXaHdMTUaSsVdXdRR0y1
d191xLVe6iK858K7nx2WOyvCa2ryr2EnpWUf/CZy27UXyFr0TZwwbqNLcjWu
30ZZcV07YevXE7nLFnCtAlmHDogTxjX6oy/D9NvwRnfjoc0vnjbb2bIRrmGA
KUDvXiK8zOk41/W6ra5X23ETp1CuRXbpFtk9Vahr6KetTZy5ieaaZp4JU074
9X7cukv/6s25e60C976fdyW/fZu1261Ib52af05ya98pvKKIbqVj+CWfalrb
tuL9t6372oN0krtdt3jzIlpbr9jd3qzfvLB92dLxXFyDNNubt1lrrNDRXIe+
wepPS7rG5RdrXGrY9qc+H7SmuI7kvdIUd3Sv0IaHJMJ7fYDvrgry/rb9riiR
a62Q1kAua9HQuwmZ3F2RfNlO3ZV5fz3l6O29sGX9enD3wEXdu+6ak8kt9s3u
rI+6hgN/D7Q9tm6J82VfxeQaZbfXKFuv1uoaapBroD0IDXKNtZZ+zPqc2rod
AT+Qttt9EvNDaMqtz/GFNZTXmjXrnKzWsIu3FodL1ucVtuvc3bt39nOPu35O
VmvYDbwnvs51Ca/eJbz5Sp1+b6ux/HSu713z723dBsMVUYbviuGvj99dlZ2f
e/+GT+/TkH01lhOPfrqOTMk75/gjdDILxU8b+PutJ3SZ/b775iWbxUEeig39
m6I+/r7ejCfvQcg/bWRJXr2Dbz78aUOKbGyhf7bzaOeJ9+gv3qOdAc60AZL9
ih0LP09kds72wMfJQCSqsdbrnZB6RUBirq711U/J9hmHaMHJ47GAZxz4OpYR
FKEyAhbJlAWxn5Ob4olApssJ3s1iNkKe+uDI4Oup5IyzGY/4RJAIwDqz2I9D
/ct7qMt5Inr0e3rzGJKJkJ+LBIjIfbidsjcHJ3tv37xgnz79x9GLvac7Tx5/
/ow18dHBsX3ju0dPHn3+PKDlGBBFBK4uS2BCYC1wWQ//hvAAMafAjJRkPhNA
AtDfM77eIEBFmUMok34e8qRAD3qQ4HhYxDwRhodgpGk+SgXZLg9Dxk+5BAUJ
S7oKFqCfUnIgZiOhwKIBCQV4inzlTP2yHGIjKeBPLqYNWVi6Axd4hrC9MxA4
TrztJ4Krv4ADgv5im3IgBn0teoaq1WdnUwlMl8SOHkzB8zDbGjAG5IANWNPj
ce4R6Q3pEhCSCvzJR3kqUDaneRjBymCaHhCYxjPBIpGdxcl7SEFOZRJHqAop
YP4NSBQ2HzbFYAJkiUBmnqJtqwcszuoUoPaAwTLl7ImlQumqzyM25afEOjHh
SFNPjMfkTaOCjnLKYn3Ibgq0+ShLhFAyKafs4Ve4L5NisWBP22atMoRvw17P
Y2xBGLXvDwYD7cxGgPpMBuonzkuH1ja44iSX84staFrSnsWZDvo1VUnc+DSY
AN/EJL3eAShVDCYbga4M2ZmSeJ7iT4KmcjYP5ViCJlvhA/tt4zgM9Agw46Q3
AkflT4Uy/NNYBhCD5yKj3w8doKd9tftmt8XLWg4TIP6ZA2WpGguIEjGRkJip
eAQzhvEZzvnr0atUmbhgG1G6gaqphkLoRwsw914dnLxg/zh8zY703Q3t5755
+t134BbZiwKnmgHjLmK2R/Vrs+uZjIMCXmm6RQALpeAG4gIahyxPoiGGoSH9
Amo6/DALh1E6xPAzrIUnhNFUcmAFMCqDIDNEG2SvDo5f4n1YyZC92d79QSVE
ZlacC70TGDiuFaNfOue+GChiLslky3WWzCaYQ+VP3+A8hqFPH+08upihatQK
DB2WDMVlDVkL14r1rsxvCE9j+WHI9M/n4iW4An47QmRAL/sHfDQX8auylCF7
FwrMfkDDQ5iXRpW/goEDdXDiaRn9K7kBKIrneWzE/fdoG7v++yg+C0VA6VgK
yZH53dSfNsY8TAUmKyRGctIo6zCNVfCFWArWmEdWH/x4ziOZTtkxJiygVang
iT/t7U5gYecMhyb6AaSYsundiQzFIdj15u7BK/bu1f7Oo8ffe48fPXny7eOj
597ezuMtcvqj856N/lBGyuQgBh/7ErnWZ6+iKD5V3XcE+TWiHyOWWHaomXt6
5glIqMg16eXUqAuAKjcg5ywE6iB1AN+0+ZLMQrFl2Hvx7tfH328/+vbpX77b
GvT+P2T3kVQvcgIA

-->

</rfc>

