3 namespace "urn:opendaylight:params:xml:ns:yang:bgp-linkstate";
6 import ietf-inet-types {
8 revision-date 2010-09-24;
10 import bgp-message { prefix bgp-msg; }
11 import bgp-multiprotocol { prefix bgp-mp; }
12 import bgp-rib { prefix bgp-rib; }
13 import bgp-types { prefix bgp-t; }
14 import nps-concepts { prefix nps-c;}
15 import rsvp { prefix rsvp; revision-date 2013-08-20; }
17 organization "Cisco Systems, Inc.";
18 contact "Dana Kutenicsova <dkutenic@cisco.com>";
21 "This module contains the base data model of a BGP message.
22 It rolls up the definitions contained in RFC4271
23 and draft-ietf-idr-ls-distribution-03.
25 Copyright (c)2013 Cisco Systems, Inc. All rights reserved.
27 This program and the accompanying materials are made available
28 under the terms of the Eclipse Public License v1.0 which
29 accompanies this distribution, and is available at
30 http://www.eclipse.org/legal/epl-v10.html";
32 revision "2013-09-18" {
35 reference "draft-ietf-idr-ls-distribution-03";
38 identity linkstate-address-family {
39 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2";
41 base bgp-t:address-family;
44 identity linkstate-subsequent-address-family {
45 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2";
47 base bgp-t:subsequent-address-family;
51 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2";
69 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2";
92 typedef ospf-route-type {
93 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2.3.1";
116 typedef route-distinguisher {
124 typedef domain-identifier {
125 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2.1.4";
131 typedef area-identifier {
132 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2.1.4";
138 typedef ipv4-interface-identifier {
139 reference "http://tools.ietf.org/html/rfc5305#section-3.2";
140 type inet:ipv4-address;
143 typedef ipv6-interface-identifier {
144 reference "http://tools.ietf.org/html/rfc6119#section-4.2";
145 type inet:ipv6-address;
148 typedef ospf-interface-identifier {
149 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2.1.4";
155 typedef topology-identifier {
156 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2.1.5";
163 grouping isis-router-identifier {
164 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2.1.4";
166 type nps-c:iso-system-identifier;
171 grouping isis-lan-identifier {
172 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2.1.4";
173 container is-is-router-identifier {
174 uses isis-router-identifier;
184 grouping ospf-router-identifier {
185 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2.1.4";
186 leaf ospf-router-id {
194 grouping ospf-v2-lan-identifier {
195 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2.1.4";
196 uses ospf-router-identifier;
198 type ipv4-interface-identifier;
203 grouping ospf-v3-lan-identifier {
204 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2.1.4";
205 uses ospf-router-identifier;
207 type ospf-interface-identifier;
212 grouping node-identifier {
217 type area-identifier;
220 type domain-identifier;
222 choice c-router-identifier {
224 container isis-node {
225 uses isis-router-identifier;
229 case c-isis-pseudonode {
230 container isis-pseudonode {
231 uses isis-lan-identifier;
236 container ospf-node {
237 uses ospf-router-identifier;
241 case c-ospf-pseudonode {
242 container ospf-pseudonode {
243 uses ospf-v3-lan-identifier;
249 grouping link-identifiers {
250 reference "http://tools.ietf.org/html/rfc5307";
251 leaf link-local-identifier {
256 leaf link-remote-identifier {
263 grouping linkstate-destination {
264 list c-linkstate-destination {
269 type route-distinguisher;
277 container local-node-descriptors {
278 uses node-identifier;
280 container remote-node-descriptors {
281 when "../nlri-type = link";
282 uses node-identifier;
284 container link-descriptors {
285 when "../nlri-type = link";
286 uses link-identifiers;
287 leaf ipv4-interface-address {
288 type ipv4-interface-identifier;
290 leaf ipv6-interface-address {
291 type ipv6-interface-identifier;
293 leaf ipv4-neighbor-address {
294 type ipv4-interface-identifier;
296 leaf ipv6-neighbor-address {
297 type ipv6-interface-identifier;
299 leaf multi-topology-id {
300 type topology-identifier;
303 container prefix-descriptors {
304 when "../nlri-type = 'ipv4-prefix' or ../nlri-type = 'ipv6-prefix'";
305 leaf multi-topology-id {
306 type topology-identifier;
308 leaf ospf-route-type {
309 when "../protocol-id = 'ospf'";
310 type ospf-route-type;
312 leaf ip-reachability-information {
319 augment "/bgp-msg:update/bgp-msg:path-attributes/bgp-mp:mp-reach-nlri/bgp-mp:advertized-routes/bgp-mp:destination-type" {
320 case destination-linkstate {
321 uses linkstate-destination;
325 augment "/bgp-msg:update/bgp-msg:path-attributes/bgp-mp:mp-unreach-nlri/bgp-mp:withdrawn-routes/bgp-mp:destination-type" {
326 case destination-linkstate {
327 uses linkstate-destination;
331 typedef node-flag-bits {
332 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.1.1";
349 typedef isis-area-identifier {
350 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.1.2";
356 typedef ipv4-router-identifier {
357 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.1.4";
358 type inet:ipv4-address;
361 typedef ipv6-router-identifier {
362 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.1.4";
363 type inet:ipv6-address;
366 grouping node-state {
367 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.1";
368 leaf-list topology-identifier {
369 type topology-identifier;
374 leaf-list isis-area-id {
375 type isis-area-identifier;
377 leaf dynamic-hostname {
380 leaf ipv4-router-id {
381 type ipv4-router-identifier;
383 leaf ipv6-router-id {
384 type ipv6-router-identifier;
388 typedef link-protection-type {
389 reference "http://tools.ietf.org/html/rfc5307#section-1.2";
400 enum dedicated-1to1 {
403 enum dedicated-1plus1 {
413 typedef mpls-protocol-mask {
414 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.2.2";
425 typedef administrative-group {
429 grouping unreserved-bandwidth {
436 type nps-c:bandwidth;
440 grouping link-state {
441 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.2";
442 leaf local-ipv4-router-id {
443 type ipv4-router-identifier;
445 leaf local-ipv6-router-id {
446 type ipv6-router-identifier;
448 leaf remote-ipv4-router-id {
449 type ipv4-router-identifier;
451 leaf remote-ipv6-router-id {
452 type ipv6-router-identifier;
455 type mpls-protocol-mask;
458 type nps-c:te-metric;
463 leaf-list shared-risk-link-groups {
469 leaf max-link-bandwidth {
470 type nps-c:bandwidth;
472 leaf max-reservable-bandwidth {
473 type nps-c:bandwidth;
475 list unreserved-bandwidth {
477 uses unreserved-bandwidth;
479 leaf link-protection {
480 type link-protection-type;
483 type administrative-group;
488 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.3.2";
494 typedef extended-route-tag {
495 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.3.3";
502 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.3.1";
512 grouping prefix-state {
516 leaf-list route-tags {
519 leaf-list extended-tags {
520 type extended-route-tag;
523 type nps-c:igp-metric;
525 leaf ospf-forwarding-address {
526 type inet:ipv4-address;
530 augment "/bgp-msg:update/bgp-msg:path-attributes" {
531 container linkstate-path-attribute {
532 choice link-state-attribute {
533 case node-attributes {
534 when "../../nlri-type = node";
537 case link-attributes {
538 when "../../nlri-type = link";
541 case prefix-attributes {
542 when "../nlri-type = 'ipv4-prefix' or ../nlri-type = 'ipv6-prefix'";
549 augment "/bgp-rib:loc-rib/bgp-rib:tables/bgp-rib:routes" {
550 case linkstate-routes {
551 container linkstate-routes {
553 type bgp-ls:route-distinguisher;
556 type bgp-ls:protocol-id;
559 type bgp-ls:identifier;
564 container node-descriptors {
565 uses bgp-ls:node-identifier;
569 container local-node-descriptors {
570 uses bgp-ls:node-identifier;
572 container remote-node-descriptors {
573 uses bgp-ls:node-identifier;
575 container link-descriptors {
576 uses bgp-ls:link-identifiers;
577 leaf ipv4-interface-address {
578 type bgp-ls:ipv4-interface-identifier;
580 leaf ipv6-interface-address {
581 type bgp-ls:ipv6-interface-identifier;
583 leaf ipv4-neighbor-address {
584 type bgp-ls:ipv4-interface-identifier;
586 leaf ipv6-neighbor-address {
587 type bgp-ls:ipv6-interface-identifier;
589 leaf multi-topology-id {
590 type bgp-ls:topology-identifier;
595 leaf multi-topology-id {
596 type bgp-ls:topology-identifier;
598 leaf ospf-route-type {
599 when "../../protocol-id = 'ospf'";
600 type bgp-ls:ospf-route-type;
602 leaf ip-reachability-information {