3 namespace "urn:opendaylight:params:xml:ns:yang:bgp-types";
6 import ietf-inet-types { prefix inet; revision-date 2013-07-15; }
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.";
45 description "BGP identifier";
46 type inet:ipv4-address;
49 identity address-family {
50 reference "http://www.iana.org/assignments/address-family-numbers/address-family-numbers.xhtml#address-family-numbers-2";
53 identity ipv4-address-family {
57 identity ipv6-address-family {
61 identity subsequent-address-family {
62 reference "http://tools.ietf.org/html/rfc4760#section-6";
65 identity unicast-subsequent-address-family {
66 reference "http://tools.ietf.org/html/rfc4760#section-6";
68 base subsequent-address-family;
71 identity mpls-labeled-vpn-subsequent-address-family {
72 reference "http://tools.ietf.org/html/rfc4760#section-6";
74 base subsequent-address-family;
77 typedef cluster-identifier {
78 reference "http://tools.ietf.org/html/rfc4456#section-8";
79 type inet:ipv4-address;
82 typedef short-as-number {
88 typedef route-distinguisher {
89 reference "https://tools.ietf.org/html/rfc4364#section-4.2";
97 typedef rd-two-octet-as {
99 /* 2B AS : 4B number */
101 + '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|'
102 + '[1-5][0-9][0-9][0-9][0-9]|6[0-4][0-9][0-9][0-9]|'
103 + '65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5])'
105 + '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|'
106 + '[1-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9]|'
107 + '[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]|'
108 + '[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]|'
109 + '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]|'
110 + '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]|'
111 + '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]|'
112 + '42949672[0-8][0-9]|429496729[0-5])';
118 /* IPv4 : 2B number */
119 pattern '((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
120 + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))'
122 + '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|'
123 + '[1-5][0-9][0-9][0-9][0-9]|6[0-4][0-9][0-9][0-9]|'
124 + '65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5])';
130 /* 4B AS : 2B number */
131 pattern '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|'
132 + '[1-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9]|'
133 + '[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]|'
134 + '[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]|'
135 + '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]|'
136 + '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]|'
137 + '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]|'
138 + '42949672[0-8][0-9]|429496729[0-5])'
140 + '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|'
141 + '[1-5][0-9][0-9][0-9][0-9]|6[0-4][0-9][0-9][0-9]|'
142 + '65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5])';
146 typedef encapsulation-tunnel-type {
147 reference "http://www.iana.org/assignments/bgp-parameters/bgp-parameters.xhtml#tunnel-types";
149 enum l2tpv3-over-ip {
155 enum transmit-tunnel-endpoint {
158 enum ipsec-tunnel-mode {
161 enum ip-in-ip-ipsec-transport-mode {
164 enum mpls-in-ip-tunnel-ipsec-transport-mode {
194 grouping bgp-aggregator {
195 reference "http://tools.ietf.org/html/rfc4271#section-5.1.7";
196 description "BGP Path Attribute AGGREGATOR.";
198 // We are acting as a NEW speaker, so only four bytes are allowed
201 leaf network-address {
202 type inet:ipv4-address;
207 reference "https://tools.ietf.org/html/rfc1997";
208 description "Community Path Attribute";
217 grouping route-ipv4-extended-community {
218 reference "http://tools.ietf.org/html/rfc4360";
219 leaf global-administrator {
220 type inet:ipv4-address;
222 leaf local-administrator {
227 grouping link-bandwidth-extended-community {
228 reference "https://tools.ietf.org/html/draft-ietf-idr-link-bandwidth-06#section-2";
230 "The Link Bandwidth extended community is optional non-transitive";
233 description "Bandwidth of the link";
236 units "bytes per second";
240 grouping as-4-spec-common {
241 container as-4-specific-common {
243 description "Carries a 4-octet Autonomous System (AS) number";
244 reference "https://tools.ietf.org/html/rfc5668#section-2";
250 leaf local-administrator {
257 grouping encapsulation-extended-community {
258 reference "https://tools.ietf.org/html/rfc5512#section-4.5";
259 description "BGP Encapsulation extended community";
262 description "Tunnel type specifying the encapsulation protocol";
264 type encapsulation-tunnel-type;
268 grouping extended-community {
272 choice extended-community {
273 case as-specific-extended-community-case {
274 container as-specific-extended-community {
275 leaf global-administrator {
276 type short-as-number;
278 leaf local-administrator {
285 case inet4-specific-extended-community-case {
286 container inet4-specific-extended-community {
287 leaf global-administrator {
288 type inet:ipv4-address;
290 leaf local-administrator {
297 case opaque-extended-community-case {
298 container opaque-extended-community {
306 case route-target-extended-community-case {
307 container route-target-extended-community {
308 leaf global-administrator {
309 type short-as-number;
311 leaf local-administrator {
318 case route-origin-extended-community-case {
319 container route-origin-extended-community {
320 leaf global-administrator {
321 type short-as-number;
323 leaf local-administrator {
330 case route-target-ipv4-case {
331 container route-target-ipv4 {
332 reference "http://tools.ietf.org/html/rfc4360#section-4";
333 uses route-ipv4-extended-community;
336 case route-origin-ipv4-case {
337 container route-origin-ipv4 {
338 reference "http://tools.ietf.org/html/rfc4360#section-5";
339 uses route-ipv4-extended-community;
342 case link-bandwidth-case {
343 container link-bandwidth-extended-community {
344 uses link-bandwidth-extended-community;
347 case as-4-generic-spec-extended-community-case {
348 container as-4-generic-spec-extended-community {
349 reference "https://www.ietf.org/archive/id/draft-ietf-idr-as4octet-extcomm-generic-subtype-08.txt";
350 uses as-4-spec-common;
353 case as-4-route-target-extended-community-case {
354 container as-4-route-target-extended-community {
355 reference "https://tools.ietf.org/html/rfc5668";
356 uses as-4-spec-common;
359 case as-4-route-origin-extended-community-case {
360 container as-4-route-origin-extended-community {
361 reference "https://tools.ietf.org/html/rfc5668";
362 uses as-4-spec-common;
365 case encapsulation-case {
366 container encapsulation-extended-community {
367 uses encapsulation-extended-community;
375 default empty-next-hop-case;
376 case ipv4-next-hop-case {
377 container ipv4-next-hop {
378 reference "http://tools.ietf.org/html/rfc4271#section-5.1.3";
380 type inet:ipv4-address;
384 case ipv6-next-hop-case {
385 container ipv6-next-hop {
386 reference "http://tools.ietf.org/html/rfc4760#section-3";
388 type inet:ipv6-address;
391 type inet:ipv6-address;
395 case empty-next-hop-case {
396 leaf empty-next-hop {
403 grouping as-path-segment {
404 reference "http://tools.ietf.org/html/rfc4271#section-5.1.2";
405 leaf-list as-sequence {