Coverage Report

Created: 2025-07-14 06:48

/src/frr/yang/frr-bgp-common.yang.c
Line
Count
Source
1
/* autogenerated by embedmodel.py.  DO NOT EDIT */
2
3
#include <zebra.h>
4
#include "yang.h"
5
6
static const char model[] =
7
  "submodule frr-bgp-common {\n"
8
  "  yang-version 1.1;\n"
9
  "\n"
10
  "  belongs-to frr-bgp {\n"
11
  "    prefix \"bgp\";\n"
12
  "  }\n"
13
  "\n"
14
  "  import ietf-bgp-types {\n"
15
  "    prefix bt;\n"
16
  "  }\n"
17
  "\n"
18
  "  import ietf-inet-types {\n"
19
  "    prefix inet;\n"
20
  "  }\n"
21
  "\n"
22
  "  import frr-bgp-types {\n"
23
  "    prefix frr-bt;\n"
24
  "  }\n"
25
  "\n"
26
  "  import frr-route-map {\n"
27
  "    prefix frr-route-map;\n"
28
  "  }\n"
29
  "\n"
30
  "  import frr-route-types {\n"
31
  "    prefix frr-rt-type;\n"
32
  "  }\n"
33
  "\n"
34
  "  import frr-vrf {\n"
35
  "    prefix frr-vrf;\n"
36
  "  }\n"
37
  "\n"
38
  "  import ietf-routing-types {\n"
39
  "    prefix rt-types;\n"
40
  "  }\n"
41
  "\n"
42
  "  import frr-interface {\n"
43
  "    prefix frr-interface;\n"
44
  "  }\n"
45
  "\n"
46
  "  organization\n"
47
  "    \"FRRouting\";\n"
48
  "  contact\n"
49
  "    \"FRR Users List: <mailto:frog@lists.frrouting.org> FRR Development\n"
50
  "     List: <mailto:dev@lists.frrouting.org>\";\n"
51
  "  description\n"
52
  "    \"This submodule contains general data definitions for use in BGP.\n"
53
  "\n"
54
  "     Copyright 2020 FRRouting\n"
55
  "\n"
56
  "     Redistribution and use in source and binary forms, with or without\n"
57
  "     modification, are permitted provided that the following conditions\n"
58
  "     are met:\n"
59
  "\n"
60
  "     1. Redistributions of source code must retain the above copyright notice,\n"
61
  "     this list of conditions and the following disclaimer.\n"
62
  "\n"
63
  "     2. Redistributions in binary form must reproduce the above copyright\n"
64
  "     notice, this list of conditions and the following disclaimer in the\n"
65
  "     documentation and/or other materials provided with the distribution.\n"
66
  "\n"
67
  "     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n"
68
  "     \\\"AS IS\\\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n"
69
  "     LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n"
70
  "     A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n"
71
  "     HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n"
72
  "     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n"
73
  "     LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n"
74
  "     DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n"
75
  "     THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n"
76
  "     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n"
77
  "     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\";\n"
78
  "\n"
79
  "  revision 2019-12-03 {\n"
80
  "    description\n"
81
  "      \"Initial revision.\";\n"
82
  "  }\n"
83
  "\n"
84
  "  grouping rmap-policy-import {\n"
85
  "    leaf rmap-import {\n"
86
  "      type frr-route-map:route-map-ref;\n"
87
  "    }\n"
88
  "  }\n"
89
  "\n"
90
  "  grouping rmap-policy-export {\n"
91
  "    leaf rmap-export {\n"
92
  "      type frr-route-map:route-map-ref;\n"
93
  "    }\n"
94
  "  }\n"
95
  "\n"
96
  "  grouping unsuppress-map-policy-import {\n"
97
  "    leaf unsuppress-map-import {\n"
98
  "      type frr-route-map:route-map-ref;\n"
99
  "    }\n"
100
  "  }\n"
101
  "\n"
102
  "  grouping unsuppress-map-policy-export {\n"
103
  "    leaf unsuppress-map-export {\n"
104
  "      type frr-route-map:route-map-ref;\n"
105
  "    }\n"
106
  "  }\n"
107
  "\n"
108
  "  grouping plist-policy-import {\n"
109
  "    leaf plist-import {\n"
110
  "      type frr-bt:plist-ref;\n"
111
  "    }\n"
112
  "  }\n"
113
  "\n"
114
  "  grouping plist-policy-export {\n"
115
  "    leaf plist-export {\n"
116
  "      type frr-bt:plist-ref;\n"
117
  "    }\n"
118
  "  }\n"
119
  "\n"
120
  "  grouping access-list-policy-import {\n"
121
  "    leaf access-list-import {\n"
122
  "      type frr-bt:access-list-ref;\n"
123
  "    }\n"
124
  "  }\n"
125
  "\n"
126
  "  grouping access-list-policy-export {\n"
127
  "    leaf access-list-export {\n"
128
  "      type frr-bt:access-list-ref;\n"
129
  "    }\n"
130
  "  }\n"
131
  "\n"
132
  "  grouping as-path-filter-list-policy-import {\n"
133
  "    leaf as-path-filter-list-import {\n"
134
  "      type frr-bt:as-path-filter-ref;\n"
135
  "    }\n"
136
  "  }\n"
137
  "\n"
138
  "  grouping as-path-filter-list-policy-export {\n"
139
  "    leaf as-path-filter-list-export {\n"
140
  "      type frr-bt:as-path-filter-ref;\n"
141
  "    }\n"
142
  "  }\n"
143
  "\n"
144
  "  grouping route-selection-options {\n"
145
  "    description\n"
146
  "      \"Configuration relating to route selection options.\";\n"
147
  "    container route-selection-options {\n"
148
  "      description\n"
149
  "        \"Parameters relating to options for route selection.\";\n"
150
  "      leaf always-compare-med {\n"
151
  "        type boolean;\n"
152
  "        default \"false\";\n"
153
  "        description\n"
154
  "          \"Compare multi-exit discriminator (MED) value from\n"
155
  "           different ASes when selecting the best route.  The\n"
156
  "           default behaviour is to only compare MEDs for paths\n"
