namespace "urn:opendaylight:params:xml:ns:yang:bgp-types";
prefix "bgp-t";
- import ietf-inet-types { prefix inet; revision-date 2010-09-24; }
+ import ietf-inet-types { prefix inet; revision-date 2013-07-15; }
import network-concepts { prefix netc; revision-date 2013-11-25; }
organization "Cisco Systems, Inc.";
accompanies this distribution, and is available at
http://www.eclipse.org/legal/epl-v10.html";
+ revision "2018-03-29" {
+ description "RFC6514 Extended communities";
+ reference "https://tools.ietf.org/html/rfc6514";
+ }
+
revision "2013-09-19" {
description
"Initial revision.";
}
}
+ typedef bgp-id {
+ description "BGP identifier";
+ type inet:ipv4-address-no-zone;
+ }
+
identity address-family {
reference "http://www.iana.org/assignments/address-family-numbers/address-family-numbers.xhtml#address-family-numbers-2";
}
typedef cluster-identifier {
reference "http://tools.ietf.org/html/rfc4456#section-8";
- type inet:ipv4-address;
+ type inet:ipv4-address-no-zone;
}
typedef short-as-number {
type inet:as-number;
}
leaf network-address {
- type inet:ipv4-address;
+ type inet:ipv4-address-no-zone;
}
}
grouping route-ipv4-extended-community {
reference "http://tools.ietf.org/html/rfc4360";
leaf global-administrator {
- type inet:ipv4-address;
+ type inet:ipv4-address-no-zone;
}
leaf local-administrator {
type uint16;
}
}
+ grouping inet4-specific-extended-community-common {
+ container inet4-specific-extended-community-common {
+ leaf global-administrator {
+ type inet:ipv4-address-no-zone;
+ }
+ leaf local-administrator {
+ type binary {
+ length "2";
+ }
+ }
+ }
+ }
+
+ grouping source-as-4-extended-community-grouping {
+ reference "https://tools.ietf.org/html/rfc6514#section-6";
+ leaf global-administrator {
+ description "Carries a 4-octet Autonomous System (AS) number";
+ reference "https://tools.ietf.org/html/rfc5668#section-2";
+
+ mandatory true;
+ type inet:as-number;
+ }
+ }
+
+ grouping source-as-extended-community-grouping {
+ reference "https://tools.ietf.org/html/rfc6514#section-6";
+ leaf global-administrator {
+ type bgp-t:short-as-number;
+ }
+ }
+
+ grouping route-target {
+ description "Marker grouping for Route Target extended communities.";
+ }
+
+ grouping route-target-constrain-default-route-grouping {
+ container route-target-constrain-default-route {
+ uses route-target;
+ presence
+ "The presence of this container indicates that the routes
+ is a default route target";
+ }
+ }
+
+ grouping route-target-extended-community-grouping {
+ container route-target-extended-community {
+ description "Type 0x00 / Subtype 0x02";
+ reference "http://tools.ietf.org/html/rfc4360#section-4";
+ uses route-target;
+
+ leaf global-administrator {
+ type short-as-number;
+ }
+ leaf local-administrator {
+ type binary {
+ length "4";
+ }
+ }
+ }
+ }
+
+ grouping route-target-ipv4-grouping {
+ container route-target-ipv4 {
+ description "Type 0x01 / Subtype 0x02";
+ reference "http://tools.ietf.org/html/rfc4360#section-4";
+ uses route-target;
+ uses route-ipv4-extended-community;
+ }
+ }
+
+ grouping as-4-route-target-extended-community-grouping {
+ container as-4-route-target-extended-community {
+ description "Type 0x02 / Subtype 0x02";
+ reference "https://tools.ietf.org/html/rfc5668";
+ uses route-target;
+ uses as-4-spec-common;
+ }
+ }
+
grouping extended-community {
leaf transitive {
type boolean;
}
case inet4-specific-extended-community-case {
container inet4-specific-extended-community {
+ uses inet4-specific-extended-community-common;
leaf global-administrator {
- type inet:ipv4-address;
+ status deprecated;
+ type inet:ipv4-address-no-zone;
}
leaf local-administrator {
+ status deprecated;
type binary {
length "2";
}
}
}
case route-target-extended-community-case {
- container route-target-extended-community {
- leaf global-administrator {
- type short-as-number;
- }
- leaf local-administrator {
- type binary {
- length "4";
- }
- }
- }
+ uses route-target-extended-community-grouping;
+ }
+ case route-target-ipv4-case {
+ uses route-target-ipv4-grouping;
+ }
+ case as-4-route-target-extended-community-case {
+ uses as-4-route-target-extended-community-grouping;
}
case route-origin-extended-community-case {
container route-origin-extended-community {
}
}
}
- case route-target-ipv4-case {
- container route-target-ipv4 {
- reference "http://tools.ietf.org/html/rfc4360#section-4";
- uses route-ipv4-extended-community;
- }
- }
case route-origin-ipv4-case {
container route-origin-ipv4 {
reference "http://tools.ietf.org/html/rfc4360#section-5";
uses as-4-spec-common;
}
}
- case as-4-route-target-extended-community-case {
- container as-4-route-target-extended-community {
- reference "https://tools.ietf.org/html/rfc5668";
- uses as-4-spec-common;
- }
- }
case as-4-route-origin-extended-community-case {
container as-4-route-origin-extended-community {
reference "https://tools.ietf.org/html/rfc5668";
uses encapsulation-extended-community;
}
}
+ case vrf-route-import-extended-community-case {
+ reference "https://tools.ietf.org/html/rfc6514#section-7";
+ container vrf-route-import-extended-community {
+ uses inet4-specific-extended-community-common;
+ }
+ }
+ case source-as-4-extended-community-case {
+ container source-as-4-extended-community {
+ uses source-as-4-extended-community-grouping;
+ }
+ }
+ case source-as-extended-community-case {
+ container source-as-extended-community {
+ uses source-as-extended-community-grouping;
+ }
+ }
}
}
container ipv4-next-hop {
reference "http://tools.ietf.org/html/rfc4271#section-5.1.3";
leaf global {
- type inet:ipv4-address;
+ type inet:ipv4-address-no-zone;
+ mandatory true;
}
}
}
container ipv6-next-hop {
reference "http://tools.ietf.org/html/rfc4760#section-3";
leaf global {
- type inet:ipv6-address;
+ type inet:ipv6-address-no-zone;
+ mandatory true;
}
leaf link-local {
- type inet:ipv6-address;
+ type inet:ipv6-address-no-zone;
}
}
}
type inet:as-number;
}
}
+
+ grouping route-distinguisher-grouping {
+ leaf route-distinguisher {
+ type route-distinguisher;
+ mandatory true;
+ }
+ }
+
+ grouping orig-route-ip-grouping {
+ leaf orig-route-ip {
+ type inet:ip-address-no-zone;
+ mandatory true;
+ }
+ }
}