--- /dev/null
+module ietf-otn-tunnel {\r
+ yang-version 1.1;\r
+\r
+ namespace "urn:ietf:params:xml:ns:yang:ietf-otn-tunnel";\r
+ prefix "otn-tunnel";\r
+\r
+ import ietf-te {\r
+ prefix "te";\r
+ }\r
+\r
+ import ietf-otn-types {\r
+ prefix "otn-types";\r
+ }\r
+\r
+ import ietf-te-types {\r
+ prefix "te-types";\r
+ }\r
+\r
+ import ietf-inet-types {\r
+ prefix "inet";\r
+ }\r
+\r
+ organization\r
+ "IETF CCAMP Working Group";\r
+ contact\r
+ "WG Web: <http://tools.ietf.org/wg/ccamp/>\r
+ WG List: <mailto:ccamp@ietf.org>\r
+\r
+ Editor: Haomian Zheng\r
+ <mailto:zhenghaomian@huawei.com>\r
+\r
+ Editor: Aihua Guo\r
+ <mailto:aihuaguo@huawei.com>\r
+\r
+ Editor: Italo Busi\r
+ <mailto:italo.busi@huawei.com>\r
+\r
+ Editor: Anurag Sharma\r
+ <mailto:ansha@google.com>\r
+\r
+ Editor: Rajan Rao\r
+ <mailto:rrao@infinera.com>\r
+\r
+ Editor: Sergio Belotti\r
+ <mailto:sergio.belotti@nokia.com>\r
+\r
+ Editor: Victor Lopez\r
+ <mailto:victor.lopezalvarez@telefonica.com>\r
+\r
+ Editor: Yunbo Li\r
+ <mailto:liyunbo@chinamobile.com>\r
+\r
+ Editor: Yunbin Xu\r
+ <mailto:xuyunbin@ritt.cn>";\r
+\r
+ description\r
+ "This module defines a model for OTN Tunnel Services.";\r
+\r
+ revision "2018-06-07" {\r
+ description\r
+ "Revision 0.5";\r
+ reference\r
+ "draft-ietf-ccamp-otn-tunnel-model-02";\r
+ }\r
+\r
+ /*\r
+ * Groupings\r
+ */\r
+\r
+ grouping otn-tunnel-endpoint {\r
+ description "Parameters for OTN tunnel";\r
+\r
+ leaf payload-treatment {\r
+ type enumeration {\r
+ enum switching {\r
+ description "Client signal is switched to another tunnel\r
+ in this domain";\r
+ }\r
+ enum transport {\r
+ description "Client signal is transparently transmitted\r
+ in this domain";\r
+ }\r
+ }\r
+ default switching;\r
+ description\r
+ "Treatment of the incoming payload. Payload can be switched\r
+ or transported.";\r
+ }\r
+\r
+ leaf src-client-signal {\r
+ type identityref {\r
+ base otn-types:client-signal;\r
+ }\r
+ description\r
+ "Client signal at the source endpoint of the tunnel";\r
+ }\r
+\r
+ leaf src-tpn {\r
+ type uint16 {\r
+ range "0..4095";\r
+ }\r
+ description\r
+ "Tributary Port Number. Applicable in case of mux services";\r
+ reference\r
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving\r
+ G.709 Optical Transport Networks";\r
+ }\r
+\r
+ leaf src-tsg {\r
+ type identityref {\r
+ base otn-types:tributary-slot-granularity;\r
+ }\r
+ description\r
+ "Tributary slot granularity.\r
+ Applicable in case of mux services";\r
+ reference\r
+ "G.709/Y.1331, February 2016: Interfaces for the\r
+ Optical Transport Network (OTN)";\r
+ }\r
+\r
+ leaf src-tributary-slot-count {\r
+ type uint16;\r
+ description\r
+ "Number of tributary slots used at the source.";\r
+ }\r
+\r
+ container src-tributary-slots {\r
+ description\r
+ "A list of tributary slots used by the client service.\r
+ Applicable in case of mux services";\r
+ leaf-list values {\r
+ type uint8;\r
+ description\r
+ "Tributary tributary slot value";\r
+ reference\r
+ "G.709/Y.1331, February 2016: Interfaces for the\r
+ Optical Transport Network (OTN)";\r
+ }\r
+ }\r
+\r
+ leaf dst-client-signal {\r
+ type identityref {\r
+ base otn-types:client-signal;\r
+ }\r
+ description\r
+ "Client signal at the destination endpoint of the tunnel";\r
+ }\r
+\r
+ leaf dst-tpn {\r
+ type uint16 {\r
+ range "0..4095";\r
+ }\r
+ description\r
+ "Tributary Port Number. Applicable in case of mux services";\r
+ reference\r
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving\r
+ G.709 Optical Transport Networks.";\r
+ }\r
+\r
+ leaf dst-tsg {\r
+ type identityref {\r
+ base otn-types:tributary-slot-granularity;\r
+ }\r
+ description\r
+ "Tributary slot granularity.\r
+ Applicable in case of mux services";\r
+ reference\r
+ "G.709/Y.1331, February 2016: Interfaces for the\r
+ Optical Transport Network (OTN)";\r
+ }\r
+\r
+ leaf dst-tributary-slot-count {\r
+ type uint16;\r
+ description\r
+ "Number of tributary slots used at the destination.";\r
+ }\r
+\r
+ container dst-tributary-slots {\r
+ description\r
+ "A list of tributary slots used by the client service.\r
+ Applicable in case of mux services";\r
+ leaf-list values {\r
+ type uint8;\r
+ description\r
+ "Tributary slot value";\r
+ reference\r
+ "G.709/Y.1331, February 2016: Interfaces for the\r
+ Optical Transport Network (OTN)";\r
+ }\r
+ }\r
+ }\r
+\r
+ /*\r
+ Note: Comment has been given to authors of TE Tunnel model to add\r
+ list of endpoints under config to support P2MP tunnel.\r
+ */\r
+\r
+ /*\r
+ * Data nodes\r
+ */\r
+\r
+ augment "/te:te/te:tunnels/te:tunnel" {\r
+ description\r
+ "Augment with additional parameters required for OTN service";\r
+ uses otn-tunnel-endpoint;\r
+ }\r
+\r
+ /*\r
+ * Augment TE bandwidth\r
+ */\r
+\r
+ /* Augment bandwidth of named-path-constraints */\r
+ augment "/te:te/te:globals/te:named-path-constraints/"\r
+ + "te:named-path-constraint/"\r
+ + "te:te-bandwidth/te:technology" {\r
+ description "OTN bandwidth.";\r
+ case otn {\r
+ uses otn-types:otn-path-bandwidth;\r
+ }\r
+ }\r
+\r
+ /* Augment bandwdith of tunnel */\r
+ augment "/te:te/te:tunnels/te:tunnel/"\r
+ + "te:te-bandwidth/te:technology" {\r
+ description "OTN bandwidth.";\r
+ case otn {\r
+ uses otn-types:otn-path-bandwidth;\r
+ }\r
+ }\r
+\r
+ /* Augment bandwidth of primary path */\r
+ augment "/te:te/te:tunnels/te:tunnel/"\r
+ + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+ + "te:te-bandwidth/te:technology" {\r
+ description "OTN bandwidth.";\r
+ case otn {\r
+ uses otn-types:otn-path-bandwidth;\r
+ }\r
+ }\r
+\r
+ /* Augment bandwidth of reverse primary path */\r
+ augment "/te:te/te:tunnels/te:tunnel/"\r
+ + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+ + "te:p2p-reverse-primary-path/"\r
+ + "te:te-bandwidth/te:technology" {\r
+ description "OTN bandwidth.";\r
+ case otn {\r
+ uses otn-types:otn-path-bandwidth;\r
+ }\r
+ }\r
+\r
+ /* Augment bandwidht of secondary path */\r
+ augment "/te:te/te:tunnels/te:tunnel/"\r
+ + "te:p2p-secondary-paths/te:p2p-secondary-path/"\r
+ + "te:te-bandwidth/te:technology" {\r
+ description "OTN bandwidth.";\r
+ case otn {\r
+ uses otn-types:otn-path-bandwidth;\r
+ }\r
+ }\r
+ \r
+ /*\r
+ * Augment TE label.\r
+ */\r
+\r
+ /* Augment label hop of route-object-exclude-always of named-path-constraints */\r
+ augment "/te:te/te:globals/te:named-path-constraints/"\r
+ + "te:named-path-constraint/te:explicit-route-objects/"\r
+ + "te:route-object-exclude-always/te:type/te:label/"\r
+ + "te:label-hop/te:te-label/te:technology" {\r
+ description "OTN label.";\r
+ case otn {\r
+ uses otn-types:otn-path-label;\r
+ }\r
+ }\r
+\r
+ /* Augment label hop of route-object-include-exclude of named-path-constraints */\r
+ augment "/te:te/te:globals/te:named-path-constraints/"\r
+ + "te:named-path-constraint/te:explicit-route-objects/"\r
+ + "te:route-object-include-exclude/te:type/te:label/"\r
+ + "te:label-hop/te:te-label/te:technology" {\r
+ description "OTN label.";\r
+ case otn {\r
+ uses otn-types:otn-path-label;\r
+ }\r
+ }\r
+\r
+\r
+ /* Augment label hop of route-object-exclude-always of primary path */\r
+ augment "/te:te/te:tunnels/te:tunnel/"\r
+ + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+ + "te:explicit-route-objects/"\r
+ + "te:route-object-exclude-always/te:type/te:label/"\r
+ + "te:label-hop/te:te-label/te:technology" {\r
+ description "OTN label.";\r
+ case otn {\r
+ uses otn-types:otn-path-label;\r
+ }\r
+ }\r
+\r
+ /* Augment label hop of route-object-include-exclude of primary path */\r
+ augment "/te:te/te:tunnels/te:tunnel/"\r
+ + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+ + "te:explicit-route-objects/"\r
+ + "te:route-object-include-exclude/te:type/te:label/"\r
+ + "te:label-hop/te:te-label/te:technology" {\r
+ description "OTN label.";\r
+ case otn {\r
+ uses otn-types:otn-path-label;\r
+ }\r
+ }\r
+\r
+ /* Augment label hop of route-exclude of primary path */\r
+ augment "/te:te/te:tunnels/te:tunnel/"\r
+ + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+ + "te:optimizations/te:algorithm/te:metric/"\r
+ + "te:optimization-metric/te:explicit-route-exclude-objects/"\r
+ + "te:route-object-exclude-object/te:type/te:label/"\r
+ + "te:label-hop/te:te-label/te:technology" {\r
+ description "OTN label.";\r
+ case otn {\r
+ uses otn-types:otn-path-label;\r
+ }\r
+ }\r
+\r
+ /* Augment label hop of route-include of primary path */\r
+ augment "/te:te/te:tunnels/te:tunnel/"\r
+ + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+ + "te:optimizations/te:algorithm/te:metric/"\r
+ + "te:optimization-metric/te:explicit-route-include-objects/"\r
+ + "te:route-object-include-object/te:type/te:label/"\r
+ + "te:label-hop/te:te-label/te:technology" {\r
+ description "OTN label.";\r
+ case otn {\r
+ uses otn-types:otn-path-label;\r
+ }\r
+ }\r
+\r
+ /* Augment label hop of path-route of primary path */\r
+ augment "/te:te/te:tunnels/te:tunnel/"\r
+ + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+ + "te:state/te:path-properties/"\r
+ + "te:path-route-objects/te:path-computed-route-object/"\r
+ + "te:state/te:type/te:label/"\r
+ + "te:label-hop/te:te-label/te:technology" {\r
+ description "OTN label.";\r
+ case otn {\r
+ uses otn-types:otn-path-label;\r
+ }\r
+ }\r
+\r
+ /*\r
+ augment "/te:te/te:tunnels/te:tunnel/"\r
+ + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+ + "te:state/te:lsps/te:lsp/te:record-route-subobjects/"\r
+ + "te:record-route-subobject/"\r
+ + "te:state/te:type/te:label/"\r
+ + "te:label-hop/te:te-label/te:technology" {\r
+ description "OTN label.";\r
+ case otn {\r
+ uses otn-types:otn-path-label;\r
+ }\r
+ }\r
+ */\r
+\r
+ /* Augment label hop of path-route of primary LSP */\r
+ augment "/te:te/te:tunnels/te:tunnel/"\r
+ + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+ + "te:state/te:lsps/te:lsp/te:path-properties/"\r
+ + "te:path-route-objects/te:path-computed-route-object/"\r
+ + "te:state/te:type/te:label/"\r
+ + "te:label-hop/te:te-label/te:technology" {\r
+ description "OTN label.";\r
+ case otn {\r
+ uses otn-types:otn-path-label;\r
+ }\r
+ }\r
+\r
+ /* Augment label hop of route-object-exclude-always of reverse primary path */\r
+ augment "/te:te/te:tunnels/te:tunnel/"\r
+ + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+ + "te:p2p-reverse-primary-path/"\r
+ + "te:explicit-route-objects/"\r
+ + "te:route-object-exclude-always/"\r
+ + "te:type/te:label/"\r
+ + "te:label-hop/te:te-label/te:technology" {\r
+ description "OTN label.";\r
+ case otn {\r
+ uses otn-types:otn-path-label;\r
+ }\r
+ }\r
+\r
+ /* Augment label hop of route-object-include-exclude of reverse primary path */\r
+ augment "/te:te/te:tunnels/te:tunnel/"\r
+ + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+ + "te:p2p-reverse-primary-path/"\r
+ + "te:explicit-route-objects/"\r
+ + "te:route-object-include-exclude/"\r
+ + "te:type/te:label/"\r
+ + "te:label-hop/te:te-label/te:technology" {\r
+ description "OTN label.";\r
+ case otn {\r
+ uses otn-types:otn-path-label;\r
+ }\r
+ }\r
+\r
+ /* Augment label hop of route-exclude of reverse primary path */\r
+ augment "/te:te/te:tunnels/te:tunnel/"\r
+ + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+ + "te:p2p-reverse-primary-path/"\r
+ + "te:optimizations/te:algorithm/te:metric/"\r
+ + "te:optimization-metric/te:explicit-route-exclude-objects/"\r
+ + "te:route-object-exclude-object/te:type/te:label/"\r
+ + "te:label-hop/te:te-label/te:technology" {\r
+ description "OTN label.";\r
+ case otn {\r
+ uses otn-types:otn-path-label;\r
+ }\r
+ }\r
+\r
+ /* Augment label hop of route-include of reverse primary path */\r
+ augment "/te:te/te:tunnels/te:tunnel/"\r
+ + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+ + "te:p2p-reverse-primary-path/"\r
+ + "te:optimizations/te:algorithm/te:metric/"\r
+ + "te:optimization-metric/te:explicit-route-include-objects/"\r
+ + "te:route-object-include-object/te:type/te:label/"\r
+ + "te:label-hop/te:te-label/te:technology" {\r
+ description "OTN label.";\r
+ case otn {\r
+ uses otn-types:otn-path-label;\r
+ }\r
+ }\r
+\r
+ /* Augment label hop of label hop of path-route of reverse primary path */\r
+ augment "/te:te/te:tunnels/te:tunnel/"\r
+ + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+ + "te:p2p-reverse-primary-path/"\r
+ + "te:state/te:path-properties/"\r
+ + "te:path-route-objects/te:path-computed-route-object/"\r
+ + "te:state/te:type/te:label/"\r
+ + "te:label-hop/te:te-label/te:technology" {\r
+ description "OTN label.";\r
+ case otn {\r
+ uses otn-types:otn-path-label;\r
+ }\r
+ }\r
+\r
+ /*\r
+ augment "/te:te/te:tunnels/te:tunnel/"\r
+ + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+ + "te:p2p-reverse-primary-path/"\r
+ + "te:state/te:lsps/te:lsp/te:lsp-record-route-subobjects/"\r
+ + "te:record-route-subobject/"\r
+ + "te:type/te:label/"\r
+ + "te:label-hop/te:te-label/te:technology" {\r
+ description "OTN label.";\r
+ case otn {\r
+ uses otn-types:otn-path-label;\r
+ }\r
+ }\r
+ */\r
+\r
+ /* Augment label hop of path-route of reverse primary LSP */\r
+ augment "/te:te/te:tunnels/te:tunnel/"\r
+ + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+ + "te:p2p-reverse-primary-path/"\r
+ + "te:state/te:lsps/te:lsp/te:path-properties/"\r
+ + "te:path-route-objects/te:path-computed-route-object/"\r
+ + "te:state/te:type/te:label/"\r
+ + "te:label-hop/te:te-label/te:technology" {\r
+ description "OTN label.";\r
+ case otn {\r
+ uses otn-types:otn-path-label;\r
+ }\r
+ }\r
+\r
+ /* Augment label hop of route-object-exclude-always of secondary path */\r
+ augment "/te:te/te:tunnels/te:tunnel/"\r
+ + "te:p2p-secondary-paths/te:p2p-secondary-path/"\r
+ + "te:explicit-route-objects/"\r
+ + "te:route-object-exclude-always/te:type/te:label/"\r
+ + "te:label-hop/te:te-label/te:technology" {\r
+ description "OTN label.";\r
+ case otn {\r
+ uses otn-types:otn-path-label;\r
+ }\r
+ }\r
+\r
+ /* Augment label hop of route-object-include-exclude of secondary path */\r
+ augment "/te:te/te:tunnels/te:tunnel/"\r
+ + "te:p2p-secondary-paths/te:p2p-secondary-path/"\r
+ + "te:explicit-route-objects/"\r
+ + "te:route-object-include-exclude/te:type/te:label/"\r
+ + "te:label-hop/te:te-label/te:technology" {\r
+ description "OTN label.";\r
+ case otn {\r
+ uses otn-types:otn-path-label;\r
+ }\r
+ }\r
+\r
+ /* Augment label hop of route-exclude of secondary path */\r
+ augment "/te:te/te:tunnels/te:tunnel/"\r
+ + "te:p2p-secondary-paths/te:p2p-secondary-path/"\r
+ + "te:optimizations/te:algorithm/te:metric/"\r
+ + "te:optimization-metric/te:explicit-route-exclude-objects/"\r
+ + "te:route-object-exclude-object/te:type/te:label/"\r
+ + "te:label-hop/te:te-label/te:technology" {\r
+ description "OTN label.";\r
+ case otn {\r
+ uses otn-types:otn-path-label;\r
+ }\r
+ }\r
+\r
+ /* Augment label hop of route-include of secondary path */\r
+ augment "/te:te/te:tunnels/te:tunnel/"\r
+ + "te:p2p-secondary-paths/te:p2p-secondary-path/"\r
+ + "te:optimizations/te:algorithm/te:metric/"\r
+ + "te:optimization-metric/te:explicit-route-include-objects/"\r
+ + "te:route-object-include-object/te:type/te:label/"\r
+ + "te:label-hop/te:te-label/te:technology" {\r
+ description "OTN label.";\r
+ case otn {\r
+ uses otn-types:otn-path-label;\r
+ }\r
+ }\r
+\r
+ /* Augment label hop of label hop of path-route of secondary path */\r
+ augment "/te:te/te:tunnels/te:tunnel/"\r
+ + "te:p2p-secondary-paths/te:p2p-secondary-path/"\r
+ + "te:state/te:path-properties/te:path-route-objects/" \r
+ + "te:path-computed-route-object/te:state/te:type/te:label/" \r
+ + "te:label-hop/te:te-label/te:technology" {\r
+ description "OTN label.";\r
+ case otn {\r
+ uses otn-types:otn-path-label;\r
+ }\r
+ }\r
+\r
+ /*\r
+ augment "/te:te/te:tunnels/te:tunnel/"\r
+ + "te:p2p-secondary-paths/te:p2p-secondary-path/"\r
+ + "te:state/te:lsps/te:lsp/te:lsp-record-route-subobjects/"\r
+ + "te:record-route-subobject/"\r
+ + "te:type/te:label/"\r
+ + "te:label-hop/te:te-label/te:technology" {\r
+ description "OTN label.";\r
+ case otn {\r
+ uses otn-types:otn-path-label;\r
+ }\r
+ }\r
+ */\r
+\r
+ /* Augment label hop of path-route of secondary LSP */\r
+ augment "/te:te/te:tunnels/te:tunnel/"\r
+ + "te:p2p-secondary-paths/te:p2p-secondary-path/"\r
+ + "te:state/te:lsps/te:lsp/te:path-properties/"\r
+ + "te:path-route-objects/"\r
+ + "te:path-computed-route-object/te:state/te:type/te:label/" \r
+ + "te:label-hop/te:te-label/te:technology" {\r
+ description "OTN label.";\r
+ case otn {\r
+ uses otn-types:otn-path-label;\r
+ }\r
+ }\r
+\r
+ /*\r
+ augment "/te:te/te:lsp-state/"\r
+ + "te:lsp-record-route-subobjects/te:lsp-record-route-subobject/" \r
+ + "te:record-route-subobject/" \r
+ + "te:type/te:label/te:label-hop/te:te-label/te:technology" {\r
+ description "OTN label.";\r
+ case otn {\r
+ uses otn-types:otn-path-label;\r
+ }\r
+ }\r
+ */\r
+ \r
+ \r
+ grouping p2p-path-ero {\r
+ description\r
+ "TE tunnel ERO configuration grouping";\r
+\r
+ leaf te-default-metric {\r
+ type uint32;\r
+ description\r
+ "Traffic engineering metric.";\r
+ }\r
+ leaf te-delay-metric {\r
+ type uint32;\r
+ description\r
+ "Traffic engineering delay metric.";\r
+ }\r
+ leaf te-hop-metric {\r
+ type uint32;\r
+ description\r
+ "Traffic engineering hop metric.";\r
+ }\r
+ container explicit-route-objects {\r
+ description "Explicit route objects container";\r
+ list explicit-route-object {\r
+ key "index";\r
+ description\r
+ "List of explicit route objects";\r
+ leaf explicit-route-usage {\r
+ type identityref {\r
+ base te-types:route-usage-type;\r
+ }\r
+ description "An explicit-route hop action.";\r
+ }\r
+ uses te-types:explicit-route-hop {\r
+ augment "type/label/label-hop/te-label/technology" {\r
+ description "OTN label.";\r
+ case otn {\r
+ uses otn-types:otn-path-label;\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ rpc otn-te-tunnel-path-compute {\r
+ description "OTN TE tunnel path computation";\r
+ input {\r
+ list request {\r
+ key "id";\r
+ description "A list of path computation requests.";\r
+\r
+ leaf id {\r
+ type uint8;\r
+ description\r
+ "Request ID.";\r
+ }\r
+ leaf type {\r
+ type identityref {\r
+ base te-types:tunnel-type;\r
+ }\r
+ description "TE tunnel type.";\r
+ }\r
+ leaf source {\r
+ type inet:ip-address;\r
+ description\r
+ "TE tunnel source address.";\r
+ }\r
+ leaf destination {\r
+ type inet:ip-address;\r
+ description\r
+ "TE tunnel destination address";\r
+ }\r
+ leaf src-tp-id {\r
+ type binary;\r
+ description\r
+ "TE tunnel source termination point identifier.";\r
+ }\r
+ leaf dst-tp-id {\r
+ type binary;\r
+ description\r
+ "TE tunnel destination termination point identifier.";\r
+ }\r
+ leaf switching-layer {\r
+ type identityref {\r
+ base te-types:switching-capabilities;\r
+ }\r
+ description\r
+ "Switching layer where the requests are computed.";\r
+ }\r
+ leaf encoding {\r
+ type identityref {\r
+ base te-types:lsp-encoding-types;\r
+ }\r
+ description "LSP encoding type";\r
+ }\r
+ leaf protection-type {\r
+ type identityref {\r
+ base te-types:lsp-protection-type;\r
+ }\r
+ description "LSP protection type";\r
+ }\r
+ leaf restoration-type {\r
+ type identityref {\r
+ base te-types:lsp-restoration-type;\r
+ }\r
+ description "LSP restoration type";\r
+ }\r
+ leaf provider-id {\r
+ type te-types:te-global-id;\r
+ description\r
+ "An identifier to uniquely identify a provider.";\r
+ }\r
+ leaf client-id {\r
+ type te-types:te-global-id;\r
+ description\r
+ "An identifier to uniquely identify a client.";\r
+ }\r
+ leaf te-topology-id {\r
+ type te-types:te-topology-id;\r
+ description\r
+ "It is presumed that a datastore will contain many\r
+ topologies. To distinguish between topologies it is\r
+ vital to have UNIQUE topology identifiers.";\r
+ }\r
+ leaf setup-priority {\r
+ type uint8 {\r
+ range "0..7";\r
+ }\r
+ description\r
+ "TE LSP setup priority";\r
+ }\r
+ leaf hold-priority {\r
+ type uint8 {\r
+ range "0..7";\r
+ }\r
+ description\r
+ "TE LSP hold priority";\r
+ }\r
+ leaf te-path-metric-type {\r
+ type identityref {\r
+ base te-types:path-metric-type;\r
+ }\r
+ default te-types:path-metric-te;\r
+ description\r
+ "The tunnel path metric type.";\r
+ }\r
+\r
+ leaf odu-type {\r
+ type identityref{\r
+ base otn-types:tributary-protocol-type;\r
+ }\r
+ description "Type of ODU";\r
+ }\r
+ container p2p-primary-paths {\r
+ description "Set of P2P primary paths container";\r
+ list p2p-primary-path {\r
+ key "name";\r
+ description\r
+ "List of primary paths for this tunnel.";\r
+ leaf name {\r
+ type string;\r
+ description "TE path name";\r
+ }\r
+ uses p2p-path-ero;\r
+ }\r
+ }\r
+ container p2p-secondary-paths {\r
+ description "Set of P2P secondary paths container";\r
+ list p2p-secondary-path {\r
+ key "name";\r
+ description\r
+ "List of secondary paths for this tunnel.";\r
+ leaf name {\r
+ type string;\r
+ description "TE path name";\r
+ }\r
+ uses p2p-path-ero;\r
+ }\r
+ }\r
+ uses otn-tunnel-endpoint;\r
+ }\r
+ }\r
+ output {\r
+ leaf return-code {\r
+ type enumeration {\r
+ enum success {\r
+ description "success";\r
+ }\r
+ enum aborted {\r
+ description "aborted";\r
+ }\r
+ enum destination-not-found {\r
+ description "destination-not-found";\r
+ }\r
+ enum invalid-argument {\r
+ description "invalid-argument";\r
+ }\r
+ enum no-memory {\r
+ description "no-memory";\r
+ }\r
+ enum no-path-found {\r
+ description "no-path-found";\r
+ }\r
+ enum other-error {\r
+ description "other-error";\r
+ }\r
+ enum some-path-not-found {\r
+ description "some-path-not-found";\r
+ }\r
+ enum source-not-found {\r
+ description "source-not-found";\r
+ }\r
+ enum topology-error {\r
+ description "topology-error";\r
+ }\r
+ }\r
+ description\r
+ "Return code";\r
+ }\r
+ list result {\r
+ key "id";\r
+ description\r
+ "A list of results for all requests.";\r
+\r
+ leaf id {\r
+ type uint8;\r
+ description\r
+ "Request ID";\r
+ }\r
+ container p2p-primary-paths {\r
+ description "Set of P2P primary paths container";\r
+ list p2p-primary-path {\r
+ key "name";\r
+ description\r
+ "List of resultant primary paths for this tunnel.";\r
+ leaf name {\r
+ type string;\r
+ description "TE path name";\r
+ }\r
+ uses p2p-path-ero;\r
+ }\r
+ }\r
+ container p2p-secondary-paths {\r
+ description "Set of P2P secondary paths container";\r
+ list p2p-secondary-path {\r
+ key "name";\r
+ description\r
+ "List of resultant secondary paths for this tunnel.";\r
+ leaf name {\r
+ type string;\r
+ description "TE path name";\r
+ }\r
+ uses p2p-path-ero;\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+}\r