157
  "           received from the same AS.\";\n"
158
  "      }\n"
159
  "\n"
160
  "      leaf deterministic-med {\n"
161
  "        type boolean;\n"
162
  "        default \"false\";\n"
163
  "        description\n"
164
  "          \"Compare multi-exit discriminator (MED) value from\n"
165
  "           Same ASes when selecting the best route.\";\n"
166
  "      }\n"
167
  "\n"
168
  "      leaf confed-med {\n"
169
  "        type boolean;\n"
170
  "        default \"false\";\n"
171
  "        description\n"
172
  "          \"Compare multi-exit discriminator (MED) value from\n"
173
  "           different Sub ASes when selecting the best route.\";\n"
174
  "      }\n"
175
  "\n"
176
  "      leaf missing-as-worst-med {\n"
177
  "        type boolean;\n"
178
  "        default \"false\";\n"
179
  "        description\n"
180
  "          \"Missing multi-exit discriminator (MED) value is\n"
181
  "           considered as value of infinity, making the path\n"
182
  "           least desirable when selecting the best route.\";\n"
183
  "      }\n"
184
  "\n"
185
  "      leaf aspath-confed {\n"
186
  "        type boolean;\n"
187
  "        default \"false\";\n"
188
  "        description\n"
189
  "          \"Compare path lengths including confederation sets\n"
190
  "           and sequences in selecting a route.\";\n"
191
  "      }\n"
192
  "\n"
193
  "      leaf ignore-as-path-length {\n"
194
  "        type boolean;\n"
195
  "        default \"false\";\n"
196
  "        description\n"
197
  "          \"Ignore the AS path length when selecting the best path.\n"
198
  "           The default is to use the AS path length and prefer paths\n"
199
  "           with shorter length.\";\n"
200
  "      }\n"
201
  "\n"
202
  "      leaf external-compare-router-id {\n"
203
  "        type boolean;\n"
204
  "        default \"false\";\n"
205
  "        description\n"
206
  "          \"When comparing similar routes received from external BGP\n"
207
  "           peers, use the router-id as a criterion to select the\n"
208
  "           active path.\";\n"
209
  "      }\n"
210
  "\n"
211
  "      leaf allow-multiple-as {\n"
212
  "        type boolean;\n"
213
  "        default \"false\";\n"
214
  "        description\n"
215
  "          \"Allow multi-path to use paths from different neighbouring\n"
216
  "           ASes.  The default is to only consider multiple paths\n"
217
  "           from the same neighbouring AS.\";\n"
218
  "      }\n"
219
  "\n"
220
  "      leaf multi-path-as-set {\n"
221
  "        when \"../allow-multiple-as = \'true\'\";\n"
222
  "        type boolean;\n"
223
  "        default \"false\";\n"
224
  "        description\n"
225
  "          \"Multi-path with AS-SET, When set to \'true\' it adds AS set\n"
226
  "           information for aggregate routes, When set to \'false\' it\n"
227
  "           prevents AS set generation.\";\n"
228
  "      }\n"
229
  "    }\n"
230
  "  }\n"
231
  "\n"
232
  "  grouping med-config {\n"
233
  "    description\n"
234
  "      \"Configuration relating to MED.\";\n"
235
  "    container med-config {\n"
236
  "      leaf enable-med-admin {\n"
237
  "        type boolean;\n"
238
  "        default \"false\";\n"
239
  "        description\n"
240
  "          \"Flag to enable receiving of MED metric attribute\n"
241
  "           in routing updates.\";\n"
242
  "      }\n"
243
  "      leaf max-med-admin {\n"
244
  "        type uint32 {\n"
245
  "          range \"0..4294967295\";\n"
246
  "        }\n"
247
  "        default \"4294967294\";\n"
248
  "        description\n"
249
  "          \"Tells the router to announce routes with this MED value\n"
250
  "           This MED value is applicable for indefinite time.\";\n"
251
  "      }\n"
252
  "\n"
253
  "      leaf max-med-onstart-up-time {\n"
254
  "        type uint32 {\n"
255
  "          range \"5..86400\";\n"
256
  "        }\n"
257
  "        units \"seconds\";\n"
258
  "        description\n"
259
  "          \"Tells the router to announce routes with MED value,\n"
260
  "           This MED value is applicable for this duration during\n"
261
  "           start-up.\";\n"
262
  "      }\n"
263
  "\n"
264
  "      leaf max-med-onstart-up-value {\n"
265
  "        type uint32 {\n"
266
  "          range \"0..4294967295\";\n"
267
  "        }\n"
268
  "        default \"4294967294\";\n"
269
  "        description\n"
270
  "          \"Tells the router to announce routes with this MED value\n"
271
  "           This MED value is applicable for start-up time.\";\n"
272
  "      }\n"
273
  "    }\n"
274
  "  }\n"
275
  "\n"
276
  "  grouping route-reflector-config {\n"
277
  "    description\n"
278
  "      \"Grouping used to include route reflector\n"
279
  "       configuration for BGP global.\";\n"
280
  "    container route-reflector {\n"
281
  "      description\n"
282
  "        \"Route reflector parameters for the BGP global.\";\n"
283
  "      leaf route-reflector-cluster-id {\n"
284
  "        type bt:rr-cluster-id-type;\n"
285
  "        description\n"
286
  "          \"Route Reflector cluster ID to use when local router is\n"
287
  "           configured as a route reflector.  Commonly set at the\n"
288
  "           group level, but allows a different cluster ID to be set\n"
289
  "           for each neighbor.\";\n"
290
  "        reference\n"
291
  "          \"RFC 4456: BGP Route Reflection: An Alternative to\n"
292
  "           Full Mesh.\";\n"
293
  "      }\n"
294
  "\n"
295
  "      leaf no-client-reflect {\n"
296
  "        type boolean;\n"
297
  "        default \"false\";\n"
298
  "        description\n"
299
  "          \"When set to \'true\', this disables route redistribution\n"
300
  "           by the Route Reflector. It is set \'true\' when the client is\n"
301
  "           fully meshed to prevent sending of redundant route\n"
302
  "           advertisements.\";\n"
