]> git.proxmox.com Git - mirror_frr.git/blob - yang/frr-isisd.yang
Merge pull request #7849 from gpnaveen/static_rte_test
[mirror_frr.git] / yang / frr-isisd.yang
1 module frr-isisd {
2 yang-version 1.1;
3 namespace "http://frrouting.org/yang/isisd";
4 prefix frr-isisd;
5
6 import ietf-yang-types {
7 prefix yang;
8 }
9
10 import ietf-inet-types {
11 prefix inet;
12 }
13
14 import frr-interface {
15 prefix frr-interface;
16 }
17
18 import frr-vrf {
19 prefix frr-vrf;
20 }
21
22 import frr-route-map {
23 prefix frr-route-map;
24 }
25
26 import frr-route-types {
27 prefix frr-route-types;
28 }
29
30 organization
31 "FRRouting";
32 contact
33 "FRR Users List: <mailto:frog@lists.frrouting.org> FRR Development
34 List: <mailto:dev@lists.frrouting.org>";
35 description
36 "This module defines a model for managing FRR isisd daemon.
37
38 Copyright 2020 FRRouting
39
40 Redistribution and use in source and binary forms, with or without
41 modification, are permitted provided that the following conditions
42 are met:
43
44 1. Redistributions of source code must retain the above copyright notice,
45 this list of conditions and the following disclaimer.
46
47 2. Redistributions in binary form must reproduce the above copyright
48 notice, this list of conditions and the following disclaimer in the
49 documentation and/or other materials provided with the distribution.
50
51 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
52 \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
53 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
54 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
55 HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
56 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
57 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
58 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
59 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
60 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
61 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.";
62
63 revision 2020-04-06 {
64 description
65 "Group LSP timers in a container so that they can be displayed and
66 configured together";
67 }
68 revision 2019-12-17 {
69 description
70 "Changed default area is-type to level-1-2";
71 }
72 revision 2019-09-09 {
73 description
74 "Changed interface references to use
75 frr-interface:interface-ref typedef";
76 }
77 revision 2018-07-26 {
78 description
79 "Initial revision.";
80 reference
81 "ISO/IEC 10589:2002.";
82 }
83
84 typedef level {
85 type enumeration {
86 enum "level-1" {
87 value 1;
88 description
89 "This enum indicates L1-only capability.";
90 }
91 enum "level-2" {
92 value 2;
93 description
94 "This enum indicates L2-only capability.";
95 }
96 enum "level-1-2" {
97 value 3;
98 description
99 "This enum indicates capability for both levels.";
100 }
101 }
102 description
103 "This type defines IS-IS level of an object.";
104 }
105
106 typedef extended-circuit-id {
107 type uint32;
108 description
109 "This type defines the extended circuit ID
110 associated with an interface.";
111 }
112
113 typedef network-type {
114 type enumeration {
115 enum "unknown" {
116 value 0;
117 description
118 "Unknown network type. Only valid as a state.";
119 }
120 enum "broadcast" {
121 value 1;
122 description
123 "Broadcast circuit network-type.";
124 }
125 enum "point-to-point" {
126 value 2;
127 description
128 "Point-to-point circuit network-type.";
129 }
130 enum "loopback" {
131 value 3;
132 description
133 "Loopback circuit network-type. Only valid as a state.";
134 }
135 }
136 }
137
138 typedef lsp-id {
139 type string {
140 pattern "[0-9A-Fa-f]{4}\\.[0-9A-Fa-f]{4}\\.[0-9A-Fa-f]{4}\\.[0-9][0-9]-[0-9][0-9]";
141 }
142 description
143 "This type defines the IS-IS LSP ID format using a
144 pattern, An example LSP ID is 0143.0438.AeF0.02-01";
145 }
146
147 typedef snpa {
148 type string {
149 length "0 .. 20";
150 }
151 description
152 "This type defines the Subnetwork Point
153 of Attachment (SNPA) format.
154 The SNPA should be encoded according to the rules
155 specified for the particular type of subnetwork
156 being used. As an example, for an ethernet subnetwork,
157 the SNPA is encoded as a MAC address like
158 '00aa.bbcc.ddee'.";
159 }
160
161 typedef system-id {
162 type string {
163 pattern "[0-9A-Fa-f]{4}\\.[0-9A-Fa-f]{4}\\.[0-9A-Fa-f]{4}";
164 }
165 description
166 "This type defines IS-IS system-id using a pattern,
167 An example system-id is 0143.0438.AeF0";
168 }
169
170 typedef net-address {
171 type string {
172 pattern "[a-fA-F0-9]{2}(\\.[a-fA-F0-9]{4}){3,9}\\.[a-fA-F0-9]{2}";
173 }
174 description
175 "This type defines an OSI NET address using a pattern,
176 An example net-address is 49.0123.6452.1972.00";
177 }
178
179 typedef if-state-type {
180 type enumeration {
181 enum "up" {
182 value 0;
183 description
184 "Up state.";
185 }
186 enum "down" {
187 value 1;
188 description
189 "Down state";
190 }
191 }
192 description
193 "This type defines the state of an interface";
194 }
195
196 typedef adj-state-type {
197 type enumeration {
198 enum "up" {
199 value 0;
200 description
201 "State indicates the adjacency is established.";
202 }
203 enum "down" {
204 value 1;
205 description
206 "State indicates the adjacency is NOT established.";
207 }
208 enum "init" {
209 value 2;
210 description
211 "State indicates the adjacency is establishing.";
212 }
213 enum "failed" {
214 value 3;
215 description
216 "State indicates the adjacency is failed.";
217 }
218 }
219 description
220 "This type defines states of an adjacency";
221 }
222
223 typedef metric-style-type {
224 type enumeration {
225 enum "narrow" {
226 value 0;
227 description
228 "This enum describes narrow metric style";
229 reference
230 "RFC1195";
231 }
232 enum "wide" {
233 value 1;
234 description
235 "This enum describes wide metric style";
236 reference
237 "RFC5305";
238 }
239 enum "transition" {
240 value 2;
241 description
242 "This enum describes transition metric style";
243 }
244 }
245 }
246
247 typedef access-list-ref {
248 type string;
249 }
250
251 typedef prefix-list-ref {
252 type string;
253 }
254
255 grouping redistribute-attributes {
256 description
257 "Common optional attributes of any redistribute entry.";
258 leaf route-map {
259 type frr-route-map:route-map-ref;
260 description
261 "Applies the conditions of the specified route-map to routes that
262 are redistributed into this routing instance.";
263 }
264
265 leaf metric {
266 type uint32 {
267 range "0..16777215";
268 }
269 default "0";
270 description
271 "Metric used for the redistributed route. If 0,
272 the default-metric attribute is used instead.";
273 }
274 }
275
276 grouping redistribute-default {
277 description
278 "Redistribution of default route within a level.";
279 leaf always {
280 type boolean;
281 default "false";
282 description
283 "Always advertise default route.";
284 }
285
286 uses redistribute-attributes;
287 }
288
289 grouping isis-password {
290 description
291 "Authentication attributes or an IS-IS area or domain.";
292 leaf password {
293 type string {
294 length "1..254";
295 }
296 mandatory true;
297 description
298 "Actual password.";
299 }
300
301 leaf password-type {
302 type enumeration {
303 enum "clear" {
304 value 1;
305 description
306 "Clear-text password type.";
307 }
308 enum "md5" {
309 value 54;
310 description
311 "MD5 password type.";
312 }
313 }
314 mandatory true;
315 description
316 "Type of password used.";
317 }
318 }
319
320 grouping isis-area-password {
321 uses isis-password;
322
323 leaf authenticate-snp {
324 type enumeration {
325 enum "none" {
326 value 0;
327 description
328 "No SNP authentication.";
329 }
330 enum "send-only" {
331 value 1;
332 description
333 "Send authenticated PDUs but do not check on receiving.";
334 }
335 enum "validate" {
336 value 3;
337 description
338 "Send authenticated PDUs and check on receiving.";
339 }
340 }
341 default "none";
342 description
343 "SNP PDUs authentication.";
344 }
345 }
346
347 grouping global-config-lfa {
348 container lfa {
349 description
350 "LFA configuration.";
351
352 leaf load-sharing {
353 type boolean;
354 default "true";
355 description
356 "Load share prefixes across multiple backups.";
357 }
358 leaf priority-limit {
359 type enumeration {
360 enum "critical" {
361 value 0;
362 description
363 "Compute for critical priority prefixes only.";
364 }
365 enum "high" {
366 value 1;
367 description
368 "Compute for critical & high priority prefixes.";
369 }
370 enum "medium" {
371 value 2;
372 description
373 "Compute for critical, high & medium priority prefixes.";
374 }
375 }
376 description
377 "Limit backup computation up to the prefix priority.";
378 }
379 list tiebreaker {
380 key "index";
381 unique "type";
382 description
383 "Configure tiebreaker for multiple backups.";
384 leaf index {
385 type uint8 {
386 range "1..255";
387 }
388 description
389 "Preference order among tiebreakers.";
390 }
391 leaf type {
392 type enumeration {
393 enum "downstream" {
394 value 0;
395 description
396 "Prefer backup path via downstream node.";
397 }
398 enum "lowest-backup-metric" {
399 value 1;
400 description
401 "Prefer backup path with lowest total metric.";
402 }
403 enum "node-protecting" {
404 value 2;
405 description
406 "Prefer node protecting backup path.";
407 }
408 }
409 mandatory true;
410 description
411 "Tiebreaker type.";
412 }
413 }
414 }
415 }
416
417 grouping global-config-remote-lfa {
418 container remote-lfa {
419 description
420 "Remote LFA configuration.";
421
422 leaf prefix-list {
423 type prefix-list-ref;
424 description
425 "Filter PQ node router ID based on prefix list.";
426 }
427 }
428 }
429
430 grouping interface-config-lfa {
431 container lfa {
432 description
433 "LFA configuration.";
434 leaf enable {
435 type boolean;
436 default false;
437 description
438 "Enables LFA computation.";
439 }
440 leaf-list exclude-interface {
441 type frr-interface:interface-ref;
442 description
443 "Exclude an interface from computation.";
444 }
445 }
446 }
447
448 grouping interface-config-remote-lfa {
449 container remote-lfa {
450 description
451 "Remote LFA configuration.";
452
453 leaf enable {
454 type boolean;
455 default false;
456 description
457 "Enables remote LFA computation using LDP tunnels.";
458 must ". = 'false' or ../../lfa/enable = 'true'" {
459 error-message
460 "Remote LFA depends on classic LFA being configured in the interface.";
461 }
462
463 }
464 leaf maximum-metric {
465 type uint32 {
466 range "1..16777215";
467 }
468 description
469 "Limit remote LFA node selection within the metric.";
470 }
471 }
472 }
473
474 grouping interface-config-ti-lfa {
475 container ti-lfa {
476 description
477 "TI-LFA configuration.";
478 leaf enable {
479 type boolean;
480 default false;
481 description
482 "Enables TI-LFA computation.";
483 }
484 leaf node-protection {
485 type boolean;
486 must ". = 'false' or ../enable = 'true'";
487 default false;
488 description
489 "Node protection is provided by the alternate.";
490 }
491 }
492 }
493
494 grouping interface-config {
495 description
496 "Interface configuration grouping";
497 leaf area-tag {
498 type string;
499 mandatory true;
500 description
501 "Area-tag associated to this circuit.";
502 }
503
504 leaf vrf {
505 type frr-vrf:vrf-ref;
506 default "default";
507 description
508 "VRF NAME.";
509 }
510
511 leaf ipv4-routing {
512 type boolean;
513 default "false";
514 description
515 "Routing IS-IS IPv4 traffic over this circuit.";
516 }
517
518 leaf ipv6-routing {
519 type boolean;
520 default "false";
521 description
522 "Routing IS-IS IPv6 traffic over this circuit.";
523 }
524
525 leaf circuit-type {
526 type level;
527 default "level-1-2";
528 description
529 "IS-type of this circuit.";
530 }
531
532 container bfd-monitoring {
533 leaf enabled {
534 type boolean;
535 default "false";
536 description
537 "Monitor IS-IS peers on this circuit.";
538 }
539 leaf profile {
540 type string;
541 description
542 "Let BFD use a pre-configured profile.";
543 }
544 }
545
546 container csnp-interval {
547 description
548 "Complete Sequence Number PDU (CSNP) generation interval.";
549 leaf level-1 {
550 type uint16 {
551 range "1..600";
552 }
553 units "seconds";
554 default "10";
555 description
556 "CNSP interval for level-1";
557 }
558
559 leaf level-2 {
560 type uint16 {
561 range "1..600";
562 }
563 units "seconds";
564 default "10";
565 description
566 "CNSP interval for level-2";
567 }
568 }
569
570 container psnp-interval {
571 description
572 "Partial Sequence Number PDU (PSNP) generation interval.";
573 leaf level-1 {
574 type uint16 {
575 range "1..120";
576 }
577 units "seconds";
578 default "2";
579 description
580 "PNSP interval for level-1";
581 }
582
583 leaf level-2 {
584 type uint16 {
585 range "1..120";
586 }
587 units "seconds";
588 default "2";
589 description
590 "PCNSP interval for level-2";
591 }
592 }
593
594 container hello {
595 description
596 "Parameters related to IS-IS hello PDUs.";
597 leaf padding {
598 type boolean;
599 default "true";
600 description
601 "Add padding to IS-IS hello PDUs.";
602 }
603
604 container interval {
605 description
606 "Interval between consecutive hello messages.";
607 leaf level-1 {
608 type uint32 {
609 range "1..600";
610 }
611 units "seconds";
612 default "3";
613 description
614 "Holding time for level-1; interval will depend on multiplier.";
615 }
616
617 leaf level-2 {
618 type uint32 {
619 range "1..600";
620 }
621 units "seconds";
622 default "3";
623 description
624 "Holding time for level-2; interval will depend on multiplier.";
625 }
626 }
627
628 container multiplier {
629 description
630 "Multiplier for the hello messages holding time.";
631 leaf level-1 {
632 type uint16 {
633 range "2..100";
634 }
635 default "10";
636 description
637 "Multiplier for the hello holding time.";
638 }
639
640 leaf level-2 {
641 type uint16 {
642 range "2..100";
643 }
644 default "10";
645 description
646 "Multiplier for the hello holding time.";
647 }
648 }
649 }
650
651 container metric {
652 description
653 "Default metric for this IS-IS circuit.";
654 leaf level-1 {
655 type uint32 {
656 range "0..16777215";
657 }
658 must ". < 64 or /frr-isisd:isis/instance[area-tag = current()/../../area-tag]/metric-style = 'wide'";
659 default "10";
660 description
661 "Default level-1 metric for this IS-IS circuit.";
662 }
663
664 leaf level-2 {
665 type uint32 {
666 range "0..16777215";
667 }
668 must ". < 64 or /frr-isisd:isis/instance[area-tag = current()/../../area-tag]/metric-style = 'wide'";
669 default "10";
670 description
671 "Default level-2 metric for this IS-IS circuit.";
672 }
673 }
674
675 container priority {
676 description
677 "Priority for Designated Router election.";
678 leaf level-1 {
679 type uint8 {
680 range "0..127";
681 }
682 default "64";
683 description
684 "Level-1 priority for this IS-IS circuit.";
685 }
686
687 leaf level-2 {
688 type uint8 {
689 range "0..127";
690 }
691 default "64";
692 description
693 "Level-2 priority for this IS-IS circuit.";
694 }
695 }
696
697 leaf network-type {
698 type network-type;
699 must "(. = \"point-to-point\") or (. = \"broadcast\")";
700 default "broadcast";
701 description
702 "Explicitly configured type of IS-IS circuit (broadcast or point-to-point).";
703 }
704
705 leaf passive {
706 type boolean;
707 default "false";
708 description
709 "Interface is in passive mode.";
710 }
711
712 container password {
713 presence "Present if a password is set for this IS interface.";
714 uses isis-password;
715 }
716
717 leaf disable-three-way-handshake {
718 type boolean;
719 default "false";
720 description
721 "Disables three-way handshake when creating new adjacencies.";
722 }
723
724 container multi-topology {
725 description
726 "IS-IS topologies configured on this circuit.";
727 leaf ipv4-unicast {
728 type boolean;
729 default "true";
730 description
731 "IPv4 unicast topology.";
732 }
733
734 leaf ipv4-multicast {
735 type boolean;
736 default "true";
737 description
738 "IPv4 multicast topology.";
739 }
740
741 leaf ipv4-management {
742 type boolean;
743 default "true";
744 description
745 "IPv4 management topology.";
746 }
747
748 leaf ipv6-unicast {
749 type boolean;
750 default "true";
751 description
752 "IPv6 unicast topology.";
753 }
754
755 leaf ipv6-multicast {
756 type boolean;
757 default "true";
758 description
759 "IPv6 multicast topology.";
760 }
761
762 leaf ipv6-management {
763 type boolean;
764 default "true";
765 description
766 "IPv6 management topology.";
767 }
768
769 leaf ipv6-dstsrc {
770 type boolean;
771 default "true";
772 description
773 "IPv6 destination-source topology.";
774 }
775 }
776
777 container mpls {
778 description
779 "Configuration of MPLS parameters";
780 leaf ldp-sync {
781 type boolean;
782 default "true";
783 description
784 "Enable MPLS LDP-Sync functionality on this circuit.";
785 }
786 leaf holddown {
787 type uint16 {
788 range "0..10000";
789 }
790 units "seconds";
791 description
792 "Time to wait for LDP-Sync to occur before restoring interface metric.";
793 }
794 }
795
796 container fast-reroute {
797 description
798 "Interface IP Fast-reroute configuration.";
799 container level-1 {
800 description
801 "Level-1 IP Fast-reroute configuration.";
802 must "./lfa/enable = 'false' or ./ti-lfa/enable = 'false'" {
803 error-message
804 "Can't enable both classic LFA and TI-LFA in the same interface.";
805 }
806 uses interface-config-lfa;
807 uses interface-config-remote-lfa;
808 uses interface-config-ti-lfa;
809 }
810 container level-2 {
811 description
812 "Level-2 IP Fast-reroute configuration.";
813 must "./lfa/enable = 'false' or ./ti-lfa/enable = 'false'" {
814 error-message
815 "Can't enable both classic LFA and TI-LFA in the same interface.";
816 }
817 uses interface-config-lfa;
818 uses interface-config-remote-lfa;
819 uses interface-config-ti-lfa;
820 }
821 }
822 }
823
824 grouping adjacency-state {
825 description
826 "Adjacency state";
827 container adjacencies {
828 config false;
829 description
830 "This container lists the adjacencies of
831 the local node.";
832 list adjacency {
833 description
834 "List of operational adjacencies.";
835 leaf neighbor-sys-type {
836 type level;
837 description
838 "Level capability of neighboring system";
839 }
840
841 leaf neighbor-sysid {
842 type system-id;
843 description
844 "The system-id of the neighbor";
845 }
846
847 leaf neighbor-extended-circuit-id {
848 type extended-circuit-id;
849 description
850 "Circuit ID of the neighbor";
851 }
852
853 leaf neighbor-snpa {
854 type snpa;
855 description
856 "SNPA of the neighbor";
857 }
858
859 leaf hold-timer {
860 type uint16;
861 units "seconds";
862 description
863 "The holding time in seconds for this
864 adjacency. This value is based on
865 received hello PDUs and the elapsed
866 time since receipt.";
867 }
868
869 leaf neighbor-priority {
870 type uint8 {
871 range "0 .. 127";
872 }
873 description
874 "Priority of the neighboring IS for becoming
875 the DIS.";
876 }
877
878 leaf state {
879 type adj-state-type;
880 description
881 "This leaf describes the state of the interface.";
882 }
883 }
884 }
885 }
886
887 grouping event-counters {
888 description
889 "Grouping for IS-IS interface event counters";
890 container event-counters {
891 config false;
892 description
893 "IS-IS interface event counters.";
894 leaf adjacency-changes {
895 type uint32;
896 description
897 "The number of times an adjacency state change has
898 occurred on this interface.";
899 }
900
901 leaf adjacency-number {
902 type uint32;
903 description
904 "The number of adjacencies on this interface.";
905 }
906
907 leaf init-fails {
908 type uint32;
909 description
910 "The number of times initialization of this
911 interface has failed. This counts events such
912 as PPP NCP failures. Failures to form an
913 adjacency are counted by adjacency-rejects.";
914 }
915
916 leaf adjacency-rejects {
917 type uint32;
918 description
919 "The number of times an adjacency has been
920 rejected on this interface.";
921 }
922
923 leaf id-len-mismatch {
924 type uint32;
925 description
926 "The number of times an IS-IS PDU with an ID
927 field length different from that for this
928 system has been received on this interface.";
929 }
930
931 leaf max-area-addresses-mismatch {
932 type uint32;
933 description
934 "The number of times an IS-IS PDU has been
935 received on this interface with the
936 max area address field differing from that of
937 this system.";
938 }
939
940 leaf authentication-type-fails {
941 type uint32;
942 description
943 "Number of authentication type mismatches.";
944 }
945
946 leaf authentication-fails {
947 type uint32;
948 description
949 "Number of authentication key failures.";
950 }
951 }
952 }
953
954 grouping interface-state {
955 description
956 "IS-IS interface operational state.";
957 uses adjacency-state;
958
959 uses event-counters;
960 }
961
962 grouping notification-instance-hdr {
963 description
964 "Instance specific IS-IS notification data grouping";
965 leaf routing-instance {
966 type string;
967 description
968 "Name of the routing-instance instance.";
969 }
970
971 leaf routing-protocol-name {
972 type string;
973 description
974 "Name of the IS-IS instance.";
975 }
976
977 leaf isis-level {
978 type level;
979 description
980 "IS-IS level of the instance.";
981 }
982 }
983
984 grouping notification-interface-hdr {
985 description
986 "Interface specific IS-IS notification data grouping";
987 leaf interface-name {
988 type frr-interface:interface-ref;
989 description
990 "IS-IS interface name";
991 }
992
993 leaf interface-level {
994 type level;
995 description
996 "IS-IS level of the interface.";
997 }
998
999 leaf extended-circuit-id {
1000 type extended-circuit-id;
1001 description
1002 "Eextended circuit-id of the interface.";
1003 }
1004 }
1005
1006 container isis {
1007 description
1008 "Configuration of the IS-IS routing daemon.";
1009 list instance {
1010 key "area-tag vrf";
1011 description
1012 "IS-IS routing instance.";
1013 leaf area-tag {
1014 type string;
1015 description
1016 "Area-tag associated to this routing instance.";
1017 }
1018
1019 leaf vrf {
1020 type frr-vrf:vrf-ref;
1021 description
1022 "VRF NAME.";
1023 }
1024
1025 leaf is-type {
1026 type level;
1027 default "level-1-2";
1028 description
1029 "Level of the IS-IS routing instance (OSI only).";
1030 }
1031
1032 leaf-list area-address {
1033 type net-address;
1034 max-elements 3;
1035 description
1036 "List of OSI NET addresses for this protocol instance.";
1037 }
1038
1039 leaf dynamic-hostname {
1040 type boolean;
1041 default "true";
1042 description
1043 "Dynamic hostname support for IS-IS.";
1044 }
1045
1046 leaf attached {
1047 type boolean;
1048 default "false";
1049 description
1050 "If true, identify as L1/L2 router for inter-area traffic.";
1051 }
1052
1053 leaf overload {
1054 type boolean;
1055 default "false";
1056 description
1057 "If true, avoid any transit traffic.";
1058 }
1059
1060 leaf metric-style {
1061 type metric-style-type;
1062 must ". = 'wide' or count(../multi-topology/*) = 0";
1063 default "wide";
1064 description
1065 "Define the style of TLVs metric supported.";
1066 }
1067
1068 leaf purge-originator {
1069 type boolean;
1070 default "false";
1071 description
1072 "Use the RFC 6232 purge-originator.";
1073 reference
1074 "RFC6232";
1075 }
1076
1077 container lsp {
1078 description
1079 "Configuration of Link-State Packets (LSP) parameters";
1080 leaf mtu {
1081 type uint16 {
1082 range "128..4352";
1083 }
1084 default "1497";
1085 description
1086 "MTU of an LSP.";
1087 }
1088
1089 container timers {
1090 description
1091 "LSP-related timers";
1092 container level-1 {
1093 description
1094 "Level-1 LSP-related timers";
1095 leaf refresh-interval {
1096 type uint16;
1097 units "seconds";
1098 default "900";
1099 description
1100 "LSP refresh interval for level-1.";
1101 }
1102
1103 leaf maximum-lifetime {
1104 type uint16 {
1105 range "350..65535";
1106 }
1107 units "seconds";
1108 must ". >= ../refresh-interval + 300";
1109 default "1200";
1110 description
1111 "Maximum LSP lifetime for level-1.";
1112 }
1113
1114 leaf generation-interval {
1115 type uint16 {
1116 range "1..120";
1117 }
1118 units "seconds";
1119 must ". < ../refresh-interval";
1120 default "30";
1121 description
1122 "Minimum time allowed before level-1 LSP retransmissions.";
1123 }
1124 }
1125
1126 container level-2 {
1127 description
1128 "Level-2 LSP-related timers";
1129 leaf refresh-interval {
1130 type uint16;
1131 units "seconds";
1132 default "900";
1133 description
1134 "LSP refresh interval for level-2.";
1135 }
1136
1137 leaf maximum-lifetime {
1138 type uint16 {
1139 range "350..65535";
1140 }
1141 units "seconds";
1142 must ". >= ../refresh-interval + 300";
1143 default "1200";
1144 description
1145 "Maximum LSP lifetime for level-2.";
1146 }
1147
1148 leaf generation-interval {
1149 type uint16 {
1150 range "1..120";
1151 }
1152 units "seconds";
1153 must ". < ../refresh-interval";
1154 default "30";
1155 description
1156 "Minimum time allowed before level-2 LSP retransmissions.";
1157 }
1158 }
1159 }
1160 }
1161
1162 container spf {
1163 description
1164 "Parameters related to the Shortest Path First algorithm.";
1165 container ietf-backoff-delay {
1166 presence "Present if IETF SPF back-off delay is enabled.";
1167 description
1168 "SPF back-off delay algorithm parameters (see RFC 8405).";
1169 leaf init-delay {
1170 type uint16 {
1171 range "0..60000";
1172 }
1173 units "msec";
1174 mandatory true;
1175 description
1176 "Delay used while in QUIET state";
1177 }
1178
1179 leaf short-delay {
1180 type uint16 {
1181 range "0..60000";
1182 }
1183 units "msec";
1184 mandatory true;
1185 description
1186 "Delay used while in SHORT_WAIT state";
1187 }
1188
1189 leaf long-delay {
1190 type uint16 {
1191 range "0..60000";
1192 }
1193 units "msec";
1194 mandatory true;
1195 description
1196 "Delay used while in LONG_WAIT state";
1197 }
1198
1199 leaf hold-down {
1200 type uint16 {
1201 range "0..60000";
1202 }
1203 units "msec";
1204 mandatory true;
1205 description
1206 "Time with no received IGP events before considering IGP stable";
1207 }
1208
1209 leaf time-to-learn {
1210 type uint16 {
1211 range "0..60000";
1212 }
1213 units "msec";
1214 mandatory true;
1215 description
1216 "Maximum duration needed to learn all the events related to a
1217 single failure";
1218 }
1219 }
1220
1221 container minimum-interval {
1222 description
1223 "Minimum interval between consecutive executions of the
1224 SPF algorithm.";
1225 leaf level-1 {
1226 type uint16 {
1227 range "1..120";
1228 }
1229 units "seconds";
1230 default "1";
1231 description
1232 "Minimum time between consecutive level-1 SPFs.";
1233 }
1234
1235 leaf level-2 {
1236 type uint16 {
1237 range "1..120";
1238 }
1239 units "seconds";
1240 default "1";
1241 description
1242 "Minimum time between consecutive level-2 SPFs.";
1243 }
1244 }
1245
1246 container prefix-priorities {
1247 description
1248 "SPF Prefix Priority configuration";
1249
1250 container critical {
1251 description
1252 "Critical prefix priority";
1253 leaf access-list-name {
1254 type access-list-ref;
1255 description
1256 "Access List to determine prefixes for
1257 this priority";
1258 }
1259 }
1260 container high {
1261 description
1262 "High prefix priority";
1263 leaf access-list-name {
1264 type access-list-ref;
1265 description
1266 "Access List to determine prefixes for
1267 this priority";
1268 }
1269 }
1270 container medium {
1271 description
1272 "Medium prefix priority";
1273 leaf access-list-name {
1274 type access-list-ref;
1275 description
1276 "Access List to determine prefixes for
1277 this priority";
1278 }
1279 }
1280 }
1281 }
1282
1283 container area-password {
1284 presence "Present if authentication is required for IS level-1.";
1285 description
1286 "Authentication password for an IS-IS area.";
1287 uses isis-area-password;
1288 }
1289
1290 container domain-password {
1291 presence "Present if authentication is required for IS level-2.";
1292 description
1293 "Authentication password for an IS-IS domain.";
1294 uses isis-area-password;
1295 }
1296
1297 container default-information-originate {
1298 description
1299 "Distribution of default information.";
1300 list ipv4 {
1301 key "level";
1302 description
1303 "Distribute default route for IPv4.";
1304 leaf level {
1305 type level;
1306 must "(. != \"level-1-2\") and ((../../../is-type = \"level-1-2\") or (. = ../../../is-type))";
1307 }
1308
1309 uses redistribute-default;
1310 }
1311
1312 list ipv6 {
1313 key "level";
1314 description
1315 "Distribute default route for IPv6.";
1316 leaf level {
1317 type level;
1318 must "(. != \"level-1-2\") and ((../../../is-type = \"level-1-2\") or (. = ../../../is-type))";
1319 }
1320
1321 uses redistribute-default;
1322 }
1323 }
1324
1325 container redistribute {
1326 description
1327 "Redistributes routes learned from other routing protocols.";
1328 list ipv4 {
1329 key "protocol level";
1330 description
1331 "IPv4 route redistribution.";
1332 leaf protocol {
1333 type frr-route-types:frr-route-types-v4;
1334 must ". != \"isis\"";
1335 description
1336 "Originating routing protocol for the IPv4 routes.";
1337 }
1338
1339 leaf level {
1340 type level;
1341 must "(. != \"level-1-2\") and ((../../../is-type = \"level-1-2\") or (. = ../../../is-type))";
1342 description
1343 "IS-IS level into which the routes should be redistributed.";
1344 }
1345
1346 uses redistribute-attributes;
1347 }
1348
1349 list ipv6 {
1350 key "protocol level";
1351 description
1352 "IPv6 route redistribution.";
1353 leaf protocol {
1354 type frr-route-types:frr-route-types-v6;
1355 must ". != \"isis\"";
1356 description
1357 "Originating routing protocol for the IPv6 routes.";
1358 }
1359
1360 leaf level {
1361 type level;
1362 must "(. != \"level-1-2\") and ((../../../is-type = \"level-1-2\") or (. = ../../../is-type))";
1363 description
1364 "IS-IS level into which the routes should be redistributed.";
1365 }
1366
1367 uses redistribute-attributes;
1368 }
1369 }
1370
1371 container multi-topology {
1372 description
1373 "IS-IS topologies configured for this area.";
1374 container ipv4-multicast {
1375 presence "Present if a separate IPv4-multicast topology is configured for this area.";
1376 description
1377 "IPv4 multicast topology.";
1378 leaf overload {
1379 type boolean;
1380 default "false";
1381 }
1382 }
1383
1384 container ipv4-management {
1385 presence "Present if a separate IPv4-management topology is configured for this area.";
1386 description
1387 "IPv4 management topology.";
1388 leaf overload {
1389 type boolean;
1390 default "false";
1391 }
1392 }
1393
1394 container ipv6-unicast {
1395 presence "Present if a separate IPv6-unicast topology is configured for this area.";
1396 description
1397 "IPv6 unicast topology.";
1398 leaf overload {
1399 type boolean;
1400 default "false";
1401 }
1402 }
1403
1404 container ipv6-multicast {
1405 presence "Present if a separate IPv6-multicast topology is configured for this area.";
1406 description
1407 "IPv6 multicast topology.";
1408 leaf overload {
1409 type boolean;
1410 default "false";
1411 }
1412 }
1413
1414 container ipv6-management {
1415 presence "Present if a separate IPv6-management topology is configured for this area.";
1416 description
1417 "IPv6 management topology.";
1418 leaf overload {
1419 type boolean;
1420 default "false";
1421 }
1422 }
1423
1424 container ipv6-dstsrc {
1425 presence "Present if a separate IPv6 destination-source topology is configured for this area.";
1426 description
1427 "IPv6 destination-source topology.";
1428 leaf overload {
1429 type boolean;
1430 default "false";
1431 }
1432 }
1433 }
1434
1435 container fast-reroute {
1436 description
1437 "IP Fast-reroute configuration.";
1438 container level-1 {
1439 description
1440 "Level-1 IP Fast-reroute configuration.";
1441 uses global-config-lfa;
1442 uses global-config-remote-lfa;
1443 }
1444 container level-2 {
1445 description
1446 "Level-2 IP Fast-reroute configuration.";
1447 uses global-config-lfa;
1448 uses global-config-remote-lfa;
1449 }
1450 }
1451
1452 leaf log-adjacency-changes {
1453 type boolean;
1454 default "false";
1455 description
1456 "Log changes to the IS-IS adjacencies in this area.";
1457 }
1458
1459 container mpls-te {
1460 presence "Present if MPLS-TE is enabled.";
1461 description
1462 "Enable MPLS-TE functionality.";
1463 leaf router-address {
1464 type inet:ipv4-address;
1465 description
1466 "Stable IP address of the advertising router.";
1467 }
1468 }
1469
1470 container segment-routing {
1471 description
1472 "Segment Routing global configuration.";
1473 leaf enabled {
1474 type boolean;
1475 default "false";
1476 description
1477 "Enables segment-routing protocol extensions.";
1478 }
1479 container srgb {
1480 description
1481 "Global blocks to be advertised.";
1482 must "./upper-bound > ./lower-bound";
1483 leaf lower-bound {
1484 type uint32;
1485 default "16000";
1486 description
1487 "Lower value in the label range.";
1488 }
1489 leaf upper-bound {
1490 type uint32;
1491 default "23999";
1492 description
1493 "Upper value in the label range.";
1494 }
1495 }
1496 container srlb {
1497 description
1498 "Local blocks to be advertised.";
1499 must "./upper-bound > ./lower-bound";
1500 leaf lower-bound {
1501 type uint32;
1502 default "15000";
1503 description
1504 "Lower value in the label range.";
1505 }
1506 leaf upper-bound {
1507 type uint32;
1508 default "15999";
1509 description
1510 "Upper value in the label range.";
1511 }
1512 }
1513 container msd {
1514 description
1515 "MSD configuration.";
1516 leaf node-msd {
1517 type uint8;
1518 description
1519 "Node MSD is the lowest MSD supported by the node.";
1520 }
1521 }
1522 container prefix-sid-map {
1523 description
1524 "Prefix SID configuration.";
1525 list prefix-sid {
1526 key "prefix";
1527 unique "sid-value-type sid-value";
1528 description
1529 "List of prefix SID mapped to IPv4/IPv6
1530 local prefixes.";
1531 leaf prefix {
1532 type inet:ip-prefix;
1533 description
1534 "Connected prefix sid.";
1535 }
1536 leaf sid-value-type {
1537 type enumeration {
1538 enum "index" {
1539 value 0;
1540 description
1541 "The value will be interpreted as an index.";
1542 }
1543 enum "absolute" {
1544 value 1;
1545 description
1546 "The value will become interpreted as an absolute
1547 value.";
1548 }
1549 }
1550 default "index";
1551 description
1552 "This leaf defines how value must be interpreted.";
1553 }
1554 leaf sid-value {
1555 type uint32;
1556 mandatory true;
1557 description
1558 "Value associated with prefix. The value must be
1559 interpreted in the context of sid-value-type.";
1560 }
1561 leaf last-hop-behavior {
1562 type enumeration {
1563 enum "explicit-null" {
1564 value 0;
1565 description
1566 "Use explicit-null for the SID.";
1567 }
1568 enum "no-php" {
1569 value 1;
1570 description
1571 "Do not use Penultimate Hop Popping (PHP)
1572 for the SID.";
1573 }
1574 enum "php" {
1575 value 2;
1576 description
1577 "Use PHP for the SID.";
1578 }
1579 }
1580 default "php";
1581 description
1582 "Configure last hop behavior.";
1583 }
1584 leaf n-flag-clear {
1585 type boolean;
1586 default "false";
1587 description
1588 "Not a node SID";
1589 }
1590 }
1591 }
1592 }
1593
1594 container mpls {
1595 description
1596 "Configuration of MPLS parameters";
1597 container ldp-sync {
1598 presence "Present if MPLS LDP-Sync is enabled.";
1599 description
1600 "Enable MPLS LDP-Sync functionality.";
1601 leaf holddown {
1602 type uint16 {
1603 range "0..10000";
1604 }
1605 units "seconds";
1606 default "0";
1607 description
1608 "Time to wait for LDP-Sync to occur before restoring interface metric.";
1609 }
1610 }
1611 }
1612
1613 }
1614 }
1615
1616 augment "/frr-interface:lib/frr-interface:interface" {
1617 description
1618 "Extends interface model with IS-IS related parameters.";
1619 container isis {
1620 presence "Present if an IS-IS circuit is defined for this interface.";
1621 description
1622 "IS-IS interface parameters.";
1623 uses interface-config;
1624 }
1625 }
1626
1627 augment "/frr-interface:lib/frr-interface:interface/frr-interface:state" {
1628 description
1629 "Extends interface model with IS-IS operational data.";
1630 container isis {
1631 presence "Present if an IS-IS circuit is defined for this interface.";
1632 description
1633 "IS-IS interface operational data.";
1634
1635 uses interface-state;
1636 }
1637 }
1638
1639 notification database-overload {
1640 description
1641 "This notification is sent when an IS-IS instance
1642 overload state changes.";
1643 uses notification-instance-hdr;
1644
1645 leaf overload {
1646 type enumeration {
1647 enum "off" {
1648 value 0;
1649 description
1650 "Indicates IS-IS instance has left overload state";
1651 }
1652 enum "on" {
1653 value 1;
1654 description
1655 "Indicates IS-IS instance has entered overload state";
1656 }
1657 }
1658 description
1659 "New overload state of the IS-IS instance";
1660 }
1661 }
1662
1663 notification lsp-too-large {
1664 description
1665 "This notification is sent when we attempt to propagate
1666 an LSP that is larger than the dataLinkBlockSize for the
1667 circuit. The notification generation must be throttled
1668 with at least 5 seconds between successive
1669 notifications.";
1670 uses notification-instance-hdr;
1671
1672 uses notification-interface-hdr;
1673
1674 leaf pdu-size {
1675 type uint32;
1676 description
1677 "Size of the LSP PDU";
1678 }
1679
1680 leaf lsp-id {
1681 type lsp-id;
1682 description
1683 "LSP ID";
1684 }
1685 }
1686
1687 notification if-state-change {
1688 description
1689 "This notification is sent when an interface
1690 state change is detected.";
1691 uses notification-instance-hdr;
1692
1693 uses notification-interface-hdr;
1694
1695 leaf state {
1696 type if-state-type;
1697 description
1698 "Interface state.";
1699 }
1700 }
1701
1702 notification corrupted-lsp-detected {
1703 description
1704 "This notification is sent when we find that
1705 an LSP that was stored in memory has become
1706 corrupted.";
1707 uses notification-instance-hdr;
1708
1709 leaf lsp-id {
1710 type lsp-id;
1711 description
1712 "LSP ID";
1713 }
1714 }
1715
1716 notification attempt-to-exceed-max-sequence {
1717 description
1718 "This notification is sent when the system
1719 wraps the 32-bit sequence counter of an LSP.";
1720 uses notification-instance-hdr;
1721
1722 leaf lsp-id {
1723 type lsp-id;
1724 description
1725 "LSP ID";
1726 }
1727 }
1728
1729 notification id-len-mismatch {
1730 description
1731 "This notification is sent when we receive a PDU
1732 with a different value for the System ID length.
1733 The notification generation must be throttled
1734 with at least 5 seconds between successive
1735 notifications.";
1736 uses notification-instance-hdr;
1737
1738 uses notification-interface-hdr;
1739
1740 leaf pdu-field-len {
1741 type uint8;
1742 description
1743 "Size of the ID length in the received PDU";
1744 }
1745
1746 leaf raw-pdu {
1747 type binary;
1748 description
1749 "Received raw PDU.";
1750 }
1751 }
1752
1753 notification max-area-addresses-mismatch {
1754 description
1755 "This notification is sent when we receive a PDU
1756 with a different value for the Maximum Area Addresses.
1757 The notification generation must be throttled
1758 with at least 5 seconds between successive
1759 notifications.";
1760 uses notification-instance-hdr;
1761
1762 uses notification-interface-hdr;
1763
1764 leaf max-area-addresses {
1765 type uint8;
1766 description
1767 "Received number of supported areas";
1768 }
1769
1770 leaf raw-pdu {
1771 type binary;
1772 description
1773 "Received raw PDU.";
1774 }
1775 }
1776
1777 notification own-lsp-purge {
1778 description
1779 "This notification is sent when the system receives
1780 a PDU with its own system ID and zero age.";
1781 uses notification-instance-hdr;
1782
1783 uses notification-interface-hdr;
1784
1785 leaf lsp-id {
1786 type lsp-id;
1787 description
1788 "LSP ID";
1789 }
1790 }
1791
1792 notification sequence-number-skipped {
1793 description
1794 "This notification is sent when the system receives a
1795 PDU with its own system ID and different contents. The
1796 system has to reoriginate the LSP with a higher sequence
1797 number.";
1798 uses notification-instance-hdr;
1799
1800 uses notification-interface-hdr;
1801
1802 leaf lsp-id {
1803 type lsp-id;
1804 description
1805 "LSP ID";
1806 }
1807 }
1808
1809 notification authentication-type-failure {
1810 description
1811 "This notification is sent when the system receives a
1812 PDU with the wrong authentication type field.
1813 The notification generation must be throttled
1814 with at least 5 seconds between successive
1815 notifications.";
1816 uses notification-instance-hdr;
1817
1818 uses notification-interface-hdr;
1819
1820 leaf raw-pdu {
1821 type binary;
1822 description
1823 "Received raw PDU.";
1824 }
1825 }
1826
1827 notification authentication-failure {
1828 description
1829 "This notification is sent when the system receives
1830 a PDU with the wrong authentication information.
1831 The notification generation must be throttled with
1832 with at least 5 seconds between successive
1833 notifications.";
1834 uses notification-instance-hdr;
1835
1836 uses notification-interface-hdr;
1837
1838 leaf raw-pdu {
1839 type binary;
1840 description
1841 "Received raw PDU.";
1842 }
1843 }
1844
1845 notification version-skew {
1846 description
1847 "This notification is sent when the system receives a
1848 PDU with a different protocol version number.
1849 The notification generation must be throttled
1850 with at least 5 seconds between successive
1851 notifications.";
1852 uses notification-instance-hdr;
1853
1854 uses notification-interface-hdr;
1855
1856 leaf protocol-version {
1857 type uint8;
1858 description
1859 "Protocol version received in the PDU.";
1860 }
1861
1862 leaf raw-pdu {
1863 type binary;
1864 description
1865 "Received raw PDU.";
1866 }
1867 }
1868
1869 notification area-mismatch {
1870 description
1871 "This notification is sent when the system receives a
1872 Hello PDU from an IS that does not share any area
1873 address. The notification generation must be throttled
1874 with at least 5 seconds between successive
1875 notifications.";
1876 uses notification-instance-hdr;
1877
1878 uses notification-interface-hdr;
1879
1880 leaf raw-pdu {
1881 type binary;
1882 description
1883 "Received raw PDU.";
1884 }
1885 }
1886
1887 notification rejected-adjacency {
1888 description
1889 "This notification is sent when the system receives a
1890 Hello PDU from an IS but does not establish an adjacency
1891 for some reason. The notification generation must be
1892 throttled with at least 5 seconds between successive
1893 notifications.";
1894 uses notification-instance-hdr;
1895
1896 uses notification-interface-hdr;
1897
1898 leaf raw-pdu {
1899 type binary;
1900 description
1901 "Received raw PDU.";
1902 }
1903
1904 leaf reason {
1905 type string;
1906 description
1907 "The system may provide a reason to reject the
1908 adjacency. If the reason is not available,
1909 an empty string will be returned.";
1910 }
1911 }
1912
1913 notification lsp-error-detected {
1914 description
1915 "This notification is sent when the system receives an
1916 LSP with a parse error. The notification generation must
1917 be throttled with at least 5 seconds between successive
1918 notifications.";
1919 uses notification-instance-hdr;
1920
1921 uses notification-interface-hdr;
1922
1923 leaf lsp-id {
1924 type lsp-id;
1925 description
1926 "LSP ID.";
1927 }
1928
1929 leaf raw-pdu {
1930 type binary;
1931 description
1932 "Received raw PDU.";
1933 }
1934
1935 leaf error-offset {
1936 type uint32;
1937 description
1938 "If the problem is a malformed TLV, the error-offset
1939 points to the start of the TLV. If the problem is with
1940 the LSP header, the error-offset points to the errant
1941 byte";
1942 }
1943
1944 leaf tlv-type {
1945 type uint8;
1946 description
1947 "If the problem is a malformed TLV, the tlv-type is set
1948 to the type value of the suspicious TLV. Otherwise,
1949 this leaf is not present.";
1950 }
1951 }
1952
1953 notification adjacency-state-change {
1954 description
1955 "This notification is sent when an IS-IS adjacency
1956 moves to Up state or to Down state.";
1957 uses notification-instance-hdr;
1958
1959 uses notification-interface-hdr;
1960
1961 leaf neighbor {
1962 type string;
1963 description
1964 "Name of the neighbor. If the name of the neighbor is
1965 not available, it is not returned.";
1966 }
1967
1968 leaf neighbor-system-id {
1969 type system-id;
1970 description
1971 "Neighbor system-id";
1972 }
1973
1974 leaf state {
1975 type adj-state-type;
1976 description
1977 "New state of the IS-IS adjacency.";
1978 }
1979
1980 leaf reason {
1981 type string;
1982 description
1983 "If the adjacency is going to DOWN, this leaf provides
1984 a reason for the adjacency going down. The reason is
1985 provided as a text. If the adjacency is going to UP, no
1986 reason is provided.";
1987 }
1988 }
1989
1990 notification lsp-received {
1991 description
1992 "This notification is sent when an LSP is received.
1993 The notification generation must be throttled with at
1994 least 5 seconds between successive notifications.";
1995 uses notification-instance-hdr;
1996
1997 uses notification-interface-hdr;
1998
1999 leaf lsp-id {
2000 type lsp-id;
2001 description
2002 "LSP ID";
2003 }
2004
2005 leaf sequence {
2006 type uint32;
2007 description
2008 "Sequence number of the received LSP.";
2009 }
2010
2011 leaf received-timestamp {
2012 type yang:timestamp;
2013 description
2014 "Timestamp when the LSP was received.";
2015 }
2016
2017 leaf neighbor-system-id {
2018 type system-id;
2019 description
2020 "Neighbor system-id of LSP sender";
2021 }
2022 }
2023
2024 notification lsp-generation {
2025 description
2026 "This notification is sent when an LSP is regenerated.
2027 The notification generation must be throttled with at
2028 least 5 seconds between successive notifications.";
2029 uses notification-instance-hdr;
2030
2031 leaf lsp-id {
2032 type lsp-id;
2033 description
2034 "LSP ID";
2035 }
2036
2037 leaf sequence {
2038 type uint32;
2039 description
2040 "Sequence number of the received LSP.";
2041 }
2042
2043 leaf send-timestamp {
2044 type yang:timestamp;
2045 description
2046 "Timestamp when our LSP was regenerated.";
2047 }
2048 }
2049 }