Coverage Report

Created: 2025-10-23 06:55

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/frr/yang/frr-route-map.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
  "// SPDX-License-Identifier: BSD-2-Clause\n"
8
  "module frr-route-map {\n"
9
  "  yang-version 1.1;\n"
10
  "  namespace \"http://frrouting.org/yang/route-map\";\n"
11
  "  prefix frr-route-map;\n"
12
  "\n"
13
  "  import ietf-inet-types {\n"
14
  "    prefix inet;\n"
15
  "  }\n"
16
  "\n"
17
  "  import frr-filter {\n"
18
  "    prefix filter;\n"
19
  "  }\n"
20
  "\n"
21
  "  import frr-interface {\n"
22
  "    prefix frr-interface;\n"
23
  "  }\n"
24
  "\n"
25
  "  organization\n"
26
  "    \"FRRouting\";\n"
27
  "  contact\n"
28
  "    \"FRR Users List:       <mailto:frog@lists.frrouting.org>\n"
29
  "     FRR Development List: <mailto:dev@lists.frrouting.org>\";\n"
30
  "  description\n"
31
  "    \"This module defines route map settings\n"
32
  "\n"
33
  "     Copyright 2020 FRRouting\n"
34
  "\n"
35
  "     Redistribution and use in source and binary forms, with or without\n"
36
  "     modification, are permitted provided that the following conditions\n"
37
  "     are met:\n"
38
  "\n"
39
  "     1. Redistributions of source code must retain the above copyright notice,\n"
40
  "     this list of conditions and the following disclaimer.\n"
41
  "\n"
42
  "     2. Redistributions in binary form must reproduce the above copyright\n"
43
  "     notice, this list of conditions and the following disclaimer in the\n"
44
  "     documentation and/or other materials provided with the distribution.\n"
45
  "\n"
46
  "     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n"
47
  "     \\\"AS IS\\\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n"
48
  "     LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n"
49
  "     A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n"
50
  "     HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n"
51
  "     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n"
52
  "     LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n"
53
  "     DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n"
54
  "     THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n"
55
  "     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n"
56
  "     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\";\n"
57
  "\n"
58
  "  revision 2019-07-01 {\n"
59
  "    description\n"
60
  "      \"Initial revision\";\n"
61
  "  }\n"
62
  "\n"
63
  "  identity rmap-match-type {\n"
64
  "    description\n"
65
  "      \"Base route-map match-condition\";\n"
66
  "  }\n"
67
  "\n"
68
  "  identity interface {\n"
69
  "    base rmap-match-type;\n"
70
  "    description\n"
71
  "      \"Match interface\";\n"
72
  "  }\n"
73
  "\n"
74
  "  identity ipv4-address-list {\n"
75
  "    base rmap-match-type;\n"
76
  "    description\n"
77
  "      \"Match an IPv4 access-list\";\n"
78
  "  }\n"
79
  "\n"
80
  "  identity ipv4-prefix-list {\n"
81
  "    base rmap-match-type;\n"
82
  "    description\n"
83
  "      \"Match an IPv4 prefix-list\";\n"
84
  "  }\n"
85
  "\n"
86
  "  identity ipv4-next-hop-list {\n"
87
  "    base rmap-match-type;\n"
88
  "    description\n"
89
  "      \"Match an IPv4 next-hop\";\n"
90
  "  }\n"
91
  "\n"
92
  "  identity ipv4-next-hop-prefix-list {\n"
93
  "    base rmap-match-type;\n"
94
  "    description\n"
95
  "      \"Match an IPv4 next-hop prefix list\";\n"
96
  "  }\n"
97
  "\n"
98
  "  identity ipv4-next-hop-type {\n"
99
  "    base rmap-match-type;\n"
100
  "    description\n"
101
  "      \"Match an IPv4 next-hop type\";\n"
102
  "  }\n"
103
  "\n"
104
  "  identity ipv6-address-list {\n"
105
  "    base rmap-match-type;\n"
106
  "    description\n"
107
  "      \"Match an IPv6 access-list\";\n"
108
  "  }\n"
109
  "\n"
110
  "  identity ipv6-prefix-list {\n"
111
  "    base rmap-match-type;\n"
112
  "    description\n"
113
  "      \"Match an IPv6 prefix-list\";\n"
114
  "  }\n"
115
  "\n"
116
  "  identity ipv6-next-hop-list {\n"