303
  "        reference\n"
304
  "          \"TODO: Add reference when IETF writes a draft describing\n"
305
  "           this.\";\n"
306
  "      }\n"
307
  "\n"
308
  "      leaf allow-outbound-policy {\n"
309
  "        type boolean;\n"
310
  "        default \"false\";\n"
311
  "        description\n"
312
  "          \"When set to \'true\', this allow RR to modify the attributes of the\n"
313
  "           reflected IBGP routes as per the out route-map. It is set \'false\'\n"
314
  "           RR will not modify the attributes of the reflected IBGP routes as\n"
315
  "           per the out route-map rules.\";\n"
316
  "      }\n"
317
  "    }\n"
318
  "  }\n"
319
  "\n"
320
  "  grouping global-bgp-config {\n"
321
  "    leaf instance-type-view {\n"
322
  "      type boolean;\n"
323
  "      default \"false\";\n"
324
  "      description\n"
325
  "        \"When set to \'true\' BGP instance type is view.\n"
326
  "         When set to \'false\' BGP instance type is regular.\";\n"
327
  "    }\n"
328
  "\n"
329
  "    leaf ebgp-multihop-connected-route-check {\n"
330
  "      type boolean;\n"
331
  "      default \"false\";\n"
332
  "      description\n"
333
  "        \"When set to \'true\' it will disable checking if nexthop is connected\n"
334
  "         on EBGP sessions. When set to \'false\' it will enable checking if\n"
335
  "         nexthop is connected on EBGP sessions.\";\n"
336
  "    }\n"
337
  "\n"
338
  "    leaf fast-external-failover {\n"
339
  "      type boolean;\n"
340
  "      default \"true\";\n"
341
  "      description\n"
342
  "        \"It\'s an interface tracking mechanism. When set to \'true\' don\'t\n"
343
  "         immediately reset session if a link to a directly connected\n"
344
  "         external peer goes down. When set to \'false\' it will immediately\n"
345
  "         reset session if a link to a directly connected external peer goes down.\";\n"
346
  "    }\n"
347
  "\n"
348
  "    leaf local-pref {\n"
349
  "      type uint32;\n"
350
  "      default \"100\";\n"
351
  "      description\n"
352
  "        \"BGP local preference attribute sent to internal peers to\n"
353
  "         indicate the degree of preference for externally learned\n"
354
  "         routes.  The route with the highest local preference\n"
355
  "         value is preferred.\";\n"
356
  "      reference\n"
357
  "        \"RFC 4271.\";\n"
358
  "    }\n"
359
  "\n"
360
  "    leaf default-shutdown {\n"
361
  "      type boolean;\n"
362
  "      default \"false\";\n"
363
  "      description\n"
364
  "        \"Apply administrative shutdown to newly configured peers.\";\n"
365
  "    }\n"
366
  "\n"
367
  "    leaf suppress-duplicates {\n"
368
  "      type boolean;\n"
369
  "      default \"true\";\n"
370
  "      description\n"
371
  "        \"Suppress duplicate updates if the route actually not changed.\";\n"
372
  "    }\n"
373
  "\n"
374
  "    leaf ebgp-requires-policy {\n"
375
  "      type boolean;\n"
376
  "      default \"true\";\n"
377
  "      description\n"
378
  "        \"When set to \'true\' BGP speaker requires in and out policy\n"
379
  "         for EBGP peers (RFC8212).\";\n"
380
  "    }\n"
381
  "\n"
382
  "    leaf show-hostname {\n"
383
  "      type boolean;\n"
384
  "      default \"false\";\n"
385
  "      description\n"
386
  "        \"When set to \'true\' BGP show hostname in certain command outputs.\";\n"
387
  "    }\n"
388
  "\n"
389
  "    leaf show-nexthop-hostname {\n"
390
  "      type boolean;\n"
391
  "      default \"false\";\n"
392
  "      description\n"
393
  "        \"When set to \'true\' BGP show hostname for nexthop in certain\n"
394
  "         command outputs.\";\n"
395
  "    }\n"
396
  "  }\n"
397
  "\n"
398
  "  grouping global-neighbor-config {\n"
399
  "    container global-neighbor-config {\n"
400
  "      leaf dynamic-neighbors-limit {\n"
401
  "        type uint32 {\n"
402
  "          range \"1..65535\";\n"
403
  "        }\n"
404
  "        description\n"
405
  "          \"Maximum number of BGP Dynamic Neighbors that can be created.\";\n"
406
  "      }\n"
407
  "\n"
408
  "      leaf log-neighbor-changes {\n"
409
  "        type boolean;\n"
410
  "        default \"false\";\n"
411
  "        description\n"
412
  "          \"When set to \'true\' BGP will start logging neighbor up/down and reset reason.\n"
413
  "           When set to \'false\' BGP will stop logging neighbor up/down and reset reason.\";\n"
414
  "      }\n"
415
  "\n"
416
  "      container packet-quanta-config {\n"
417
  "        leaf wpkt-quanta {\n"
418
  "          type uint32 {\n"
419
  "            range \"1..64\";\n"
420
  "          }\n"
421
  "          default \"64\";\n"
422
  "          description\n"
423
  "            \"How many packets to write to peer socket per run.\";\n"
424
  "        }\n"
425
  "\n"
426
  "        leaf rpkt-quanta {\n"
427
  "          type uint32 {\n"
428
  "            range \"1..10\";\n"
429
  "          }\n"
430
  "          default \"10\";\n"
431
  "          description\n"
432
  "            \"How many packets to read from peer socket per I/O cycle.\";\n"
433
  "        }\n"
434
  "      }\n"
435
  "    }\n"
436
  "  }\n"
437
  "\n"
438
  "  grouping global-update-group-config {\n"
439
  "    container global-update-group-config {\n"
440
  "      leaf subgroup-pkt-queue-size {\n"
441
  "        type uint32 {\n"
442
  "          range \"20..100\";\n"
443
  "        }\n"
444
  "        default \"40\";\n"
445
  "        description\n"
446
  "          \"Subgroup packet queue size.\";\n"
447
  "      }\n"
