module rsvp { yang-version 1; namespace "urn:opendaylight:params:xml:ns:yang:rsvp"; prefix "rsvp"; import iana { prefix iana; revision-date 2013-08-16; } import ietf-inet-types { prefix inet; revision-date 2010-09-24; } organization "Cisco Systems, Inc."; contact "Robert Varga "; description "This module contains the definition of types related to Resource Reservation Protocol (RSVP). Copyright (c)2013 Cisco Systems, Inc. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html"; revision "2013-08-20" { description "Initial revision."; reference "https://tools.ietf.org/html/rfc2205"; } typedef attribute-filter { type uint32; } grouping attribute-filters { leaf include-any { type attribute-filter; mandatory true; } leaf exclude-any { type attribute-filter; mandatory true; } leaf include-all { type attribute-filter; mandatory true; } } typedef lsp-id { type uint32; reference "https://tools.ietf.org/html/rfc3209#section-4.6.2.1"; } typedef tunnel-id { type uint16; reference "https://tools.ietf.org/html/rfc3209#section-4.6.1.1"; } typedef ipv4-extended-tunnel-id { type inet:ipv4-address; reference "https://tools.ietf.org/html/rfc3209#section-4.6.1.1"; } typedef ipv6-extended-tunnel-id { type inet:ipv6-address; reference "https://tools.ietf.org/html/rfc3209#section-4.6.1.2"; } typedef srlg-id { type uint32; reference "http://tools.ietf.org/html/rfc4202#section-2.3"; } grouping error-spec { reference "https://tools.ietf.org/html/rfc2205#page-81"; leaf node { type inet:ip-address; mandatory true; } leaf flags { type bits { bit in-place { position 7; } bit not-guilty { position 6; } } } leaf code { type uint8; mandatory true; } leaf value { type uint16; mandatory true; } } grouping user-error-spec { reference "https://tools.ietf.org/html/rfc5284#section-3"; leaf enterprise { type iana:enterprise-number; mandatory true; } leaf sub-org { type uint8; default 0; } leaf value { type uint16; mandatory true; } leaf description { type string; default ""; } container subobjects { // Filled by enterprise-specific augmentations } } // Marker grouping c-label; grouping type1-label { reference "https://tools.ietf.org/html/rfc3209#section-4.1"; uses c-label; leaf type1-label { type uint32; mandatory true; } } grouping generalized-label { reference "https://tools.ietf.org/html/rfc3473#section-2.3"; uses c-label; leaf generalized-label { type binary; mandatory true; } } grouping waveband-switching-label { reference "https://tools.ietf.org/html/rfc3473#section-2.4"; uses c-label; leaf end-label { type uint32; mandatory true; } leaf start-label { type uint32; mandatory true; } leaf waveband-id { type uint32; mandatory true; } } grouping label-set { reference "https://tools.ietf.org/html/rfc3473#section-2.6"; leaf action { type enumeration { enum inclusive-list { value 0; } enum exclusive-list { value 1; } enum inclusive-range { value 2; } enum exclusive-range { value 3; } } } container label-type { // Technology-specific } list subchannels { } } grouping generalized-channel-set-label { reference "https://tools.ietf.org/html/rfc6002#section-3.2"; uses c-label; list subobjects { uses label-set; } } //marker grouping c-subobject { } grouping ip-prefix-subobject { uses c-subobject; leaf ip-prefix { reference "http://tools.ietf.org/html/rfc3209#section-4.3.3.1"; type inet:ip-prefix; mandatory true; } } grouping as-number-subobject { uses c-subobject; leaf as-number { reference "http://tools.ietf.org/html/rfc3209#section-4.3.3.4"; type inet:as-number; mandatory true; } } grouping label-subobject { uses c-subobject; leaf c-type { type uint8; mandatory true; } leaf uni-directional { type boolean; mandatory true; } choice label-type { case type1-label { uses type1-label; } case generalized-label { uses generalized-label; } case waveband-switching-label { uses waveband-switching-label; } case generalized-channel-set-label { uses generalized-channel-set-label; } } } grouping unnumbered-subobject { uses c-subobject; leaf router-id { type uint32; mandatory true; } leaf interface-id { type uint32; mandatory true; } } grouping srlg-subobject { uses c-subobject; leaf srlg-id { type srlg-id; mandatory true; } } grouping record-route-subobjects { leaf protection-available { type boolean; default false; } leaf protection-in-use { type boolean; default false; } choice subobject-type { case ip-prefix { uses ip-prefix-subobject; } case label { uses label-subobject; leaf global { type boolean; default false; } } case unnumbered { uses unnumbered-subobject; } } } grouping basic-explicit-route-subobjects { description "Subobjects shared between XRO and ERO"; reference "https://tools.ietf.org/html/rfc4874#section-4.1"; choice subobject-type { case as-number { uses as-number-subobject; } case ip-prefix { uses ip-prefix-subobject; } case label { uses label-subobject; } case unnumbered { uses unnumbered-subobject; } } } grouping exclude-route-subobjects { description "Subobject of an Exclude Route Object"; reference "https://tools.ietf.org/html/rfc4874#section-3.1"; leaf mandatory { type boolean; default false; } leaf attribute { type enumeration { enum interface { value 0; } enum node { value 1; } enum srlg { value 2; } } mandatory true; } uses basic-explicit-route-subobjects; } grouping explicit-route-subobjects { description "Subobject of an Explicit Route Object"; reference "https://tools.ietf.org/html/rfc4874#section-4.1"; uses basic-explicit-route-subobjects { // augment "subobject-type" { // case exrs { // container exrs { // uses exclude-route-subobjects; // } // } // } } } }