<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ccamp-optical-path-computation-yang-07" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="YANG for WDM Path Computation">YANG Data Models for requesting Path Computation in WDM Optical Networks</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-ccamp-optical-path-computation-yang-07"/>
    <author initials="I." surname="Busi" fullname="Italo Busi">
      <organization>Huawei Technologies</organization>
      <address>
        <email>italo.busi@huawei.com</email>
      </address>
    </author>
    <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>
    <date year="2026" month="February" day="27"/>
    <area>Routing</area>
    <workgroup>Common Control and Measurement Plane</workgroup>
    <keyword>next generation</keyword>
    <keyword>unicorn</keyword>
    <keyword>sparkling distributed ledger</keyword>
    <abstract>
      <?line 47?>

<t>This document provides a mechanism to request path computation in Wavelength-Division Multiplexing (WDM) optical networks composed of Wavelength Switched Optical Networks (WSON) and Flexi-Grid Dense Wavelength Division Multiplexing (DWDM) switched technologies. This model augments the Remote Procedure Calls (RPCs) defined in RFC YYYY.</t>
      <t>[RFC EDITOR NOTE: Please replace RFC YYYY with the RFC number of
draft-ietf-teas-yang-path-computation once it has been published.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ietf-ccamp-wg.github.io/ietf-ccamp-optical-path-computation/draft-ietf-ccamp-optical-path-computation-yang.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-ccamp-optical-path-computation-yang/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Common Control and Measurement Plane Working Group mailing list (<eref target="mailto:ccamp@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/ccamp/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/ccamp/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-ccamp-wg/ietf-ccamp-optical-path-computation"/>.</t>
    </note>
  </front>
  <middle>
    <?line 54?>

<section anchor="introduction">
      <name>Introduction</name>
      <t><xref target="I-D.ietf-teas-yang-path-computation"/> describes key use cases, where a client needs to request
underlying Software-Defined Network (SDN) controllers for path computation. In some of these use cases, the
underlying SDN controller can control a single-layer optical technologies, including
Optical Transport Network (OTN), Wavelength Switched Optical Networks (WSON), Flexi-grid, and multi-layer Optical network.</t>
      <t>This document defines YANG data models, which augment the generic Path Computation RPC defined in <xref target="I-D.ietf-teas-yang-path-computation"/>, with technology-specific augmentations required to request path computation to an underlying Optical SDN controller. These models allow
a client to delegate path computation tasks to the underlying Optical SDN controller without having to obtain optical-layer information from the controller and performing feasible path computation itself. This is especially helpful in cases where computing optically-feasible paths require knowledge of physical-layer states, such as optical impairments, which are visible only to the Optical controller.</t>
      <section anchor="terminology-and-notations">
        <name>Terminology and Notations</name>
        <t>Refer to <xref target="RFC7446"/> and <xref target="RFC7581"/> for the key terms used in this
  document.  The following terms are defined in <xref target="RFC7950"/> and are not
  redefined here:</t>
        <ul spacing="normal">
          <li>
            <t>client</t>
          </li>
          <li>
            <t>server</t>
          </li>
          <li>
            <t>augment</t>
          </li>
          <li>
            <t>data model</t>
          </li>
          <li>
            <t>data node</t>
          </li>
        </ul>
        <t>The following terms are defined in <xref target="RFC6241"/> and are not redefined
  here:</t>
        <ul spacing="normal">
          <li>
            <t>configuration data</t>
          </li>
          <li>
            <t>state data</t>
          </li>
        </ul>
        <t>The terminology for describing YANG data models is found in
  <xref target="RFC7950"/>.</t>
      </section>
      <section anchor="tree-diagram">
        <name>Tree Diagram</name>
        <t>A simplified graphical representation of the data model is used in
  <xref target="wdm-pc-tree"/> of this document.  The meaning of the symbols in these
  diagrams is defined in <xref target="RFC8340"/>.</t>
      </section>
      <section anchor="prefix-in-data-node-names">
        <name>Prefix in Data Node Names</name>
        <t>In this document, names of data nodes and other data model objects
  are prefixed using the standard prefix associated with the
  corresponding YANG imported modules, as shown in
  <xref target="tab-prefixes"/>.</t>
        <table anchor="tab-prefixes">
          <name>Prefixes and corresponding YANG modules</name>
          <thead>
            <tr>
              <th align="left">Prefix</th>
              <th align="left">YANG module</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">l0-types</td>
              <td align="left">ietf-layer0-types</td>
              <td align="left">[RFCZZZZ]</td>
            </tr>
            <tr>
              <td align="left">te</td>
              <td align="left">ietf-te</td>
              <td align="left">[RFCKKKK]</td>
            </tr>
            <tr>
              <td align="left">tepc</td>
              <td align="left">ietf-te-path-computation</td>
              <td align="left">[RFCYYYY]</td>
            </tr>
            <tr>
              <td align="left">wdm-pc</td>
              <td align="left">ietf-wdm-path-computation</td>
              <td align="left">RFCXXXX</td>
            </tr>
          </tbody>
        </table>
        <t>RFC Editor Note:
Please replace XXXX with the RFC number assigned to this document.
Please replace ZZZZ with the RFC number assigned to <xref target="I-D.ietf-ccamp-rfc9093-bis"/>.
Please replace KKKK with the RFC number assigned to <xref target="I-D.ietf-teas-yang-te"/>.
Please replace YYYY with the RFC number assigned to <xref target="I-D.ietf-teas-yang-path-computation"/>.
Please remove this note.</t>
      </section>
    </section>
    <section anchor="yang-data-models-for-wdm-path-computation">
      <name>YANG Data Models for WDM Path Computation</name>
      <section anchor="yang-models-overview">
        <name>YANG Models Overview</name>
        <t>The YANG data models for requesting WDM path computation are defined as augmentations of the generic Path Computation RPC defined in <xref target="I-D.ietf-teas-yang-path-computation"/>, as shown in <xref target="fig-wdm-pc"/>.</t>
        <figure anchor="fig-wdm-pc">
          <name>Relationship between WDM and TE path computation models</name>
          <artwork type="ascii-art" name="wdm-path-computation.txt"><![CDATA[
                    +--------------------------+    o: augment
       TE generic   | ietf-te-path-computation |
                    +--------------------------+
                                 o
                                 |
                                 |
                                 |
                    +---------------------------+
                    | ietf-wdm-path-computation |
                    +---------------------------+

]]></artwork>
        </figure>
        <t>The entities and Traffic Engineering (TE) attributes, such as requested path and tunnel attributes, defined in <xref target="I-D.ietf-teas-yang-path-computation"/>, are still applicable when requesting WDM path computation and the models defined in this document only specifies the additional technology-specific attributes/information, using the attributes defined in <xref target="I-D.ietf-ccamp-rfc9093-bis"/>.</t>
      </section>
      <section anchor="attributes-augmentation">
        <name>Attributes Augmentation</name>
        <t>The common characteristics for layer 0 (WSON and Flexi-grid) path computation are under definition in <xref target="I-D.ietf-ccamp-rfc9093-bis"/> and re-used in the ietf-wdm-path-computation YANG models.</t>
      </section>
      <section anchor="wdm-te-bandwidth">
        <name>Bandwidth Augmentation</name>
        <t>As described in Section 4.2 of <xref target="RFC7699"/>, there is some overlap
between bandwidth and label in layer0.</t>
        <t>The WSON and flexi-grid label resource information described in <xref target="wdm-te-label"/>,
is sufficient to describe also the spectrum resources within WSON and
flexi-grid networks. Therefore, the model does not define any augmentation
for the te-bandwidth containers defined in <xref target="I-D.ietf-teas-yang-path-computation"/>.</t>
      </section>
      <section anchor="wdm-te-label">
        <name>Label Augmentations</name>
        <t>The models augment all the occurrences of the label-restriction list
with WSON and Flexi-grid technology-specific attributes using the
l0-label-range-info and flexi-grid-label-range-info groupings defined in <xref target="I-D.ietf-ccamp-rfc9093-bis"/>.</t>
        <t>Moreover, the models augment all the occurrences of the te-label
container with the WSON, Flexi-grid and OTN technology-specific attributes using the
wson-label-start-end, wson-label-hop, wson-label-step,
flexi-grid-label-start-end, flexi-grid-label-hop and flexi-grid-label-step defined in <xref target="I-D.ietf-ccamp-rfc9093-bis"/>.</t>
      </section>
    </section>
    <section anchor="wdm-pc-tree">
      <name>WDM Path Computation Tree Diagrams</name>
      <t><xref target="fig-wdm-pc-tree"/> below shows the tree diagram of the YANG data model defined in module ietf-wdm-path-computation.yang.</t>
      <figure anchor="fig-wdm-pc-tree">
        <name>WDM path computation tree diagram</name>
        <artwork type="ascii-art" name="ietf-wdm-path-computation.tree"><![CDATA[
module: ietf-wdm-path-computation

  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:tunnel-attributes:
    +-- wdm-constraint
       +-- transceiver-constraint
       |  +-- operational-modes*            string
       |  +-- tx-tune-constraints
       |  |  +-- min-central-frequency?    frequency-thz
       |  |  +-- max-central-frequency?    frequency-thz
       |  |  +-- transceiver-tunability?   frequency-ghz
       |  +-- line-coding-bitrate*          identityref
       |  +-- tx-channel-power?             l0-types:power-dbm
       |  +-- preferred-rx-channel-power?   l0-types:power-dbm
       +-- gsnr-extra-margin?             snr
       +-- use-regen?                     boolean
       +-- wavelength-conversion?         boolean
       +-- wavelength-assignment?         identityref
       +-- guard-band-size?               l0-types:frequency-thz
       +-- matching-fwd-rev-wavelength?   boolean
       +-- allow-retuning?                boolean
       +-- delta-power?                   l0-types:power-ratio
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:optimizations/tepc:algorithm
            /tepc:metric/tepc:optimization-metric
            /tepc:explicit-route-exclude-objects
            /tepc:route-object-exclude-object/tepc:type
            /tepc:numbered-node-hop:
    +-- path-in-transceiver
    |  +-- transponder-id?   uint32
    |  +-- transceivers* [lane-id]
    |     +-- lane-id                       uint8
    |     +-- transceiver-id?               uint32
    |     +-- operational-modes*            string
    |     +-- tx-tune-constraints
    |     |  +-- min-central-frequency?    frequency-thz
    |     |  +-- max-central-frequency?    frequency-thz
    |     |  +-- transceiver-tunability?   frequency-ghz
    |     +-- line-coding-bitrate*          identityref
    |     +-- tx-channel-power?             l0-types:power-dbm
    |     +-- preferred-rx-channel-power?   l0-types:power-dbm
    +-- path-out-transceiver
       +-- transponder-id?   uint32
       +-- transceivers* [lane-id]
          +-- lane-id                       uint8
          +-- transceiver-id?               uint32
          +-- operational-modes*            string
          +-- tx-tune-constraints
          |  +-- min-central-frequency?    frequency-thz
          |  +-- max-central-frequency?    frequency-thz
          |  +-- transceiver-tunability?   frequency-ghz
          +-- line-coding-bitrate*          identityref
          +-- tx-channel-power?             l0-types:power-dbm
          +-- preferred-rx-channel-power?   l0-types:power-dbm
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:optimizations/tepc:algorithm
            /tepc:metric/tepc:optimization-metric
            /tepc:explicit-route-exclude-objects
            /tepc:route-object-exclude-object/tepc:type:
    +--:(oms-element)
       +-- oms-element-uid?   string
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:optimizations/tepc:algorithm
            /tepc:metric/tepc:optimization-metric
            /tepc:explicit-route-include-objects
            /tepc:route-object-include-object/tepc:type
            /tepc:numbered-node-hop:
    +-- path-in-transceiver
    |  +-- transponder-id?   uint32
    |  +-- transceivers* [lane-id]
    |     +-- lane-id                       uint8
    |     +-- transceiver-id?               uint32
    |     +-- operational-modes*            string
    |     +-- tx-tune-constraints
    |     |  +-- min-central-frequency?    frequency-thz
    |     |  +-- max-central-frequency?    frequency-thz
    |     |  +-- transceiver-tunability?   frequency-ghz
    |     +-- line-coding-bitrate*          identityref
    |     +-- tx-channel-power?             l0-types:power-dbm
    |     +-- preferred-rx-channel-power?   l0-types:power-dbm
    +-- path-out-transceiver
       +-- transponder-id?   uint32
       +-- transceivers* [lane-id]
          +-- lane-id                       uint8
          +-- transceiver-id?               uint32
          +-- operational-modes*            string
          +-- tx-tune-constraints
          |  +-- min-central-frequency?    frequency-thz
          |  +-- max-central-frequency?    frequency-thz
          |  +-- transceiver-tunability?   frequency-ghz
          +-- line-coding-bitrate*          identityref
          +-- tx-channel-power?             l0-types:power-dbm
          +-- preferred-rx-channel-power?   l0-types:power-dbm
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:optimizations/tepc:algorithm
            /tepc:metric/tepc:optimization-metric
            /tepc:explicit-route-include-objects
            /tepc:route-object-include-object/tepc:type:
    +--:(oms-element)
       +-- oms-element-uid?   string
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:explicit-route-objects
            /tepc:route-object-exclude-always/tepc:type
            /tepc:numbered-node-hop:
    +-- path-in-transceiver
    |  +-- transponder-id?   uint32
    |  +-- transceivers* [lane-id]
    |     +-- lane-id                       uint8
    |     +-- transceiver-id?               uint32
    |     +-- operational-modes*            string
    |     +-- tx-tune-constraints
    |     |  +-- min-central-frequency?    frequency-thz
    |     |  +-- max-central-frequency?    frequency-thz
    |     |  +-- transceiver-tunability?   frequency-ghz
    |     +-- line-coding-bitrate*          identityref
    |     +-- tx-channel-power?             l0-types:power-dbm
    |     +-- preferred-rx-channel-power?   l0-types:power-dbm
    +-- path-out-transceiver
       +-- transponder-id?   uint32
       +-- transceivers* [lane-id]
          +-- lane-id                       uint8
          +-- transceiver-id?               uint32
          +-- operational-modes*            string
          +-- tx-tune-constraints
          |  +-- min-central-frequency?    frequency-thz
          |  +-- max-central-frequency?    frequency-thz
          |  +-- transceiver-tunability?   frequency-ghz
          +-- line-coding-bitrate*          identityref
          +-- tx-channel-power?             l0-types:power-dbm
          +-- preferred-rx-channel-power?   l0-types:power-dbm
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:explicit-route-objects
            /tepc:route-object-exclude-always/tepc:type:
    +--:(oms-element)
       +-- oms-element-uid?   string
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:explicit-route-objects
            /tepc:route-object-include-exclude/tepc:type
            /tepc:numbered-node-hop:
    +-- path-in-transceiver
    |  +-- transponder-id?   uint32
    |  +-- transceivers* [lane-id]
    |     +-- lane-id                       uint8
    |     +-- transceiver-id?               uint32
    |     +-- operational-modes*            string
    |     +-- tx-tune-constraints
    |     |  +-- min-central-frequency?    frequency-thz
    |     |  +-- max-central-frequency?    frequency-thz
    |     |  +-- transceiver-tunability?   frequency-ghz
    |     +-- line-coding-bitrate*          identityref
    |     +-- tx-channel-power?             l0-types:power-dbm
    |     +-- preferred-rx-channel-power?   l0-types:power-dbm
    +-- path-out-transceiver
       +-- transponder-id?   uint32
       +-- transceivers* [lane-id]
          +-- lane-id                       uint8
          +-- transceiver-id?               uint32
          +-- operational-modes*            string
          +-- tx-tune-constraints
          |  +-- min-central-frequency?    frequency-thz
          |  +-- max-central-frequency?    frequency-thz
          |  +-- transceiver-tunability?   frequency-ghz
          +-- line-coding-bitrate*          identityref
          +-- tx-channel-power?             l0-types:power-dbm
          +-- preferred-rx-channel-power?   l0-types:power-dbm
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:explicit-route-objects
            /tepc:route-object-include-exclude/tepc:type:
    +--:(oms-element)
       +-- oms-element-uid?   string
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:synchronization/tepc:exclude-objects/tepc:excludes
            /tepc:type/tepc:numbered-node-hop:
    +-- path-in-transceiver
    |  +-- transponder-id?   uint32
    |  +-- transceivers* [lane-id]
    |     +-- lane-id                       uint8
    |     +-- transceiver-id?               uint32
    |     +-- operational-modes*            string
    |     +-- tx-tune-constraints
    |     |  +-- min-central-frequency?    frequency-thz
    |     |  +-- max-central-frequency?    frequency-thz
    |     |  +-- transceiver-tunability?   frequency-ghz
    |     +-- line-coding-bitrate*          identityref
    |     +-- tx-channel-power?             l0-types:power-dbm
    |     +-- preferred-rx-channel-power?   l0-types:power-dbm
    +-- path-out-transceiver
       +-- transponder-id?   uint32
       +-- transceivers* [lane-id]
          +-- lane-id                       uint8
          +-- transceiver-id?               uint32
          +-- operational-modes*            string
          +-- tx-tune-constraints
          |  +-- min-central-frequency?    frequency-thz
          |  +-- max-central-frequency?    frequency-thz
          |  +-- transceiver-tunability?   frequency-ghz
          +-- line-coding-bitrate*          identityref
          +-- tx-channel-power?             l0-types:power-dbm
          +-- preferred-rx-channel-power?   l0-types:power-dbm
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:synchronization/tepc:exclude-objects/tepc:excludes
            /tepc:type:
    +--:(oms-element)
       +-- oms-element-uid?   string
  augment /te:tunnels-path-compute/te:output/te:path-compute-result
            /tepc:response/tepc:computed-paths-properties
            /tepc:computed-path-properties/tepc:path-properties:
    +--ro estimated-gsnr?          snr
    +--ro estimated-eol-gsnr?      snr
    +--ro estimated-lowest-gsnr?   snr
  augment /te:tunnels-path-compute/te:output/te:path-compute-result
            /tepc:response/tepc:computed-paths-properties
            /tepc:computed-path-properties/tepc:path-properties
            /tepc:path-route-objects/tepc:path-route-object/tepc:type
            /tepc:numbered-node-hop:
    +--ro path-in-transceiver
    |  +--ro transponder-id?   uint32
    |  +--ro transceivers* [lane-id]
    |     +--ro lane-id                       uint8
    |     +--ro transceiver-id?               uint32
    |     +--ro operational-modes*            string
    |     +--ro tx-tune-constraints
    |     |  +--ro min-central-frequency?    frequency-thz
    |     |  +--ro max-central-frequency?    frequency-thz
    |     |  +--ro transceiver-tunability?   frequency-ghz
    |     +--ro line-coding-bitrate*          identityref
    |     +--ro tx-channel-power?             l0-types:power-dbm
    |     +--ro preferred-rx-channel-power?   l0-types:power-dbm
    +--ro path-out-transceiver
       +--ro transponder-id?   uint32
       +--ro transceivers* [lane-id]
          +--ro lane-id                       uint8
          +--ro transceiver-id?               uint32
          +--ro operational-modes*            string
          +--ro tx-tune-constraints
          |  +--ro min-central-frequency?    frequency-thz
          |  +--ro max-central-frequency?    frequency-thz
          |  +--ro transceiver-tunability?   frequency-ghz
          +--ro line-coding-bitrate*          identityref
          +--ro tx-channel-power?             l0-types:power-dbm
          +--ro preferred-rx-channel-power?   l0-types:power-dbm
  augment /te:tunnels-path-compute/te:output/te:path-compute-result
            /tepc:response/tepc:computed-paths-properties
            /tepc:computed-path-properties/tepc:path-properties
            /tepc:path-route-objects/tepc:path-route-object
            /tepc:type:
    +--:(oms-element)
       +--ro oms-element-uid?   string
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:path-in-segment
            /tepc:label-restrictions/tepc:label-restriction:
    +-- grid-type?    identityref
    +-- priority?     uint8
    +-- flexi-grid
       +-- slot-width-granularity?   identityref
       +-- min-slot-width-factor?    uint16
       +-- max-slot-width-factor?    uint16
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:path-out-segment
            /tepc:label-restrictions/tepc:label-restriction:
    +-- grid-type?    identityref
    +-- priority?     uint8
    +-- flexi-grid
       +-- slot-width-granularity?   identityref
       +-- min-slot-width-factor?    uint16
       +-- max-slot-width-factor?    uint16
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:optimizations/tepc:algorithm
            /tepc:metric/tepc:optimization-metric
            /tepc:explicit-route-exclude-objects
            /tepc:route-object-exclude-object/tepc:type/tepc:label
            /tepc:label-hop/tepc:te-label/tepc:technology:
    +--:(wdm)
       +-- (grid-type)?
          +--:(fixed-dwdm)
          |  +-- (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +-- dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +-- subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +-- cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +-- (single-or-super-channel)?
                +--:(single)
                |  +-- flexi-n?              l0-types:flexi-n
                |  +-- flexi-m?              l0-types:flexi-m
                x--:(super)
                |  x-- subcarrier-flexi-n* [flexi-n]
                |     +-- flexi-n    l0-types:flexi-n
                |     +-- flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +-- frequency-slots
                      +-- frequency-slot* [flexi-n]
                         +-- flexi-n    l0-types:flexi-n
                         +-- flexi-m?   l0-types:flexi-m
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:optimizations/tepc:algorithm
            /tepc:metric/tepc:optimization-metric
            /tepc:explicit-route-include-objects
            /tepc:route-object-include-object/tepc:type/tepc:label
            /tepc:label-hop/tepc:te-label/tepc:technology:
    +--:(wdm)
       +-- (grid-type)?
          +--:(fixed-dwdm)
          |  +-- (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +-- dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +-- subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +-- cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +-- (single-or-super-channel)?
                +--:(single)
                |  +-- flexi-n?              l0-types:flexi-n
                |  +-- flexi-m?              l0-types:flexi-m
                x--:(super)
                |  x-- subcarrier-flexi-n* [flexi-n]
                |     +-- flexi-n    l0-types:flexi-n
                |     +-- flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +-- frequency-slots
                      +-- frequency-slot* [flexi-n]
                         +-- flexi-n    l0-types:flexi-n
                         +-- flexi-m?   l0-types:flexi-m
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:explicit-route-objects
            /tepc:route-object-exclude-always/tepc:type/tepc:label
            /tepc:label-hop/tepc:te-label/tepc:technology:
    +--:(wdm)
       +-- (grid-type)?
          +--:(fixed-dwdm)
          |  +-- (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +-- dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +-- subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +-- cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +-- (single-or-super-channel)?
                +--:(single)
                |  +-- flexi-n?              l0-types:flexi-n
                |  +-- flexi-m?              l0-types:flexi-m
                x--:(super)
                |  x-- subcarrier-flexi-n* [flexi-n]
                |     +-- flexi-n    l0-types:flexi-n
                |     +-- flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +-- frequency-slots
                      +-- frequency-slot* [flexi-n]
                         +-- flexi-n    l0-types:flexi-n
                         +-- flexi-m?   l0-types:flexi-m
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:explicit-route-objects
            /tepc:route-object-include-exclude/tepc:type/tepc:label
            /tepc:label-hop/tepc:te-label/tepc:technology:
    +--:(wdm)
       +-- (grid-type)?
          +--:(fixed-dwdm)
          |  +-- (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +-- dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +-- subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +-- cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +-- (single-or-super-channel)?
                +--:(single)
                |  +-- flexi-n?              l0-types:flexi-n
                |  +-- flexi-m?              l0-types:flexi-m
                x--:(super)
                |  x-- subcarrier-flexi-n* [flexi-n]
                |     +-- flexi-n    l0-types:flexi-n
                |     +-- flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +-- frequency-slots
                      +-- frequency-slot* [flexi-n]
                         +-- flexi-n    l0-types:flexi-n
                         +-- flexi-m?   l0-types:flexi-m
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:path-in-segment
            /tepc:label-restrictions/tepc:label-restriction
            /tepc:label-start/tepc:te-label/tepc:technology:
    +--:(wdm)
       +-- (grid-type)?
          +--:(fixed-dwdm)
          |  +-- dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +-- cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +-- flexi-n?   l0-types:flexi-n
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:path-in-segment
            /tepc:label-restrictions/tepc:label-restriction
            /tepc:label-end/tepc:te-label/tepc:technology:
    +--:(wdm)
       +-- (grid-type)?
          +--:(fixed-dwdm)
          |  +-- dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +-- cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +-- flexi-n?   l0-types:flexi-n
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:path-in-segment
            /tepc:label-restrictions/tepc:label-restriction
            /tepc:label-step/tepc:technology:
    +--:(wdm)
       +-- (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +-- wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +-- wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x-- flexi-grid-channel-spacing?   identityref
             +-- flexi-ncfg?                   identityref
             +-- flexi-n-step?                 uint8
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:path-out-segment
            /tepc:label-restrictions/tepc:label-restriction
            /tepc:label-start/tepc:te-label/tepc:technology:
    +--:(wdm)
       +-- (grid-type)?
          +--:(fixed-dwdm)
          |  +-- dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +-- cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +-- flexi-n?   l0-types:flexi-n
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:path-out-segment
            /tepc:label-restrictions/tepc:label-restriction
            /tepc:label-end/tepc:te-label/tepc:technology:
    +--:(wdm)
       +-- (grid-type)?
          +--:(fixed-dwdm)
          |  +-- dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +-- cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +-- flexi-n?   l0-types:flexi-n
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:path-out-segment
            /tepc:label-restrictions/tepc:label-restriction
            /tepc:label-step/tepc:technology:
    +--:(wdm)
       +-- (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +-- wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +-- wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x-- flexi-grid-channel-spacing?   identityref
             +-- flexi-ncfg?                   identityref
             +-- flexi-n-step?                 uint8
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:synchronization/tepc:exclude-objects/tepc:excludes
            /tepc:type/tepc:label/tepc:label-hop/tepc:te-label
            /tepc:technology:
    +--:(wdm)
       +-- (grid-type)?
          +--:(fixed-dwdm)
          |  +-- (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +-- dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +-- subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +-- cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +-- (single-or-super-channel)?
                +--:(single)
                |  +-- flexi-n?              l0-types:flexi-n
                |  +-- flexi-m?              l0-types:flexi-m
                x--:(super)
                |  x-- subcarrier-flexi-n* [flexi-n]
                |     +-- flexi-n    l0-types:flexi-n
                |     +-- flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +-- frequency-slots
                      +-- frequency-slot* [flexi-n]
                         +-- flexi-n    l0-types:flexi-n
                         +-- flexi-m?   l0-types:flexi-m
  augment /te:tunnels-path-compute/te:output/te:path-compute-result
            /tepc:response/tepc:computed-paths-properties
            /tepc:computed-path-properties/tepc:path-properties
            /tepc:path-route-objects/tepc:path-route-object/tepc:type
            /tepc:label/tepc:label-hop/tepc:te-label/tepc: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="wdm-pc-yang">
      <name>YANG Models for WDM Path Computation</name>
      <figure anchor="fig-wdm-pc-yang">
        <name>WDM path computation YANG module</name>
        <sourcecode type="yang" markers="true" name="ietf-wdm-path-computation@2024-02-29.yang"><![CDATA[
module ietf-wdm-path-computation {
  yang-version 1.1;
  namespace
    "urn:ietf:params:xml:ns:yang:ietf-wdm-path-computation";
  prefix "wdm-pc";

  import ietf-te-path-computation {
    prefix "tepc";
    reference 
      "I-D.ietf-teas-yang-path-computation-22: Yang model
      for requesting Path Computation.";
  }

  import ietf-te {
    prefix "te";
    reference
      "I-D.ietf-teas-yang-te-36: A YANG Data Model for Traffic
      Engineering Tunnels and Interfaces.";
  }

  import ietf-layer0-types {
    prefix "l0-types";
    reference
      "I-D.ietf-ccamp-rfc9093-bis: A YANG Data Model for Layer 0
      Types.";
  }

  import ietf-wdm-tunnel {
    prefix "wdm-tnl";
    reference
      "I-D.ietf-wdm-tunnel: A YANG Data Model for WDM Tunnels.";
  }

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

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

     Editor:   Italo Busi
               <mailto:italo.busi@huawei.com>

     Editor:   Sergio Belotti
               <mailto:sergio.belotti@nokia.com>";

  description
    "This module defines a model for requesting
    WDM Path Computation.

    The model fully conforms to the Network Management 
    Datastore Architecture (NMDA).
    
    Copyright (c) 2022 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 Revised 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-02-29" {
    description
      "Initial version.";
    reference
      "RFC XXXX: YANG Data Models for requesting Path Computation
      in Optical Networks.";
    // RFC Ed.: replace XXXX with actual RFC number, update date 
    // information and remove this note
  }

 /*
  * Data nodes
  */

  /*
   * Augment tunnel attributes
   */
  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:tunnel-attributes" {
    description
       "Augment with WDM tunnel-specific constraints.";

    uses wdm-tnl:wdm-constraint;
  }

  /*
   * Augment path computation request
   */

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:optimizations/tepc:algorithm/"
        + "tepc:metric/tepc:optimization-metric/"
        + "tepc:explicit-route-exclude-objects/"
        + "tepc:route-object-exclude-object/tepc:type/"
        + "tepc:numbered-node-hop" {
    description
      "Augment with transceiver configurations.";
      
    uses wdm-tnl:path-transceiver-config;
  }

  //???
  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:optimizations/tepc:algorithm/"
        + "tepc:metric/tepc:optimization-metric/"
        + "tepc:explicit-route-exclude-objects/"
        + "tepc:route-object-exclude-object/tepc:type" {
    description
      "Augment the route hop for the optimization of the explicit
      route objects excluded by the path computation of the requested
      path.";
    case oms-element {
      leaf oms-element-uid {
        type string;
        description
          "The unique id of the OMS element.";
      }
      description
        "The OMS element route hop type";
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:optimizations/tepc:algorithm/"
        + "tepc:metric/tepc:optimization-metric/"
        + "tepc:explicit-route-include-objects/"
        + "tepc:route-object-include-object/tepc:type/"
        + "tepc:numbered-node-hop" {
    description
      "Augment with transceiver configurations.";
      
    uses wdm-tnl:path-transceiver-config;
  }

  //???
  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:optimizations/tepc:algorithm/"
        + "tepc:metric/tepc:optimization-metric/"
        + "tepc:explicit-route-include-objects/"
        + "tepc:route-object-include-object/tepc:type" {
    description
      "Augment the route hop for the optimization of the explicit
      route objects included by the path computation of the requested
      path.";
    case oms-element {
      leaf oms-element-uid {
        type string;
        description
          "The unique id of the OMS element.";
      }
      description
        "The OMS element route hop type";
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:explicit-route-objects/"
        + "tepc:route-object-exclude-always/tepc:type/"
        + "tepc:numbered-node-hop" {
    description
      "Augment with transceiver configurations.";
      
    uses wdm-tnl:path-transceiver-config;
  }

  //???
  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:explicit-route-objects/"
        + "tepc:route-object-exclude-always/tepc:type" {
    description
      "Augment the route hop for the explicit route objects always
      excluded by the path computation of the requested path.";
    case oms-element {
      leaf oms-element-uid {
        type string;
        description
          "The unique id of the OMS element.";
      }
      description
        "The OMS element route hop type";
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:explicit-route-objects/"
        + "tepc:route-object-include-exclude/tepc:type/"
        + "tepc:numbered-node-hop" {
    description
      "Augment with transceiver configurations.";
      
    uses wdm-tnl:path-transceiver-config;
  }

  //???
  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:explicit-route-objects/"
        + "tepc:route-object-include-exclude/tepc:type" {
    description
      "Augment the route hop for the explicit route objects included
      or excluded by the path computation of the requested path.";
    case oms-element {
      leaf oms-element-uid {
        type string;
        description
          "The unique id of the OMS element.";
      }
      description
        "The OMS element route hop type";
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:synchronization/tepc:exclude-objects/tepc:excludes/"
        + "tepc:type/tepc:numbered-node-hop" {
    description
      "Augment with transceiver configurations.";
      
    uses wdm-tnl:path-transceiver-config;
  }

  //???
  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:synchronization/tepc:exclude-objects/tepc:excludes/"
        + "tepc:type" {
    description
      "Augment the route hop for the explicit route objects to always
      exclude from synchronized path computation.";
    case oms-element {
      leaf oms-element-uid {
        type string;
        description
          "The unique id of the OMS element.";
      }
      description
        "The OMS element route hop type";
    }
  }

  /*
   * Augment path computation response
   */

  augment "/te:tunnels-path-compute/te:output/"
        + "te:path-compute-result/tepc:response/"
        + "tepc:computed-paths-properties/"
        + "tepc:computed-path-properties/tepc:path-properties" {
    description
       "Augment with additional properties for WDM paths.";

    uses l0-types:l0-path-properties;
  }


  augment "/te:tunnels-path-compute/te:output/"
        + "te:path-compute-result/tepc:response/"
        + "tepc:computed-paths-properties/"
        + "tepc:computed-path-properties/tepc:path-properties/"
        + "tepc:path-route-objects/tepc:path-route-object/"
        + "tepc:type/tepc:numbered-node-hop" {
    description
      "Augment with transceiver configurations.";
      
    uses wdm-tnl:path-transceiver-config;
  }

  //???
  augment "/te:tunnels-path-compute/te:output/"
        + "te:path-compute-result/tepc:response/"
        + "tepc:computed-paths-properties/"
        + "tepc:computed-path-properties/tepc:path-properties/"
        + "tepc:path-route-objects/tepc:path-route-object/"
        + "tepc:type" {
    description
      "Augment the route hop for the route object of the computed
      path.";
    case oms-element {
      leaf oms-element-uid {
        type string;
        description
          "The unique id of the OMS element.";
      }
      description
        "The OMS element route hop type";
    }
  }

  /*
   * Augment TE label range information
   */

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

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

  /*
   * Augment TE label.
   */

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

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

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

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

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:path-in-segment/"
        + "tepc:label-restrictions/tepc:label-restriction/"
        + "tepc:label-start/tepc:te-label/tepc:technology" {
    description
      "Augment TE label range start for the ingress segment
      of the requested path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:path-in-segment/"
        + "tepc:label-restrictions/tepc:label-restriction/"
        + "tepc:label-end/tepc:te-label/tepc:technology" {
    description
      "Augment TE label range end for the ingress segment
      of the requested path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:path-in-segment/"
        + "tepc:label-restrictions/tepc:label-restriction/"
        + "tepc:label-step/tepc:technology" {
    description
      "Augment TE label range step for the ingress segment
      of the requested path.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:path-out-segment/"
        + "tepc:label-restrictions/tepc:label-restriction/"
        + "tepc:label-start/tepc:te-label/tepc:technology" {
    description
      "Augment TE label range start for the egress segment
      of the requested path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:path-out-segment/"
        + "tepc:label-restrictions/tepc:label-restriction/"
        + "tepc:label-end/tepc:te-label/tepc:technology" {
    description
      "Augment TE label range end for the egress segment
      of the requested path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:path-out-segment/"
        + "tepc:label-restrictions/tepc:label-restriction/"
        + "tepc:label-step/tepc:technology" {
    description
      "Augment TE label range end for the egress segment
      of the requested path.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:synchronization/tepc:exclude-objects/tepc:excludes/"
        + "tepc:type/tepc:label/tepc:label-hop/"
        + "tepc:te-label/tepc:technology" {
    description
      "Augment TE label hop for the explicit route objects to always
      exclude from synchronized path computation.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:tunnels-path-compute/te:output/"
        + "te:path-compute-result/tepc:response/"
        + "tepc:computed-paths-properties/"
        + "tepc:computed-path-properties/tepc:path-properties/"
        + "tepc:path-route-objects/tepc:path-route-object/"
        + "tepc:type/tepc:label/"
        + "tepc:label-hop/tepc:te-label/tepc:technology" {
    description
      "Augment TE label hop for the route object of the computed
      path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }
}
]]></sourcecode>
      </figure>
    </section>
    <section anchor="manageability-considerations">
      <name>Manageability Considerations</name>
      <t>This document provides a method for requesting path computations for WSON and Flexi-Grid tunnels. Consideration of mechanisms to gather and collate information required for the path computations will be necessary. Furthermore, storing path computation requests and responses and triggering actions will also need to be carefully managed and secured.</t>
      <t>Future versions of this document will contain additional information.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The YANG module defined in this document will be accessed via the NETCONF protocol <xref target="RFC6241"/> or RESTCONF protocol <xref target="RFC8040"/>. The lowest NETCONF layer is the secure transport layer, and the mandatory-to-implement secure transport is Secure Shell (SSH) <xref target="RFC6242"/>. The lowest RESTCONF layer is HTTPS and the mandatory-to-implement secure transport is TLS <xref target="RFC8446"/>.</t>
      <t>The Network Configuration Access Control Model (NACM) <xref target="RFC8341"/> provides the means to restrict access to particular NETCONF or RESTCONF users to a pre-configured subset of all available NETCONF or RESTCONF protocol operations and content.</t>
      <t>Some of the RPC operations defined in this YANG module may be
considered sensitive or vulnerable in some network environments. It is thus essential to control access to these operations.</t>
      <t>Operations defined in this document, and their sensitivities and possible vulnerabilities, will be discussed further in future versions of this document.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document registers the following URIs in the "ns" subregistry
   within the "IETF XML registry" <xref target="RFC3688"/>.</t>
      <artwork><![CDATA[
  URI: urn:ietf:params:xml:ns:yang:ietf-wdm-path-computation
  Registrant Contact:  The IESG.
  XML: N/A, the requested URI is an XML namespace.
]]></artwork>
      <t>This document registers the following YANG module in the "YANG Module Names"
   registry <xref target="RFC7950"/>.</t>
      <artwork><![CDATA[
  name:      ietf-wdm-path-computation
  namespace: urn:ietf:params:xml:ns:yang:ietf-wson-path-computation
  prefix:    wdm-pc
  reference: this document
]]></artwork>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="I-D.ietf-teas-yang-path-computation">
          <front>
            <title>A YANG Data Model for requesting path computation</title>
            <author fullname="Italo Busi" initials="I." surname="Busi">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Sergio Belotti" initials="S." surname="Belotti">
              <organization>Nokia</organization>
            </author>
            <author fullname="Oscar Gonzalez de Dios" initials="O. G." surname="de Dios">
              <organization>Telefonica</organization>
            </author>
            <author fullname="Anurag Sharma" initials="A." surname="Sharma">
              <organization>Google</organization>
            </author>
            <author fullname="Yan Shi" initials="Y." surname="Shi">
              <organization>China Unicom</organization>
            </author>
            <date day="5" month="February" year="2026"/>
            <abstract>
              <t>   There are scenarios, typically in a hierarchical Software-Defined
   Networking (SDN) context, where the topology information provided by
   a Traffic Engineering (TE) network provider may be insufficient for
   its client to perform multi-domain path computation.  In these cases
   the client would need to request the TE network provider to compute
   some intra-domain paths to be used by the client to choose the
   optimal multi-domain paths.

   This document provides a mechanism to request path computation by
   augmenting the Remote Procedure Calls (RPCs) defined in RFC YYYY.

   [RFC EDITOR NOTE: Please replace RFC YYYY with the RFC number of
   draft-ietf-teas-yang-te once it has been published.

   Moreover, this document describes some use cases where the path
   computation request, via YANG-based protocols (e.g., NETCONF or
   RESTCONF), can be needed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-teas-yang-path-computation-26"/>
        </reference>
        <reference anchor="RFC7950">
          <front>
            <title>The YANG 1.1 Data Modeling Language</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7950"/>
          <seriesInfo name="DOI" value="10.17487/RFC7950"/>
        </reference>
        <reference anchor="RFC6241">
          <front>
            <title>Network Configuration Protocol (NETCONF)</title>
            <author fullname="R. Enns" initials="R." role="editor" surname="Enns"/>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <author fullname="A. Bierman" initials="A." role="editor" surname="Bierman"/>
            <date month="June" year="2011"/>
            <abstract>
              <t>The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices. It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages. The NETCONF protocol operations are realized as remote procedure calls (RPCs). This document obsoletes RFC 4741. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6241"/>
          <seriesInfo name="DOI" value="10.17487/RFC6241"/>
        </reference>
        <reference anchor="RFC8340">
          <front>
            <title>YANG Tree Diagrams</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="L. Berger" initials="L." role="editor" surname="Berger"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document captures the current syntax used in YANG module tree diagrams. The purpose of this document is to provide a single location for this definition. This syntax may be updated from time to time based on the evolution of the YANG language.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="215"/>
          <seriesInfo name="RFC" value="8340"/>
          <seriesInfo name="DOI" value="10.17487/RFC8340"/>
        </reference>
        <reference anchor="I-D.ietf-ccamp-rfc9093-bis">
          <front>
            <title>Common YANG Data Types for Layer 0 Optical Networks</title>
            <author fullname="Sergio Belotti" initials="S." surname="Belotti">
              <organization>Nokia</organization>
            </author>
            <author fullname="Italo Busi" initials="I." surname="Busi">
              <organization>Huawei</organization>
            </author>
            <author fullname="Dieter Beller" initials="D." surname="Beller">
              <organization>Nokia</organization>
            </author>
            <author fullname="Esther Le Rouzic" initials="E." surname="Le Rouzic">
              <organization>Orange</organization>
            </author>
            <author fullname="Aihua Guo" initials="A." surname="Guo">
              <organization>Futurewei Technologies</organization>
            </author>
            <date day="3" month="November" year="2025"/>
            <abstract>
              <t>   This document defines a collection of common data types, identities,
   and groupings in the YANG data modeling language.  These common types
   and groupings, derived from the built-in YANG data types, identities,
   and groupings are intended to be imported by modules that model
   Optical Layer 0 configuration and state capabilities, such as
   Wavelength Switched Optical Networks (WSONs) and flexi-grid Dense
   Wavelength Division Multiplexing (DWDM) networks.

   This document obsoletes RFC 9093 by replacing the YANG module it
   contained with a new revision that includes additional YANG data
   types, identities and groupings.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ccamp-rfc9093-bis-19"/>
        </reference>
        <reference anchor="I-D.ietf-teas-yang-te">
          <front>
            <title>A YANG Data Model for Traffic Engineering Tunnels, Label Switched Paths, and Interfaces</title>
            <author fullname="Tarek Saad" initials="T." surname="Saad">
              <organization>Cisco Systems Inc</organization>
            </author>
            <author fullname="Rakesh Gandhi" initials="R." surname="Gandhi">
              <organization>Cisco Systems Inc</organization>
            </author>
            <author fullname="Xufeng Liu" initials="X." surname="Liu">
              <organization>Alef Edge</organization>
            </author>
            <author fullname="Vishnu Pavan Beeram" initials="V. P." surname="Beeram">
              <organization>Juniper Networks</organization>
            </author>
            <author fullname="Igor Bryskin" initials="I." surname="Bryskin">
              <organization>Individual</organization>
            </author>
            <date day="24" month="February" year="2026"/>
            <abstract>
              <t>   This document defines a YANG data model for the provisioning and
   management of Traffic Engineering (TE) tunnels, Label Switched Paths
   (LSPs), and interfaces.  The model covers data that is independent of
   any technology or dataplane encapsulation and is divided into two
   YANG modules that cover device-specific, and device independent data.

   This model covers data for configuration, operational state, remote
   procedural calls, and event notifications.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-teas-yang-te-42"/>
        </reference>
        <reference anchor="RFC7699">
          <front>
            <title>Generalized Labels for the Flexi-Grid in Lambda Switch Capable (LSC) Label Switching Routers</title>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <author fullname="D. King" initials="D." surname="King"/>
            <author fullname="Y. Li" initials="Y." surname="Li"/>
            <author fullname="F. Zhang" initials="F." surname="Zhang"/>
            <date month="November" year="2015"/>
            <abstract>
              <t>GMPLS supports the description of optical switching by identifying entries in fixed lists of switchable wavelengths (called grids) through the encoding of lambda labels. Work within the ITU-T Study Group 15 has defined a finer-granularity grid, and the facility to flexibly select different widths of spectrum from the grid. This document defines a new GMPLS lambda label format to support this flexi-grid.</t>
              <t>This document updates RFCs 3471 and 6205 by introducing a new label format.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7699"/>
          <seriesInfo name="DOI" value="10.17487/RFC7699"/>
        </reference>
        <reference anchor="RFC8040">
          <front>
            <title>RESTCONF Protocol</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8040"/>
          <seriesInfo name="DOI" value="10.17487/RFC8040"/>
        </reference>
        <reference anchor="RFC6242">
          <front>
            <title>Using the NETCONF Protocol over Secure Shell (SSH)</title>
            <author fullname="M. Wasserman" initials="M." surname="Wasserman"/>
            <date month="June" year="2011"/>
            <abstract>
              <t>This document describes a method for invoking and running the Network Configuration Protocol (NETCONF) within a Secure Shell (SSH) session as an SSH subsystem. This document obsoletes RFC 4742. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6242"/>
          <seriesInfo name="DOI" value="10.17487/RFC6242"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8341">
          <front>
            <title>Network Configuration Access Control Model</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>The standardization of network configuration interfaces for use with the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requires a structured and secure operating environment that promotes human usability and multi-vendor interoperability. There is a need for standard mechanisms to restrict NETCONF or RESTCONF protocol access for particular users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content. This document defines such an access control model.</t>
              <t>This document obsoletes RFC 6536.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="91"/>
          <seriesInfo name="RFC" value="8341"/>
          <seriesInfo name="DOI" value="10.17487/RFC8341"/>
        </reference>
        <reference anchor="RFC3688">
          <front>
            <title>The IETF XML Registry</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <date month="January" year="2004"/>
            <abstract>
              <t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="81"/>
          <seriesInfo name="RFC" value="3688"/>
          <seriesInfo name="DOI" value="10.17487/RFC3688"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC7446">
          <front>
            <title>Routing and Wavelength Assignment Information Model for Wavelength Switched Optical Networks</title>
            <author fullname="Y. Lee" initials="Y." role="editor" surname="Lee"/>
            <author fullname="G. Bernstein" initials="G." role="editor" surname="Bernstein"/>
            <author fullname="D. Li" initials="D." surname="Li"/>
            <author fullname="W. Imajuku" initials="W." surname="Imajuku"/>
            <date month="February" year="2015"/>
            <abstract>
              <t>This document provides a model of information needed by the Routing and Wavelength Assignment (RWA) process in Wavelength Switched Optical Networks (WSONs). The purpose of the information described in this model is to facilitate constrained optical path computation in WSONs. This model takes into account compatibility constraints between WSON signal attributes and network elements but does not include constraints due to optical impairments. Aspects of this information that may be of use to other technologies utilizing a GMPLS control plane are discussed.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7446"/>
          <seriesInfo name="DOI" value="10.17487/RFC7446"/>
        </reference>
        <reference anchor="RFC7581">
          <front>
            <title>Routing and Wavelength Assignment Information Encoding for Wavelength Switched Optical Networks</title>
            <author fullname="G. Bernstein" initials="G." role="editor" surname="Bernstein"/>
            <author fullname="Y. Lee" initials="Y." role="editor" surname="Lee"/>
            <author fullname="D. Li" initials="D." surname="Li"/>
            <author fullname="W. Imajuku" initials="W." surname="Imajuku"/>
            <author fullname="J. Han" initials="J." surname="Han"/>
            <date month="June" year="2015"/>
            <abstract>
              <t>A Wavelength Switched Optical Network (WSON) requires certain key information fields be made available to facilitate path computation and the establishment of Label Switched Paths (LSPs). The information model described in "Routing and Wavelength Assignment Information Model for Wavelength Switched Optical Networks" (RFC 7446) shows what information is required at specific points in the WSON. Part of the WSON information model contains aspects that may be of general applicability to other technologies, while other parts are specific to WSONs.</t>
              <t>This document provides efficient, protocol-agnostic encodings for the WSON-specific information fields. It is intended that protocol- specific documents will reference this memo to describe how information is carried for specific uses. Such encodings can be used to extend GMPLS signaling and routing protocols. In addition, these encodings could be used by other mechanisms to convey this same information to a Path Computation Element (PCE).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7581"/>
          <seriesInfo name="DOI" value="10.17487/RFC7581"/>
        </reference>
        <reference anchor="I-D.draft-gbb-ccamp-otn-path-computation-yang">
          <front>
            <title>A YANG Data Model for requesting Path Computation in an Optical Transport Network (OTN)</title>
            <author fullname="Italo Busi" initials="I." surname="Busi">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Aihua Guo" initials="A." surname="Guo">
              <organization>Futurewei Technologies</organization>
            </author>
            <author fullname="Sergio Belotti" initials="S." surname="Belotti">
              <organization>Nokia</organization>
            </author>
            <date day="12" month="September" year="2022"/>
            <abstract>
              <t>   This document provides a mechanism to request path computation in an
   Optical Transport Network (OTN) by augmenting the Remote Procedure
   Calls (RPCs) defined in RFC YYYY.

   [RFC EDITOR NOTE: Please replace RFC YYYY with the RFC number of
   draft-ietf-teas-yang-path-computation once it has been published.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-gbb-ccamp-otn-path-computation-yang-02"/>
        </reference>
        <reference anchor="I-D.ietf-teas-actn-poi-applicability">
          <front>
            <title>Applicability of Abstraction and Control of Traffic Engineered Networks (ACTN) to Packet Optical Integration (POI)</title>
            <author fullname="Fabio Peruzzini" initials="F." surname="Peruzzini">
              <organization>FiberCop</organization>
            </author>
            <author fullname="Jean-Francois Bouquier" initials="J." surname="Bouquier">
              <organization>Vodafone</organization>
            </author>
            <author fullname="Italo Busi" initials="I." surname="Busi">
              <organization>Huawei</organization>
            </author>
            <author fullname="Daniel King" initials="D." surname="King">
              <organization>Old Dog Consulting</organization>
            </author>
            <author fullname="Daniele Ceccarelli" initials="D." surname="Ceccarelli">
              <organization>Cisco</organization>
            </author>
            <date day="22" month="December" year="2025"/>
            <abstract>
              <t>   This document explores the applicability of the Abstraction and
   Control of TE Networks (ACTN) architecture to Packet Optical
   Integration (POI) within the context of IP/MPLS and optical
   internetworking.  It examines the YANG data models defined by the
   IETF that enable an ACTN-based deployment architecture and highlights
   specific scenarios pertinent to Service Providers.

   Existing IETF protocols and data models are identified for each
   multi-technology scenario (packet over optical), particularly
   emphasising the Multi-Domain Service Coordinator to Provisioning
   Network Controller Interface (MPI) within the ACTN architecture

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-teas-actn-poi-applicability-17"/>
        </reference>
        <reference anchor="I-D.ietf-ccamp-wson-tunnel-model">
          <front>
            <title>A Yang Data Model for WSON Tunnel</title>
            <author fullname="Young Lee" initials="Y." surname="Lee">
              <organization>Samsung</organization>
            </author>
            <author fullname="Haomian Zheng" initials="H." surname="Zheng">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Aihua Guo" initials="A." surname="Guo">
              <organization>Futurewei</organization>
            </author>
            <author fullname="Victor Lopez" initials="V." surname="Lopez">
              <organization>Nokia</organization>
            </author>
            <author fullname="Daniel King" initials="D." surname="King">
              <organization>Lancaster University</organization>
            </author>
            <author fullname="Bin Yeong Yoon" initials="B. Y." surname="Yoon">
              <organization>ETRI</organization>
            </author>
            <author fullname="Ricard Vilalta" initials="R." surname="Vilalta">
              <organization>CTTC</organization>
            </author>
            <date day="9" month="July" year="2023"/>
            <abstract>
              <t>   This document provides a YANG data model for WSON TE tunnel.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ccamp-wson-tunnel-model-09"/>
        </reference>
        <reference anchor="I-D.ietf-ccamp-flexigrid-tunnel-yang">
          <front>
            <title>A YANG Data Model for Flexi-Grid Tunnels</title>
            <author fullname="Universidad Autonoma de Madrid" initials="U. A." surname="de Madrid">
              <organization>Naudit HPCN</organization>
            </author>
            <author fullname="Daniel Perdices Burrero" initials="D. P." surname="Burrero">
              <organization>Universidad Autonoma de Madrid</organization>
            </author>
            <author fullname="Daniel King" initials="D." surname="King">
              <organization>Old Dog Consulting</organization>
            </author>
            <author fullname="Victor Lopez" initials="V." surname="Lopez">
              <organization>Nokia</organization>
            </author>
            <author fullname="Italo Busi" initials="I." surname="Busi">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Sergio Belotti" initials="S." surname="Belotti">
              <organization>Nokia</organization>
            </author>
            <author fullname="Gabriele Galimberti" initials="G." surname="Galimberti">
              <organization>Cisco</organization>
            </author>
            <date day="10" month="July" year="2023"/>
            <abstract>
              <t>   This document defines a YANG model for managing flexi-grid optical
   tunnels (media-channels), complementing the information provided by
   the flexi-grid topology model.

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ccamp-flexigrid-tunnel-yang-03"/>
        </reference>
      </references>
    </references>
    <?line 1209?>

<section anchor="change-log">
      <name>Change Log</name>
      <t>The initial YANG data model requesting path computation in optical networks was draft-gbb-ccamp-optical-path-computation-yang-00. This document included path computation request capabilities for WSON, Flexi-Grid and OTN technologies. However, it was proposed at IETF 113 (March 25, 2022) to split the initial document into separate documents for WDM (WSON and Flexi-Grid) and OTN technologies, as each technology may be developed and implemented separately.</t>
      <t>The WDM technology capabilities were kept in this document, and the OTN capabilities were moved into <xref target="I-D.draft-gbb-ccamp-otn-path-computation-yang"/>.</t>
      <t>Editors note, please remove this appendix before publication.</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors of this document would like to thank the authors of <xref target="I-D.ietf-teas-actn-poi-applicability"/> for having identified the gap and requirements to trigger this work.</t>
      <t>The authors of this document would also like to thank
Young Lee,
Haomian Zheng,
Victor Lopex,
Ricard Vilalta,
Bin Yeong Yoon,
Jorge E. Lopez de Vergara Mendez,
Daniel Perdices Burrero,
Oscar Gonzalez de Dios,
Gabriele Galimberti,
Zafar Ali,
Daniel Michaud Vallinoto and
Dhruv Dhody
who have contributed to the development of path computation augmentations for WSON and Flexi-grid topology in earlier versions of
<xref target="I-D.ietf-ccamp-wson-tunnel-model"/> and of <xref target="I-D.ietf-ccamp-flexigrid-tunnel-yang"/>.</t>
      <t>This document was prepared using kramdown.</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>
    </section>
  </back>
  <!-- ##markdown-source:
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
iMQAAA==

-->

</rfc>