448
  "\n"
449
  "      leaf coalesce-time {\n"
450
  "        type uint32 {\n"
451
  "          range \"0..4294967295\";\n"
452
  "        }\n"
453
  "        units \"milliseconds\";\n"
454
  "        default \"1000\";\n"
455
  "        description\n"
456
  "          \"Configures the Subgroup coalesce timer.\";\n"
457
  "      }\n"
458
  "    }\n"
459
  "  }\n"
460
  "\n"
461
  "  grouping global-network-config {\n"
462
  "    leaf import-check {\n"
463
  "      type boolean;\n"
464
  "      default \"true\";\n"
465
  "      description\n"
466
  "        \"When set to \'true\' bgp creates entries for network statements\n"
467
  "         if a matching prefix exists in the rib. When set to \'false\' bgp\n"
468
  "         creates entries for networks that the router cannot reach.\n"
469
  "\n"
470
  "         In FRR versions < 7.4 this used to default to \'false\' this is an\n"
471
  "         incompatible backward change\";\n"
472
  "    }\n"
473
  "  }\n"
474
  "\n"
475
  "  grouping neighbor-timers {\n"
476
  "    leaf hold-time {\n"
477
  "      type uint16 {\n"
478
  "        range \"0 | 3..65535\";\n"
479
  "      }\n"
480
  "      units \"seconds\";\n"
481
  "      default \"180\";\n"
482
  "      description\n"
483
  "        \"Time interval (in seconds) for the HoldTimer established\n"
484
  "         with the peer.  When read as operational data (ro), the\n"
485
  "         value of this object is calculated by this BGP speaker,\n"
486
  "         using the smaller of the values in hold-time that was\n"
487
  "         configured (rw) in the running datastore and the Hold Time\n"
488
  "         received in the OPEN message.\n"
489
  "\n"
490
  "         This value must be at least three seconds\n"
491
  "         if it is not zero (0).\n"
492
  "\n"
493
  "         If the Hold Timer has not been established\n"
494
  "         with the peer this object MUST have a value\n"
495
  "         of zero (0).\n"
496
  "\n"
497
  "         If the configured value of hold-time object was\n"
498
  "         a value of (0), then when read this object MUST have a\n"
499
  "         value of (0) also.\";\n"
500
  "      reference\n"
501
  "        \"RFC 4271\";\n"
502
  "    }\n"
503
  "\n"
504
  "    leaf keepalive {\n"
505
  "      type uint16 {\n"
506
  "        range \"0..65535\";\n"
507
  "      }\n"
508
  "      units \"seconds\";\n"
509
  "      default \"60\";\n"
510
  "      description\n"
511
  "        \"When used as a configuration (rw) value, this Time interval\n"
512
  "         (in seconds) for the KeepAlive timer configured for this BGP\n"
513
  "         speaker with this peer. The value of this object will only\n"
514
  "         determine the KEEPALIVE messages\' frequency relative to\n"
515
  "         the value specified in configured value for hold-time.\n"
516
  "\n"
517
  "         If the value of this object is zero (0), no periodical\n"
518
  "         KEEPALIVE messages are sent to the peer after the BGP\n"
519
  "         connection has been established.  The suggested value for\n"
520
  "         this timer is 30 seconds.;\n"
521
  "\n"
522
  "         The actual time interval for the KEEPALIVE messages is\n"
523
  "         indicated by operational value of keepalive. That value\n"
524
  "         of this object is calculated by this BGP speaker such that,\n"
525
  "         when compared with hold-time, it has the same proportion\n"
526
  "         that keepalive has, compared with hold-time. A\n"
527
  "         reasonable maximum value for this timer would be one third\n"
528
  "         of that of hold-time.\";\n"
529
  "      reference\n"
530
  "        \"RFC 4271\";\n"
531
  "    }\n"
532
  "  }\n"
533
  "\n"
534
  "  grouping global-config-timers {\n"
535
  "    container global-config-timers {\n"
536
  "      leaf rmap-delay-time {\n"
537
  "        type uint16 {\n"
538
  "          range \"0..600\";\n"
539
  "        }\n"
540
  "        units \"seconds\";\n"
541
  "        default \"5\";\n"
542
  "        description\n"
543
  "          \"Time to wait before processing route-map changes.\";\n"
544
  "      }\n"
545
  "\n"
546
  "      leaf update-delay-time {\n"
547
  "        type uint16 {\n"
548
  "          range \"0..3600\";\n"
549
  "        }\n"
550
  "        units \"seconds\";\n"
551
  "        description\n"
552
  "          \"Time to force initial delay for best-path and updates.\";\n"
553
  "      }\n"
554
  "\n"
555
  "      leaf establish-wait-time {\n"
556
  "        type uint16 {\n"
557
  "          range \"1..3600\";\n"
558
  "        }\n"
559
  "        units \"seconds\";\n"
560
  "        description\n"
561
  "          \"Time to force initial delay for updates.\";\n"
562
  "      }\n"
563
  "\n"
564
  "      leaf connect-retry-interval {\n"
565
  "        type uint16 {\n"
566
  "          range \"1..max\";\n"
567
  "        }\n"
568
  "        units \"seconds\";\n"
569
  "        default \"120\";\n"
570
  "        description\n"
571
  "          \"Time interval (in seconds) for the ConnectRetryTimer. The\n"
572
  "           suggested value for this timer is 120 seconds.\";\n"
573
  "        reference\n"
574
  "          \"RFC 4271, This is the value used\n"
575
  "           to initialize the \'ConnectRetryTimer\'.\";\n"
576
  "      }\n"
577
  "\n"
578
  "      uses neighbor-timers;\n"
579
  "    }\n"
580
  "  }\n"
581
  "\n"
582
  "  grouping graceful-restart-config {\n"
583
  "    description\n"
584
  "      \"Configuration parameters relating to BGP graceful restart.\";\n"
585
  "    choice mode {\n"
586
  "      case graceful-restart-mode {\n"
587
  "        leaf enabled {\n"
588
  "          type boolean;\n"
589
  "          default \"false\";\n"
590
  "          description\n"
