3 namespace "urn:opendaylight:params:xml:ns:yang:bgp-types";
6 import ietf-inet-types { prefix inet; revision-date 2010-09-24; }
7 import network-concepts { prefix netc; revision-date 2013-11-25; }
9 organization "Cisco Systems, Inc.";
10 contact "Dana Kutenicsova <dkutenic@cisco.com>";
13 "This module contains the base concepts contained in RFC4271 and RFC4760.
15 Copyright (c)2013 Cisco Systems, Inc. All rights reserved.
17 This program and the accompanying materials are made available
18 under the terms of the Eclipse Public License v1.0 which
19 accompanies this distribution, and is available at
20 http://www.eclipse.org/legal/epl-v10.html";
22 revision "2013-09-19" {
25 reference "RFC4271, RFC4760";
29 reference "http://tools.ietf.org/html/rfc4271#section-5";
30 description "Values of BGP Origin Path Attribute.";
44 identity address-family {
45 reference "http://www.iana.org/assignments/address-family-numbers/address-family-numbers.xhtml#address-family-numbers-2";
48 identity ipv4-address-family {
52 identity ipv6-address-family {
56 identity subsequent-address-family {
57 reference "http://tools.ietf.org/html/rfc4760#section-6";
60 identity unicast-subsequent-address-family {
61 reference "http://tools.ietf.org/html/rfc4760#section-6";
63 base subsequent-address-family;
66 identity mpls-labeled-vpn-subsequent-address-family {
67 reference "http://tools.ietf.org/html/rfc4760#section-6";
69 base subsequent-address-family;
72 typedef cluster-identifier {
73 reference "http://tools.ietf.org/html/rfc4456#section-8";
74 type inet:ipv4-address;
77 typedef short-as-number {
83 typedef route-distinguisher {
84 reference "https://tools.ietf.org/html/rfc4364#section-4.2";
93 /* IPv4 : 2B number */
94 pattern '((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
95 + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))'
97 + '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|'
98 + '[1-5][0-9][0-9][0-9][0-9]|6[0-4][0-9][0-9][0-9]|'
99 + '65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5])';
105 /* 4B AS : 2B number */
106 pattern '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|'
107 + '[1-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9]|'
108 + '[1-9][0-9][0-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|'
109 + '[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|[1-3][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|'
110 + '4[0-1][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|42[0-8][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|'
111 + '429[0-3][0-9][0-9][0-9][0-9][0-9][0-9]|4294[0-8][0-9][0-9][0-9][0-9][0-9]|'
112 + '42949[0-5][0-9][0-9][0-9][0-9]|429496[0-6][0-9][0-9][0-9]|4294967[0-1][0-9][0-9]|'
113 + '42949672[0-8][0-9]|429496729[0-5])'
115 + '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|'
116 + '[1-5][0-9][0-9][0-9][0-9]|6[0-4][0-9][0-9][0-9]|'
117 + '65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5])';
121 grouping bgp-aggregator {
122 reference "http://tools.ietf.org/html/rfc4271#section-5.1.7";
123 description "BGP Path Attribute AGGREGATOR.";
125 // We are acting as a NEW speaker, so only four bytes are allowed
128 leaf network-address {
129 type inet:ipv4-address;
134 reference "https://tools.ietf.org/html/rfc1997";
135 description "Community Path Attribute";
144 grouping route-ipv4-extended-community {
145 reference "http://tools.ietf.org/html/rfc4360";
146 leaf global-administrator {
147 type inet:ipv4-address;
149 leaf local-administrator {
154 grouping link-bandwidth-extended-community {
155 reference "https://tools.ietf.org/html/draft-ietf-idr-link-bandwidth-06#section-2";
157 "The Link Bandwidth extended community is optional non-transitive";
160 description "Bandwidth of the link";
163 units "bytes per second";
167 grouping as-4-spec-common {
168 container as-4-specific-common {
170 description "Carries a 4-octet Autonomous System (AS) number";
171 reference "https://tools.ietf.org/html/rfc5668#section-2";
177 leaf local-administrator {
184 grouping extended-community {
188 choice extended-community {
189 case as-specific-extended-community-case {
190 container as-specific-extended-community {
191 leaf global-administrator {
192 type short-as-number;
194 leaf local-administrator {
201 case inet4-specific-extended-community-case {
202 container inet4-specific-extended-community {
203 leaf global-administrator {
204 type inet:ipv4-address;
206 leaf local-administrator {
213 case opaque-extended-community-case {
214 container opaque-extended-community {
222 case route-target-extended-community-case {
223 container route-target-extended-community {
224 leaf global-administrator {
225 type short-as-number;
227 leaf local-administrator {
234 case route-origin-extended-community-case {
235 container route-origin-extended-community {
236 leaf global-administrator {
237 type short-as-number;
239 leaf local-administrator {
246 case route-target-ipv4-case {
247 container route-target-ipv4 {
248 reference "http://tools.ietf.org/html/rfc4360#section-4";
249 uses route-ipv4-extended-community;
252 case route-origin-ipv4-case {
253 container route-origin-ipv4 {
254 reference "http://tools.ietf.org/html/rfc4360#section-5";
255 uses route-ipv4-extended-community;
258 case link-bandwidth-case {
259 container link-bandwidth-extended-community {
260 uses link-bandwidth-extended-community;
263 case as-4-generic-spec-extended-community-case {
264 container as-4-generic-spec-extended-community {
265 reference "https://www.ietf.org/archive/id/draft-ietf-idr-as4octet-extcomm-generic-subtype-08.txt";
266 uses as-4-spec-common;
269 case as-4-route-target-extended-community-case {
270 container as-4-route-target-extended-community {
271 reference "https://tools.ietf.org/html/rfc5668";
272 uses as-4-spec-common;
275 case as-4-route-origin-extended-community-case {
276 container as-4-route-origin-extended-community {
277 reference "https://tools.ietf.org/html/rfc5668";
278 uses as-4-spec-common;
286 case ipv4-next-hop-case {
287 container ipv4-next-hop {
288 reference "http://tools.ietf.org/html/rfc4271#section-5.1.3";
290 type inet:ipv4-address;
294 case ipv6-next-hop-case {
295 container ipv6-next-hop {
296 reference "http://tools.ietf.org/html/rfc4760#section-3";
298 type inet:ipv6-address;
301 type inet:ipv6-address;
308 grouping as-path-segment {
309 reference "http://tools.ietf.org/html/rfc4271#section-5.1.2";
310 leaf-list as-sequence {