<?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.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ccamp-optical-path-computation-yang-06" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.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-06"/>
    <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="2025" month="August" day="29"/>
    <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="11" month="August" year="2025"/>
            <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-25"/>
        </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="7" month="August" 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-16"/>
        </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="29" month="May" year="2025"/>
            <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-38"/>
        </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="4" month="July" 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-15"/>
        </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 1217?>

<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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
tSWUxAAA

-->

</rfc>