591
  "            \"Enable or disable the graceful-restart capability. When set to \'true\'\n"
592
  "             it will enable graceful restart and helper both globally. When set\n"
593
  "             to \'false\' it will enable the default behaviour global helper mode.\";\n"
594
  "        }\n"
595
  "      }\n"
596
  "\n"
597
  "      case graceful-restart-disable-mode {\n"
598
  "        leaf graceful-restart-disable {\n"
599
  "          type boolean;\n"
600
  "          default \"false\";\n"
601
  "          description\n"
602
  "            \"When set to \'true\' it will disable graceful restart and helper both\n"
603
  "             globally. when set to \'false\' it will enable the default behaviour\n"
604
  "             global helper mode.\";\n"
605
  "        }\n"
606
  "      }\n"
607
  "    }\n"
608
  "\n"
609
  "    leaf preserve-fw-entry {\n"
610
  "      type boolean;\n"
611
  "      default \"false\";\n"
612
  "      description\n"
613
  "        \"Sets F-bit indication that fib is preserved while doing Graceful Restart.\n"
614
  "         When set to \'true\' Zebra would preserve the FIB entry on the restarting\n"
615
  "         node.\";\n"
616
  "    }\n"
617
  "\n"
618
  "    leaf restart-time {\n"
619
  "      type uint16 {\n"
620
  "        range \"1..3600\";\n"
621
  "      }\n"
622
  "      units \"seconds\";\n"
623
  "      default \"120\";\n"
624
  "      description\n"
625
  "        \"Estimated time (in seconds) for the local BGP speaker to\n"
626
  "         restart a session. This value is advertise in the graceful\n"
627
  "         restart BGP capability.  This is a 12-bit value, referred to\n"
628
  "         as Restart Time in RFC4724.  Per RFC4724, the suggested\n"
629
  "         default value is <= the hold-time value. This timer is\n"
630
  "         applicable for helper node.\";\n"
631
  "      reference\n"
632
  "        \"RFC 4724: Graceful Restart Mechanism for BGP.\";\n"
633
  "    }\n"
634
  "\n"
635
  "    leaf stale-routes-time {\n"
636
  "      type uint16 {\n"
637
  "        range \"1..3600\";\n"
638
  "      }\n"
639
  "      units \"seconds\";\n"
640
  "      default \"360\";\n"
641
  "      description\n"
642
  "        \"An upper-bound on the time that stale routes will be\n"
643
  "         retained by a router after a session is restarted. If an\n"
644
  "         End-of-RIB (EOR) marker is received prior to this timer\n"
645
  "         expiring stale-routes will be flushed upon its receipt - if\n"
646
  "         no EOR is received, then when this timer expires stale paths\n"
647
  "         will be purged. This timer is applicable for restarting node.\";\n"
648
  "      reference\n"
649
  "        \"RFC 4724: Graceful Restart Mechanism for BGP.\";\n"
650
  "    }\n"
651
  "\n"
652
  "    leaf selection-deferral-time {\n"
653
  "      type uint16 {\n"
654
  "        range \"0..3600\";\n"
655
  "      }\n"
656
  "      units \"seconds\";\n"
657
  "      default \"360\";\n"
658
  "      description\n"
659
  "        \"An upper-bound on the time that restarting router defers\n"
660
  "         the route selection process after restart.\";\n"
661
  "      reference\n"
662
  "        \"RFC 4724: Graceful Restart Mechanism for BGP.\";\n"
663
  "    }\n"
664
  "\n"
665
  "    leaf rib-stale-time {\n"
666
  "      type uint16 {\n"
667
  "        range \"1..3600\";\n"
668
  "      }\n"
669
  "      units \"seconds\";\n"
670
  "      default \"500\";\n"
671
  "      description\n"
672
  "        \"An upper-bound on the time that helper router holds the\n"
673
  "         stale routes in Zebra, When this timer gets expired Zebra\n"
674
  "         removes the stale routes.\";\n"
675
  "    }\n"
676
  "  }\n"
677
  "\n"
678
  "  grouping global-group-use-multiple-paths {\n"
679
  "    description\n"
680
  "      \"Common grouping used for both global and groups which provides\n"
681
  "       configuration parameters relating to use of multiple paths.\";\n"
682
  "    container use-multiple-paths {\n"
683
  "      description\n"
684
  "        \"Parameters related to the use of multiple paths for the\n"
685
  "         same NLRI.\";\n"
686
  "      container ebgp {\n"
687
  "        description\n"
688
  "          \"Multi-Path parameters for EBGP.\";\n"
689
  "        leaf maximum-paths {\n"
690
  "          type uint16;\n"
691
  "          default \"64\";\n"
692
  "          description\n"
693
  "            \"Maximum number of parallel paths to consider when using\n"
694
  "             BGP multi-path. The default is use a single path.\";\n"
695
  "        }\n"
696
  "      }\n"
697
  "\n"
698
  "      container ibgp {\n"
699
  "        description\n"
700
  "          \"Multi-Path parameters for IBGP.\";\n"
701
  "        leaf maximum-paths {\n"
702
  "          type uint16;\n"
703
  "          default \"64\";\n"
704
  "          description\n"
705
  "            \"Maximum number of parallel paths to consider when using\n"
706
  "             IBGP multi-path. The default is to use a single path.\";\n"
707
  "        }\n"
708
  "\n"
709
  "        leaf cluster-length-list {\n"
710
  "          when \"../maximum-paths != 0\";\n"
711
  "          type boolean;\n"
712
  "          default \"false\";\n"
713
  "          description\n"
714
  "            \"When set to \'true\' route with the shortest cluster-list\n"
715
  "             length is used. The cluster-list reflects the IBGP\n"
716
  "             reflection path the route has taken. It\'s the part\n"
717
  "             of route selection algo.\";\n"
718
  "        }\n"
719
  "      }\n"
720
  "    }\n"
721
  "  }\n"
722
  "\n"
723
  "  grouping global-redistribute {\n"
724
  "    description\n"
725
  "      \"List of route redistribution per AFI.\";\n"
726
  "    list redistribution-list {\n"
727
  "      key \"route-type route-instance\";\n"
