3 namespace "urn:opendaylight:params:xml:ns:yang:bgp-linkstate";
6 import ietf-inet-types { prefix inet; revision-date 2010-09-24; }
7 import bgp-message { prefix bgp-msg; }
8 import bgp-multiprotocol { prefix bgp-mp; }
9 import bgp-rib { prefix bgp-rib; }
10 import bgp-types { prefix bgp-t; }
11 import nps-concepts { prefix nps-c;}
12 import rsvp { prefix rsvp; revision-date 2013-08-20; }
14 organization "Cisco Systems, Inc.";
15 contact "Dana Kutenicsova <dkutenic@cisco.com>";
18 "This module contains the base data model of a BGP message.
19 It rolls up the definitions contained in RFC4271
20 and draft-ietf-idr-ls-distribution-03.
22 Copyright (c)2013 Cisco Systems, Inc. All rights reserved.
24 This program and the accompanying materials are made available
25 under the terms of the Eclipse Public License v1.0 which
26 accompanies this distribution, and is available at
27 http://www.eclipse.org/legal/epl-v10.html";
29 revision "2013-09-18" {
32 reference "draft-ietf-idr-ls-distribution-03";
35 identity linkstate-address-family {
36 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2";
38 base bgp-t:address-family;
41 identity linkstate-subsequent-address-family {
42 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2";
44 base bgp-t:subsequent-address-family;
48 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2";
66 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2";
89 typedef ospf-route-type {
90 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2.3.1";
113 typedef route-distinguisher {
121 typedef domain-identifier {
122 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2.1.4";
128 typedef area-identifier {
129 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2.1.4";
135 typedef ipv4-interface-identifier {
136 reference "http://tools.ietf.org/html/rfc5305#section-3.2";
137 type inet:ipv4-address;
140 typedef ipv6-interface-identifier {
141 reference "http://tools.ietf.org/html/rfc6119#section-4.2";
142 type inet:ipv6-address;
145 typedef ospf-interface-identifier {
146 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2.1.4";
152 typedef topology-identifier {
153 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2.1.5";
160 grouping isis-router-identifier {
161 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2.1.4";
163 type nps-c:iso-system-identifier;
168 grouping isis-lan-identifier {
169 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2.1.4";
170 container is-is-router-identifier {
171 uses isis-router-identifier;
181 grouping ospf-router-identifier {
182 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2.1.4";
183 leaf ospf-router-id {
191 grouping ospf-v2-lan-identifier {
192 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2.1.4";
193 uses ospf-router-identifier;
195 type ipv4-interface-identifier;
200 grouping ospf-v3-lan-identifier {
201 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2.1.4";
202 uses ospf-router-identifier;
204 type ospf-interface-identifier;
209 grouping node-identifier {
214 type area-identifier;
217 type domain-identifier;
219 choice c-router-identifier {
221 container isis-node {
222 uses isis-router-identifier;
226 case c-isis-pseudonode {
227 container isis-pseudonode {
228 uses isis-lan-identifier;
233 container ospf-node {
234 uses ospf-router-identifier;
238 case c-ospf-pseudonode {
239 container ospf-pseudonode {
240 uses ospf-v3-lan-identifier;
246 grouping link-identifiers {
247 reference "http://tools.ietf.org/html/rfc5307";
248 leaf link-local-identifier {
253 leaf link-remote-identifier {
260 grouping linkstate-destination {
261 list c-linkstate-destination {
266 type route-distinguisher;
274 container local-node-descriptors {
275 uses node-identifier;
277 container remote-node-descriptors {
278 when "../nlri-type = link";
279 uses node-identifier;
281 container link-descriptors {
282 when "../nlri-type = link";
283 uses link-identifiers;
284 leaf ipv4-interface-address {
285 type ipv4-interface-identifier;
287 leaf ipv6-interface-address {
288 type ipv6-interface-identifier;
290 leaf ipv4-neighbor-address {
291 type ipv4-interface-identifier;
293 leaf ipv6-neighbor-address {
294 type ipv6-interface-identifier;
296 leaf multi-topology-id {
297 type topology-identifier;
300 container prefix-descriptors {
301 when "../nlri-type = 'ipv4-prefix' or ../nlri-type = 'ipv6-prefix'";
302 leaf multi-topology-id {
303 type topology-identifier;
305 leaf ospf-route-type {
306 when "../protocol-id = 'ospf'";
307 type ospf-route-type;
309 leaf ip-reachability-information {
316 augment "/bgp-msg:update/bgp-msg:path-attributes/bgp-mp:mp-reach-nlri/bgp-mp:advertized-routes/bgp-mp:destination-type" {
317 case destination-linkstate {
318 uses linkstate-destination;
322 augment "/bgp-msg:update/bgp-msg:path-attributes/bgp-mp:mp-unreach-nlri/bgp-mp:withdrawn-routes/bgp-mp:destination-type" {
323 case destination-linkstate {
324 uses linkstate-destination;
328 typedef node-flag-bits {
329 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.1.1";
346 typedef isis-area-identifier {
347 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.1.2";
353 typedef ipv4-router-identifier {
354 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.1.4";
355 type inet:ipv4-address;
358 typedef ipv6-router-identifier {
359 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.1.4";
360 type inet:ipv6-address;
363 grouping node-state {
364 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.1";
365 leaf-list topology-identifier {
366 type topology-identifier;
371 leaf-list isis-area-id {
372 type isis-area-identifier;
374 leaf dynamic-hostname {
377 leaf ipv4-router-id {
378 type ipv4-router-identifier;
380 leaf ipv6-router-id {
381 type ipv6-router-identifier;
385 typedef link-protection-type {
386 reference "http://tools.ietf.org/html/rfc5307#section-1.2";
397 enum dedicated-1to1 {
400 enum dedicated-1plus1 {
410 typedef mpls-protocol-mask {
411 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.2.2";
422 typedef administrative-group {
426 grouping unreserved-bandwidth {
433 type nps-c:bandwidth;
437 grouping link-state {
438 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.2";
439 leaf local-ipv4-router-id {
440 type ipv4-router-identifier;
442 leaf local-ipv6-router-id {
443 type ipv6-router-identifier;
445 leaf remote-ipv4-router-id {
446 type ipv4-router-identifier;
448 leaf remote-ipv6-router-id {
449 type ipv6-router-identifier;
452 type mpls-protocol-mask;
455 type nps-c:te-metric;
460 leaf-list shared-risk-link-groups {
466 leaf max-link-bandwidth {
467 type nps-c:bandwidth;
469 leaf max-reservable-bandwidth {
470 type nps-c:bandwidth;
472 list unreserved-bandwidth {
474 uses unreserved-bandwidth;
476 leaf link-protection {
477 type link-protection-type;
480 type administrative-group;
485 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.3.2";
491 typedef extended-route-tag {
492 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.3.3";
499 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.3.1";
509 grouping prefix-state {
513 leaf-list route-tags {
516 leaf-list extended-tags {
517 type extended-route-tag;
520 type nps-c:igp-metric;
522 leaf ospf-forwarding-address {
523 type inet:ipv4-address;
527 augment "/bgp-msg:update/bgp-msg:path-attributes" {
528 container linkstate-path-attribute {
529 choice link-state-attribute {
530 case node-attributes {
531 when "../../nlri-type = node";
534 case link-attributes {
535 when "../../nlri-type = link";
538 case prefix-attributes {
539 when "../nlri-type = 'ipv4-prefix' or ../nlri-type = 'ipv6-prefix'";
546 augment "/bgp-rib:loc-rib/bgp-rib:tables/bgp-rib:routes" {
547 case linkstate-routes {
548 container linkstate-routes {
550 type bgp-ls:route-distinguisher;
553 type bgp-ls:protocol-id;
556 type bgp-ls:identifier;
561 container node-descriptors {
562 uses bgp-ls:node-identifier;
566 container local-node-descriptors {
567 uses bgp-ls:node-identifier;
569 container remote-node-descriptors {
570 uses bgp-ls:node-identifier;
572 container link-descriptors {
573 uses bgp-ls:link-identifiers;
574 leaf ipv4-interface-address {
575 type bgp-ls:ipv4-interface-identifier;
577 leaf ipv6-interface-address {
578 type bgp-ls:ipv6-interface-identifier;
580 leaf ipv4-neighbor-address {
581 type bgp-ls:ipv4-interface-identifier;
583 leaf ipv6-neighbor-address {
584 type bgp-ls:ipv6-interface-identifier;
586 leaf multi-topology-id {
587 type bgp-ls:topology-identifier;
592 leaf multi-topology-id {
593 type bgp-ls:topology-identifier;
595 leaf ospf-route-type {
596 when "../../protocol-id = 'ospf'";
597 type bgp-ls:ospf-route-type;
599 leaf ip-reachability-information {