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 extended-community {
179 choice extended-community {
180 case as-specific-extended-community-case {
181 container as-specific-extended-community {
186 leaf global-administrator {
187 type short-as-number;
189 leaf local-administrator {
196 case inet4-specific-extended-community-case {
197 container inet4-specific-extended-community {
202 leaf global-administrator {
203 type inet:ipv4-address;
205 leaf local-administrator {
212 case opaque-extended-community-case {
213 container opaque-extended-community {
225 case route-target-extended-community-case {
226 container route-target-extended-community {
227 leaf global-administrator {
228 type short-as-number;
230 leaf local-administrator {
237 case route-origin-extended-community-case {
238 container route-origin-extended-community {
239 leaf global-administrator {
240 type short-as-number;
242 leaf local-administrator {
249 case route-target-ipv4-case {
250 container route-target-ipv4 {
251 reference "http://tools.ietf.org/html/rfc4360#section-4";
252 uses route-ipv4-extended-community;
255 case route-origin-ipv4-case {
256 container route-origin-ipv4 {
257 reference "http://tools.ietf.org/html/rfc4360#section-5";
258 uses route-ipv4-extended-community;
261 case link-bandwidth-case {
262 container link-bandwidth-extended-community {
263 uses link-bandwidth-extended-community;
271 case ipv4-next-hop-case {
272 container ipv4-next-hop {
273 reference "http://tools.ietf.org/html/rfc4271#section-5.1.3";
275 type inet:ipv4-address;
279 case ipv6-next-hop-case {
280 container ipv6-next-hop {
281 reference "http://tools.ietf.org/html/rfc4760#section-3";
283 type inet:ipv6-address;
286 type inet:ipv6-address;
293 grouping as-path-segment {
294 reference "http://tools.ietf.org/html/rfc4271#section-5.1.2";
296 description "This model is obsolete and please use just leaf-lists as-sequence and as-set nested directly under as-path-segment.";
315 leaf-list as-sequence {