728
  "      leaf route-type {\n"
729
  "        type frr-rt-type:frr-route-types;\n"
730
  "        description\n"
731
  "          \"Protocol route type.\";\n"
732
  "      }\n"
733
  "\n"
734
  "      leaf route-instance {\n"
735
  "        type uint16 {\n"
736
  "          range \"0..65535\";\n"
737
  "        }\n"
738
  "        description\n"
739
  "          \"Protocol Instance.\";\n"
740
  "      }\n"
741
  "\n"
742
  "      leaf metric {\n"
743
  "        type uint32 {\n"
744
  "          range \"0..4294967295\";\n"
745
  "        }\n"
746
  "        description\n"
747
  "          \"Metric for redistributed routes.\";\n"
748
  "      }\n"
749
  "\n"
750
  "      leaf rmap-policy-import {\n"
751
  "        type frr-route-map:route-map-ref;\n"
752
  "        description\n"
753
  "          \"Route-map to be applied for redistributed routes into the bgp.\";\n"
754
  "      }\n"
755
  "    }\n"
756
  "  }\n"
757
  "\n"
758
  "  grouping mp-afi-safi-network-config {\n"
759
  "    leaf label-index {\n"
760
  "      type rt-types:mpls-label;\n"
761
  "      description\n"
762
  "        \"Label index to associate with the prefix.\";\n"
763
  "    }\n"
764
  "\n"
765
  "    leaf rmap-policy-export {\n"
766
  "      type frr-route-map:route-map-ref;\n"
767
  "      description\n"
768
  "        \"Route-map to modify the attributes for Routes going out\n"
769
  "         via BGP updates.\";\n"
770
  "    }\n"
771
  "  }\n"
772
  "\n"
773
  "  grouping mp-afi-safi-agg-route-config {\n"
774
  "    leaf as-set {\n"
775
  "      type boolean;\n"
776
  "      default \"false\";\n"
777
  "      description\n"
778
  "        \"When set to \'true\' AS set path information is generated\n"
779
  "         for aggregate address. When set to \'false\' AS set path\n"
780
  "         information is not generated.\";\n"
781
  "    }\n"
782
  "\n"
783
  "    leaf summary-only {\n"
784
  "      type boolean;\n"
785
  "      default \"false\";\n"
786
  "      description\n"
787
  "        \"When set to \'true\' it advertise only the aggregate route\n"
788
  "         and suppress the advertisement of all the component routes.\n"
789
  "         When set to \'false\' all more-specific routes summarized\n"
790
  "         by the aggregate route are advertised.\";\n"
791
  "    }\n"
792
  "\n"
793
  "    leaf rmap-policy-export {\n"
794
  "      type frr-route-map:route-map-ref;\n"
795
  "      description\n"
796
  "        \"Apply route map to aggregate network.\";\n"
797
  "    }\n"
798
  "\n"
799
  "    leaf origin {\n"
800
  "      type enumeration {\n"
801
  "        enum \"igp\" {\n"
802
  "          value 0;\n"
803
  "          description\n"
804
  "            \"Local IGP.\";\n"
805
  "        }\n"
806
  "        enum \"egp\" {\n"
807
  "          value 1;\n"
808
  "          description\n"
809
  "            \"Remote EGP.\";\n"
810
  "        }\n"
811
  "        enum \"incomplete\" {\n"
812
  "          value 2;\n"
813
  "          description\n"
814
  "            \"Unknown heritage.\";\n"
815
  "        }\n"
816
  "        enum \"unspecified\" {\n"
817
  "          value 255;\n"
818
  "          description\n"
819
  "            \"Unspecified.\";\n"
820
  "        }\n"
821
  "      }\n"
822
  "      default \"unspecified\";\n"
823
  "      description\n"
824
  "        \"BGP origin type.\";\n"
825
  "    }\n"
826
  "\n"
827
  "    leaf match-med {\n"
828
  "      type boolean;\n"
829
  "      default \"false\";\n"
830
  "      description\n"
831
  "        \"When set to \'true\' aggregate-route matches only\n"
832
  "         med.\";\n"
833
  "    }\n"
834
  "\n"
835
  "    leaf suppress-map {\n"
836
  "      type string;\n"
837
  "      description\n"
838
  "        \"Suppress more specific routes specified in route-map.\";\n"
839
  "    }\n"
840
  "  }\n"
841
  "\n"
842
  "  grouping admin-distance {\n"
843
  "    container admin-distance {\n"
844
  "      description\n"
845
  "        \"Administrative distance (or preference) assigned to\n"
846
  "         routes received from different sources\n"
847
  "         (external, internal, and local).\";\n"
848
  "      leaf external {\n"
849
  "        type uint8 {\n"
850
  "          range \"1..255\";\n"
851
  "        }\n"
852
  "        default \"20\";\n"
853
  "        description\n"
854
  "          \"Administrative distance for routes learned from\n"
855
  "           external BGP (EBGP).\";\n"
856
  "      }\n"
857
  "\n"
858
  "      leaf internal {\n"
859
  "        type uint8 {\n"
860
  "          range \"1..255\";\n"
861
  "        }\n"
862
  "        default \"200\";\n"
863
  "        description\n"
864
  "          \"Administrative distance for routes learned from\n"
865
  "           internal BGP (IBGP).\";\n"
866
  "      }\n"
867
  "\n"
868
  "      leaf local {\n"
869
  "        type uint8 {\n"
870
  "          range \"1..255\";\n"
871
  "        }\n"
872
  "        default \"200\";\n"
873
  "        description\n"
874
  "          \"Administrative distance for routes learned from\n"
875
  "           local.\";\n"
876
  "      }\n"
877
  "    }\n"
878
  "  }\n"
879
  "\n"
880
  "  grouping distance-per-route-config {\n"
881
  "    leaf distance {\n"
882
  "      type uint8 {\n"
883
  "        range \"1..255\";\n"
884
  "      }\n"
885
  "      mandatory true;\n"
886
  "      description\n"
887
  "        \"Administrative distance for route.\";\n"
888
  "    }\n"
889
  "\n"