117
  "    base rmap-match-type;\n"
118
  "    description\n"
119
  "      \"Match an IPv6 next-hop\";\n"
120
  "  }\n"
121
  "\n"
122
  "  identity ipv6-next-hop-prefix-list {\n"
123
  "    base rmap-match-type;\n"
124
  "    description\n"
125
  "      \"Match an IPv6 next-hop prefix list\";\n"
126
  "  }\n"
127
  "\n"
128
  "  identity ipv6-next-hop-type {\n"
129
  "    base rmap-match-type;\n"
130
  "    description\n"
131
  "      \"Match an IPv6 next-hop type\";\n"
132
  "  }\n"
133
  "\n"
134
  "  identity match-metric {\n"
135
  "    base rmap-match-type;\n"
136
  "    description\n"
137
  "      \"Match a route metric\";\n"
138
  "  }\n"
139
  "\n"
140
  "  identity match-tag {\n"
141
  "    base rmap-match-type;\n"
142
  "    description\n"
143
  "      \"Match a route tag\";\n"
144
  "  }\n"
145
  "\n"
146
  "  identity rmap-set-type {\n"
147
  "    description\n"
148
  "      \"Base route-map set-action\";\n"
149
  "  }\n"
150
  "\n"
151
  "  identity ipv4-next-hop {\n"
152
  "    base rmap-set-type;\n"
153
  "    description\n"
154
  "      \"Set IPv4 address of the next hop\";\n"
155
  "  }\n"
156
  "\n"
157
  "  identity ipv6-next-hop {\n"
158
  "    base rmap-set-type;\n"
159
  "    description\n"
160
  "      \"Set IPv6 address of the next hop\";\n"
161
  "  }\n"
162
  "\n"
163
  "  identity set-metric {\n"
164
  "    base rmap-set-type;\n"
165
  "    description\n"
166
  "      \"Set prefix/route metric\";\n"
167
  "  }\n"
168
  "\n"
169
  "  identity set-min-metric {\n"
170
  "    base rmap-set-type;\n"
171
  "    description\n"
172
  "      \"Set minimum prefix/route metric\";\n"
173
  "  }\n"
174
  "\n"
175
  "    identity set-max-metric {\n"
176
  "    base rmap-set-type;\n"
177
  "    description\n"
178
  "      \"Set maximum prefix/route metric\";\n"
179
  "  }\n"
180
  "\n"
181
  "  identity set-tag {\n"
182
  "    base rmap-set-type;\n"
183
  "    description\n"
184
  "      \"Set tag\";\n"
185
  "  }\n"
186
  "\n"
187
  "  identity set-sr-te-color {\n"
188
  "    base rmap-set-type;\n"
189
  "    description\n"
190
  "      \"Set Color of the SR-TE\";\n"
191
  "  }\n"
192
  "\n"
193
  "  typedef route-map-sequence {\n"
194
  "    type uint16 {\n"
195
  "      range \"1..65535\";\n"
196
  "    }\n"
197
  "    description\n"
198
  "      \"Route map valid sequence numbers\";\n"
199
  "  }\n"
200
  "\n"
201
  "  typedef route-map-name {\n"
202
  "    type string;\n"
203
  "    description\n"
204
  "      \"Route map name format\";\n"
205
  "  }\n"
206
  "\n"
207
  "  typedef route-map-ref {\n"
208
  "    type leafref {\n"
209
  "      path \"/frr-route-map:lib/frr-route-map:route-map/frr-route-map:name\";\n"
210
  "      require-instance false;\n"
211
  "    }\n"
212
  "    description\n"
213
  "      \"Reference to a route-map.\";\n"
214
  "  }\n"
215
  "\n"
216
  "  grouping rmap-match-condition {\n"
217
  "    container rmap-match-condition {\n"
218
  "      choice match-condition {\n"
219
  "        description\n"
220
  "          \"Value to match (interpretation depends on condition type)\";\n"
221
  "        case interface {\n"
222
  "          when \"derived-from-or-self(../condition, \'interface\')\";\n"
223
  "          leaf interface {\n"
224
  "            type frr-interface:interface-ref;\n"
225
  "          }\n"
226
  "        }\n"
227
  "\n"
228
  "        case list-name {\n"
229
  "          when \"derived-from-or-self(../condition, \'ipv4-address-list\') or \"\n"
