]> git.proxmox.com Git - mirror_frr.git/blame - yang/frr-bgp-common-structure.yang
Merge pull request #12798 from donaldsharp/rib_match_multicast
[mirror_frr.git] / yang / frr-bgp-common-structure.yang
CommitLineData
41db488c 1// SPDX-License-Identifier: BSD-2-Clause
2228b116 2submodule frr-bgp-common-structure {
3 yang-version 1.1;
4
5 belongs-to frr-bgp {
6 prefix "bgp";
7 }
8
9 import ietf-inet-types {
10 prefix inet;
11 }
12
45c70d4a
IR
13 import frr-route-map {
14 prefix frr-route-map;
15 }
16
2228b116 17 import frr-interface {
18 prefix frr-interface;
19 }
20
21 import ietf-bgp-types {
22 prefix bt;
23 }
24
25 import frr-bgp-types {
26 prefix frr-bt;
27 }
28
3f5af3d5
RB
29 include "frr-bgp-common";
30
2228b116 31 organization
32 "FRRouting";
33 contact
34 "FRR Users List: <mailto:frog@lists.frrouting.org> FRR Development
35 List: <mailto:dev@lists.frrouting.org>";
36 description
37 "This submodule contains general data definitions for use in BGP.
38
39 Copyright 2020 FRRouting
40
41 Redistribution and use in source and binary forms, with or without
42 modification, are permitted provided that the following conditions
43 are met:
44
45 1. Redistributions of source code must retain the above copyright notice,
46 this list of conditions and the following disclaimer.
47
48 2. Redistributions in binary form must reproduce the above copyright
49 notice, this list of conditions and the following disclaimer in the
50 documentation and/or other materials provided with the distribution.
51
52 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
53 \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
54 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
55 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
56 HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
57 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
58 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
59 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
60 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
61 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
62 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.";
63
64 revision 2019-12-03 {
65 description
66 "Initial revision.";
67 }
68
69 grouping structure-neighbor-group-ebgp-multihop {
70 description
71 "Structural grouping used to include EBGP multi-hop
72 configuration for both BGP neighbors and peer groups.";
73 container ebgp-multihop {
74 description
75 "EBGP multi-hop parameters for the BGP group.";
76 choice hop-count-choice {
77 case default-hop-count {
78 leaf enabled {
79 type boolean;
80 default "false";
81 description
82 "When enabled the referenced group or neighbors are
83 permitted to be indirectly connected - including cases
84 where the TTL can be decremented between the BGP peers.";
85 }
86 }
87
88 case max-hop-count {
89 leaf multihop-ttl {
90 type uint8 {
91 range "1..255";
92 }
93 description
94 "Time-to-live value to use when packets are sent to the
95 referenced group or neighbors and ebgp-multihop is
96 enabled.";
97 }
98 }
99 }
100
101 leaf disable-connected-check {
102 type boolean;
103 default "false";
104 description
105 "When set to 'true' it enforces EBGP neighbors perform multihop.";
106 }
107 }
108 }
109
110 grouping neighbor-local-as-options {
111 container local-as {
112 leaf local-as {
113 type inet:as-number;
2228b116 114 description
115 "The local autonomous system number that is to be used when
116 establishing sessions with the remote peer or peer group, if
117 this differs from the global BGP router autonomous system
118 number.";
119 }
120
121 leaf no-prepend {
2228b116 122 type boolean;
123 default "false";
124 description
125 "Do not prepend local-as to updates from EBGP peers. When
126 set to 'true' it will not prepend local-as to updates. When
127 set to 'false' it will prepend local-as to updates.";
128 }
129
ba51dd26 130 leaf replace-as {
2228b116 131 type boolean;
132 default "false";
133 description
134 "Do not prepend local-as to updates from IBGP peers.";
135 }
136 }
137 }
138
139 grouping neighbor-bfd-options {
140 container bfd-options {
141 leaf enable {
142 type boolean;
143 default "false";
144 description
145 "BFD support.";
146 }
147
148 leaf detect-multiplier {
149 when "../enable = 'true'";
150 type uint8 {
151 range "2..255";
152 }
153 default "3";
154 description
155 "Detect multiplier.";
156 }
157
158 leaf required-min-rx {
159 when "../enable = 'true'";
160 type uint16 {
161 range "50..60000";
162 }
94202742 163 units "milliseconds";
2228b116 164 default "300";
165 description
166 "Required min receive interval.";
167 }
168
169 leaf desired-min-tx {
170 when "../enable = 'true'";
171 type uint16 {
172 range "50..60000";
173 }
94202742 174 units "milliseconds";
2228b116 175 default "300";
176 description
177 "Desired min transmit interval.";
178 }
179
180 leaf session-type {
181 when "../enable = 'true'";
182 type frr-bt:bfd-session-type;
183 default "not-configured";
184 description
185 "BFD session type.";
186 }
187
188 leaf check-cp-failure {
189 when "../enable = 'true'";
190 type boolean;
191 default "false";
192 description
193 "Link dataplane status with BGP control plane.";
194 }
195 }
196 }
197
198 grouping neighbor-remote-as {
199 container neighbor-remote-as {
200 leaf remote-as-type {
201 type frr-bt:as-type;
2228b116 202 description
203 "Remote AS type.";
204 }
205
206 leaf remote-as {
207 when "../remote-as-type = 'as-specified'";
208 type inet:as-number;
209 description
210 "The remote autonomous system number received in
211 the BGP OPEN message.";
212 reference
213 "RFC 4271";
214 }
215 }
216 }
217
218 grouping neighbor-update-source {
219 description
220 "Source of routing updates.";
221 container update-source {
222 description
223 "Source of routing updates config.";
224 choice source {
225 case ip-based {
226 leaf ip {
227 type inet:ip-address;
228 description
229 "IPv4 address/IPv6 address.";
230 }
231 }
232
233 case interface-based {
234 leaf interface {
235 type frr-interface:interface-ref {
236 require-instance false;
237 }
238 description
239 "The local interface.";
240 }
241 }
242 }
243 }
244 }
245
246 grouping structure-neighbor-group-add-paths {
247 description
248 "Structural grouping used to include ADD-PATHs configuration
249 and state for both BGP neighbors and peer groups.";
250 container add-paths {
251 description
252 "Parameters relating to the advertisement and receipt of
253 multiple paths for a single NLRI (add-paths).";
254 reference
255 "RFC 7911: ADD-PATH.";
256 leaf path-type {
257 type frr-bt:add-path-type;
258 default "none";
259 description
260 "Enable ability to receive multiple path advertisements for
261 an NLRI from the neighbor or group.";
262 }
263 }
264 }
265
266 grouping structure-neighbor-group-as-path-options {
267 description
268 "Structural grouping used to include AS_PATH manipulation
269 configuration both BGP neighbors and peer groups.";
270 container as-path-options {
271 description
272 "AS_PATH manipulation parameters for the BGP neighbor or
273 group.";
274 choice allowas-in {
275 case occurence-based {
276 leaf allow-own-as {
277 type uint8 {
278 range "1..10";
279 }
280 description
281 "Specify the number of occurrences of the local BGP
282 speaker's AS that can occur within the AS_PATH before it
283 is rejected.";
284 }
285 }
286
287 case origin-based {
288 leaf allow-own-origin-as {
289 type boolean;
290 default "false";
291 description
292 "When set to 'true' only accept my AS in the as-path
293 if the route was originated in my AS.";
294 }
295 }
296 }
297
298 leaf replace-peer-as {
299 type boolean;
300 default "false";
301 description
302 "Replace occurrences of the peer's AS in the AS_PATH with
303 the local autonomous system number. This is same as override
304 ASN CLI.";
305 }
306 }
307 }
308
309 grouping structure-neighbor-group-capability-options {
310 description
311 "Structural grouping used to include capability
312 configuration for both BGP neighbors and peer groups.";
313 container capability-options {
314 description
315 "Capability manipulation parameters for the BGP neighbor or
316 group.";
317 leaf dynamic-capability {
318 type boolean;
319 default "false";
320 description
321 "When set to 'true' dynamic capability is advertise to this peer.";
322 }
323
324 leaf strict-capability {
325 type boolean;
326 default "false";
327 description
328 "Strict capability negotiation match. When set to 'true'
329 remote and local capabilities are strictly compared
330 if capabilities are different, send Unsupported Capability
331 error then reset connection.";
332 }
333
334 leaf extended-nexthop-capability {
335 type boolean;
336 default "false";
337 description
338 "When set to 'true' extended next-hop capability is advertise
339 to this peer.";
340 }
341
342 leaf capability-negotiate {
343 type boolean;
344 default "true";
345 description
346 "When set to 'true' sending Capability Negotiation in the open
7c98d487 347 message is suppressed to this peer.";
2228b116 348 }
349
350 leaf override-capability {
351 type boolean;
352 default "false";
353 description
354 "Overrides the result of Capability Negotiation, ignoring remote
355 peer's capability value, when set to 'true'.";
356 }
357 }
358 }
359
360 grouping structure-neighbor-default-originate-options {
361 description
362 "Structural grouping used to include default-originate
363 configuration for both BGP neighbors and peer groups.";
cc4440c3 364 container default-originate {
2228b116 365 description
366 "default originate parameters for the BGP neighbor or
367 group.";
cc4440c3 368 leaf originate {
2228b116 369 type boolean;
370 default "false";
371 description
372 "If set to 'true', send the default-route to the neighbour(s).";
373 }
374
cc4440c3 375 leaf route-map {
45c70d4a 376 type frr-route-map:route-map-ref;
2228b116 377 description
378 "Route-map to specify criteria to originate default.";
379 }
380 }
381 }
382
383 grouping structure-neighbor-prefix-limit {
384 container prefix-limit {
385 description
386 "Parameters relating to the prefix limit for the AFI-SAFI.";
387 list direction-list {
388 key "direction";
389 leaf direction {
390 type frr-bt:direction;
391 description
392 "Prefix limit applied on Tx route-updates or Rx route-updates.";
393 }
394
395 leaf max-prefixes {
396 type uint32;
397 mandatory true;
398 description
399 "Maximum number of prefixes that will be accepted from the
400 neighbour.";
401 }
402
afe03f60
CS
403 leaf force-check {
404 type boolean;
405 default false;
406 description
407 "Force check all received routes.";
408 }
409
410 container options {
2228b116 411 when "../direction = 'in'";
412 choice options {
413 case warning {
414 leaf warning-only {
415 type boolean;
416 default "false";
417 description
418 "When set to 'true' only give warning message when limit
419 is exceeded.";
420 }
421 }
422
423 case restart {
424 leaf restart-timer {
425 type uint16;
426 units "minutes";
427 description
428 "Time interval in seconds after which the BGP session is
429 re-established after being torn down due to exceeding the
430 max-prefix limit.";
431 }
432 }
433
434 case threshold {
435 leaf shutdown-threshold-pct {
436 type bt:percentage;
437 description
438 "Threshold on number of prefixes that can be received from
439 a neighbour before generation of warning messages or log
440 entries. Expressed as a percentage of max-prefixes.";
441 }
442 }
443
444 case threshold-restart {
445 leaf tr-shutdown-threshold-pct {
446 type bt:percentage;
447 description
448 "Threshold on number of prefixes that can be received from
449 a neighbour before generation of warning messages or log
450 entries. Expressed as a percentage of max-prefixes.";
451 }
452
453 leaf tr-restart-timer {
afe03f60 454 type uint16;
2228b116 455 units "minutes";
456 description
457 "Time interval in seconds after which the BGP session is
458 re-established after being torn down due to exceeding the
459 max-prefix limit.";
460 }
461 }
462
463 case threshold-warning {
464 leaf tw-shutdown-threshold-pct {
465 type bt:percentage;
466 description
467 "Threshold on number of prefixes that can be received from
468 a neighbour before generation of warning messages or log
469 entries. Expressed as a percentage of max-prefixes.";
470 }
471
472 leaf tw-warning-only {
473 type boolean;
474 default "false";
475 description
476 "When set to 'true' only give warning message when limit
477 is exceeded.";
478 }
479 }
480 }
481 }
482 }
483 }
484 }
485
486 grouping structure-neighbor-nexthop-self {
487 container nexthop-self {
488 description
489 "Parameters relating to the nexthop-self for the AFI-SAFI.";
490 leaf next-hop-self {
491 type boolean;
492 default "false";
493 description
494 "When set to 'true', EBGP learned routes are announced with the
495 local speaker's nexthop.";
496 }
497
498 leaf next-hop-self-force {
499 type boolean;
500 default "false";
501 description
502 "When set to 'true', EBGP learned routes are announced with the
503 local speaker's nexthop.";
504 }
505 }
506 }
507
508 grouping structure-neighbor-private-as {
509 container private-as {
510 description
511 "Parameters relating to the private-as for the AFI-SAFI.";
512 leaf remove-private-as-all {
513 type boolean;
514 default "false";
515 description
516 "When set to 'true', private ASNs are removed from outbound updates;
517 applies to all AS numbers.";
518 }
519
520 leaf remove-private-as-all-replace {
521 type boolean;
522 default "false";
523 description
524 "When set to 'true', private ASNs are replaced by the local
525 speaker's ASN in all outbound updates; applies to all AS numbers.";
526 }
527
528 leaf remove-private-as {
529 type boolean;
530 default "false";
531 description
532 "When set to 'true', removes private ASNs in outbound updates;
533 applies to all AS numbers.";
534 }
535
536 leaf remove-private-as-replace {
537 type boolean;
538 default "false";
539 description
540 "When set to 'true', private ASNs are replaced with the local
541 speaker's ASN in all outbound updates; applies to all AS numbers.";
542 }
543 }
544 }
545
546 grouping structure-neighbor-weight {
547 container weight {
548 description
549 "Parameters relating to the weight for the AFI-SAFI.";
550 leaf weight-attribute {
551 type uint16 {
552 range "0..65535";
553 }
554 description
555 "Set default weight for routes from this neighbor.";
556 }
557 }
558 }
559
560 grouping structure-neighbor-route-reflector {
561 container route-reflector {
562 description
563 "Parameters relating to the route-reflector for the AFI-SAFI.";
564 leaf route-reflector-client {
565 type boolean;
566 default "false";
567 description
568 "Configure a neighbor as route reflector client.";
569 }
570 }
571 }
572
573 grouping structure-neighbor-route-server {
574 container route-server {
575 description
576 "Parameters relating to the route-server for the AFI-SAFI.";
577 leaf route-server-client {
578 type boolean;
579 default "false";
580 description
581 "Configure a neighbor as route server client.";
582 }
583 }
584 }
585
586 grouping structure-neighbor-send-community {
587 container send-community {
588 description
589 "Parameters relating to the send-community for the AFI-SAFI.";
590 leaf send-community {
591 type boolean;
592 default "true";
593 description
594 "Send standard community attribute to this neighbor.";
595 }
596
597 leaf send-ext-community {
598 type boolean;
599 default "true";
600 description
601 "Send extended community attribute to this neighbor.";
602 }
603
604 leaf send-large-community {
605 type boolean;
f4b8ec07 606 default "true";
2228b116 607 description
608 "Send large community attribute to this neighbor.";
609 }
610 }
611 }
612
613 grouping structure-neighbor-group-admin-shutdown {
614 description
615 "Structural grouping used to include admin-shutdown
616 configuration for both BGP neighbors and peer groups.";
617 container admin-shutdown {
618 description
619 "BGP Administrative Shutdown Communication.";
620 leaf enable {
621 type boolean;
2228b116 622 description
623 "When set to 'true', BGP shutdown communication is enabled.";
624 }
625
626 leaf message {
627 type string;
628 description
629 "Shutdown message.";
630 reference
631 "draft-ietf-idr-shutdown-06";
632 }
633 }
634 }
635
636 grouping structure-neighbor-group-graceful-restart {
637 description
638 "Structural grouping used to include graceful-restart
639 configuration for both BGP neighbors and peer groups.";
640 container graceful-restart {
641 description
642 "BGP Graceful restart feature.";
643 choice mode {
644 case graceful-restart-mode {
645 leaf enable {
646 type boolean;
647 default "false";
648 description
649 "Enable or disable the graceful-restart capability.
650 Setting this value to 'true' enables the graceful-restart
651 and helper both at peer level. Setting this value to 'false'
652 disables graceful restart and helper mode. The peer will inherit
653 global configuration.";
654 }
655 }
656
657 case graceful-restart-helper-mode {
658 leaf graceful-restart-helper {
659 type boolean;
660 default "false";
661 description
662 "Setting this value to 'true' enables helper mode for the peer
663 Setting this value to 'false' disables the helper mode. The
664 peer will inherit global configuration.";
665 }
666 }
667
668 case graceful-restart-disable-mode {
669 leaf graceful-restart-disable {
670 type boolean;
671 default "false";
672 description
673 "Setting this value to 'true' disables the graceful-restart
674 and helper Mode. Setting this value to 'false' causes the peer
675 to inherit global configuration.";
676 }
677 }
678 }
679 }
680 }
681
682 grouping structure-neighbor-group-soft-reconfiguration {
683 description
684 "Structural grouping used to include soft-reconfiguration
685 configuration for both BGP neighbors and peer groups.";
686 leaf soft-reconfiguration {
687 type boolean;
688 default "false";
689 description
690 "Allow inbound soft reconfiguration for this neighbor.";
691 }
692 }
693
694 grouping structure-neighbor-group-attr-unchanged {
695 description
696 "Structural grouping used to include BGP route propagation
697 rules configuration for both BGP neighbors and peer groups.";
698 container attr-unchanged {
699 description
700 "BGP route propagation rules configuration.";
701 leaf as-path-unchanged {
702 type boolean;
703 default "false";
704 description
705 "When set to 'true' as-path attribute is propagated unchanged.";
706 }
707
708 leaf next-hop-unchanged {
709 type boolean;
710 default "false";
711 description
712 "When set to 'true' next-hop attribute is propagated unchanged.";
713 }
714
715 leaf med-unchanged {
716 type boolean;
717 default "false";
718 description
719 "When set to 'true' med attribute is propagated unchanged.";
720 }
721 }
722 }
723
724 grouping structure-neighbor-group-orf-capability {
725 description
726 "Structural grouping used to include orf
727 configuration for both BGP neighbors and peer groups.";
728 container orf-capability {
729 choice orf-update {
730 case send {
731 leaf orf-send {
732 type boolean;
733 default "false";
734 description
735 "Setting to 'true' advertises the ORF capability.";
736 }
737 }
738
739 case receive {
740 leaf orf-receive {
741 type boolean;
742 default "false";
743 description
744 "When set to 'true' it receives the orf capability.";
745 }
746 }
747
748 case both {
749 leaf orf-both {
750 type boolean;
751 default "false";
752 description
753 "When set to 'true' it advertises/receives the orf capability.";
754 }
755 }
756 }
757 }
758 }
759
760 grouping structure-neighbor-config-timers {
761 description
762 "Structural grouping used to include per neighbor timers
763 configuration for both BGP neighbors and peer groups.";
764 container timers {
765 leaf advertise-interval {
766 type uint16 {
767 range "0..600";
768 }
769 units "seconds";
770 description
771 "Minimum interval between sending BGP routing updates.";
772 }
773
774 leaf connect-time {
775 type uint16 {
776 range "1..65535";
777 }
778 units "seconds";
779 description
780 "BGP connect timer.";
781 }
782
783 uses neighbor-timers;
784 }
785 }
786
787 grouping structure-neighbor-group-filter-config {
788 description
789 "Structural grouping used to include filter
790 configuration for both BGP neighbors and peer groups.";
791 container filter-config {
792 description
793 "BGP Policy configuration for both BGP neighbors and groups.";
794 uses rmap-policy-import;
795
796 uses rmap-policy-export;
797
798 uses plist-policy-import;
799
800 uses plist-policy-export;
801
802 uses access-list-policy-import;
803
804 uses access-list-policy-export;
805
806 uses as-path-filter-list-policy-import;
807
808 uses as-path-filter-list-policy-export;
809
7c98d487 810 uses unsuppress-map-policy-import;
2228b116 811
7c98d487 812 uses unsuppress-map-policy-export;
2228b116 813 }
814 }
815}