890
  "    leaf access-list-policy-export {\n"
891
  "      type frr-bt:access-list-ref;\n"
892
  "      description\n"
893
  "        \"Access-list policy applied on routes going from BGP to Zebra.\";\n"
894
  "    }\n"
895
  "  }\n"
896
  "\n"
897
  "  grouping route-flap-dampening {\n"
898
  "    container route-flap-dampening {\n"
899
  "      description\n"
900
  "        \"Dampening feature\";\n"
901
  "      leaf enable {\n"
902
  "        type boolean;\n"
903
  "        default \"false\";\n"
904
  "        description\n"
905
  "          \"Enable route flap dampening.\";\n"
906
  "      }\n"
907
  "\n"
908
  "      leaf reach-decay {\n"
909
  "        when \"../enable = \'true\'\";\n"
910
  "        type uint8 {\n"
911
  "          range \"1..45\";\n"
912
  "        }\n"
913
  "        units \"seconds\";\n"
914
  "        default \"15\";\n"
915
  "        description\n"
916
  "          \"This value specifies the time desired for the instability\n"
917
  "           metric value to reach one-half of its current value when\n"
918
  "           the route is reachable. This half-life value determines\n"
919
  "           the rate at which the metric value is decayed. A smaller\n"
920
  "           half-life value makes a suppressed route reusable sooner\n"
921
  "           than a larger value. The accumulated penalty will be reduced\n"
922
  "           to half after this duration.\";\n"
923
  "      }\n"
924
  "\n"
925
  "      leaf reuse-above {\n"
926
  "        when \"../enable = \'true\'\";\n"
927
  "        type uint16 {\n"
928
  "          range \"1..20000\";\n"
929
  "        }\n"
930
  "        default \"750\";\n"
931
  "        description\n"
932
  "          \"This is the value of the instability metric at which a\n"
933
  "           suppressed route becomes unsuppressed if it is reachable\n"
934
  "           but currently suppressed. The value assigned to\n"
935
  "           reuse-below must be less than suppress-above.\";\n"
936
  "      }\n"
937
  "\n"
938
  "      leaf suppress-above {\n"
939
  "        when \"../enable = \'true\'\";\n"
940
  "        type uint16 {\n"
941
  "          range \"1..20000\";\n"
942
  "        }\n"
943
  "        default \"2000\";\n"
944
  "        description\n"
945
  "          \"This is the value of the instability metric at which\n"
946
  "           route suppression takes place. A route is not installed\n"
947
  "           in the forwarding information base (FIB), or announced\n"
948
  "           even if it is reachable during the period that it is\n"
949
  "           suppressed.\";\n"
950
  "      }\n"
951
  "\n"
952
  "      leaf unreach-decay {\n"
953
  "        when \"../enable = \'true\'\";\n"
954
  "        type uint8 {\n"
955
  "          range \"1..255\";\n"
956
  "        }\n"
957
  "        units \"seconds\";\n"
958
  "        default \"60\";\n"
959
  "        description\n"
960
  "          \"This value acts the same as reach-decay except that it\n"
961
  "           specifies the rate at which the instability metric is\n"
962
  "           decayed when a route is unreachable. It should have a\n"
963
  "           value greater than or equal to reach-decay.\";\n"
964
  "      }\n"
965
  "    }\n"
966
  "  }\n"
967
  "\n"
968
  "  grouping flow-spec-config {\n"
969
  "    container flow-spec-config {\n"
970
  "      description\n"
971
  "        \"Flow spec feature.\";\n"
972
  "      leaf interface {\n"
973
  "        type frr-interface:interface-ref {\n"
974
  "          require-instance false;\n"
975
  "        }\n"
976
  "        description\n"
977
  "          \"The local interface.\";\n"
978
  "      }\n"
979
  "    }\n"
980
  "  }\n"
981
  "\n"
982
  "  grouping global-graceful-shutdown {\n"
983
  "    description\n"
984
  "      \"Structural grouping used to include graceful-shutdown\n"
985
  "       configuration for both BGP neighbors and peer groups.\";\n"
986
  "    container graceful-shutdown {\n"
987
  "      description\n"
988
  "        \"BGP Graceful shutdown feature.\";\n"
989
  "      leaf enable {\n"
990
  "        type boolean;\n"
991
  "        default \"false\";\n"
992
  "        description\n"
993
  "          \"Enable graceful-shutdown feature.\";\n"
994
  "      }\n"
995
  "    }\n"
996
  "  }\n"
997
  "\n"
998
  "  grouping global-filter-config {\n"
999
  "    description\n"
1000
  "      \"Structural grouping used to include filter\n"
1001
  "       configuration for BGP RIB table.\";\n"
1002
  "    container filter-config {\n"
1003
  "      description\n"
1004
  "        \"BGP table to RIB route download filter.\";\n"
1005
  "      uses rmap-policy-export;\n"
1006
  "    }\n"
1007
  "  }\n"
1008
  "\n"
1009
  "  grouping route-distinguisher-params {\n"
1010
  "    description\n"
1011
  "      \"Route distinguisher value as per RFC4364.\";\n"
1012
  "    leaf rd {\n"
1013
  "      type rt-types:route-distinguisher;\n"
1014
  "      description\n"
1015
  "        \"Route distinguisher value as per RFC4364.\";\n"
1016
  "    }\n"
1017
  "  }\n"
1018
  "\n"
1019
  "  grouping vpn-label-params {\n"
1020
  "    description\n"
1021
  "      \"Label value for VRF.\";\n"
1022
  "    choice label-allocation-mode {\n"
1023
  "      case manual {\n"
1024
  "        leaf label {\n"
1025
  "          type rt-types:mpls-label;\n"
1026
  "          description\n"
1027
  "            \"Label index to associate with the prefix.\";\n"
1028
  "        }\n"
1029
  "      }\n"
1030
  "\n"
1031
  "      case auto {\n"
1032
  "        leaf label-auto {\n"
1033
  "          type boolean;\n"
1034
  "          default \"false\";\n"
1035
  "          description\n"
1036
  "            \"Automatically assign a label.\";\n"
1037
  "        }\n"
1038
  "      }\n"
