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