CCAMP Working Group                                              Y. Lee
Internet Draft                                                 D. Dhody
Intended status: Standard Track                                  A. Guo
Expires: April 19, September 7, 2019                                       Huawei

                                                               V. Lopez
                                                             Telefonica

                                                                D. King
                                                        U. of Lancaster

                                                                B. Yoon
                                                                    ETRI

                                                              R. Vilalta
                                                                    CTTC

                                                       October 18, 2018

                                                          March 7, 2019

                     A Yang Data Model for WSON Tunnel

                   draft-ietf-ccamp-wson-tunnel-model-02

                   draft-ietf-ccamp-wson-tunnel-model-03

Abstract

   This document provides a YANG data model for WSON TE tunnel.

Status of this Memo

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

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-
   Drafts.

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

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html

   This Internet-Draft will expire on April 19, September 7, 2019.

Copyright Notice

   Copyright (c) 2018 2019 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document. Please review these documents
   carefully, as they describe your rights and restrictions with
   respect to this document.  Code Components extracted from this
   document must include Simplified BSD License text as described in
   Section 4.e of the Trust Legal Provisions and are provided without
   warranty as described in the Simplified BSD License.

Table of Contents

   1. Introduction...................................................2
      1.1. Terminology...............................................3
      1.2. Tree diagram..............................................3
      1.3. Prefixes in Data Node Names...............................3
   2. YANG Model (Tree Structure)....................................4
   3. TE Tunnel Model for WSON......................................20 WSON......................................16
   4. Security Considerations.......................................44 Considerations.......................................33
   5. IANA Considerations...........................................44 Considerations...........................................34
   6. Acknowledgments...............................................45 Acknowledgments...............................................34
   7. References....................................................46 References....................................................35
      7.1. Normative References.....................................46 References.....................................35
      7.2. Informative References...................................46 References...................................35
   8. Contributors..................................................47 Contributors..................................................36
   Authors' Addresses...............................................47 Addresses...............................................36

1. Introduction

   This document provides a YANG data model for WSON tunnel model. The
   YANG model described in this document is a WSON technology-specific
   Yang Tunnel model based on the information model developed in
   [RFC7446] and the two encoding documents [RFC7581] and [RFC7579]
   that developed protocol independent encodings based on [RFC7446].

   This document augments the generic TE tunnel model [TE-Tunnel].

1.1. Terminology

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

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

   o client

   o server

   o augment

   o data model

   o data node

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

   o  configuration data

   o  state data

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

1.2. Tree diagram

   A simplified graphical representation of the data model is used in
   chapter 2 of this this document.  The meaning of the symbols in
   these diagrams is defined in [RFC8340].

1.3. Prefixes in Data Node Names

   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 Table 1.

      +-------------+--------------------------+-----------------+
      | Prefix      | YANG module              | Reference       |
      +-------------+--------------------------+-----------------+
      | layer0-types| ietf-layer0-types        | [WSON-TOPO]     |
      | wson-tunnel | ietf-wson-tunnel         | [RFCXXXX]       |
      | tepc        | ietf-te-path-computation | [TE-PC]         |
      | te          | ietf-te                  | [TE-Tunnel]     |
      | otn-types   | ietf-otn-types           | [OTN-TOPO]      |
      +-------------+--------------------------+-----------------+

             Table 1: Prefixes and corresponding YANG modules

   Note: The RFC Editor will replace XXXX with the number assigned to
   the RFC once this draft becomes an RFC.

2. YANG Model (Tree Structure)

module: ietf-wson-tunnel
  augment /te:te/te:tunnels/te:tunnel:
    +--rw
    +-rw src-client-signal?   identityref
    +--rw
    +-rw dst-client-signal?   identityref
    +--rw
    +-rw fec-type?            identityref
    +--rw
    +-rw termination-type?    identityref
    +--rw
    +-rw bit-stuffing?        boolean
  augment /te:te/te:globals/te:named-path-constraints/te:named-path-
constraint/te:te-bandwidth/te:technology:
    +--:(wson)
       +--rw
    +-:(wson)
       +-rw bandwidth-type?   identityref
  augment /te:te/te:tunnels/te:tunnel/te:te-bandwidth/te:technology:
    +--:(wson)
       +--rw
    +-:(wson)
       +-rw bandwidth-type?   identityref
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:te-bandwidth/te:technology:
    +--:(wson)
       +--rw
    +-:(wson)
       +-rw bandwidth-type?   identityref
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-reverse-primary-path/te:te-bandwidth/te:technology:
    +--:(wson)
       +--rw
path/te:p2p-primary-reverse-path/te:te-bandwidth/te:technology:
    +-:(wson)
       +-rw bandwidth-type?   identityref
  augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:te-bandwidth/te:technology:
    +--:(wson)
       +--rw
    +-:(wson)
       +-rw bandwidth-type?   identityref
  augment /te:te/te:globals/te:named-path-constraints/te:named-path-