1039
  "    }\n"
1040
  "  }\n"
1041
  "\n"
1042
  "  grouping vpn-nexthop-params {\n"
1043
  "    description\n"
1044
  "      \"Specify next hop to use for VRF advertised prefixes.\";\n"
1045
  "    leaf nexthop {\n"
1046
  "      type inet:ip-address;\n"
1047
  "      description\n"
1048
  "        \"Nexthop IP address.\";\n"
1049
  "    }\n"
1050
  "  }\n"
1051
  "\n"
1052
  "  grouping rt-list {\n"
1053
  "    description\n"
1054
  "      \"Route Target list\";\n"
1055
  "    leaf-list import-rt-list {\n"
1056
  "      type rt-types:route-target;\n"
1057
  "      description\n"
1058
  "        \"For routes leaked from vpn to current address-family: match any.\";\n"
1059
  "    }\n"
1060
  "\n"
1061
  "    leaf-list export-rt-list {\n"
1062
  "      type rt-types:route-target;\n"
1063
  "      description\n"
1064
  "        \"For routes leaked from current address-family to vpn: set.\";\n"
1065
  "    }\n"
1066
  "  }\n"
1067
  "\n"
1068
  "  grouping vpn-route-target-params {\n"
1069
  "    description\n"
1070
  "      \"Route Target value.\";\n"
1071
  "    leaf redirect-rt {\n"
1072
  "      type rt-types:route-target;\n"
1073
  "      description\n"
1074
  "        \"Flow-spec redirect type route target.\";\n"
1075
  "    }\n"
1076
  "\n"
1077
  "    choice rt-direction {\n"
1078
  "      case import-export {\n"
1079
  "        uses rt-list;\n"
1080
  "      }\n"
1081
  "\n"
1082
  "      case both {\n"
1083
  "        leaf-list rt-list {\n"
1084
  "          type rt-types:route-target;\n"
1085
  "          description\n"
1086
  "            \"Both import: match any and export: set.\";\n"
1087
  "        }\n"
1088
  "      }\n"
1089
  "    }\n"
1090
  "  }\n"
1091
  "\n"
1092
  "  grouping vpn-import-params {\n"
1093
  "    description\n"
1094
  "      \"VPN route leaking parameters.\";\n"
1095
  "    leaf import-vpn {\n"
1096
  "      type boolean;\n"
1097
  "      default \"false\";\n"
1098
  "      description\n"
1099
  "        \"Import routes from default instance VPN RIB.\";\n"
1100
  "    }\n"
1101
  "\n"
1102
  "    leaf export-vpn {\n"
1103
  "      type boolean;\n"
1104
  "      default \"false\";\n"
1105
  "      description\n"
1106
  "        \"Export routes to default instance VPN RIB.\";\n"
1107
  "    }\n"
1108
  "\n"
1109
  "    list import-vrf-list {\n"
1110
  "      key \"vrf\";\n"
1111
  "      description\n"
1112
  "        \"List of VRFs to import routes from.\";\n"
1113
  "      leaf vrf {\n"
1114
  "        type frr-vrf:vrf-ref {\n"
1115
  "          require-instance false;\n"
1116
  "        }\n"
1117
  "        description\n"
1118
  "          \"Routing instance.\";\n"
1119
  "      }\n"
1120
  "    }\n"
1121
  "\n"
1122
  "    uses rmap-policy-import;\n"
1123
  "\n"
1124
  "    uses rmap-policy-export;\n"
1125
  "  }\n"
1126
  "\n"
1127
  "  grouping global-afi-safi-vpn-config {\n"
1128
  "    container vpn-config {\n"
1129
  "      leaf rd {\n"
1130
  "        type string;\n"
1131
  "        description\n"
1132
  "          \"Route distinguisher value as per RFC4364.\";\n"
1133
  "      }\n"
1134
  "\n"
1135
  "      uses vpn-label-params;\n"
1136
  "\n"
1137
  "      uses vpn-nexthop-params;\n"
1138
  "\n"
1139
  "      uses vpn-import-params;\n"
1140
  "\n"
1141
  "      uses vpn-route-target-params;\n"
1142
  "    }\n"
1143
  "  }\n"
1144
  "\n"
1145
  "  grouping global-afi-safi-vpn-network-config {\n"
1146
  "    list network-config {\n"
1147
  "      key \"rd\";\n"
1148
  "      description\n"
1149
  "        \"A list of rd.\";\n"
1150
  "      uses route-distinguisher-params;\n"
1151
  "\n"
1152
  "      list prefix-list {\n"
1153
  "        key \"prefix\";\n"
1154
  "        description\n"
1155
  "          \"A list of prefix.\";\n"
1156
  "        leaf prefix {\n"
1157
  "          type inet:ip-prefix;\n"
1158
  "          description\n"
1159
  "            \"IP destination prefix.\";\n"
1160
  "        }\n"
1161
  "\n"
1162
  "        leaf label-index {\n"
1163
  "          type uint32;\n"
1164
  "          mandatory true;\n"
1165
  "          description\n"
1166
  "            \"Label index to associate with the prefix.\";\n"
1167
  "        }\n"
1168
  "\n"
1169
  "        leaf rmap-policy-export {\n"
1170
  "          type frr-route-map:route-map-ref;\n"
1171
  "          description\n"
1172
  "            \"Route-map to modify the attributes for Routes going out\n"
1173
  "             via BGP updates.\";\n"
1174
  "        }\n"
1175
  "      }\n"
1176
  "    }\n"
1177
  "  }\n"
1178
  "}\n"
1179
  "";
1180
1181
static struct yang_module_embed embed = {
1182
  .mod_name = "frr-bgp",
1183
  .mod_rev = "",
1184
  .sub_mod_name = "frr-bgp-common",
1185
  .sub_mod_rev = "2019-12-03",
1186
  .data = model,
1187
  .format = LYS_IN_YANG,
1188
};
1189
1190
static void embed_register(void) __attribute__((_CONSTRUCTOR(2000)));
1191
static void embed_register(void)
1192
1
{
1193
1
  yang_module_embed(&embed);
1194
1
}