230
  "             + \"derived-from-or-self(../condition, \'ipv4-prefix-list\') or \"\n"
231
  "             + \"derived-from-or-self(../condition, \'ipv4-next-hop-list\') or \"\n"
232
  "             + \"derived-from-or-self(../condition, \'ipv4-next-hop-prefix-list\') or \"\n"
233
  "             + \"derived-from-or-self(../condition, \'ipv6-address-list\') or \"\n"
234
  "             + \"derived-from-or-self(../condition, \'ipv6-next-hop-list\') or \"\n"
235
  "             + \"derived-from-or-self(../condition, \'ipv6-next-hop-prefix-list\') or \"\n"
236
  "             + \"derived-from-or-self(../condition, \'ipv6-prefix-list\')\";\n"
237
  "          leaf list-name {\n"
238
  "            type filter:access-list-name;\n"
239
  "          }\n"
240
  "        }\n"
241
  "\n"
242
  "        case ipv4-next-hop-type {\n"
243
  "          when \"derived-from-or-self(../condition, \'ipv4-next-hop-type\')\";\n"
244
  "          leaf ipv4-next-hop-type {\n"
245
  "            type enumeration {\n"
246
  "              enum \"blackhole\" {\n"
247
  "                value 0;\n"
248
  "              }\n"
249
  "            }\n"
250
  "          }\n"
251
  "        }\n"
252
  "\n"
253
  "        case ipv6-next-hop-type {\n"
254
  "          when \"derived-from-or-self(../condition, \'ipv6-next-hop-type\')\";\n"
255
  "          leaf ipv6-next-hop-type {\n"
256
  "            type enumeration {\n"
257
  "              enum \"blackhole\" {\n"
258
  "                value 0;\n"
259
  "              }\n"
260
  "            }\n"
261
  "          }\n"
262
  "        }\n"
263
  "\n"
264
  "        case match-metric {\n"
265
  "          when \"derived-from-or-self(../condition, \'match-metric\')\";\n"
266
  "          leaf metric {\n"
267
  "            type uint32 {\n"
268
  "              range \"1..4294967295\";\n"
269
  "            }\n"
270
  "          }\n"
271
  "        }\n"
272
  "\n"
273
  "        case match-tag {\n"
274
  "          when \"derived-from-or-self(../condition, \'match-tag\')\";\n"
275
  "          leaf tag {\n"
276
  "            type uint32 {\n"
277
  "              range \"1..4294967295\";\n"
278
  "            }\n"
279
  "          }\n"
280
  "        }\n"
281
  "      }\n"
282
  "    }\n"
283
  "  }\n"
284
  "\n"
285
  "  grouping rmap-set-action {\n"
286
  "    container rmap-set-action {\n"
287
  "      choice set-action {\n"
288
  "        description\n"
289
  "          \"Value to set (interpretation depends on action-type)\";\n"
290
  "        case ipv4-address {\n"
291
  "          when \"derived-from-or-self(../action, \'ipv4-next-hop\')\";\n"
292
  "          leaf ipv4-address {\n"
293
  "            type inet:ipv4-address;\n"
294
  "            description\n"
295
  "              \"IPv4 address\";\n"
296
  "          }\n"
297
  "        }\n"
298
  "\n"
299
  "        case ipv6-address {\n"
300
  "          when \"derived-from-or-self(../action, \'ipv6-next-hop\')\";\n"
301
  "          leaf ipv6-address {\n"
302
  "            type inet:ipv6-address;\n"
303
  "            description\n"
304
  "              \"IPv6 address\";\n"
305
  "          }\n"
306
  "        }\n"
307
  "\n"
308
  "        case set-metric {\n"
309
  "          when \"derived-from-or-self(../action, \'set-metric\')\";\n"
310
  "          choice metric-value {\n"
311
  "            description\n"
312
  "              \"Metric to set or use\";\n"
313
  "            case value {\n"
314
  "              leaf value {\n"
315
  "                type uint32 {\n"
316
  "                  range \"0..4294967295\";\n"
317
  "                }\n"
318
  "                description\n"
319
  "                  \"Use the following metric value\";\n"
320
  "              }\n"
321
  "            }\n"
322
  "\n"
323
  "            case add-metric {\n"
324
  "              leaf add-metric {\n"
325
  "                description \"Add value to metric.\";\n"
326
  "                type uint32 {\n"
327
  "                  range \"0..4294967295\";\n"
