3 namespace "urn:opendaylight:params:xml:ns:yang:rsvp";
6 import iana { prefix iana; revision-date 2013-08-16; }
7 import ietf-inet-types { prefix inet; revision-date 2010-09-24; }
8 import ieee754 { prefix ieee754; revision-date 2013-08-19; }
9 import network-concepts { prefix netc; revision-date 2013-11-25; }
11 organization "Cisco Systems, Inc.";
12 contact "Robert Varga <rovarga@cisco.com>";
15 "This module contains the definition of types related to
16 Resource Reservation Protocol (RSVP).
18 Copyright (c)2013 Cisco Systems, Inc. All rights reserved.
20 This program and the accompanying materials are made available
21 under the terms of the Eclipse Public License v1.0 which
22 accompanies this distribution, and is available at
23 http://www.eclipse.org/legal/epl-v10.html";
25 revision "2015-08-20" {
27 "Updated to extend RSVP Objects.";
28 reference "http://tools.ietf.org/html/draft-ietf-idr-te-lsp-distribution-01#section-2.1";
31 revision "2013-08-20" {
34 reference "https://tools.ietf.org/html/rfc2205";
37 typedef attribute-filter {
41 grouping attribute-filters {
43 type attribute-filter;
47 type attribute-filter;
51 type attribute-filter;
55 grouping rsvp-te-object {
57 "Common marker for all RSVP-TE Objects.";
72 grouping tunnel-attributes {
75 leaf local-protection-desired {
80 leaf label-recording-desired {
85 leaf se-style-desired {
94 uses attribute-filters;
99 reference "https://tools.ietf.org/html/rfc3209#section-4.6.2.1";
104 reference "https://tools.ietf.org/html/rfc3209#section-4.6.1.1";
107 typedef ipv4-extended-tunnel-id {
108 type inet:ipv4-address;
109 reference "https://tools.ietf.org/html/rfc3209#section-4.6.1.1";
112 typedef ipv6-extended-tunnel-id {
113 type inet:ipv6-address;
114 reference "https://tools.ietf.org/html/rfc3209#section-4.6.1.2";
119 reference "http://tools.ietf.org/html/rfc4202#section-2.3";
127 enum full-rerouting {
130 enum rerouting-without-extra-traffic {
133 enum protection-with-extra-traffic {
136 enum unidirectional-protection {
139 enum bidirectional-protection {
147 enum totally-unprotected {
162 enum dedicated-1plus1 {
171 grouping error-spec {
172 reference "https://tools.ietf.org/html/rfc2205#page-81";
175 type inet:ip-address;
201 grouping user-error-spec {
202 reference "https://tools.ietf.org/html/rfc5284#section-3";
205 type iana:enterprise-number;
224 container subobjects {
225 // Filled by enterprise-specific augmentations
232 grouping type1-label {
233 reference "https://tools.ietf.org/html/rfc3209#section-4.1";
243 grouping generalized-label {
244 reference "https://tools.ietf.org/html/rfc3473#section-2.3";
248 leaf generalized-label {
254 grouping waveband-switching-label {
255 reference "https://tools.ietf.org/html/rfc3473#section-2.4";
274 reference "https://tools.ietf.org/html/rfc3473#section-2.6";
278 enum inclusive-list {
281 enum exclusive-list {
284 enum inclusive-range {
287 enum exclusive-range {
293 container label-type {
294 // Technology-specific
303 grouping c-subobject {
307 grouping ip-prefix-subobject {
310 reference "http://tools.ietf.org/html/rfc3209#section-4.3.3.1";
316 grouping as-number-subobject {
319 reference "http://tools.ietf.org/html/rfc3209#section-4.3.3.4";
325 grouping label-subobject {
328 leaf uni-directional {
334 case type1-label-case {
335 container type1-label {
339 case generalized-label-case {
340 container generalized-label {
341 uses generalized-label;
344 case waveband-switching-label-case {
345 container waveband-switching-label {
346 uses waveband-switching-label;
352 grouping unnumbered-subobject {
365 grouping srlg-subobject {
388 grouping path-key-subobject {
389 reference "https://tools.ietf.org/html/rfc5520#section-3.1";
403 grouping protection-subobject {
404 container protection-subobject {
444 grouping record-route-subobjects {
445 leaf protection-available {
450 leaf protection-in-use {
455 choice subobject-type {
456 case ip-prefix-case {
457 container ip-prefix {
458 uses ip-prefix-subobject;
464 uses label-subobject;
473 case unnumbered-case {
474 container unnumbered {
475 uses unnumbered-subobject;
481 uses path-key-subobject;
487 grouping basic-explicit-route-subobjects {
488 description "Subobjects shared between XRO and ERO";
489 reference "https://tools.ietf.org/html/rfc4874#section-4.1";
491 choice subobject-type {
492 case as-number-case {
493 container as-number {
494 uses as-number-subobject;
497 case ip-prefix-case {
498 container ip-prefix {
499 uses ip-prefix-subobject;
504 uses label-subobject;
512 case unnumbered-case {
513 container unnumbered {
514 uses unnumbered-subobject;
520 grouping exclude-route-object {
521 container exclude-route-object {
523 list subobject-container {
524 uses exclude-route-subobjects;
530 grouping record-route-subobjects-list {
531 list subobject-container {
532 uses record-route-subobjects;
537 grouping explicit-route-subobjects-list {
539 list subobject-container {
545 uses explicit-route-subobjects;
550 grouping record-route-object {
551 container record-route-object {
553 uses record-route-subobjects-list;
557 grouping explicit-route-object {
558 container explicit-route-object {
559 description "Explicit Route Object";
560 reference "http://tools.ietf.org/html/rfc3209#section-4.3";
563 uses explicit-route-subobjects-list;
567 grouping secondary-explicit-route-object {
568 container secondary-explicit-route-object {
569 description "Explicit Route Object";
570 reference "http://tools.ietf.org/html/rfc4873#section-4.1";
573 uses explicit-route-subobjects-list {
574 augment "subobject-container/subobject-type" {
575 case basic-protection-case {
576 container basic-protection {
577 uses protection-subobject;
581 case dynamic-control-protection-case {
582 container dynamic-control-protection {
583 uses protection-subobject;
591 grouping secondary-record-route-object {
592 container secondary-record-route-object {
594 uses record-route-subobjects-list {
595 augment "subobject-container/subobject-type" {
596 case basic-protection-case {
597 container basic-protection {
598 uses protection-subobject;
602 case dynamic-control-protection-case {
603 container dynamic-control-protection {
604 uses protection-subobject;
612 grouping exclude-route-subobjects {
613 description "Subobject of an Exclude Route Object";
614 reference "https://tools.ietf.org/html/rfc4874#section-3.1";
636 uses basic-explicit-route-subobjects;
639 grouping explicit-route-subobjects {
640 description "Subobject of an Explicit Route Object";
641 reference "https://tools.ietf.org/html/rfc4874#section-4.1";
642 uses basic-explicit-route-subobjects {
643 augment "subobject-type" {
647 uses exclude-route-subobjects;
653 uses path-key-subobject;
660 grouping tspec-object {
661 container tspec-object {
662 description "SENDER TSPEC Object";
663 reference "https://tools.ietf.org/html/rfc2210";
666 leaf token-bucket-rate {
667 type ieee754:float32;
669 leaf token-bucket-size {
670 type ieee754:float32;
672 leaf peak-data-rate {
673 type ieee754:float32;
675 leaf minimum-policed-unit {
678 leaf maximum-packet-size {
684 typedef service-number {
689 enum controlled-load {
695 grouping flow-spec-object {
696 container flow-spec-object {
697 description "FLOW_SPEC";
698 reference "https://tools.ietf.org/html/rfc2210";
701 leaf service-header {
708 type ieee754:float32;
716 typedef association-type {
727 grouping association-object {
728 container association-object {
729 description "Association Object";
730 reference "http://tools.ietf.org/html/rfc4872#section-16";
733 leaf association-type {
734 type association-type;
736 leaf association-id {
740 type inet:ip-address;
746 grouping admin-status-object {
747 container admin-status-object {
748 description "Admin Status Object";
749 reference "http://tools.ietf.org/html/rfc3473#section-7.1";
760 leaf administratively-down {
764 leaf deletion-in-progress {
771 grouping primary-path-route-object {
772 container primary-path-route-object {
773 description "Protection Subobject";
774 reference "http://tools.ietf.org/html/rfc4872#section-15";
777 uses explicit-route-subobjects-list;
781 grouping detour-object {
782 description "DETOUR Object";
783 reference "http://tools.ietf.org/html/rfc4090#section-4.2";
785 choice detour-object {
786 case ipv4-detour-object {
790 type inet:ipv4-address;
794 type inet:ipv4-address;
799 case ipv6-detour-object {
803 type inet:ipv6-address;
809 type inet:ipv6-address;
818 typedef fast-reroute-flags {
820 enum one-to-one-backup-desired {
823 enum facility-backup-desired {
829 grouping common-fast-reroute-object {
832 uses attribute-filters;
838 type fast-reroute-flags;
846 grouping fast-reroute-object {
847 choice fast-reroute-object {
848 description "FAST REROUTE Object";
849 reference "http://tools.ietf.org/html/rfc4090#section-4.1";
851 case basic-fast-reroute-object {
852 uses common-fast-reroute-object;
854 case legacy-fast-reroute-object {
855 uses common-fast-reroute-object;
860 grouping session-attribute-object {
861 choice session-attribute-object {
862 description "SESSION_ATTRIBUTE";
863 reference "http://tools.ietf.org/html/rfc3209#section-4.7";
865 case basic-session-attribute-object {
867 uses tunnel-attributes;
869 case session-attribute-object-with-resources-affinities {
871 uses tunnel-attributes;
876 grouping bandwidth-object {
877 choice bandwidth-object {
878 description "BANDWIDTH Object";
879 reference "https://tools.ietf.org/html/rfc5440#section-7.7";
881 case basic-bandwidth-object {
883 // No possibility to carry TLVs
888 case reoptimization-bandwidth-object {
890 // No possibility to carry TLVs
898 grouping metric-object {
899 description "METRIC Object";
900 reference "https://tools.ietf.org/html/rfc5440#section-7.8";
901 container metric-object {
920 type ieee754:float32;
925 grouping protection-object {
926 choice protection-object {
927 description "Protection Subobject";
928 reference "http://tools.ietf.org/html/rfc4873#section-6.1"
929 + " http://tools.ietf.org/html/rfc4872#section-14";
931 case basic-protection-object {
933 uses protection-subobject;
935 case dynamic-control-protection-object {
937 uses protection-subobject;
942 grouping lsp-attributes-object {
943 container lsp-attributes-object {
944 description "Lsp Attributes Object";
945 reference "http://tools.ietf.org/html/rfc5420#section-4";
948 list subobject-container {
949 uses lsp-att-subobject;
954 grouping lsp-required-attributes-object {
955 container lsp-required-attributes-object {
956 description "Lsp Required Attributes Object";
957 reference "http://tools.ietf.org/html/rfc5420#section-5";
960 uses lsp-attributes-object;
964 grouping attribute-flags {
965 description "Attributes Flags";
966 reference "http://tools.ietf.org/html/rfc5420#section-3.1";
967 list flag-container {
976 grouping lsp-att-subobject {
977 choice lsp-subobject {
979 uses attribute-flags;