module ietf-otn-tunnel {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-otn-tunnel";
prefix "otn-tunnel";
import ietf-te {
prefix "te";
reference
"I-D.ietf-teas-yang-te: A YANG Data Model for Traffic Engineering
Tunnels and Interfaces";
}
import ietf-otn-types {
prefix "otn-types";
reference
"module ietf-otn-types in this Document";
}
import ietf-te-types {
prefix "te-types";
reference
"I-D.ietf-teas-yang-te: A YANG Data Model for Traffic Engineering
Tunnels and Interfaces";
}
import ietf-inet-types {
prefix "inet";
reference "RFC 6991: Common YANG Data Types";
}
organization
"IETF CCAMP Working Group";
contact
"WG Web:
WG List:
Editor: Haomian Zheng
Editor: Aihua Guo
Editor: Italo Busi
Editor: Anurag Sharma
Editor: Rajan Rao
Editor: Sergio Belotti
Editor: Victor Lopez
Editor: Yunbo Li
Editor: Yunbin Xu
";
description
"This module defines a model for OTN Tunnel Services.
Copyright (c) 2018 IETF Trust and the persons
identified as authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).";
revision "2018-08-23" {
description
"Initial Revision";
reference
"RFC XXXX: OTN Tunnel YANG Model";
// RFC Ed.: replace XXXX with actual RFC number, update date
// information and remove this note
}
/*
* Groupings
*/
grouping otn-tunnel-attributes {
description "Parameters for OTN 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";
}
}
/*
* Data nodes
*/
augment "/te:te/te:tunnels/te:tunnel" {
description
"Augment with additional parameters required for OTN service";
uses otn-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 "OTN bandwidth.";
case otn {
uses otn-types:otn-path-bandwidth;
}
}
/* Augment bandwdith of tunnel */
augment "/te:te/te:tunnels/te:tunnel/"
+ "te:te-bandwidth/te:technology" {
description "OTN bandwidth.";
case otn {
uses otn-types:otn-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 "OTN bandwidth.";
case otn {
uses otn-types:otn-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:te-bandwidth/te:technology" {
description "OTN bandwidth.";
case otn {
uses otn-types:otn-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 "OTN bandwidth.";
case otn {
uses otn-types:otn-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:route-object-exclude-always/te:type/te:label/"
+ "te:label-hop/te:te-label/te:technology" {
description "OTN label.";
case otn {
uses otn-types:otn-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:route-object-include-exclude/te:type/te:label/"
+ "te:label-hop/te:te-label/te:technology" {
description "OTN label.";
case otn {
uses otn-types:otn-path-label;
}
}
/* Augment label restrictions for the forwarding direction of 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" {
description "OTN label.";
uses otn-types:otn-label-restriction;
}
/* Augment label restrictions start for the forwarding direction of 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-start/"
+ "te:te-label/te:technology" {
description "OTN label.";
case otn {
uses otn-types:otn-link-label;
}
}
/* Augment label restrictions end for the forwarding direction of 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-end/"
+ "te:te-label/te:technology" {
description "OTN label.";
case otn {
uses otn-types:otn-link-label;
}
}
/* Augment label restrictions for the reverse direction of 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:reverse/te:label-restrictions/"
+ "te:label-restriction" {
description "OTN label.";
uses otn-types:otn-label-restriction;
}
/* Augment label restrictions start for the reverse direction of 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:reverse/te:label-restrictions/"
+ "te:label-restriction/te:label-start/"
+ "te:te-label/te:technology" {
description "OTN label.";
case otn {
uses otn-types:otn-link-label;
}
}
/* Augment label restrictions end for the reverse direction of 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:reverse/te:label-restrictions/"
+ "te:label-restriction/te:label-end/"
+ "te:te-label/te:technology" {
description "OTN label.";
case otn {
uses otn-types:otn-link-label;
}
}
/* Augment label restrictions for the forwarding direction of path-out-segment of named-path-constraints */
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" {
description "OTN label.";
uses otn-types:otn-label-restriction;
}
/* Augment label restrictions start for the forwarding direction of path-out-segment of named-path-constraints */
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/te:label-start/"
+ "te:te-label/te:technology" {
description "OTN label.";
case otn {
uses otn-types:otn-link-label;
}
}
/* Augment label restrictions end for the forwarding direction of path-out-segment of named-path-constraints */
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/te:label-end/"
+ "te:te-label/te:technology" {
description "OTN label.";
case otn {
uses otn-types:otn-link-label;
}
}
/* Augment label restrictions for the reverse direction of path-out-segment of named-path-constraints */
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" {
description "OTN label.";
uses otn-types:otn-label-restriction;
}
/* Augment label restrictions start for the reverse direction of path-out-segment of named-path-constraints */
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/te:label-start/"
+ "te:te-label/te:technology" {
description "OTN label.";
case otn {
uses otn-types:otn-link-label;
}
}
/* Augment label restrictions end for the reverse direction of path-out-segment of named-path-constraints */
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/te:label-end/"
+ "te:te-label/te:technology" {
description "OTN label.";
case otn {
uses otn-types:otn-link-label;
}
}
/* Augment label hop of route-exclude 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: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 "OTN label.";
case otn {
uses otn-types:otn-path-label;
}
}
/* Augment label hop of route-include 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: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 "OTN label.";
case otn {
uses otn-types:otn-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/"
+ "te:route-object-exclude-always/te:type/te:label/"
+ "te:label-hop/te:te-label/te:technology" {
description "OTN label.";
case otn {
uses otn-types:otn-path-label;
}
}
/* Augment label hop of route-object-include-exclude of primary path */
augment "/te:te/te:tunnels/te:tunnel/"
+ "te:p2p-primary-paths/te:p2p-primary-path/"
+ "te:explicit-route-objects/"
+ "te:route-object-include-exclude/te:type/te:label/"
+ "te:label-hop/te:te-label/te:technology" {
description "OTN label.";
case otn {
uses otn-types:otn-path-label;
}
}
/* Augment label restrictions for the forwarding 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:forward/te:label-restrictions/"
+ "te:label-restriction" {
description "OTN label.";
uses otn-types:otn-label-restriction;
}
/* Augment label restrictions start for the forwarding 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:forward/te:label-restrictions/"
+ "te:label-restriction/te:label-start/"
+ "te:te-label/te:technology" {
description "OTN label.";
case otn {
uses otn-types:otn-link-label;
}
}
/* Augment label restrictions end for the forwarding 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:forward/te:label-restrictions/"
+ "te:label-restriction/te:label-end/"
+ "te:te-label/te:technology" {
description "OTN label.";
case otn {
uses otn-types:otn-link-label;
}
}
/* Augment label restrictions 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" {
description "OTN label.";
uses otn-types:otn-label-restriction;
}
/* Augment label restrictions start 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-start/"
+ "te:te-label/te:technology" {
description "OTN label.";
case otn {
uses otn-types:otn-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 "OTN label.";
case otn {
uses otn-types:otn-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 "OTN label.";
uses otn-types:otn-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 "OTN label.";
case otn {
uses otn-types:otn-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 "OTN label.";
case otn {
uses otn-types:otn-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 "OTN label.";
uses otn-types:otn-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 "OTN label.";
case otn {
uses otn-types:otn-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 "OTN label.";
case otn {
uses otn-types:otn-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 "OTN label.";
case otn {
uses otn-types:otn-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 "OTN label.";
case otn {
uses otn-types:otn-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 "OTN label.";
case otn {
uses otn-types:otn-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 "OTN label.";
case otn {
uses otn-types:otn-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 "OTN label.";
case otn {
uses otn-types:otn-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 "OTN label.";
case otn {
uses otn-types:otn-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 "OTN label.";
case otn {
uses otn-types:otn-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 "OTN label.";
uses otn-types:otn-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 "OTN label.";
case otn {
uses otn-types:otn-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 "OTN label.";
case otn {
uses otn-types:otn-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 "OTN label.";
uses otn-types:otn-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 "OTN label.";
case otn {
uses otn-types:otn-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 "OTN label.";
case otn {
uses otn-types:otn-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 "OTN label.";
uses otn-types:otn-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 "OTN label.";
case otn {
uses otn-types:otn-link-label;
}
}
/* Augment label restrictions end 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-end/"
+ "te:te-label/te:technology" {
description "OTN label.";
case otn {
uses otn-types:otn-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:path-out-segment/te:reverse/te:label-restrictions/"
+ "te:label-restriction" {
description "OTN label.";
uses otn-types:otn-label-restriction;
}
/* Augment label restrictions start 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:path-out-segment/te:reverse/te:label-restrictions/"
+ "te:label-restriction/te:label-start/"
+ "te:te-label/te:technology" {
description "OTN label.";
case otn {
uses otn-types:otn-link-label;
}
}
/* Augment label restrictions end 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:path-out-segment/te:reverse/te:label-restrictions/"
+ "te:label-restriction/te:label-end/"
+ "te:te-label/te:technology" {
description "OTN label.";
case otn {
uses otn-types:otn-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: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 "OTN label.";
case otn {
uses otn-types:otn-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: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 "OTN label.";
case otn {
uses otn-types:otn-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: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 "OTN label.";
case otn {
uses otn-types:otn-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 "OTN label.";
case otn {
uses otn-types:otn-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 "OTN label.";
case otn {
uses otn-types:otn-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 "OTN label.";
case otn {
uses otn-types:otn-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 "OTN label.";
case otn {
uses otn-types:otn-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 "OTN label.";
uses otn-types:otn-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:te-label/te:technology" {
description "OTN label.";
case otn {
uses otn-types:otn-link-label;
}
}
/* Augment label restrictions end 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-end/"
+ "te:te-label/te:technology" {
description "OTN label.";
case otn {
uses otn-types:otn-link-label;
}
}
/* Augment label restrictions for the reverse 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:reverse/te:label-restrictions/"
+ "te:label-restriction" {
description "OTN label.";
uses otn-types:otn-label-restriction;
}
/* Augment label restrictions start for the reverse 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:reverse/te:label-restrictions/"
+ "te:label-restriction/te:label-start/"
+ "te:te-label/te:technology" {
description "OTN label.";
case otn {
uses otn-types:otn-link-label;
}
}
/* Augment label restrictions end for the reverse 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:reverse/te:label-restrictions/"
+ "te:label-restriction/te:label-end/"
+ "te:te-label/te:technology" {
description "OTN label.";
case otn {
uses otn-types:otn-link-label;
}
}
/* Augment label restrictions for the forwarding 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:forward/te:label-restrictions/"
+ "te:label-restriction" {
description "OTN label.";
uses otn-types:otn-label-restriction;
}
/* Augment label restrictions start for the forwarding 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:forward/te:label-restrictions/"
+ "te:label-restriction/te:label-start/"
+ "te:te-label/te:technology" {
description "OTN label.";
case otn {
uses otn-types:otn-link-label;
}
}
/* Augment label restrictions end for the forwarding 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:forward/te:label-restrictions/"
+ "te:label-restriction/te:label-end/"
+ "te:te-label/te:technology" {
description "OTN label.";
case otn {
uses otn-types:otn-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:label-restriction" {
description "OTN label.";
uses otn-types:otn-label-restriction;
}
/* Augment label restrictions start 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:label-restriction/te:label-start/"
+ "te:te-label/te:technology" {
description "OTN label.";
case otn {
uses otn-types:otn-link-label;
}
}
/* Augment label restrictions end 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:label-restriction/te:label-end/"
+ "te:te-label/te:technology" {
description "OTN label.";
case otn {
uses otn-types:otn-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:path-computed-route-object/te:state/te:type/te:label/"
+ "te:label-hop/te:te-label/te:technology" {
description "OTN label.";
case otn {
uses otn-types:otn-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:record-route-subobject/te:type/te:label/"
+ "te:label-hop/te:te-label/te:technology" {
description "OTN label.";
case otn {
uses otn-types:otn-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:path-route-objects/"
+ "te:path-computed-route-object/te:state/te:type/te:label/"
+ "te:label-hop/te:te-label/te:technology" {
description "OTN label.";
case otn {
uses otn-types:otn-path-label;
}
}
/* Augment label hop of record-route of LSP */
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-label/te:technology" {
description "OTN label.";
case otn {
uses otn-types:otn-path-label;
}
}
grouping p2p-path-ero {
description
"TE tunnel ERO configuration grouping";
leaf te-default-metric {
type uint32;
description
"Traffic engineering metric.";
}
leaf te-delay-metric {
type uint32;
description
"Traffic engineering delay metric.";
}
leaf te-hop-metric {
type uint32;
description
"Traffic engineering hop metric.";
}
container explicit-route-objects {
description "Explicit route objects container";
list explicit-route-object {
key "index";
description
"List of explicit route objects";
leaf explicit-route-usage {
type identityref {
base te-types:route-usage-type;
}
description "An explicit-route hop action.";
}
uses te-types:explicit-route-hop {
augment "type/label/label-hop/te-label/technology" {
description "OTN label.";
case otn {
uses otn-types:otn-path-label;
}
}
}
}
}
}
rpc otn-te-tunnel-path-compute {
description "OTN TE tunnel path computation";
input {
list request {
key "id";
description "A list of path computation requests.";
leaf id {
type uint8;
description
"Request ID.";
}
leaf type {
type identityref {
base te-types:tunnel-type;
}
description "TE tunnel type.";
}
leaf source {
type inet:ip-address;
description
"TE tunnel source address.";
}
leaf destination {
type inet:ip-address;
description
"TE tunnel destination address";
}
leaf src-tp-id {
type binary;
description
"TE tunnel source termination point identifier.";
}
leaf dst-tp-id {
type binary;
description
"TE tunnel destination termination point identifier.";
}
leaf switching-layer {
type identityref {
base te-types:switching-capabilities;
}
description
"Switching layer where the requests are computed.";
}
leaf encoding {
type identityref {
base te-types:lsp-encoding-types;
}
description "LSP encoding type";
}
leaf protection-type {
type identityref {
base te-types:lsp-protection-type;
}
description "LSP protection type";
}
leaf restoration-type {
type identityref {
base te-types:lsp-restoration-type;
}
description "LSP restoration type";
}
leaf provider-id {
type te-types:te-global-id;
description
"An identifier to uniquely identify a provider.";
}
leaf client-id {
type te-types:te-global-id;
description
"An identifier to uniquely identify a client.";
}
leaf te-topology-id {
type te-types:te-topology-id;
description
"It is presumed that a datastore will contain many
topologies. To distinguish between topologies it is
vital to have UNIQUE topology identifiers.";
}
leaf setup-priority {
type uint8 {
range "0..7";
}
description
"TE LSP setup priority";
}
leaf hold-priority {
type uint8 {
range "0..7";
}
description
"TE LSP hold priority";
}
leaf te-path-metric-type {
type identityref {
base te-types:path-metric-type;
}
default te-types:path-metric-te;
description
"The tunnel path metric type.";
}
leaf odu-type {
type identityref{
base otn-types:odu-type;
}
description "Type of ODU";
}
container p2p-primary-paths {
description "Set of P2P primary paths container";
list p2p-primary-path {
key "name";
description
"List of primary paths for this tunnel.";
leaf name {
type string;
description "TE path name";
}
uses p2p-path-ero;
}
}
container p2p-secondary-paths {
description "Set of P2P secondary paths container";
list p2p-secondary-path {
key "name";
description
"List of secondary paths for this tunnel.";
leaf name {
type string;
description "TE path name";
}
uses p2p-path-ero;
}
}
uses otn-tunnel-attributes;
}
}
output {
leaf return-code {
type enumeration {
enum success {
description "success";
}
enum aborted {
description "aborted";
}
enum destination-not-found {
description "destination-not-found";
}
enum invalid-argument {
description "invalid-argument";
}
enum no-memory {
description "no-memory";
}
enum no-path-found {
description "no-path-found";
}
enum other-error {
description "other-error";
}
enum some-path-not-found {
description "some-path-not-found";
}
enum source-not-found {
description "source-not-found";
}
enum topology-error {
description "topology-error";
}
}
description
"Return code";
}
list result {
key "id";
description
"A list of results for all requests.";
leaf id {
type uint8;
description
"Request ID";
}
container p2p-primary-paths {
description "Set of P2P primary paths container";
list p2p-primary-path {
key "name";
description
"List of resultant primary paths for this tunnel.";
leaf name {
type string;
description "TE path name";
}
uses p2p-path-ero;
}
}
container p2p-secondary-paths {
description "Set of P2P secondary paths container";
list p2p-secondary-path {
key "name";
description
"List of resultant secondary paths for this tunnel.";
leaf name {
type string;
description "TE path name";
}
uses p2p-path-ero;
}
}
}
}
}
}