328
  "                }\n"
329
  "              }\n"
330
  "            }\n"
331
  "\n"
332
  "            case subtract-metric {\n"
333
  "              leaf subtract-metric {\n"
334
  "                description \"Subtract value from metric.\";\n"
335
  "                type uint32 {\n"
336
  "                  range \"0..4294967295\";\n"
337
  "                }\n"
338
  "              }\n"
339
  "            }\n"
340
  "\n"
341
  "            case use-round-trip-time {\n"
342
  "              leaf use-round-trip-time {\n"
343
  "                type boolean;\n"
344
  "                description\n"
345
  "                  \"Use the round trip time as metric\";\n"
346
  "              }\n"
347
  "            }\n"
348
  "\n"
349
  "            case add-round-trip-time {\n"
350
  "              leaf add-round-trip-time {\n"
351
  "                type boolean;\n"
352
  "                description\n"
353
  "                  \"Add round trip time to metric\";\n"
354
  "              }\n"
355
  "            }\n"
356
  "\n"
357
  "            case subtract-round-trip-time {\n"
358
  "              leaf subtract-round-trip-time {\n"
359
  "                type boolean;\n"
360
  "                description\n"
361
  "                  \"Subtract round trip time to metric\";\n"
362
  "              }\n"
363
  "            }\n"
364
  "          }\n"
365
  "        }\n"
366
  "\n"
367
  "        case set-min-metric {\n"
368
  "          when \"derived-from-or-self(../action, \'set-min-metric\')\";\n"
369
  "          choice minimun-metric-value {\n"
370
  "            description\n"
371
  "              \"Mimimum metric to set or use\";\n"
372
  "            case min-metric {\n"
373
  "              leaf min-metric {\n"
374
  "                type uint32 {\n"
375
  "                  range \"0..4294967295\";\n"
376
  "                }\n"
377
  "                description\n"
378
  "                  \"Use the following mimumn metric value\";\n"
379
  "              }\n"
380
  "            }\n"
381
  "          }\n"
382
  "        }\n"
383
  "\n"
384
  "        case set-max-metric {\n"
385
  "          when \"derived-from-or-self(../action, \'set-max-metric\')\";\n"
386
  "          choice maximum-metric-value {\n"
387
  "            description\n"
388
  "              \"Maximum metric to set or use\";\n"
389
  "            case max-metric {\n"
390
  "              leaf max-metric {\n"
391
  "                type uint32 {\n"
392
  "                  range \"0..4294967295\";\n"
393
  "                }\n"
394
  "                description\n"
395
  "                  \"Use the following maximum metric value\";\n"
396
  "              }\n"
397
  "            }\n"
398
  "          }\n"
399
  "        }\n"
400
  "        case set-tag {\n"
401
  "          when \"derived-from-or-self(../action, \'set-tag\')\";\n"
402
  "          leaf tag {\n"
403
  "            type uint32 {\n"
404
  "              range \"0..4294967295\";\n"
405
  "            }\n"
406
  "            description\n"
407
  "              \"Tag value\";\n"
408
  "          }\n"
409
  "        }\n"
410
  "\n"
411
  "        case set-sr-te-color {\n"
412
  "          when \"derived-from-or-self(../action, \'set-sr-te-color\')\";\n"
413
  "          leaf policy {\n"
414
  "            type string;\n"
415
  "            description\n"
416
  "              \"Color of the SR-TE Policies to match with\";\n"
417
  "          }\n"
418
  "        }\n"
419
  "      }\n"
420
  "    }\n"
421
  "  }\n"
422
  "\n"
423
  "  container lib {\n"
424
  "    list route-map {\n"
425
  "      key \"name\";\n"
426
  "      description\n"
427
  "        \"Route map instance\";\n"
428
  "      leaf name {\n"
429
  "        type route-map-name;\n"
430
  "        description\n"
431
  "          \"Route map instance name\";\n"
432
  "      }\n"
433
  "      leaf optimization-disabled {\n"
434
  "        type boolean;\n"
435
  "        default false;\n"
436
  "        description \"Disables or enables the optimization\";\n"
437
  "      }\n"
438
  "\n"
439
  "      list entry {\n"
440
  "        key \"sequence\";\n"
441
  "        description\n"
442
  "          \"Route map entry\";\n"
443
  "        leaf sequence {\n"
444
  "          type route-map-sequence;\n"
