3 namespace "urn:opendaylight:params:xml:ns:yang:pcep:types";
6 import ieee754 { prefix ieee754; revision-date 2013-08-19; }
7 import ietf-inet-types { prefix inet; revision-date 2010-09-24; }
8 import network-concepts { prefix netc; revision-date 2013-11-25; }
9 import rsvp { prefix rsvp; revision-date 2013-08-20; }
10 import iana { prefix iana; revision-date 2013-08-16; }
12 organization "Cisco Systems, Inc.";
13 contact "Robert Varga <rovarga@cisco.com>";
16 "This module contains the base data model of a PCEP message.
17 It rolls up the definitions contained in RFC5440, RFC5520
20 Copyright (c)2013 Cisco Systems, Inc. All rights reserved.
22 This program and the accompanying materials are made available
23 under the terms of the Eclipse Public License v1.0 which
24 accompanies this distribution, and is available at
25 http://www.eclipse.org/legal/epl-v10.html";
27 revision "2013-10-05" {
33 // NOTE: this model uses counts bits in fields from left to right,
34 // just as IANA does for PCEP protocol.
37 typedef protocol-version {
70 description "Marker grouping for TLV groupings.";
73 grouping no-path-vector-tlv {
74 description "NO-PATH-VECTOR TLV";
75 reference "https://tools.ietf.org/html/rfc5440#section-7.5";
80 bit p2mp-unreachable {
86 bit no-gco-migration {
90 reference "https://tools.ietf.org/html/rfc5520#section-7.4";
93 bit chain-unavailable {
99 bit unknown-destination {
102 bit pce-unavailable {
110 grouping overload-duration-tlv {
111 description "OVERLOAD-DURATION TLV";
112 reference "https://tools.ietf.org/html/rfc5440#section-7.14";
113 container overload-duration {
122 grouping req-missing-tlv {
123 description "REQ-MISSING TLV";
124 reference "https://tools.ietf.org/html/rfc5440#section-7.5";
125 container req-missing {
133 grouping of-list-tlv {
134 description "OF-List TLV";
135 reference "https://tools.ietf.org/html/rfc5541#section-2.1";
145 description "Order TLV";
146 reference "https://tools.ietf.org/html/rfc5557#section-5.4";
162 description "Vendor-specific TLV.";
166 leaf enterprise-number {
167 type iana:enterprise-number;
170 choice vendor-payload {
176 grouping object-header {
177 description "Common Object Header";
178 reference "https://tools.ietf.org/html/rfc5440#section-7.2";
180 leaf processing-rule {
192 description "Core object structure with optional TLVs";
196 grouping open-object {
197 description "OPEN Object";
198 reference "https://tools.ietf.org/html/rfc5440#section-7.3";
207 type protocol-version;
212 // Note: non-presence is equal to '0'
220 // Note: non-presence is equal to '0'
234 description "RP Object";
235 reference "https://tools.ietf.org/html/rfc5440#section-7.4";
253 leaf reoptimization {
258 leaf bi-directional {
271 reference "https://tools.ietf.org/html/rfc5520#section-3.2.1";
277 reference "https://tools.ietf.org/html/rfc6006#section-3.3.1";
283 reference "https://tools.ietf.org/html/rfc6006#section-3.3.1";
286 leaf ero-compression {
289 reference "https://tools.ietf.org/html/rfc6006#section-3.3.1";
295 reference "https://tools.ietf.org/html/rfc5541#section-3.3";
301 reference "https://tools.ietf.org/html/rfc5557#section-5.3";
304 leaf make-before-break {
307 reference "https://tools.ietf.org/html/rfc5557#section-5.3";
312 grouping no-path-object {
313 description "NO-PATH Object";
314 reference "https://tools.ietf.org/html/rfc5440#section-7.5";
318 leaf nature-of-issue {
323 leaf unsatisfied-constraints {
324 when "nature-of-issue = 0" {
326 "The C flag has no meaning
327 and is ignored unless the NI
328 field is set to 0x00.";
336 choice address-family {
341 leaf source-ipv4-address {
342 type inet:ipv4-address;
346 leaf destination-ipv4-address {
347 type inet:ipv4-address;
354 leaf source-ipv6-address {
355 type inet:ipv6-address;
359 leaf destination-ipv6-address {
360 type inet:ipv6-address;
368 grouping endpoints-object {
369 description "END-POINTS Object";
370 reference "https://tools.ietf.org/html/rfc5440#section-7.6";
372 container endpoints-obj {
378 grouping bandwidth-object {
379 description "BANDWIDTH Object";
380 reference "https://tools.ietf.org/html/rfc5440#section-7.7";
381 container bandwidth {
384 // No possibility to carry TLVs
391 grouping metric-object {
392 description "METRIC Object";
393 reference "https://tools.ietf.org/html/rfc5440#section-7.8";
413 type ieee754:float32;
418 grouping exclude-route-object {
419 description "Exclude Route Object";
420 reference "https://tools.ietf.org/html/rfc5521#section-2.1.1";
435 uses rsvp:exclude-route-subobjects;
441 grouping explicit-route-object {
442 description "Explicit Route Object";
443 reference "https://tools.ietf.org/html/rfc5440#section-7.9";
446 // No possibility of TLVs
455 uses rsvp:explicit-route-subobjects {
456 augment "subobject-type" {
459 uses path-key-subobject;
470 grouping include-route-object {
471 description "Include Route Object";
472 reference "https://tools.ietf.org/html/rfc5440#section-7.12";
475 // No possibility of TLVs
479 uses rsvp:explicit-route-subobjects;
485 grouping reported-route-object {
486 description "Reported Route Object";
487 reference "https://tools.ietf.org/html/rfc5440#section-7.10";
490 // No possibility of TLVs
494 uses rsvp:record-route-subobjects {
495 augment "subobject-type" {
498 uses path-key-subobject;
508 grouping lspa-object {
509 description "LSPA Object";
510 reference "https://tools.ietf.org/html/rfc5440#section-7.11";
514 uses rsvp:tunnel-attributes;
520 grouping svec-object {
521 description "Synchronization Vector Object";
522 reference "https://tools.ietf.org/html/rfc5440#section-7.13";
525 // No possibility of TLVs
543 leaf-list requests-ids {
549 grouping notification-object {
550 description "NOTIFICATION Object";
551 reference "https://tools.ietf.org/html/rfc5440#section-7.14";
552 container c-notification {
555 when "../type = 2 and ../value = 1";
557 uses overload-duration-tlv;
572 grouping pcep-error-object {
573 description "PCEP-ERROR Object";
574 reference "https://tools.ietf.org/html/rfc5440#section-7.15";
575 container error-object {
579 uses req-missing-tlv;
594 grouping load-balancing-object {
595 description "LOAD-BALANCING Object";
596 reference "https://tools.ietf.org/html/rfc5440#section-7.16";
598 container load-balancing {
599 // No possibility of TLVs
613 grouping close-object {
614 description "CLOSE Object";
615 reference "https://tools.ietf.org/html/rfc5440#section-7.17";
631 grouping path-key-subobject {
632 reference "https://tools.ietf.org/html/rfc5520#section-3.1";
633 uses rsvp:c-subobject;
646 grouping path-key-object {
647 description "PATH-KEY Object";
648 reference "https://tools.ietf.org/html/rfc5520#section-3.2.2";
660 uses path-key-subobject;
667 description "OF Object";
668 reference "https://tools.ietf.org/html/rfc5541#section-3.1";
685 grouping classtype-object {
686 description "CLASSTYPE Object";
687 reference "https://tools.ietf.org/html/rfc5455#section-3";
689 container class-type {
700 description "GLOBAL CONSTRAINTS (GC) Object";
701 reference "https://tools.ietf.org/html/rfc5557#section-5.5";
710 leaf max-utilization {
718 leaf min-utilization {
726 leaf over-booking-factor {
738 description "Marker grouping for message groupings.";
741 grouping message-header {
742 description "Common Header";
743 reference "https://tools.ietf.org/html/rfc5440#section-6.1";
746 type protocol-version;
751 grouping open-message {
754 container open-message {
755 description "Open Message";
756 reference "https://tools.ietf.org/html/rfc5440#section-6.2";
764 grouping keepalive-message {
767 container keepalive-message {
768 description "Keepalive Message";
769 reference "https://tools.ietf.org/html/rfc5440#section-6.3";
775 grouping lsp-attributes {
778 uses bandwidth-object;
783 uses include-route-object;
785 uses reported-route-object;
787 uses exclude-route-object;
791 uses classtype-object;
794 grouping pcreq-message {
797 container pcreq-message {
798 description "Path Computation Request Message";
799 reference "https://tools.ietf.org/html/rfc5440#section-6.4";
806 container path-key-expansion {
807 when "rp/path-key = true";
808 uses path-key-object;
811 container segment-computation {
812 when "rp/path-key = false";
815 when "../rp/p2mp = false";
817 uses endpoints-object;
819 container reported-route {
820 uses reported-route-object;
822 uses bandwidth-object;
825 uses load-balancing-object;
839 uses exclude-route-object;
848 grouping path-definition {
849 uses explicit-route-object;
854 grouping pcrep-message {
857 container pcrep-message {
858 description "Path Computation Reply Message";
859 reference "https://tools.ietf.org/html/rfc5440#section-6.5";
870 uses path-definition;
878 container no-path-vector {
879 uses no-path-vector-tlv;
890 grouping pcntf-message {
893 container pcntf-message {
894 description "Notification Message";
895 reference "https://tools.ietf.org/html/rfc5440#section-6.6";
905 uses notification-object;
911 grouping pcerr-message {
914 container pcerr-message {
915 description "Error Message";
916 reference "https://tools.ietf.org/html/rfc5440#section-6.7";
921 uses pcep-error-object;
942 grouping close-message {
945 container c-close-message {
946 description "Close Message";
947 reference "https://tools.ietf.org/html/rfc5440#section-6.8";