constraint/te:explicit-route-objects/te:route-object-exclude-
constraint/te:explicit-route-objects-always/te:route-object-exclude-
always/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +--:(wson)
       +--rw
    +-:(wson)
       +-rw (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--rw  +-rw (single-or-super-channel)?
          |     +--:(single)     +-:(single)
          |     |  +-rw dwdm-n?              int16
          |  +--rw channel-freq?          frequency-thz
          |     +--:(super)
          |        +--rw subcarrier-channels*   frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?    uint32     +-:(super)
          |        +-rw subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-rw cwdm-n?                    int16
  augment /te:te/te:globals/te:named-path-constraints/te:named-path-
constraint/te:explicit-route-objects/te:route-object-include-
constraint/te:explicit-route-objects-always/te:route-object-include-
exclude/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +--:(wson)
       +--rw
    +-:(wson)
       +-rw (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--rw  +-rw (single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw channel-freq?          frequency-thz
          |     +--:(super)
          |        +--rw subcarrier-channels*   frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?    uint32
  augment /te:te/te:globals/te:named-path-constraints/te:named-path-
constraint/te:path-in-segment/te:forward/te:label-restrictions/te:label-
restriction:
    +--rw grid-type?   identityref
    +--rw priority?    uint8
  augment /te:te/te:globals/te:named-path-constraints/te:named-path-
constraint/te:path-in-segment/te:forward/te:label-restrictions/te:label-
restriction/te:label-start/te:te-label/te:technology:
    +--:(wson)
       +--rw (grid-type)?
          +--:(dwdm)     +-:(single)
          |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32
  augment /te:te/te:globals/te:named-path-constraints/te:named-path-
constraint/te:path-in-segment/te:forward/te:label-restrictions/te:label-
restriction/te:label-end/te:te-label/te:technology:
    +--:(wson)
       +--rw (grid-type)?
          +--:(dwdm)     |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32

  augment /te:te/te:globals/te:named-path-constraints/te:named-path-
constraint/te:path-in-segment/te:reverse/te:label-restrictions/te:label-
restriction:
    +--rw grid-type?   identityref
    +--rw priority?    uint8
  augment /te:te/te:globals/te:named-path-constraints/te:named-path-
constraint/te:path-in-segment/te:reverse/te:label-restrictions/te:label-
restriction/te:label-start/te:te-label/te:technology:
    +--:(wson)
       +--rw (grid-type)?
          +--:(dwdm)  +-rw dwdm-n?              int16
          |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32
  augment /te:te/te:globals/te:named-path-constraints/te:named-path-
constraint/te:path-in-segment/te:reverse/te:label-restrictions/te:label-
restriction/te:label-end/te:te-label/te:technology:
    +--:(wson)
       +--rw (grid-type)?
          +--:(dwdm)     +-:(super)
          |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32        +-rw subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-rw cwdm-n?                    int16
  augment /te:te/te:globals/te:named-path-constraints/te:named-path-
constraint/te:path-out-segment/te:forward/te:label-restrictions/te:label-
restriction:
    +--rw
constraint/te:path-in-segment/te:label-restrictions/te:label-restriction:
    +-rw grid-type?   identityref
    +--rw
    +-rw priority?    uint8
  augment /te:te/te:globals/te:named-path-constraints/te:named-path-
constraint/te:path-out-segment/te:forward/te:label-restrictions/te:label-
constraint/te:path-in-segment/te:label-restrictions/te:label-
restriction/te:label-start/te:te-label/te:technology:
    +--:(wson)
       +--rw
    +-:(wson)
       +-rw (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32  +-rw dwdm-n?   int16
          +-:(cwdm)
             +-rw cwdm-n?   int16
  augment /te:te/te:globals/te:named-path-constraints/te:named-path-
constraint/te:path-out-segment/te:forward/te:label-restrictions/te:label-
constraint/te:path-in-segment/te:label-restrictions/te:label-
restriction/te:label-end/te:te-label/te:technology:
    +--:(wson)
       +--rw
    +-:(wson)
       +-rw (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32  +-rw dwdm-n?   int16
          +-:(cwdm)
             +-rw cwdm-n?   int16
  augment /te:te/te:globals/te:named-path-constraints/te:named-path-
constraint/te:path-out-segment/te:reverse/te:label-restrictions/te:label-
restriction:
    +--rw
constraint/te:path-out-segment/te:label-restrictions/te:label-restriction:

    +-rw grid-type?   identityref
    +--rw
    +-rw priority?    uint8
  augment /te:te/te:globals/te:named-path-constraints/te:named-path-
constraint/te:path-out-segment/te:reverse/te:label-restrictions/te:label-
constraint/te:path-out-segment/te:label-restrictions/te:label-
restriction/te:label-start/te:te-label/te:technology:
    +--:(wson)
       +--rw
    +-:(wson)
       +-rw (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32  +-rw dwdm-n?   int16
          +-:(cwdm)
             +-rw cwdm-n?   int16
  augment /te:te/te:globals/te:named-path-constraints/te:named-path-
constraint/te:path-out-segment/te:reverse/te:label-restrictions/te:label-
constraint/te:path-out-segment/te:label-restrictions/te:label-
restriction/te:label-end/te:te-label/te:technology:
    +--:(wson)
       +--rw
    +-:(wson)
       +-rw (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32  +-rw dwdm-n?   int16
          +-:(cwdm)
             +-rw cwdm-n?   int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:optimizations/te:algorithm/te:metric/te:optimization-
metric/te:explicit-route-exclude-objects/te:route-object-exclude-
object/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +--:(wson)
       +--rw
    +-:(wson)
       +-rw (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--rw  +-rw (single-or-super-channel)?
          |     +--:(single)     +-:(single)
          |     |  +-rw dwdm-n?              int16
          |  +--rw channel-freq?          frequency-thz
          |     +--:(super)
          |        +--rw subcarrier-channels*   frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?    uint32     +-:(super)
          |        +-rw subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-rw cwdm-n?                    int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:optimizations/te:algorithm/te:metric/te:optimization-
metric/te:explicit-route-include-objects/te:route-object-include-
object/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +--:(wson)
       +--rw
    +-:(wson)
       +-rw (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--rw  +-rw (single-or-super-channel)?
          |     +--:(single)     +-:(single)
          |     |  +-rw dwdm-n?              int16
          |  +--rw channel-freq?          frequency-thz
          |     +--:(super)
          |        +--rw subcarrier-channels*   frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?    uint32     +-:(super)
          |        +-rw subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-rw cwdm-n?                    int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:explicit-route-objects/te:route-object-exclude-
path/te:explicit-route-objects-always/te:route-object-exclude-
always/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +--:(wson)
       +--rw
    +-:(wson)
       +-rw (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--rw  +-rw (single-or-super-channel)?
          |     +--:(single)     +-:(single)
          |     |  +-rw dwdm-n?              int16
          |  +--rw channel-freq?          frequency-thz
          |     +--:(super)
          |        +--rw subcarrier-channels*   frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?    uint32     +-:(super)
          |        +-rw subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-rw cwdm-n?                    int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:explicit-route-objects/te:route-object-include-
path/te:explicit-route-objects-always/te:route-object-include-
exclude/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +--:(wson)
       +--rw
    +-:(wson)
       +-rw (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--rw  +-rw (single-or-super-channel)?
          |     +--:(single)     +-:(single)
          |     |  +--rw channel-freq?          frequency-thz
          |     +--:(super)
          |        +--rw subcarrier-channels*   frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?    uint32
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:path-in-segment/te:forward/te:label-restrictions/te:label-restriction:
    +--rw grid-type?   identityref
    +--rw priority?    uint8
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:path-in-segment/te:forward/te:label-restrictions/te:label-
restriction/te:label-start/te:te-label/te:technology:
    +--:(wson)
       +--rw (grid-type)?
          +--:(dwdm)  +-rw dwdm-n?              int16
          |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:path-in-segment/te:forward/te:label-restrictions/te:label-
restriction/te:label-end/te:te-label/te:technology:
    +--:(wson)
       +--rw (grid-type)?
          +--:(dwdm)     +-:(super)
          |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32        +-rw subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-rw cwdm-n?                    int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:path-in-segment/te:reverse/te:label-restrictions/te:label-restriction:
    +--rw
path/te:path-in-segment/te:label-restrictions/te:label-restriction:
    +-rw grid-type?   identityref
    +--rw
    +-rw priority?    uint8
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:path-in-segment/te:reverse/te:label-restrictions/te:label-
restriction/te:label-start/te:te-label/te:technology:
    +--:(wson)
       +--rw (grid-type)?
          +--:(dwdm)
          |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:path-in-segment/te:reverse/te:label-restrictions/te:label-
restriction/te:label-end/te:te-label/te:technology:
    +--:(wson)
       +--rw (grid-type)?
          +--:(dwdm)
          |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32
path/te:path-in-segment/te:label-restrictions/te:label-restriction/te:label-
start/te:te-label/te:technology:
    +-:(wson)
       +-rw (grid-type)?
          +-:(dwdm)
          |  +-rw dwdm-n?   int16
          +-:(cwdm)
             +-rw cwdm-n?   int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:path-in-segment/te:label-restrictions/te:label-restriction/te:label-
end/te:te-label/te:technology:

    +-:(wson)
       +-rw (grid-type)?
          +-:(dwdm)
          |  +-rw dwdm-n?   int16
          +-:(cwdm)
             +-rw cwdm-n?   int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:path-out-segment/te:forward/te:label-restrictions/te:label-
restriction:
    +--rw
path/te:path-out-segment/te:label-restrictions/te:label-restriction:
    +-rw grid-type?   identityref
    +--rw
    +-rw priority?    uint8
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:path-out-segment/te:forward/te:label-restrictions/te:label-
restriction/te:label-start/te:te-label/te:technology:
    +--:(wson)
       +--rw (grid-type)?
          +--:(dwdm)
          |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:path-out-segment/te:forward/te:label-restrictions/te:label-
restriction/te:label-end/te:te-label/te:technology:
    +--:(wson)
       +--rw (grid-type)?
          +--:(dwdm)
          |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:path-out-segment/te:reverse/te:label-restrictions/te:label-
restriction:
    +--rw grid-type?   identityref
    +--rw priority?    uint8
path/te:path-out-segment/te:label-restrictions/te:label-restriction/te:label-
start/te:te-label/te:technology:
    +-:(wson)
       +-rw (grid-type)?
          +-:(dwdm)
          |  +-rw dwdm-n?   int16
          +-:(cwdm)
             +-rw cwdm-n?   int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:path-out-segment/te:label-restrictions/te:label-restriction/te:label-
end/te:te-label/te:technology:
    +-:(wson)
       +-rw (grid-type)?
          +-:(dwdm)
          |  +-rw dwdm-n?   int16
          +-:(cwdm)
             +-rw cwdm-n?   int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:path-out-segment/te:reverse/te:label-restrictions/te:label-
restriction/te:label-start/te:te-label/te:technology:
    +--:(wson)
       +--rw
path/te:computed-paths-properties/te:computed-path-properties/te:path-
properties/te:path-route-objects/te:path-computed-route-
object/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +-:(wson)
       +-ro (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:path-out-segment/te:reverse/te:label-restrictions/te:label-
restriction/te:label-end/te:te-label/te:technology:
    +--:(wson)
       +--rw (grid-type)?
          +--:(dwdm)  +-ro (single-or-super-channel)?
          |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:state/te:path-properties/te:path-route-objects/te:path-computed-route-
object/te:state/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +--:(wson)
       +--ro (grid-type)?
          +--:(dwdm)     +-:(single)
          |  +--ro (single-or-super-channel)?     |     +--:(single)  +-ro dwdm-n?              int16
          |     +-:(super)
          |  +--ro channel-freq?          frequency-thz
          |     +--:(super)
          |        +--ro subcarrier-channels*   frequency-thz
          +--:(cwdm)
             +--ro channel-wavelength?    uint32        +-ro subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-ro cwdm-n?                    int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:state/te:lsps/te:lsp/te:lsp-record-route-subobjects/te:record-route-
subobject/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +--:(wson)
       +--ro
path/te:lsps/te:lsp/te:lsp-record-route-information/te:lsp-record-route-
information/te:type/te:label/te:label-hop/te:te-label/te:technology:

    +-:(wson)
       +-ro (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--ro  +-ro (single-or-super-channel)?
          |     +--:(single)     +-:(single)
          |     |  +-ro dwdm-n?              int16
          |  +--ro channel-freq?          frequency-thz
          |     +--:(super)
          |        +--ro subcarrier-channels*   frequency-thz
          +--:(cwdm)
             +--ro channel-wavelength?    uint32     +-:(super)
          |        +-ro subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-ro cwdm-n?                    int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:state/te:lsps/te:lsp/te:path-properties/te:path-route-objects/te:path-
computed-route-object/te:state/te:type/te:label/te:label-hop/te:te-
label/te:technology:
    +--:(wson)
       +--ro
path/te:lsps/te:lsp/te:path-properties/te:path-route-objects/te:path-computed-
route-object/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +-:(wson)
       +-ro (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--ro  +-ro (single-or-super-channel)?
          |     +--:(single)     +-:(single)
          |     |  +--ro channel-freq?          frequency-thz
          |     +--:(super)
          |        +--ro subcarrier-channels*   frequency-thz
          +--:(cwdm)
             +--ro channel-wavelength?    uint32  +-ro dwdm-n?              int16
          |     +-:(super)
          |        +-ro subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-ro cwdm-n?                    int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-reverse-primary-
path/te:p2p-primary-reverse-
path/te:optimizations/te:algorithm/te:metric/te:optimization-
metric/te:explicit-route-exclude-objects/te:route-object-exclude-
object/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +--:(wson)
       +--rw
    +-:(wson)
       +-rw (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--rw  +-rw (single-or-super-channel)?
          |     +--:(single)     +-:(single)
          |     |  +-rw dwdm-n?              int16
          |     +-:(super)
          |  +--rw channel-freq?          frequency-thz
          |     +--:(super)
          |        +--rw subcarrier-channels*   frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?    uint32        +-rw subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-rw cwdm-n?                    int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-reverse-primary-
path/te:p2p-primary-reverse-
path/te:optimizations/te:algorithm/te:metric/te:optimization-
metric/te:explicit-route-include-objects/te:route-object-include-
object/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +--:(wson)
       +--rw
    +-:(wson)
       +-rw (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--rw  +-rw (single-or-super-channel)?
          |     +--:(single)     +-:(single)
          |     |  +--rw channel-freq?          frequency-thz
          |     +--:(super)
          |        +--rw subcarrier-channels*   frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?    uint32  +-rw dwdm-n?              int16
          |     +-:(super)
          |        +-rw subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-rw cwdm-n?                    int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-reverse-primary-path/te:explicit-route-objects/te:route-object-
exclude-always/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +--:(wson)
       +--rw
path/te:p2p-primary-reverse-path/te:explicit-route-objects-always/te:route-
object-exclude-always/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +-:(wson)
       +-rw (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--rw  +-rw (single-or-super-channel)?
          |     +--:(single)     +-:(single)
          |     |  +-rw dwdm-n?              int16
          |     +-:(super)
          |  +--rw channel-freq?          frequency-thz
          |     +--:(super)
          |        +--rw subcarrier-channels*   frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?    uint32        +-rw subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-rw cwdm-n?                    int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-reverse-primary-path/te:explicit-route-objects/te:route-object-
include-exclude/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +--:(wson)
       +--rw
path/te:p2p-primary-reverse-path/te:explicit-route-objects-always/te:route-
object-include-exclude/te:type/te:label/te:label-hop/te:te-
label/te:technology:
    +-:(wson)
       +-rw (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--rw  +-rw (single-or-super-channel)?
          |     +--:(single)     +-:(single)
          |     |  +--rw channel-freq?          frequency-thz
          |     +--:(super)
          |        +--rw subcarrier-channels*   frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?    uint32
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-reverse-primary-path/te:path-in-segment/te:forward/te:label-
restrictions/te:label-restriction:
    +--rw grid-type?   identityref
    +--rw priority?    uint8

  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-reverse-primary-path/te:path-in-segment/te:forward/te:label-
restrictions/te:label-restriction/te:label-start/te:te-label/te:technology:
    +--:(wson)
       +--rw (grid-type)?
          +--:(dwdm)  +-rw dwdm-n?              int16
          |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-reverse-primary-path/te:path-in-segment/te:forward/te:label-
restrictions/te:label-restriction/te:label-end/te:te-label/te:technology:
    +--:(wson)
       +--rw (grid-type)?
          +--:(dwdm)     +-:(super)
          |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32        +-rw subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-rw cwdm-n?                    int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-reverse-primary-path/te:path-in-segment/te:reverse/te:label-
path/te:p2p-primary-reverse-path/te:path-in-segment/te:label-
restrictions/te:label-restriction:
    +--rw
    +-rw grid-type?   identityref
    +--rw
    +-rw priority?    uint8
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-reverse-primary-path/te:path-in-segment/te:reverse/te:label-
path/te:p2p-primary-reverse-path/te:path-in-segment/te:label-
restrictions/te:label-restriction/te:label-start/te:te-label/te:technology:
    +--:(wson)
       +--rw
    +-:(wson)
       +-rw (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32  +-rw dwdm-n?   int16
          +-:(cwdm)
             +-rw cwdm-n?   int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-reverse-primary-path/te:path-in-segment/te:reverse/te:label-
path/te:p2p-primary-reverse-path/te:path-in-segment/te:label-
restrictions/te:label-restriction/te:label-end/te:te-label/te:technology:
    +--:(wson)
       +--rw
    +-:(wson)
       +-rw (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32  +-rw dwdm-n?   int16
          +-:(cwdm)
             +-rw cwdm-n?   int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-reverse-primary-path/te:path-out-segment/te:forward/te:label-
path/te:p2p-primary-reverse-path/te:path-out-segment/te:label-
restrictions/te:label-restriction:
    +--rw
    +-rw grid-type?   identityref
    +--rw
    +-rw priority?    uint8
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-reverse-primary-path/te:path-out-segment/te:forward/te:label-
path/te:p2p-primary-reverse-path/te:path-out-segment/te:label-
restrictions/te:label-restriction/te:label-start/te:te-label/te:technology:
    +--:(wson)
       +--rw
    +-:(wson)
       +-rw (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32  +-rw dwdm-n?   int16
          +-:(cwdm)
             +-rw cwdm-n?   int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-reverse-primary-path/te:path-out-segment/te:forward/te:label-
path/te:p2p-primary-reverse-path/te:path-out-segment/te:label-
restrictions/te:label-restriction/te:label-end/te:te-label/te:technology:
    +--:(wson)
       +--rw
    +-:(wson)
       +-rw (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-reverse-primary-path/te:path-out-segment/te:reverse/te:label-
restrictions/te:label-restriction:
    +--rw grid-type?   identityref
    +--rw priority?    uint8  +-rw dwdm-n?   int16
          +-:(cwdm)
             +-rw cwdm-n?   int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-reverse-primary-path/te:path-out-segment/te:reverse/te:label-
restrictions/te:label-restriction/te:label-start/te:te-label/te:technology:
    +--:(wson)
       +--rw
path/te:p2p-primary-reverse-path/te:computed-paths-properties/te:computed-
path-properties/te:path-properties/te:path-route-objects/te:path-computed-
route-object/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +-:(wson)
       +-ro (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-reverse-primary-path/te:path-out-segment/te:reverse/te:label-
restrictions/te:label-restriction/te:label-end/te:te-label/te:technology:
    +--:(wson)
       +--rw (grid-type)?
          +--:(dwdm)  +-ro (single-or-super-channel)?
          |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-reverse-primary-path/te:state/te:path-properties/te:path-route-
objects/te:path-computed-route-object/te:state/te:type/te:label/te:label-
hop/te:te-label/te:technology:
    +--:(wson)
       +--ro (grid-type)?
          +--:(dwdm)     +-:(single)
          |  +--ro (single-or-super-channel)?     |     +--:(single)  +-ro dwdm-n?              int16
          |     +-:(super)
          |  +--ro channel-freq?          frequency-thz
          |     +--:(super)
          |        +--ro subcarrier-channels*   frequency-thz
          +--:(cwdm)
             +--ro channel-wavelength?    uint32        +-ro subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-ro cwdm-n?                    int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-reverse-primary-path/te:state/te:lsps/te:lsp/te:lsp-record-route-
subobjects/te:record-route-subobject/te:type/te:label/te:label-hop/te:te-
label/te:technology:
    +--:(wson)
       +--ro
path/te:p2p-primary-reverse-path/te:lsps/te:lsp/te:lsp-record-route-
information/te:lsp-record-route-information/te:type/te:label/te:label-
hop/te:te-label/te:technology:
    +-:(wson)
       +-ro (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--ro  +-ro (single-or-super-channel)?
          |     +--:(single)     +-:(single)
          |     |  +--ro channel-freq?          frequency-thz
          |     +--:(super)
          |        +--ro subcarrier-channels*   frequency-thz
          +--:(cwdm)
             +--ro channel-wavelength?    uint32  +-ro dwdm-n?              int16
          |     +-:(super)
          |        +-ro subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-ro cwdm-n?                    int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-reverse-primary-path/te:state/te:lsps/te:lsp/te:path-
properties/te:path-route-objects/te:path-computed-route-
object/te:state/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +--:(wson)
       +--ro
path/te:p2p-primary-reverse-path/te:lsps/te:lsp/te:path-properties/te:path-
route-objects/te:path-computed-route-object/te:type/te:label/te:label-
hop/te:te-label/te:technology:
    +-:(wson)
       +-ro (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--ro  +-ro (single-or-super-channel)?
          |     +--:(single)     +-:(single)
          |     |  +--ro channel-freq?          frequency-thz
          |     +--:(super)
          |        +--ro subcarrier-channels*   frequency-thz
          +--:(cwdm)
             +--ro channel-wavelength?    uint32  +-ro dwdm-n?              int16
          |     +-:(super)
          |        +-ro subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-ro cwdm-n?                    int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:optimizations/te:algorithm/te:metric/te:optimization-
metric/te:explicit-route-exclude-objects/te:route-object-exclude-
object/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +--:(wson)
       +--rw
    +-:(wson)
       +-rw (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--rw  +-rw (single-or-super-channel)?
          |     +--:(single)     +-:(single)
          |     |  +-rw dwdm-n?              int16
          |     +-:(super)
          |  +--rw channel-freq?          frequency-thz
          |     +--:(super)
          |        +--rw subcarrier-channels*   frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?    uint32        +-rw subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-rw cwdm-n?                    int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:optimizations/te:algorithm/te:metric/te:optimization-
metric/te:explicit-route-include-objects/te:route-object-include-
object/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +--:(wson)
       +--rw
    +-:(wson)
       +-rw (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--rw  +-rw (single-or-super-channel)?
          |     +--:(single)     +-:(single)
          |     |  +--rw channel-freq?          frequency-thz
          |     +--:(super)
          |        +--rw subcarrier-channels*   frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?    uint32  +-rw dwdm-n?              int16
          |     +-:(super)
          |        +-rw subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-rw cwdm-n?                    int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:explicit-route-objects/te:route-object-exclude-
path/te:explicit-route-objects-always/te:route-object-exclude-
always/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +--:(wson)
       +--rw
    +-:(wson)
       +-rw (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--rw  +-rw (single-or-super-channel)?
          |     +--:(single)     +-:(single)
          |     |  +-rw dwdm-n?              int16
          |     +-:(super)
          |  +--rw channel-freq?          frequency-thz
          |     +--:(super)
          |        +--rw subcarrier-channels*   frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?    uint32        +-rw subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-rw cwdm-n?                    int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:explicit-route-objects/te:route-object-include-
path/te:explicit-route-objects-always/te:route-object-include-
exclude/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +--:(wson)
       +--rw
    +-:(wson)
       +-rw (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--rw  +-rw (single-or-super-channel)?
          |     +--:(single)     +-:(single)
          |     |  +--rw channel-freq?          frequency-thz
          |     +--:(super)
          |        +--rw subcarrier-channels*   frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?    uint32
  augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:path-in-segment/te:forward/te:label-restrictions/te:label-restriction:
    +--rw grid-type?   identityref
    +--rw priority?    uint8
  augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:path-in-segment/te:forward/te:label-restrictions/te:label-
restriction/te:label-start/te:te-label/te:technology:
    +--:(wson)
       +--rw (grid-type)?
          +--:(dwdm)  +-rw dwdm-n?              int16
          |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32
  augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:path-in-segment/te:forward/te:label-restrictions/te:label-
restriction/te:label-end/te:te-label/te:technology:
    +--:(wson)
       +--rw (grid-type)?
          +--:(dwdm)     +-:(super)
          |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32        +-rw subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-rw cwdm-n?                    int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:path-in-segment/te:reverse/te:label-restrictions/te:label-restriction:
    +--rw
path/te:path-in-segment/te:label-restrictions/te:label-restriction:
    +-rw grid-type?   identityref
    +--rw
    +-rw priority?    uint8
  augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:path-in-segment/te:reverse/te:label-restrictions/te:label-
restriction/te:label-start/te:te-label/te:technology:
    +--:(wson)
       +--rw (grid-type)?
          +--:(dwdm)
          |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32
path/te:path-in-segment/te:label-restrictions/te:label-restriction/te:label-
start/te:te-label/te:technology:
    +-:(wson)
       +-rw (grid-type)?
          +-:(dwdm)
          |  +-rw dwdm-n?   int16
          +-:(cwdm)
             +-rw cwdm-n?   int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:path-in-segment/te:reverse/te:label-restrictions/te:label-
restriction/te:label-end/te:te-label/te:technology:
    +--:(wson)
       +--rw (grid-type)?
          +--:(dwdm)
          |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32
path/te:path-in-segment/te:label-restrictions/te:label-restriction/te:label-
end/te:te-label/te:technology:
    +-:(wson)
       +-rw (grid-type)?
          +-:(dwdm)
          |  +-rw dwdm-n?   int16
          +-:(cwdm)
             +-rw cwdm-n?   int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:path-out-segment/te:forward/te:label-restrictions/te:label-
restriction:
    +--rw
path/te:path-out-segment/te:label-restrictions/te:label-restriction:
    +-rw grid-type?   identityref
    +--rw
    +-rw priority?    uint8
  augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:path-out-segment/te:forward/te:label-restrictions/te:label-
restriction/te:label-start/te:te-label/te:technology:
    +--:(wson)
       +--rw (grid-type)?
          +--:(dwdm)
          |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32
  augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:path-out-segment/te:forward/te:label-restrictions/te:label-
restriction/te:label-end/te:te-label/te:technology:
    +--:(wson)
       +--rw (grid-type)?
          +--:(dwdm)
          |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32
path/te:path-out-segment/te:label-restrictions/te:label-restriction/te:label-
start/te:te-label/te:technology:
    +-:(wson)
       +-rw (grid-type)?
          +-:(dwdm)
          |  +-rw dwdm-n?   int16
          +-:(cwdm)
             +-rw cwdm-n?   int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:path-out-segment/te:reverse/te:label-restrictions/te:label-
restriction:
    +--rw grid-type?   identityref
    +--rw priority?    uint8
path/te:path-out-segment/te:label-restrictions/te:label-restriction/te:label-
end/te:te-label/te:technology:
    +-:(wson)
       +-rw (grid-type)?
          +-:(dwdm)
          |  +-rw dwdm-n?   int16
          +-:(cwdm)
             +-rw cwdm-n?   int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:path-out-segment/te:reverse/te:label-restrictions/te:label-
restriction/te:label-start/te:te-label/te:technology:
    +--:(wson)
       +--rw
path/te:computed-paths-properties/te:computed-path-properties/te:path-
properties/te:path-route-objects/te:path-computed-route-
object/te:type/te:label/te:label-hop/te:te-label/te:technology:

    +-:(wson)
       +-ro (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32
  augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:path-out-segment/te:reverse/te:label-restrictions/te:label-
restriction/te:label-end/te:te-label/te:technology:
    +--:(wson)
       +--rw (grid-type)?
          +--:(dwdm)  +-ro (single-or-super-channel)?
          |  +--rw channel-freq?         frequency-thz
          +--:(cwdm)
             +--rw channel-wavelength?   uint32
  augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:state/te:path-properties/te:path-route-objects/te:path-computed-route-
object/te:state/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +--:(wson)
       +--ro (grid-type)?
          +--:(dwdm)     +-:(single)
          |  +--ro (single-or-super-channel)?     |     +--:(single)  +-ro dwdm-n?              int16
          |     +-:(super)
          |  +--ro channel-freq?          frequency-thz
          |     +--:(super)
          |        +--ro subcarrier-channels*   frequency-thz
          +--:(cwdm)
             +--ro channel-wavelength?    uint32        +-ro subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-ro cwdm-n?                    int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:state/te:lsps/te:lsp/te:lsp-record-route-subobjects/te:record-route-
subobject/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +--:(wson)
       +--ro
path/te:lsps/te:lsp/te:lsp-record-route-information/te:lsp-record-route-
information/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +-:(wson)
       +-ro (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--ro  +-ro (single-or-super-channel)?
          |     +--:(single)     +-:(single)
          |     |  +--ro channel-freq?          frequency-thz
          |     +--:(super)
          |        +--ro subcarrier-channels*   frequency-thz
          +--:(cwdm)
             +--ro channel-wavelength?    uint32  +-ro dwdm-n?              int16
          |     +-:(super)
          |        +-ro subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-ro cwdm-n?                    int16
  augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:state/te:lsps/te:lsp/te:path-properties/te:path-route-objects/te:path-
computed-route-object/te:state/te:type/te:label/te:label-hop/te:te-
label/te:technology:
    +--:(wson)
       +--ro
path/te:lsps/te:lsp/te:path-properties/te:path-route-objects/te:path-computed-
route-object/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +-:(wson)
       +-ro (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--ro  +-ro (single-or-super-channel)?
          |     +--:(single)     +-:(single)
          |     |  +--ro channel-freq?          frequency-thz  +-ro dwdm-n?              int16
          |     +--:(super)     +-:(super)
          |        +--ro subcarrier-channels*   frequency-thz
          +--:(cwdm)
             +--ro channel-wavelength?    uint32        +-ro subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-ro cwdm-n?                    int16
  augment /te:te/te:lsps-state/te:lsp/te:lsp-record-route-
subobjects/te:record-route-subobject/te:type/te:label/te:label-hop/te:te- /te:te/te:lsps-state/te:lsp/te:lsp-record-route-information/te:lsp-
record-route-information/te:type/te:label/te:label-hop/te:te-
label/te:technology:
    +--:(wson)
       +--ro
    +-:(wson)
       +-ro (grid-type)?
          +--:(dwdm)
          +-:(dwdm)
          |  +--ro  +-ro (single-or-super-channel)?
          |     +--:(single)     +-:(single)
          |     |  +-ro dwdm-n?              int16
          |  +--ro channel-freq?          frequency-thz
          |     +--:(super)
          |        +--ro subcarrier-channels*   frequency-thz
          +--:(cwdm)
             +--ro channel-wavelength?    uint32     +-:(super)
          |        +-ro subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-ro cwdm-n?                    int16
  augment /te:tunnels-rpc/te:input/te:tunnel-info/tepc:path-request:
    +----
    +- src-client-signal?       identityref
    +----
    +- dst-client-signal?       identityref
    +----
    +- fec-type?                identityref
    +----
    +- termination-type?        identityref
    +----
    +- bit-stuffing?            boolean
    +----
    +- wavelength-assignment?   identityref

3. TE Tunnel Model for WSON

<CODE BEGINS> file "ietf-wson-tunnel@2018-10-15.yang" "ietf-wson-tunnel@2019-03-06.yang"

module ietf-wson-tunnel {
  yang-version 1.1;

  namespace "urn:ietf:params:xml:ns:yang:ietf-wson-tunnel";
  prefix "wson-tunnel";

  import ietf-te { prefix "te"; }
  import ietf-layer0-types{ prefix "layer0-types"; }
  import ietf-te-path-computation { prefix "tepc"; }
  import ietf-otn-types { prefix "otn-types";}

  organization
    "IETF CCAMP Working Group";

  contact
    "WG Web:   <http://tools.ietf.org/wg/ccamp/>
     WG List:  <mailto:ccamp@ietf.org>

     WG Chair: Daniele Ceccarelli
               <mailto:daniele.ceccarelli@ericsson.com>

     WG Chair: Fatai Zhang
               <mailto:zhangfatai@huawei.com>

     Editor: Young Lee <leeyoung@huawei.com>
     Editor: Aihua Guo <aihuaguo@huawei.com>
     Editor: Dhruv Dhody <dhruv.ietf@gmail.com>
     Editor: Ricard Vilalta <ricard.vilalta@cttc.es>";
     description
       "This module defines a model for WSON Tunnel Services.";

  revision "2018-10-15" "2019-03-06" {
    description
      "Updates to version 2"; 3";
    reference "version 2"; 3";
  }

  /* Groupings. */
  grouping wson-tunnel-attributes {
    description "Parameters for WSON tunnel.";

    leaf src-client-signal {
      type identityref {
        base otn-types:client-signal;
      }
      description
        "Client signal at the source endpoint of
         the tunnel.";
    }

    leaf dst-client-signal {
      type identityref {
        base otn-types:client-signal;
      }
      description
        "Client signal at the destination endpoint of
         the tunnel.";
    }

    leaf fec-type {
      type identityref {
        base layer0-types:fec-type;
      }
      description
        "FEC type.";
    }

    leaf termination-type {
      type identityref {
        base layer0-types:term-type;
      }
      description
        "Termination type.";
    }

    leaf bit-stuffing {
      type boolean;
      description
        "Bit stuffing enabled/disabled.";
    }
  }

  grouping wson-path-constraints {
    description
      "Global named path constraints configuration
       grouping for WSON tunnel";

    leaf wavelength-assignment {
      type identityref {
        base layer0-types:wavelength-assignment;
      }
      description "Wavelength Allocation Method";
    }
  }

 /*
  * Data nodes
  */

  augment "/te:te/te:tunnels/te:tunnel" {
    description
      "Augment with additional parameters required for WSON tunnel.";
    uses wson-tunnel-attributes;
  }
  /*
   * Augment TE bandwidth
   */

  /* Augment bandwidth of named-path-constraints */
  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/"
        + "te:te-bandwidth/te:technology" {
    description "WSON bandwidth.";
    case wson {
      uses layer0-types:wson-path-bandwidth;
    }

  }

  /* Augment bandwdith of tunnel */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:te-bandwidth/te:technology" {
    description "WSON bandwidth.";
    case wson {
      uses layer0-types:wson-path-bandwidth;
    }
  }

  /* Augment bandwidth of primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:te-bandwidth/te:technology" {
    description "WSON bandwidth.";
    case wson {
      uses layer0-types:wson-path-bandwidth;
    }
  }

  /* Augment bandwidth of reverse primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-reverse-primary-path/" "te:p2p-primary-reverse-path/"
        + "te:te-bandwidth/te:technology" {
    description "WSON bandwidth.";
    case wson {
      uses layer0-types:wson-path-bandwidth;
    }
  }

  /* Augment bandwidht of secondary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:te-bandwidth/te:technology" {
    description "WSON bandwidth.";
    case wson {
      uses layer0-types:wson-path-bandwidth;
    }
  }

  /*
   * Augment TE label.
   */

  /* Augment label hop of route-object-exclude-always of named-path-
constraints */
  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:explicit-route-objects/" "te:named-path-constraint/te:explicit-route-objects-always/"
        + "te:route-object-exclude-always/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of route-object-include-exclude of named-path-
constraints */
  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:explicit-route-objects/" "te:named-path-constraint/te:explicit-route-objects-always/"
        + "te:route-object-include-exclude/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label restrictions for the forwarding direction of path-in-
segment path-in-segment of
     named-path-constraints */
  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-in-segment/"
        + "te:forward/te:label-restrictions/"
        + "te:label-restriction" "te:label-restrictions/te:label-restriction" {
    description "WSON label.";
    uses layer0-types:layer0-label-restriction;
  }

  /* Augment label restrictions start for the forwarding direction of path-in-
segment path-in-segment
     of named-path-constraints */
  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-in-segment/"
        + "te:forward/te:label-restrictions/" "te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }

  }

  /* Augment label restrictions end for the forwarding direction of path-in-
segment path-in-segment of
     named-path-constraints */
  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-in-segment/"
        + "te:forward/te:label-restrictions/" "te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label restrictions for the reverse direction of path-in-segment path-out-segment of
     named-path-constraints */
  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-in-segment/" "te:named-path-constraint/te:path-out-segment/"
        + "te:reverse/te:label-restrictions/" "te:label-restrictions/"
        + "te:label-restriction" {
    description "WSON label.";
    uses layer0-types:layer0-label-restriction;
  }
  /* Augment label restrictions start for the reverse direction of path-in-
segment path-out-segment
     of named-path-constraints */
  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-in-segment/" "te:named-path-constraint/te:path-out-segment/"
        + "te:reverse/te:label-restrictions/" "te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label restrictions end for the reverse direction of path-in-
segment path-out-segment of
     named-path-constraints */
  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-in-segment/" "te:named-path-constraint/te:path-out-segment/"
        + "te:reverse/te:label-restrictions/" "te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label restrictions for the forwarding direction hop of path-out-
segment route-exclude of named-path-constraints primary path */
  augment "/te:te/te:globals/te:named-path-constraints/" "/te:te/te:tunnels/te:tunnel/"
        + "te:named-path-constraint/te:path-out-segment/" "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:forward/te:label-restrictions/" "te:optimizations/te:algorithm/te:metric/"
        + "te:label-restriction" "te:optimization-metric/te:explicit-route-exclude-objects/"
        + "te:route-object-exclude-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:layer0-label-restriction; layer0-types:wson-path-label;
    }
  }

  /* Augment label restrictions start for the forwarding direction hop of path-
out-segment route-include of named-path-constraints primary path */
  augment "/te:te/te:globals/te:named-path-constraints/" "/te:te/te:tunnels/te:tunnel/"
        + "te:named-path-constraint/te:path-out-segment/" "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-include-objects/"
        + "te:route-object-include-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of route-object-exclude-always of primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:explicit-route-objects-always/"
        + "te:route-object-exclude-always/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of route-object-include-exclude of primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:forward/te:label-restrictions/" "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:explicit-route-objects-always/"
        + "te:route-object-include-exclude/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label restrictions for the path-in-segment of primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description "WSON label.";
    uses layer0-types:layer0-label-restriction;
  }

  /* Augment label restrictions start for the path-in-segment of primary path
*/
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label restrictions end for the forwarding direction of path-out-
segment path-in-segment of named-path-constraints primary path */
  augment "/te:te/te:globals/te:named-path-constraints/" "/te:te/te:tunnels/te:tunnel/"
        + "te:named-path-constraint/te:path-out-segment/" "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:forward/te:label-restrictions/" "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label restrictions for the reverse direction of path-out-segment of named-path-constraints primary path */
  augment "/te:te/te:globals/te:named-path-constraints/" "/te:te/te:tunnels/te:tunnel/"
        + "te:named-path-constraint/te:path-out-segment/" "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:reverse/te:label-restrictions/" "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description "WSON label.";
    uses layer0-types:layer0-label-restriction;
  }

  /* Augment label restrictions start for the reverse direction of path-out-
segment path-out-segment of named-path-constraints primary path
*/
  augment "/te:te/te:globals/te:named-path-constraints/" "/te:te/te:tunnels/te:tunnel/"
        + "te:named-path-constraint/te:path-out-segment/" "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:reverse/te:label-restrictions/" "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label restrictions end for the reverse direction of path-out-
segment path-out-segment of named-path-constraints primary path
*/
  augment "/te:te/te:globals/te:named-path-constraints/" "/te:te/te:tunnels/te:tunnel/"
        + "te:named-path-constraint/te:path-out-segment/" "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:reverse/te:label-restrictions/" "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label hop of route-exclude path-route of primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:optimizations/te:algorithm/te:metric/" "te:computed-paths-properties/"
          + "te:optimization-metric/te:explicit-route-exclude-objects/" "te:computed-path-properties/te:path-properties/"
        + "te:route-object-exclude-object/te:type/te:label/" "te:path-route-objects/te:path-computed-route-object/"
        + "te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;

    }
  }

  /* Augment label hop of route-include record-route of primary path LSP */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-include-objects/" "te:lsps/te:lsp/te:lsp-record-route-information/"
        + "te:route-object-include-object/te:type/te:label/" "te:lsp-record-route-information/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of route-object-exclude-always path-route of primary path LSP */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:explicit-route-objects/" "te:lsps/te:lsp/te:path-properties/"
        + "te:route-object-exclude-always/te:type/te:label/" "te:path-route-objects/te:path-computed-route-object/"
        + "te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of route-object-include-exclude route-exclude of reverse primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:explicit-route-objects/" "te:p2p-primary-reverse-path/"
        + "te:route-object-include-exclude/te:type/te:label/" "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-exclude-objects/"
        + "te:route-object-exclude-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label restrictions for the forwarding direction hop of path-in-
segment route-include of reverse primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:path-in-segment/te:forward/te:label-restrictions/" "te:p2p-primary-reverse-path/"
        + "te:label-restriction" "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-include-objects/"
        + "te:route-object-include-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:layer0-label-restriction; layer0-types:wson-path-label;
    }
  }

  /* Augment label restrictions start for the forwarding direction hop of path-in-
segment route-object-exclude-always of reverse primary path
*/
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:path-in-segment/te:forward/te:label-restrictions/" "te:p2p-primary-reverse-path/"
        + "te:label-restriction/te:label-start/" "te:explicit-route-objects-always/"
        + "te:te-label/te:technology" "te:route-object-exclude-always/"
        + "te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label; layer0-types:wson-path-label;
    }
  }

  /* Augment label restrictions end for the forwarding direction hop of path-in-
segment route-object-include-exclude of reverse primary path
*/
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:path-in-segment/te:forward/te:label-restrictions/" "te:p2p-primary-reverse-path/"
        + "te:label-restriction/te:label-end/" "te:explicit-route-objects-always/"
        + "te:te-label/te:technology" "te:route-object-include-exclude/"
        + "te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label; layer0-types:wson-path-label;
    }
  }

  /* Augment label restrictions for the reverse direction of path-in-segment of reverse primary
path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:path-in-segment/te:reverse/te:label-restrictions/" "te:p2p-primary-reverse-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description "WSON label.";
    uses layer0-types:layer0-label-restriction;
  }

  /* Augment label restrictions start for the reverse direction of path-in-
segment path-in-segment of reverse
primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:path-in-segment/te:reverse/te:label-restrictions/" "te:p2p-primary-reverse-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }
  /* Augment label restrictions end for the reverse direction of path-in-
segment of primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:path-in-segment/te:reverse/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label restrictions for the forwarding direction of path-out-
segment of primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:path-out-segment/te:forward/te:label-restrictions/"
        + "te:label-restriction" {
    description "WSON label.";
    uses layer0-types:layer0-label-restriction;
  }

  /* Augment label restrictions start for the forwarding direction of path-
out-segment of primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:path-out-segment/te:forward/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label restrictions end for the forwarding direction of path-out-
segment of primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:path-out-segment/te:forward/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label restrictions for the reverse direction of path-out-segment
of primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:path-out-segment/te:reverse/te:label-restrictions/"
        + "te:label-restriction" {
    description "WSON label.";
    uses layer0-types:layer0-label-restriction;
  }

  /* Augment label restrictions start for the reverse direction of path-out-
segment of primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:path-out-segment/te:reverse/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }
  /* Augment label restrictions end for the reverse direction of path-out-
segment of primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:path-out-segment/te:reverse/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label hop of path-route of primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:state/te:path-properties/"
        + "te:path-route-objects/te:path-computed-route-object/"
        + "te:state/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of record-route of primary LSP */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:state/te:lsps/te:lsp/te:lsp-record-route-subobjects/"
        + "te:record-route-subobject/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of path-route of primary LSP */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:state/te:lsps/te:lsp/te:path-properties/"
        + "te:path-route-objects/te:path-computed-route-object/"
        + "te:state/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of route-exclude of reverse primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-reverse-primary-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-exclude-objects/"
        + "te:route-object-exclude-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of route-include of reverse primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-reverse-primary-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-include-objects/"
        + "te:route-object-include-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of route-object-exclude-always of reverse primary path
*/
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-reverse-primary-path/"
        + "te:explicit-route-objects/"
        + "te:route-object-exclude-always/"
        + "te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of route-object-include-exclude of reverse primary path
*/
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-reverse-primary-path/"
        + "te:explicit-route-objects/"
        + "te:route-object-include-exclude/"
        + "te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label restrictions for the forwarding direction of path-in-
segment of reverse primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-reverse-primary-path/"
        + "te:path-in-segment/te:forward/te:label-restrictions/"
        + "te:label-restriction" {
    description "WSON label.";
    uses layer0-types:layer0-label-restriction;
  }

  /* Augment label restrictions start for the forwarding direction of path-in-
segment of reverse primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-reverse-primary-path/"
        + "te:path-in-segment/te:forward/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }
  /* Augment label restrictions end for the forwarding direction of path-in-
segment of reverse primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-reverse-primary-path/"
        + "te:path-in-segment/te:forward/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label restrictions for the reverse direction of path-in-segment
of reverse primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-reverse-primary-path/"
        + "te:path-in-segment/te:reverse/te:label-restrictions/"
        + "te:label-restriction" {
    description "WSON label.";
    uses layer0-types:layer0-label-restriction;
  }

  /* Augment label restrictions start for the reverse direction of path-in-
segment of reverse primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-reverse-primary-path/"
        + "te:path-in-segment/te:reverse/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label restrictions end for the reverse direction of path-in-
segment of reverse primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-reverse-primary-path/"
        + "te:path-in-segment/te:reverse/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label restrictions for the forwarding direction of path-out-
segment of reverse primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-reverse-primary-path/"
        + "te:path-out-segment/te:forward/te:label-restrictions/"
        + "te:label-restriction" {
    description "WSON label.";
    uses layer0-types:layer0-label-restriction;
  }

  /* Augment label restrictions start for the forwarding direction of path-
out-segment of reverse primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-reverse-primary-path/"
        + "te:path-out-segment/te:forward/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label restrictions end for the forwarding direction of path-out-
segment path-in-segment of reverse primary
path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-reverse-primary-path/" "te:p2p-primary-reverse-path/"
        + "te:path-out-segment/te:forward/te:label-restrictions/" "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label restrictions for the reverse direction of path-out-segment of reverse primary
path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-reverse-primary-path/" "te:p2p-primary-reverse-path/"
        + "te:path-out-segment/te:reverse/te:label-restrictions/" "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description "WSON label.";
    uses layer0-types:layer0-label-restriction;
  }
  /* Augment label restrictions start for the reverse direction of path-out-
segment path-out-segment of reverse
primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-reverse-primary-path/" "te:p2p-primary-reverse-path/"
        + "te:path-out-segment/te:reverse/te:label-restrictions/" "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label restrictions end for the reverse direction of path-out-
segment path-out-segment of reverse
primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-reverse-primary-path/" "te:p2p-primary-reverse-path/"
        + "te:path-out-segment/te:reverse/te:label-restrictions/" "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label hop of path-route of reverse primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-reverse-primary-path/" "te:p2p-primary-reverse-path/"
        + "te:state/te:path-properties/" "te:computed-paths-properties/"
          + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-computed-route-object/"
        + "te:state/te:type/te:label/" "te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of record-route of reverse primary LSP */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-reverse-primary-path/" "te:p2p-primary-reverse-path/"
        + "te:state/te:lsps/te:lsp/te:lsp-record-route-subobjects/" "te:lsps/te:lsp/te:lsp-record-route-information/"
        + "te:record-route-subobject/te:type/te:label/" "te:lsp-record-route-information/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of path-route of reverse primary LSP */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-reverse-primary-path/" "te:p2p-primary-reverse-path/"
        + "te:state/te:lsps/te:lsp/te:path-properties/" "te:lsps/te:lsp/te:path-properties/"
        + "te:path-route-objects/te:path-computed-route-object/"
        + "te:state/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of route-exclude of secondary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-exclude-objects/"
        + "te:route-object-exclude-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of route-include of secondary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-include-objects/"
        + "te:route-object-include-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of route-object-exclude-always of secondary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:explicit-route-objects/"
        + "te:route-object-exclude-always/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of route-object-include-exclude of secondary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:explicit-route-objects/"
        + "te:route-object-include-exclude/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label restrictions for the forwarding direction of path-in-
segment of secondary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:path-in-segment/te:forward/te:label-restrictions/"
        + "te:label-restriction" {
    description "WSON label.";
    uses layer0-types:layer0-label-restriction;
  }

  /* Augment label restrictions start for the forwarding direction of path-in-
segment of secondary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:path-in-segment/te:forward/te:label-restrictions/"
        + "te:label-restriction/te:label-start/" "te:type/te:label/"
        + "te:te-label/te:technology" "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label; layer0-types:wson-path-label;
    }
  }

  /* Augment label restrictions end for the forwarding direction hop of path-in-
segment route-exclude of secondary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:path-in-segment/te:forward/te:label-restrictions/" "te:optimizations/te:algorithm/te:metric/"
        + "te:label-restriction/te:label-end/" "te:optimization-metric/te:explicit-route-exclude-objects/"
        + "te:te-label/te:technology" "te:route-object-exclude-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label; layer0-types:wson-path-label;
    }
  }

  /* Augment label restrictions for the reverse direction hop of path-in-segment route-include of secondary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:path-in-segment/te:reverse/te:label-restrictions/" "te:optimizations/te:algorithm/te:metric/"
        + "te:label-restriction" "te:optimization-metric/te:explicit-route-include-objects/"
        + "te:route-object-include-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {

    description "WSON label.";
    case wson {
      uses layer0-types:layer0-label-restriction; layer0-types:wson-path-label;
    }
  }

  /* Augment label restrictions start for the reverse direction hop of path-in-
segment route-object-exclude-always of secondary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:path-in-segment/te:reverse/te:label-restrictions/" "te:explicit-route-objects-always/"
        + "te:label-restriction/te:label-start/" "te:route-object-exclude-always/te:type/te:label/"
        + "te:te-label/te:technology" "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label; layer0-types:wson-path-label;
    }
  }

  /* Augment label restrictions end for the reverse direction hop of path-in-
segment route-object-include-exclude of secondary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:path-in-segment/te:reverse/te:label-restrictions/" "te:explicit-route-objects-always/"
        + "te:label-restriction/te:label-end/" "te:route-object-include-exclude/te:type/te:label/"
        + "te:te-label/te:technology" "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label; layer0-types:wson-path-label;
    }
  }

  /* Augment label restrictions for the forwarding direction of path-out-
segment path-in-segment of secondary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:path-out-segment/te:forward/te:label-restrictions/" "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description "WSON label.";
    uses layer0-types:layer0-label-restriction;
  }

  /* Augment label restrictions start for the forwarding direction of path-
out-segment path-in-segment of secondary
path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:path-out-segment/te:forward/te:label-restrictions/" "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label restrictions end for the forwarding direction of path-out-
segment path-in-segment of secondary path
*/
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:path-out-segment/te:forward/te:label-restrictions/" "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label restrictions for the reverse direction of path-out-segment of secondary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:path-out-segment/te:reverse/te:label-restrictions/" "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description "WSON label.";
    uses layer0-types:layer0-label-restriction;
  }

  /* Augment label restrictions start for the reverse direction of path-out-
segment path-out-segment of secondary
path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:path-out-segment/te:reverse/te:label-restrictions/" "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label restrictions end for the reverse direction of path-out-
segment path-out-segment of secondary path
*/
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:path-out-segment/te:reverse/te:label-restrictions/" "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label hop of path-route of secondary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:state/te:path-properties/te:path-route-objects/" "te:computed-paths-properties/"
          + "te:computed-path-properties/te:path-properties/"
          + "te:path-route-objects/"
        + "te:path-computed-route-object/te:state/te:type/te:label/" "te:path-computed-route-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of record-route of secondary LSP */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:state/te:lsps/te:lsp/te:lsp-record-route-subobjects/" "te:lsps/te:lsp/te:lsp-record-route-information/"
        + "te:record-route-subobject/te:type/te:label/" "te:lsp-record-route-information/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of path-route of secondary LSP */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:state/te:lsps/te:lsp/te:path-properties/" "te:lsps/te:lsp/te:path-properties/"
        + "te:path-route-objects/"
        + "te:path-computed-route-object/te:state/te:type/te:label/" "te:path-computed-route-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of record-route of LSP */
  augment "/te:te/te:lsps-state/"
        + "te:lsp/te:lsp-record-route-subobjects/" "te:lsp/te:lsp-record-route-information/"
        + "te:record-route-subobject/te:type/te:label/" "te:lsp-record-route-information/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  augment "/te:tunnels-rpc/te:input/te:tunnel-info/"
        + "tepc:path-request" {
    description
       "Augment with additional constraints WSON
        tunnel.";
    uses wson-tunnel-attributes;
    uses wson-path-constraints;
  }
}

<CODE ENDS>

4. Security Considerations

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

   A number of configuration data nodes defined in this document are
   writable/deletable (i.e., "config true") These data nodes may be
   considered sensitive or vulnerable in some network environments.

5. IANA Considerations

   This document registers the following namespace URIs in the IETF XML
   registry [RFC3688]:

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

   This document registers the following YANG modules in the YANG
   Module

   Names registry [RFC7950]:

   --------------------------------------------------------------------
   name:         ietf-wson-tunnel
   namespace:    urn:ietf:params:xml:ns:yang:ietf-wson-tunnel
   reference:    RFC XXXX (TDB)
   --------------------------------------------------------------------
6. Acknowledgments

   This document was prepared using 2-Word-v2.0.template.dot.

7. References

   7.1. Normative References

   [TE-TOPO]

   [TE-Tunnel] T. Saad, Ed., X. Liu, V. Beeram, H. Shah, and I.
             Bryskin, "A YANG Data Model for Traffic Engineering
             Tunnels and Interfaces", draft-ietf-teas-yang-te, work in
             progress.

   [WSON-TOPO] Y. Lee, Ed., D. Dhody, A. Guo, V. Lopez, D. King, B.
             Yoon, and R. Vilalta, "A Yang Data Model for WSON Optical
             Networks", draft-ietf-ccamp-wson-yang, work in progress.

   [TE-PC] Italo Busi (Ed.), Sergio Belotti (Ed.), "Yang model for
             requesting Path Computation", draft-ietf-teas-yang-path-
             computation, work in progress.

   [OTN-TOPO] H. Zheng, et al., "YANG al, "A YANG Data Model for TE Topologies", Optical Transport
             Network Topology", draft-ietf-ccamp-otn-topo-yang, work in progress: draft-ietf-teas-yang-te-topo.
             progress.

   7.2. Informative References

   [RFC3688] M. Mealling, "The IETF XML Registry", RFC 3688, January
             2004.

   [RFC6241] R. Enns, Ed., M. Bjorklund, Ed., J. Schoenwaelder, Ed.,
             and A. Bierman, Ed., "Network Configuration Protocol
             (NETCONF)", RFC 6241, June 2011.

   [RFC7446] Y. Lee, G. Bernstein, D. Li, W. Imajuku, "Routing and
             Wavelength Assignment Information Model for Wavelength
             Switched Optical Networks", RFC 7446, Feburary 2015.

   [RFC7579] G. Bernstein, Y. Lee, D. Li, W. Imajuku, "General Network
             Element Constraint Encoding for GMPLS Controlled
             Networks", RFC 7579, June 2015.

   [RFC7581]  G. Bernstein, Y. Lee, D. Li, W. Imajuku, "Routing and
             Wavelength Assignment Information Encoding for Wavelength
             Switched Optical Networks", RFC 7581, June 2015.

   [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
             RFC 7950, August 2016.

   [RFC8340] M. Bjorklund and L. Berger, Ed., "YANG Tree Diagrams", RFC
             8340, March 2018.

   [TE-Tunnel] T. Saad, Ed., X. Liu, V. Beeram, H. Shah, and I.
             Bryskin, "A YANG Data Model for Traffic Engineering
             Tunnels and Interfaces", draft-ietf-teas-yang-te-16, work
             in progress.

   [WSON-Topo] Y. Lee, Ed., D. Dhody,

   [RFC8341] A. Guo, V. Lopez, D. King, B.
             Yoon, Bierman and R. Vilalta, "A Yang Data Model for WSON Optical
             Networks", draft-ietf-ccamp-wson-yang-13, work in
             progress.

   [TE-PC] Italo Busi (Ed.), Sergio Belotti (Ed.), "Yang model for
             requesting Path Computation", draft-ietf-teas-yang-path-
             computation-02, work in progress.

   [OTN-Topo] H. Zheng, et al, "A YANG Data Model for Optical Transport
             Network Topology", draft-ietf-ccamp-otn-topo-yang-02, work
             in progress. M. Bjorklund, "Network Configuration Access
             Control Model", March 2018.

8. Contributors

   Italo Busi
   Huawei
   Email: Italo.Busi@huawei.com

Authors' Addresses

   Young Lee (ed.)
   Huawei Technologies
   5340 Legacy Drive, Building 3
   Plano, TX 75023
   USA

   Phone: (469) 277-5838
   Email: leeyoung@huawei.com

   Dhruv Dhody
   Huawei Technologies India Pvt. Ltd,
   Near EPIP Industrial Area,  Kundalahalli Village,  Whitefield,
   Bangalore -  560 037 [H1-2A-245]

   Email: dhruv.dhody@huawei.com

   Aihua Guo
   Huawei
   Email: aihuaguo@huawei.com

   Victor Lopez
   Telefonica
   Email: victor.lopezalvarez@telefonica.com
   Daniel King
   University of Lancaster
   Email: d.king@lancaster.ac.uk

   Bin Yeong Yoon
   ETRI
   218 Gaijeongro, Yuseong-gu
   Daejeon, Korea
   Email: byyun@etri.re.kr

   Ricard Vilalta
   CTTC
   Email: ricard.vilalta@cttc.es