445
  "          description\n"
446
  "            \"Route map instance priority (low number means higher priority)\";\n"
447
  "        }\n"
448
  "\n"
449
  "        leaf description {\n"
450
  "          type string;\n"
451
  "          description\n"
452
  "            \"Route map description\";\n"
453
  "        }\n"
454
  "\n"
455
  "        leaf action {\n"
456
  "          type enumeration {\n"
457
  "            enum \"permit\" {\n"
458
  "              value 0;\n"
459
  "              description\n"
460
  "                \"Executes configured action and permits the prefix/route\n"
461
  "                 if the conditions matched. An alternative exit action can\n"
462
  "                 be configured to continue processing the route map list\n"
463
  "                 or jump to process another route map.\";\n"
464
  "            }\n"
465
  "            enum \"deny\" {\n"
466
  "              value 1;\n"
467
  "              description\n"
468
  "                \"If all conditions are met the prefix/route is denied and\n"
469
  "                 route map processing stops.\";\n"
470
  "            }\n"
471
  "          }\n"
472
  "          mandatory true;\n"
473
  "          description\n"
474
  "            \"Route map actions: permit (executes action), deny (quits evaluation)\";\n"
475
  "        }\n"
476
  "\n"
477
  "        leaf call {\n"
478
  "          type route-map-name;\n"
479
  "          description\n"
480
  "            \"Call another route map before calling `exit-policy`. If the\n"
481
  "             called route map returns deny then this route map will also\n"
482
  "             return deny\";\n"
483
  "        }\n"
484
  "\n"
485
  "        leaf exit-policy {\n"
486
  "          type enumeration {\n"
487
  "            enum \"permit-or-deny\" {\n"
488
  "              value 0;\n"
489
  "              description\n"
490
  "                \"End route map evaluation and return\";\n"
491
  "            }\n"
492
  "            enum \"next\" {\n"
493
  "              value 1;\n"
494
  "              description\n"
495
  "                \"Proceed evaluating next route map entry per sequence\";\n"
496
  "            }\n"
497
  "            enum \"goto\" {\n"
498
  "              value 2;\n"
499
  "              description\n"
500
  "                \"Go to route map entry with the provided sequence number\";\n"
501
  "            }\n"
502
  "          }\n"
503
  "          default \"permit-or-deny\";\n"
504
  "          description\n"
505
  "            \"What do to after route map successful match, set and call\";\n"
506
  "        }\n"
507
  "\n"
508
  "        leaf goto-value {\n"
509
  "          when \"../exit-policy = \'goto\'\";\n"
510
  "          type route-map-sequence;\n"
511
  "          mandatory true;\n"
512
  "          description\n"
513
  "            \"Sequence number to jump (when using `goto` exit policy)\";\n"
514
  "        }\n"
515
  "\n"
516
  "        list match-condition {\n"
517
  "          key \"condition\";\n"
518
  "          description\n"
519
  "            \"Route map match conditions\";\n"
520
  "          leaf condition {\n"
521
  "            type identityref {\n"
522
  "              base rmap-match-type;\n"
523
  "            }\n"
524
  "            description\n"
525
  "              \"Match condition\";\n"
526
  "          }\n"
527
  "\n"
528
  "          uses rmap-match-condition;\n"
529
  "        }\n"
530
  "\n"
531
  "        list set-action {\n"
532
  "          key \"action\";\n"
533
  "          description\n"
534
  "            \"Route map set actions\";\n"
535
  "          leaf action {\n"
536
  "            type identityref {\n"
537
  "              base rmap-set-type;\n"
538
  "            }\n"
539
  "            description\n"
540
  "              \"Action to do when the route map matches\";\n"
541
  "          }\n"
542
  "\n"
543
  "          uses rmap-set-action;\n"
544
  "        }\n"
545
  "      }\n"
546
  "    }\n"
547
  "  }\n"
548
  "}\n"
549
  "";
550
551
static struct yang_module_embed embed = {
552
  .mod_name = "frr-route-map",
553
  .mod_rev = "2019-07-01",
554
  .sub_mod_name = "",
555
  .sub_mod_rev = "",
556
  .data = model,
557
  .format = LYS_IN_YANG,
558
};
559
560
static void embed_register(void) __attribute__((_CONSTRUCTOR(2000)));
561
static void embed_register(void)
562
8
{
563
8
  yang_module_embed(&embed);
564
8
}