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";
92 typedef rd-two-octet-as {
94 /* 2B AS : 4B number */
96 + '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|'
97 + '[1-5][0-9][0-9][0-9][0-9]|6[0-4][0-9][0-9][0-9]|'
98 + '65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5])'
100 + '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|'
101 + '[1-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9]|'
102 + '[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]|'
103 + '[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]|'
104 + '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]|'
105 + '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]|'
106 + '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]|'
107 + '42949672[0-8][0-9]|429496729[0-5])';
113 /* IPv4 : 2B number */
114 pattern '((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
115 + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))'
117 + '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|'
118 + '[1-5][0-9][0-9][0-9][0-9]|6[0-4][0-9][0-9][0-9]|'
119 + '65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5])';
125 /* 4B AS : 2B number */
126 pattern '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|'
127 + '[1-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9]|'
128 + '[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]|'
129 + '[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]|'
130 + '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]|'
131 + '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]|'
132 + '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]|'
133 + '42949672[0-8][0-9]|429496729[0-5])'
135 + '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|'
136 + '[1-5][0-9][0-9][0-9][0-9]|6[0-4][0-9][0-9][0-9]|'
137 + '65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5])';
141 grouping bgp-aggregator {
142 reference "http://tools.ietf.org/html/rfc4271#section-5.1.7";
143 description "BGP Path Attribute AGGREGATOR.";
145 // We are acting as a NEW speaker, so only four bytes are allowed
148 leaf network-address {
149 type inet:ipv4-address;
154 reference "https://tools.ietf.org/html/rfc1997";
155 description "Community Path Attribute";
164 grouping route-ipv4-extended-community {
165 reference "http://tools.ietf.org/html/rfc4360";
166 leaf global-administrator {
167 type inet:ipv4-address;
169 leaf local-administrator {
174 grouping link-bandwidth-extended-community {
175 reference "https://tools.ietf.org/html/draft-ietf-idr-link-bandwidth-06#section-2";
177 "The Link Bandwidth extended community is optional non-transitive";
180 description "Bandwidth of the link";
183 units "bytes per second";
187 grouping as-4-spec-common {
188 container as-4-specific-common {
190 description "Carries a 4-octet Autonomous System (AS) number";
191 reference "https://tools.ietf.org/html/rfc5668#section-2";
197 leaf local-administrator {
204 grouping extended-community {
208 choice extended-community {
209 case as-specific-extended-community-case {
210 container as-specific-extended-community {
211 leaf global-administrator {
212 type short-as-number;
214 leaf local-administrator {
221 case inet4-specific-extended-community-case {
222 container inet4-specific-extended-community {
223 leaf global-administrator {
224 type inet:ipv4-address;
226 leaf local-administrator {
233 case opaque-extended-community-case {
234 container opaque-extended-community {
242 case route-target-extended-community-case {
243 container route-target-extended-community {
244 leaf global-administrator {
245 type short-as-number;
247 leaf local-administrator {
254 case route-origin-extended-community-case {
255 container route-origin-extended-community {
256 leaf global-administrator {
257 type short-as-number;
259 leaf local-administrator {
266 case route-target-ipv4-case {
267 container route-target-ipv4 {
268 reference "http://tools.ietf.org/html/rfc4360#section-4";
269 uses route-ipv4-extended-community;
272 case route-origin-ipv4-case {
273 container route-origin-ipv4 {
274 reference "http://tools.ietf.org/html/rfc4360#section-5";
275 uses route-ipv4-extended-community;
278 case link-bandwidth-case {
279 container link-bandwidth-extended-community {
280 uses link-bandwidth-extended-community;
283 case as-4-generic-spec-extended-community-case {
284 container as-4-generic-spec-extended-community {
285 reference "https://www.ietf.org/archive/id/draft-ietf-idr-as4octet-extcomm-generic-subtype-08.txt";
286 uses as-4-spec-common;
289 case as-4-route-target-extended-community-case {
290 container as-4-route-target-extended-community {
291 reference "https://tools.ietf.org/html/rfc5668";
292 uses as-4-spec-common;
295 case as-4-route-origin-extended-community-case {
296 container as-4-route-origin-extended-community {
297 reference "https://tools.ietf.org/html/rfc5668";
298 uses as-4-spec-common;
306 case ipv4-next-hop-case {
307 container ipv4-next-hop {
308 reference "http://tools.ietf.org/html/rfc4271#section-5.1.3";
310 type inet:ipv4-address;
314 case ipv6-next-hop-case {
315 container ipv6-next-hop {
316 reference "http://tools.ietf.org/html/rfc4760#section-3";
318 type inet:ipv6-address;
321 type inet:ipv6-address;
328 grouping as-path-segment {
329 reference "http://tools.ietf.org/html/rfc4271#section-5.1.2";
330 leaf-list as-sequence {