]> git.proxmox.com Git - mirror_frr.git/blob - yang/frr-isisd.yang
Merge pull request #7946 from ckishimo/ospfv3_json_2
[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 attach-send {
1047 type boolean;
1048 default "true";
1049 description
1050 "If true, attached bits are sent in LSP if L1/L2 router for inter-area traffic.";
1051 }
1052
1053 leaf attach-receive-ignore {
1054 type boolean;
1055 default "false";
1056 description
1057 "If false, attached bits received in LSP, cause default route add, if L1 router for inter-area traffic.";
1058 }
1059
1060 leaf attached {
1061 type boolean;
1062 default "false";
1063 status deprecated;
1064 description
1065 "If true, identify as L1/L2 router for inter-area traffic.";
1066 }
1067
1068 leaf overload {
1069 type boolean;
1070 default "false";
1071 description
1072 "If true, avoid any transit traffic.";
1073 }
1074
1075 leaf metric-style {
1076 type metric-style-type;
1077 must ". = 'wide' or count(../multi-topology/*) = 0";
1078 default "wide";
1079 description
1080 "Define the style of TLVs metric supported.";
1081 }
1082
1083 leaf purge-originator {
1084 type boolean;
1085 default "false";
1086 description
1087 "Use the RFC 6232 purge-originator.";
1088 reference
1089 "RFC6232";
1090 }
1091
1092 container lsp {
1093 description
1094 "Configuration of Link-State Packets (LSP) parameters";
1095 leaf mtu {
1096 type uint16 {
1097 range "128..4352";
1098 }
1099 default "1497";
1100 description
1101 "MTU of an LSP.";
1102 }
1103
1104 container timers {
1105 description
1106 "LSP-related timers";
1107 container level-1 {
1108 description
1109 "Level-1 LSP-related timers";
1110 leaf refresh-interval {
1111 type uint16;
1112 units "seconds";
1113 default "900";
1114 description
1115 "LSP refresh interval for level-1.";
1116 }
1117
1118 leaf maximum-lifetime {
1119 type uint16 {
1120 range "350..65535";
1121 }
1122 units "seconds";
1123 must ". >= ../refresh-interval + 300";
1124 default "1200";
1125 description
1126 "Maximum LSP lifetime for level-1.";
1127 }
1128
1129 leaf generation-interval {
1130 type uint16 {
1131 range "1..120";
1132 }
1133 units "seconds";
1134 must ". < ../refresh-interval";
1135 default "30";
1136 description
1137 "Minimum time allowed before level-1 LSP retransmissions.";
1138 }
1139 }
1140
1141 container level-2 {
1142 description
1143 "Level-2 LSP-related timers";
1144 leaf refresh-interval {
1145 type uint16;
1146 units "seconds";
1147 default "900";
1148 description
1149 "LSP refresh interval for level-2.";
1150 }
1151
1152 leaf maximum-lifetime {
1153 type uint16 {
1154 range "350..65535";
1155 }
1156 units "seconds";
1157 must ". >= ../refresh-interval + 300";
1158 default "1200";
1159 description
1160 "Maximum LSP lifetime for level-2.";
1161 }
1162
1163 leaf generation-interval {
1164 type uint16 {
1165 range "1..120";
1166 }
1167 units "seconds";
1168 must ". < ../refresh-interval";
1169 default "30";
1170 description
1171 "Minimum time allowed before level-2 LSP retransmissions.";
1172 }
1173 }
1174 }
1175 }
1176
1177 container spf {
1178 description
1179 "Parameters related to the Shortest Path First algorithm.";
1180 container ietf-backoff-delay {
1181 presence "Present if IETF SPF back-off delay is enabled.";
1182 description
1183 "SPF back-off delay algorithm parameters (see RFC 8405).";
1184 leaf init-delay {
1185 type uint16 {
1186 range "0..60000";
1187 }
1188 units "msec";
1189 mandatory true;
1190 description
1191 "Delay used while in QUIET state";
1192 }
1193
1194 leaf short-delay {
1195 type uint16 {
1196 range "0..60000";
1197 }
1198 units "msec";
1199 mandatory true;
1200 description
1201 "Delay used while in SHORT_WAIT state";
1202 }
1203
1204 leaf long-delay {
1205 type uint16 {
1206 range "0..60000";
1207 }
1208 units "msec";
1209 mandatory true;
1210 description
1211 "Delay used while in LONG_WAIT state";
1212 }
1213
1214 leaf hold-down {
1215 type uint16 {
1216 range "0..60000";
1217 }
1218 units "msec";
1219 mandatory true;
1220 description
1221 "Time with no received IGP events before considering IGP stable";
1222 }
1223
1224 leaf time-to-learn {
1225 type uint16 {
1226 range "0..60000";
1227 }
1228 units "msec";
1229 mandatory true;
1230 description
1231 "Maximum duration needed to learn all the events related to a
1232 single failure";
1233 }
1234 }
1235
1236 container minimum-interval {
1237 description
1238 "Minimum interval between consecutive executions of the
1239 SPF algorithm.";
1240 leaf level-1 {
1241 type uint16 {
1242 range "1..120";
1243 }
1244 units "seconds";
1245 default "1";
1246 description
1247 "Minimum time between consecutive level-1 SPFs.";
1248 }
1249
1250 leaf level-2 {
1251 type uint16 {
1252 range "1..120";
1253 }
1254 units "seconds";
1255 default "1";
1256 description
1257 "Minimum time between consecutive level-2 SPFs.";
1258 }
1259 }
1260
1261 container prefix-priorities {
1262 description
1263 "SPF Prefix Priority configuration";
1264
1265 container critical {
1266 description
1267 "Critical prefix priority";
1268 leaf access-list-name {
1269 type access-list-ref;
1270 description
1271 "Access List to determine prefixes for
1272 this priority";
1273 }
1274 }
1275 container high {
1276 description
1277 "High prefix priority";
1278 leaf access-list-name {
1279 type access-list-ref;
1280 description
1281 "Access List to determine prefixes for
1282 this priority";
1283 }
1284 }
1285 container medium {
1286 description
1287 "Medium prefix priority";
1288 leaf access-list-name {
1289 type access-list-ref;
1290 description
1291 "Access List to determine prefixes for
1292 this priority";
1293 }
1294 }
1295 }
1296 }
1297
1298 container area-password {
1299 presence "Present if authentication is required for IS level-1.";
1300 description
1301 "Authentication password for an IS-IS area.";
1302 uses isis-area-password;
1303 }
1304
1305 container domain-password {
1306 presence "Present if authentication is required for IS level-2.";
1307 description
1308 "Authentication password for an IS-IS domain.";
1309 uses isis-area-password;
1310 }
1311
1312 container default-information-originate {
1313 description
1314 "Distribution of default information.";
1315 list ipv4 {
1316 key "level";
1317 description
1318 "Distribute default route for IPv4.";
1319 leaf level {
1320 type level;
1321 must "(. != \"level-1-2\") and ((../../../is-type = \"level-1-2\") or (. = ../../../is-type))";
1322 }
1323
1324 uses redistribute-default;
1325 }
1326
1327 list ipv6 {
1328 key "level";
1329 description
1330 "Distribute default route for IPv6.";
1331 leaf level {
1332 type level;
1333 must "(. != \"level-1-2\") and ((../../../is-type = \"level-1-2\") or (. = ../../../is-type))";
1334 }
1335
1336 uses redistribute-default;
1337 }
1338 }
1339
1340 container redistribute {
1341 description
1342 "Redistributes routes learned from other routing protocols.";
1343 list ipv4 {
1344 key "protocol level";
1345 description
1346 "IPv4 route redistribution.";
1347 leaf protocol {
1348 type frr-route-types:frr-route-types-v4;
1349 must ". != \"isis\"";
1350 description
1351 "Originating routing protocol for the IPv4 routes.";
1352 }
1353
1354 leaf level {
1355 type level;
1356 must "(. != \"level-1-2\") and ((../../../is-type = \"level-1-2\") or (. = ../../../is-type))";
1357 description
1358 "IS-IS level into which the routes should be redistributed.";
1359 }
1360
1361 uses redistribute-attributes;
1362 }
1363
1364 list ipv6 {
1365 key "protocol level";
1366 description
1367 "IPv6 route redistribution.";
1368 leaf protocol {
1369 type frr-route-types:frr-route-types-v6;
1370 must ". != \"isis\"";
1371 description
1372 "Originating routing protocol for the IPv6 routes.";
1373 }
1374
1375 leaf level {
1376 type level;
1377 must "(. != \"level-1-2\") and ((../../../is-type = \"level-1-2\") or (. = ../../../is-type))";
1378 description
1379 "IS-IS level into which the routes should be redistributed.";
1380 }
1381
1382 uses redistribute-attributes;
1383 }
1384 }
1385
1386 container multi-topology {
1387 description
1388 "IS-IS topologies configured for this area.";
1389 container ipv4-multicast {
1390 presence "Present if a separate IPv4-multicast topology is configured for this area.";
1391 description
1392 "IPv4 multicast topology.";
1393 leaf overload {
1394 type boolean;
1395 default "false";
1396 }
1397 }
1398
1399 container ipv4-management {
1400 presence "Present if a separate IPv4-management topology is configured for this area.";
1401 description
1402 "IPv4 management topology.";
1403 leaf overload {
1404 type boolean;
1405 default "false";
1406 }
1407 }
1408
1409 container ipv6-unicast {
1410 presence "Present if a separate IPv6-unicast topology is configured for this area.";
1411 description
1412 "IPv6 unicast topology.";
1413 leaf overload {
1414 type boolean;
1415 default "false";
1416 }
1417 }
1418
1419 container ipv6-multicast {
1420 presence "Present if a separate IPv6-multicast topology is configured for this area.";
1421 description
1422 "IPv6 multicast topology.";
1423 leaf overload {
1424 type boolean;
1425 default "false";
1426 }
1427 }
1428
1429 container ipv6-management {
1430 presence "Present if a separate IPv6-management topology is configured for this area.";
1431 description
1432 "IPv6 management topology.";
1433 leaf overload {
1434 type boolean;
1435 default "false";
1436 }
1437 }
1438
1439 container ipv6-dstsrc {
1440 presence "Present if a separate IPv6 destination-source topology is configured for this area.";
1441 description
1442 "IPv6 destination-source topology.";
1443 leaf overload {
1444 type boolean;
1445 default "false";
1446 }
1447 }
1448 }
1449
1450 container fast-reroute {
1451 description
1452 "IP Fast-reroute configuration.";
1453 container level-1 {
1454 description
1455 "Level-1 IP Fast-reroute configuration.";
1456 uses global-config-lfa;
1457 uses global-config-remote-lfa;
1458 }
1459 container level-2 {
1460 description
1461 "Level-2 IP Fast-reroute configuration.";
1462 uses global-config-lfa;
1463 uses global-config-remote-lfa;
1464 }
1465 }
1466
1467 leaf log-adjacency-changes {
1468 type boolean;
1469 default "false";
1470 description
1471 "Log changes to the IS-IS adjacencies in this area.";
1472 }
1473
1474 container mpls-te {
1475 presence "Present if MPLS-TE is enabled.";
1476 description
1477 "Enable MPLS-TE functionality.";
1478 leaf router-address {
1479 type inet:ipv4-address;
1480 description
1481 "Stable IP address of the advertising router.";
1482 }
1483 }
1484
1485 container segment-routing {
1486 description
1487 "Segment Routing global configuration.";
1488 leaf enabled {
1489 type boolean;
1490 default "false";
1491 description
1492 "Enables segment-routing protocol extensions.";
1493 }
1494 container srgb {
1495 description
1496 "Global blocks to be advertised.";
1497 must "./upper-bound > ./lower-bound";
1498 leaf lower-bound {
1499 type uint32;
1500 default "16000";
1501 description
1502 "Lower value in the label range.";
1503 }
1504 leaf upper-bound {
1505 type uint32;
1506 default "23999";
1507 description
1508 "Upper value in the label range.";
1509 }
1510 }
1511 container srlb {
1512 description
1513 "Local blocks to be advertised.";
1514 must "./upper-bound > ./lower-bound";
1515 leaf lower-bound {
1516 type uint32;
1517 default "15000";
1518 description
1519 "Lower value in the label range.";
1520 }
1521 leaf upper-bound {
1522 type uint32;
1523 default "15999";
1524 description
1525 "Upper value in the label range.";
1526 }
1527 }
1528 container msd {
1529 description
1530 "MSD configuration.";
1531 leaf node-msd {
1532 type uint8;
1533 description
1534 "Node MSD is the lowest MSD supported by the node.";
1535 }
1536 }
1537 container prefix-sid-map {
1538 description
1539 "Prefix SID configuration.";
1540 list prefix-sid {
1541 key "prefix";
1542 unique "sid-value-type sid-value";
1543 description
1544 "List of prefix SID mapped to IPv4/IPv6
1545 local prefixes.";
1546 leaf prefix {
1547 type inet:ip-prefix;
1548 description
1549 "Connected prefix sid.";
1550 }
1551 leaf sid-value-type {
1552 type enumeration {
1553 enum "index" {
1554 value 0;
1555 description
1556 "The value will be interpreted as an index.";
1557 }
1558 enum "absolute" {
1559 value 1;
1560 description
1561 "The value will become interpreted as an absolute
1562 value.";
1563 }
1564 }
1565 default "index";
1566 description
1567 "This leaf defines how value must be interpreted.";
1568 }
1569 leaf sid-value {
1570 type uint32;
1571 mandatory true;
1572 description
1573 "Value associated with prefix. The value must be
1574 interpreted in the context of sid-value-type.";
1575 }
1576 leaf last-hop-behavior {
1577 type enumeration {
1578 enum "explicit-null" {
1579 value 0;
1580 description
1581 "Use explicit-null for the SID.";
1582 }
1583 enum "no-php" {
1584 value 1;
1585 description
1586 "Do not use Penultimate Hop Popping (PHP)
1587 for the SID.";
1588 }
1589 enum "php" {
1590 value 2;
1591 description
1592 "Use PHP for the SID.";
1593 }
1594 }
1595 default "php";
1596 description
1597 "Configure last hop behavior.";
1598 }
1599 leaf n-flag-clear {
1600 type boolean;
1601 default "false";
1602 description
1603 "Not a node SID";
1604 }
1605 }
1606 }
1607 }
1608
1609 container mpls {
1610 description
1611 "Configuration of MPLS parameters";
1612 container ldp-sync {
1613 presence "Present if MPLS LDP-Sync is enabled.";
1614 description
1615 "Enable MPLS LDP-Sync functionality.";
1616 leaf holddown {
1617 type uint16 {
1618 range "0..10000";
1619 }
1620 units "seconds";
1621 default "0";
1622 description
1623 "Time to wait for LDP-Sync to occur before restoring interface metric.";
1624 }
1625 }
1626 }
1627
1628 }
1629 }
1630
1631 augment "/frr-interface:lib/frr-interface:interface" {
1632 description
1633 "Extends interface model with IS-IS related parameters.";
1634 container isis {
1635 presence "Present if an IS-IS circuit is defined for this interface.";
1636 description
1637 "IS-IS interface parameters.";
1638 uses interface-config;
1639 }
1640 }
1641
1642 augment "/frr-interface:lib/frr-interface:interface/frr-interface:state" {
1643 description
1644 "Extends interface model with IS-IS operational data.";
1645 container isis {
1646 presence "Present if an IS-IS circuit is defined for this interface.";
1647 description
1648 "IS-IS interface operational data.";
1649
1650 uses interface-state;
1651 }
1652 }
1653
1654 notification database-overload {
1655 description
1656 "This notification is sent when an IS-IS instance
1657 overload state changes.";
1658 uses notification-instance-hdr;
1659
1660 leaf overload {
1661 type enumeration {
1662 enum "off" {
1663 value 0;
1664 description
1665 "Indicates IS-IS instance has left overload state";
1666 }
1667 enum "on" {
1668 value 1;
1669 description
1670 "Indicates IS-IS instance has entered overload state";
1671 }
1672 }
1673 description
1674 "New overload state of the IS-IS instance";
1675 }
1676 }
1677
1678 notification lsp-too-large {
1679 description
1680 "This notification is sent when we attempt to propagate
1681 an LSP that is larger than the dataLinkBlockSize for the
1682 circuit. The notification generation must be throttled
1683 with at least 5 seconds between successive
1684 notifications.";
1685 uses notification-instance-hdr;
1686
1687 uses notification-interface-hdr;
1688
1689 leaf pdu-size {
1690 type uint32;
1691 description
1692 "Size of the LSP PDU";
1693 }
1694
1695 leaf lsp-id {
1696 type lsp-id;
1697 description
1698 "LSP ID";
1699 }
1700 }
1701
1702 notification if-state-change {
1703 description
1704 "This notification is sent when an interface
1705 state change is detected.";
1706 uses notification-instance-hdr;
1707
1708 uses notification-interface-hdr;
1709
1710 leaf state {
1711 type if-state-type;
1712 description
1713 "Interface state.";
1714 }
1715 }
1716
1717 notification corrupted-lsp-detected {
1718 description
1719 "This notification is sent when we find that
1720 an LSP that was stored in memory has become
1721 corrupted.";
1722 uses notification-instance-hdr;
1723
1724 leaf lsp-id {
1725 type lsp-id;
1726 description
1727 "LSP ID";
1728 }
1729 }
1730
1731 notification attempt-to-exceed-max-sequence {
1732 description
1733 "This notification is sent when the system
1734 wraps the 32-bit sequence counter of an LSP.";
1735 uses notification-instance-hdr;
1736
1737 leaf lsp-id {
1738 type lsp-id;
1739 description
1740 "LSP ID";
1741 }
1742 }
1743
1744 notification id-len-mismatch {
1745 description
1746 "This notification is sent when we receive a PDU
1747 with a different value for the System ID length.
1748 The notification generation must be throttled
1749 with at least 5 seconds between successive
1750 notifications.";
1751 uses notification-instance-hdr;
1752
1753 uses notification-interface-hdr;
1754
1755 leaf pdu-field-len {
1756 type uint8;
1757 description
1758 "Size of the ID length in the received PDU";
1759 }
1760
1761 leaf raw-pdu {
1762 type binary;
1763 description
1764 "Received raw PDU.";
1765 }
1766 }
1767
1768 notification max-area-addresses-mismatch {
1769 description
1770 "This notification is sent when we receive a PDU
1771 with a different value for the Maximum Area Addresses.
1772 The notification generation must be throttled
1773 with at least 5 seconds between successive
1774 notifications.";
1775 uses notification-instance-hdr;
1776
1777 uses notification-interface-hdr;
1778
1779 leaf max-area-addresses {
1780 type uint8;
1781 description
1782 "Received number of supported areas";
1783 }
1784
1785 leaf raw-pdu {
1786 type binary;
1787 description
1788 "Received raw PDU.";
1789 }
1790 }
1791
1792 notification own-lsp-purge {
1793 description
1794 "This notification is sent when the system receives
1795 a PDU with its own system ID and zero age.";
1796 uses notification-instance-hdr;
1797
1798 uses notification-interface-hdr;
1799
1800 leaf lsp-id {
1801 type lsp-id;
1802 description
1803 "LSP ID";
1804 }
1805 }
1806
1807 notification sequence-number-skipped {
1808 description
1809 "This notification is sent when the system receives a
1810 PDU with its own system ID and different contents. The
1811 system has to reoriginate the LSP with a higher sequence
1812 number.";
1813 uses notification-instance-hdr;
1814
1815 uses notification-interface-hdr;
1816
1817 leaf lsp-id {
1818 type lsp-id;
1819 description
1820 "LSP ID";
1821 }
1822 }
1823
1824 notification authentication-type-failure {
1825 description
1826 "This notification is sent when the system receives a
1827 PDU with the wrong authentication type field.
1828 The notification generation must be throttled
1829 with at least 5 seconds between successive
1830 notifications.";
1831 uses notification-instance-hdr;
1832
1833 uses notification-interface-hdr;
1834
1835 leaf raw-pdu {
1836 type binary;
1837 description
1838 "Received raw PDU.";
1839 }
1840 }
1841
1842 notification authentication-failure {
1843 description
1844 "This notification is sent when the system receives
1845 a PDU with the wrong authentication information.
1846 The notification generation must be throttled with
1847 with at least 5 seconds between successive
1848 notifications.";
1849 uses notification-instance-hdr;
1850
1851 uses notification-interface-hdr;
1852
1853 leaf raw-pdu {
1854 type binary;
1855 description
1856 "Received raw PDU.";
1857 }
1858 }
1859
1860 notification version-skew {
1861 description
1862 "This notification is sent when the system receives a
1863 PDU with a different protocol version number.
1864 The notification generation must be throttled
1865 with at least 5 seconds between successive
1866 notifications.";
1867 uses notification-instance-hdr;
1868
1869 uses notification-interface-hdr;
1870
1871 leaf protocol-version {
1872 type uint8;
1873 description
1874 "Protocol version received in the PDU.";
1875 }
1876
1877 leaf raw-pdu {
1878 type binary;
1879 description
1880 "Received raw PDU.";
1881 }
1882 }
1883
1884 notification area-mismatch {
1885 description
1886 "This notification is sent when the system receives a
1887 Hello PDU from an IS that does not share any area
1888 address. The notification generation must be throttled
1889 with at least 5 seconds between successive
1890 notifications.";
1891 uses notification-instance-hdr;
1892
1893 uses notification-interface-hdr;
1894
1895 leaf raw-pdu {
1896 type binary;
1897 description
1898 "Received raw PDU.";
1899 }
1900 }
1901
1902 notification rejected-adjacency {
1903 description
1904 "This notification is sent when the system receives a
1905 Hello PDU from an IS but does not establish an adjacency
1906 for some reason. The notification generation must be
1907 throttled with at least 5 seconds between successive
1908 notifications.";
1909 uses notification-instance-hdr;
1910
1911 uses notification-interface-hdr;
1912
1913 leaf raw-pdu {
1914 type binary;
1915 description
1916 "Received raw PDU.";
1917 }
1918
1919 leaf reason {
1920 type string;
1921 description
1922 "The system may provide a reason to reject the
1923 adjacency. If the reason is not available,
1924 an empty string will be returned.";
1925 }
1926 }
1927
1928 notification lsp-error-detected {
1929 description
1930 "This notification is sent when the system receives an
1931 LSP with a parse error. The notification generation must
1932 be throttled with at least 5 seconds between successive
1933 notifications.";
1934 uses notification-instance-hdr;
1935
1936 uses notification-interface-hdr;
1937
1938 leaf lsp-id {
1939 type lsp-id;
1940 description
1941 "LSP ID.";
1942 }
1943
1944 leaf raw-pdu {
1945 type binary;
1946 description
1947 "Received raw PDU.";
1948 }
1949
1950 leaf error-offset {
1951 type uint32;
1952 description
1953 "If the problem is a malformed TLV, the error-offset
1954 points to the start of the TLV. If the problem is with
1955 the LSP header, the error-offset points to the errant
1956 byte";
1957 }
1958
1959 leaf tlv-type {
1960 type uint8;
1961 description
1962 "If the problem is a malformed TLV, the tlv-type is set
1963 to the type value of the suspicious TLV. Otherwise,
1964 this leaf is not present.";
1965 }
1966 }
1967
1968 notification adjacency-state-change {
1969 description
1970 "This notification is sent when an IS-IS adjacency
1971 moves to Up state or to Down state.";
1972 uses notification-instance-hdr;
1973
1974 uses notification-interface-hdr;
1975
1976 leaf neighbor {
1977 type string;
1978 description
1979 "Name of the neighbor. If the name of the neighbor is
1980 not available, it is not returned.";
1981 }
1982
1983 leaf neighbor-system-id {
1984 type system-id;
1985 description
1986 "Neighbor system-id";
1987 }
1988
1989 leaf state {
1990 type adj-state-type;
1991 description
1992 "New state of the IS-IS adjacency.";
1993 }
1994
1995 leaf reason {
1996 type string;
1997 description
1998 "If the adjacency is going to DOWN, this leaf provides
1999 a reason for the adjacency going down. The reason is
2000 provided as a text. If the adjacency is going to UP, no
2001 reason is provided.";
2002 }
2003 }
2004
2005 notification lsp-received {
2006 description
2007 "This notification is sent when an LSP is received.
2008 The notification generation must be throttled with at
2009 least 5 seconds between successive notifications.";
2010 uses notification-instance-hdr;
2011
2012 uses notification-interface-hdr;
2013
2014 leaf lsp-id {
2015 type lsp-id;
2016 description
2017 "LSP ID";
2018 }
2019
2020 leaf sequence {
2021 type uint32;
2022 description
2023 "Sequence number of the received LSP.";
2024 }
2025
2026 leaf received-timestamp {
2027 type yang:timestamp;
2028 description
2029 "Timestamp when the LSP was received.";
2030 }
2031
2032 leaf neighbor-system-id {
2033 type system-id;
2034 description
2035 "Neighbor system-id of LSP sender";
2036 }
2037 }
2038
2039 notification lsp-generation {
2040 description
2041 "This notification is sent when an LSP is regenerated.
2042 The notification generation must be throttled with at
2043 least 5 seconds between successive notifications.";
2044 uses notification-instance-hdr;
2045
2046 leaf lsp-id {
2047 type lsp-id;
2048 description
2049 "LSP ID";
2050 }
2051
2052 leaf sequence {
2053 type uint32;
2054 description
2055 "Sequence number of the received LSP.";
2056 }
2057
2058 leaf send-timestamp {
2059 type yang:timestamp;
2060 description
2061 "Timestamp when our LSP was regenerated.";
2062 }
2063 }
2064 }