3 namespace "http://frrouting.org/yang/isisd";
6 import ietf-yang-types {
10 import ietf-inet-types {
14 import frr-interface {
22 import frr-route-map {
26 import frr-route-types {
27 prefix frr-route-types;
33 "FRR Users List: <mailto:frog@lists.frrouting.org> FRR Development
34 List: <mailto:dev@lists.frrouting.org>";
36 "This module defines a model for managing FRR isisd daemon.
38 Copyright 2020 FRRouting
40 Redistribution and use in source and binary forms, with or without
41 modification, are permitted provided that the following conditions
44 1. Redistributions of source code must retain the above copyright notice,
45 this list of conditions and the following disclaimer.
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.
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.";
65 "Group LSP timers in a container so that they can be displayed and
70 "Changed default area is-type to level-1-2";
74 "Changed interface references to use
75 frr-interface:interface-ref typedef";
81 "ISO/IEC 10589:2002.";
89 "This enum indicates L1-only capability.";
94 "This enum indicates L2-only capability.";
99 "This enum indicates capability for both levels.";
103 "This type defines IS-IS level of an object.";
106 typedef extended-circuit-id {
109 "This type defines the extended circuit ID
110 associated with an interface.";
113 typedef network-type {
118 "Unknown network type. Only valid as a state.";
123 "Broadcast circuit network-type.";
125 enum "point-to-point" {
128 "Point-to-point circuit network-type.";
133 "Loopback circuit network-type. Only valid as a state.";
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]";
143 "This type defines the IS-IS LSP ID format using a
144 pattern, An example LSP ID is 0143.0438.AeF0.02-01";
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
163 pattern "[0-9A-Fa-f]{4}\\.[0-9A-Fa-f]{4}\\.[0-9A-Fa-f]{4}";
166 "This type defines IS-IS system-id using a pattern,
167 An example system-id is 0143.0438.AeF0";
170 typedef net-address {
172 pattern "[a-fA-F0-9]{2}(\\.[a-fA-F0-9]{4}){3,9}\\.[a-fA-F0-9]{2}";
175 "This type defines an OSI NET address using a pattern,
176 An example net-address is 49.0123.6452.1972.00";
179 typedef if-state-type {
193 "This type defines the state of an interface";
196 typedef adj-state-type {
201 "State indicates the adjacency is established.";
206 "State indicates the adjacency is NOT established.";
211 "State indicates the adjacency is establishing.";
216 "State indicates the adjacency is failed.";
220 "This type defines states of an adjacency";
223 typedef metric-style-type {
228 "This enum describes narrow metric style";
235 "This enum describes wide metric style";
242 "This enum describes transition metric style";
247 grouping redistribute-attributes {
249 "Common optional attributes of any redistribute entry.";
251 type frr-route-map:route-map-ref;
253 "Applies the conditions of the specified route-map to routes that
254 are redistributed into this routing instance.";
263 "Metric used for the redistributed route. If 0,
264 the default-metric attribute is used instead.";
268 grouping redistribute-default {
270 "Redistribution of default route within a level.";
275 "Always advertise default route.";
278 uses redistribute-attributes;
281 grouping isis-password {
283 "Authentication attributes or an IS-IS area or domain.";
298 "Clear-text password type.";
303 "MD5 password type.";
308 "Type of password used.";
312 grouping isis-area-password {
315 leaf authenticate-snp {
320 "No SNP authentication.";
325 "Send authenticated PDUs but do not check on receiving.";
330 "Send authenticated PDUs and check on receiving.";
335 "SNP PDUs authentication.";
339 grouping interface-config-ti-lfa {
342 "TI-LFA configuration.";
347 "Enables TI-LFA computation.";
349 leaf node-protection {
351 must ". = 'false' or ../enable = 'true'";
354 "Node protection is provided by the alternate.";
359 grouping interface-config {
361 "Interface configuration grouping";
366 "Area-tag associated to this circuit.";
370 type frr-vrf:vrf-ref;
380 "Routing IS-IS IPv4 traffic over this circuit.";
387 "Routing IS-IS IPv6 traffic over this circuit.";
394 "IS-type of this circuit.";
397 container bfd-monitoring {
402 "Monitor IS-IS peers on this circuit.";
407 "Let BFD use a pre-configured profile.";
411 container csnp-interval {
413 "Complete Sequence Number PDU (CSNP) generation interval.";
421 "CNSP interval for level-1";
431 "CNSP interval for level-2";
435 container psnp-interval {
437 "Partial Sequence Number PDU (PSNP) generation interval.";
445 "PNSP interval for level-1";
455 "PCNSP interval for level-2";
461 "Parameters related to IS-IS hello PDUs.";
466 "Add padding to IS-IS hello PDUs.";
471 "Interval between consecutive hello messages.";
479 "Holding time for level-1; interval will depend on multiplier.";
489 "Holding time for level-2; interval will depend on multiplier.";
493 container multiplier {
495 "Multiplier for the hello messages holding time.";
502 "Multiplier for the hello holding time.";
511 "Multiplier for the hello holding time.";
518 "Default metric for this IS-IS circuit.";
523 must ". < 64 or /frr-isisd:isis/instance[area-tag = current()/../../area-tag]/metric-style = 'wide'";
526 "Default level-1 metric for this IS-IS circuit.";
533 must ". < 64 or /frr-isisd:isis/instance[area-tag = current()/../../area-tag]/metric-style = 'wide'";
536 "Default level-2 metric for this IS-IS circuit.";
542 "Priority for Designated Router election.";
549 "Level-1 priority for this IS-IS circuit.";
558 "Level-2 priority for this IS-IS circuit.";
564 must "(. = \"point-to-point\") or (. = \"broadcast\")";
567 "Explicitly configured type of IS-IS circuit (broadcast or point-to-point).";
574 "Interface is in passive mode.";
578 presence "Present if a password is set for this IS interface.";
582 leaf disable-three-way-handshake {
586 "Disables three-way handshake when creating new adjacencies.";
589 container multi-topology {
591 "IS-IS topologies configured on this circuit.";
596 "IPv4 unicast topology.";
599 leaf ipv4-multicast {
603 "IPv4 multicast topology.";
606 leaf ipv4-management {
610 "IPv4 management topology.";
617 "IPv6 unicast topology.";
620 leaf ipv6-multicast {
624 "IPv6 multicast topology.";
627 leaf ipv6-management {
631 "IPv6 management topology.";
638 "IPv6 destination-source topology.";
644 "Configuration of MPLS parameters";
649 "Enable MPLS LDP-Sync functionality on this circuit.";
657 "Time to wait for LDP-Sync to occur before restoring interface metric.";
661 container fast-reroute {
663 "Interface IP Fast-reroute configuration.";
666 "Level-1 IP Fast-reroute configuration.";
667 uses interface-config-ti-lfa;
671 "Level-2 IP Fast-reroute configuration.";
672 uses interface-config-ti-lfa;
677 grouping adjacency-state {
680 container adjacencies {
683 "This container lists the adjacencies of
687 "List of operational adjacencies.";
688 leaf neighbor-sys-type {
691 "Level capability of neighboring system";
694 leaf neighbor-sysid {
697 "The system-id of the neighbor";
700 leaf neighbor-extended-circuit-id {
701 type extended-circuit-id;
703 "Circuit ID of the neighbor";
709 "SNPA of the neighbor";
716 "The holding time in seconds for this
717 adjacency. This value is based on
718 received hello PDUs and the elapsed
719 time since receipt.";
722 leaf neighbor-priority {
727 "Priority of the neighboring IS for becoming
734 "This leaf describes the state of the interface.";
740 grouping event-counters {
742 "Grouping for IS-IS interface event counters";
743 container event-counters {
746 "IS-IS interface event counters.";
747 leaf adjacency-changes {
750 "The number of times an adjacency state change has
751 occurred on this interface.";
754 leaf adjacency-number {
757 "The number of adjacencies on this interface.";
763 "The number of times initialization of this
764 interface has failed. This counts events such
765 as PPP NCP failures. Failures to form an
766 adjacency are counted by adjacency-rejects.";
769 leaf adjacency-rejects {
772 "The number of times an adjacency has been
773 rejected on this interface.";
776 leaf id-len-mismatch {
779 "The number of times an IS-IS PDU with an ID
780 field length different from that for this
781 system has been received on this interface.";
784 leaf max-area-addresses-mismatch {
787 "The number of times an IS-IS PDU has been
788 received on this interface with the
789 max area address field differing from that of
793 leaf authentication-type-fails {
796 "Number of authentication type mismatches.";
799 leaf authentication-fails {
802 "Number of authentication key failures.";
807 grouping interface-state {
809 "IS-IS interface operational state.";
810 uses adjacency-state;
815 grouping notification-instance-hdr {
817 "Instance specific IS-IS notification data grouping";
818 leaf routing-instance {
821 "Name of the routing-instance instance.";
824 leaf routing-protocol-name {
827 "Name of the IS-IS instance.";
833 "IS-IS level of the instance.";
837 grouping notification-interface-hdr {
839 "Interface specific IS-IS notification data grouping";
840 leaf interface-name {
841 type frr-interface:interface-ref;
843 "IS-IS interface name";
846 leaf interface-level {
849 "IS-IS level of the interface.";
852 leaf extended-circuit-id {
853 type extended-circuit-id;
855 "Eextended circuit-id of the interface.";
861 "Configuration of the IS-IS routing daemon.";
865 "IS-IS routing instance.";
869 "Area-tag associated to this routing instance.";
873 type frr-vrf:vrf-ref;
882 "Level of the IS-IS routing instance (OSI only).";
885 leaf-list area-address {
889 "List of OSI NET addresses for this protocol instance.";
892 leaf dynamic-hostname {
896 "Dynamic hostname support for IS-IS.";
903 "If true, identify as L1/L2 router for inter-area traffic.";
910 "If true, avoid any transit traffic.";
914 type metric-style-type;
915 must ". = 'wide' or count(../multi-topology/*) = 0";
918 "Define the style of TLVs metric supported.";
921 leaf purge-originator {
925 "Use the RFC 6232 purge-originator.";
932 "Configuration of Link-State Packets (LSP) parameters";
944 "LSP-related timers";
947 "Level-1 LSP-related timers";
948 leaf refresh-interval {
953 "LSP refresh interval for level-1.";
956 leaf maximum-lifetime {
961 must ". >= ../refresh-interval + 300";
964 "Maximum LSP lifetime for level-1.";
967 leaf generation-interval {
972 must ". < ../refresh-interval";
975 "Minimum time allowed before level-1 LSP retransmissions.";
981 "Level-2 LSP-related timers";
982 leaf refresh-interval {
987 "LSP refresh interval for level-2.";
990 leaf maximum-lifetime {
995 must ". >= ../refresh-interval + 300";
998 "Maximum LSP lifetime for level-2.";
1001 leaf generation-interval {
1006 must ". < ../refresh-interval";
1009 "Minimum time allowed before level-2 LSP retransmissions.";
1017 "Parameters related to the Shortest Path First algorithm.";
1018 container ietf-backoff-delay {
1019 presence "Present if IETF SPF back-off delay is enabled.";
1021 "SPF back-off delay algorithm parameters (see RFC 8405).";
1029 "Delay used while in QUIET state";
1039 "Delay used while in SHORT_WAIT state";
1049 "Delay used while in LONG_WAIT state";
1059 "Time with no received IGP events before considering IGP stable";
1062 leaf time-to-learn {
1069 "Maximum duration needed to learn all the events related to a
1074 container minimum-interval {
1076 "Minimum interval between consecutive executions of the
1085 "Minimum time between consecutive level-1 SPFs.";
1095 "Minimum time between consecutive level-2 SPFs.";
1100 container area-password {
1101 presence "Present if authentication is required for IS level-1.";
1103 "Authentication password for an IS-IS area.";
1104 uses isis-area-password;
1107 container domain-password {
1108 presence "Present if authentication is required for IS level-2.";
1110 "Authentication password for an IS-IS domain.";
1111 uses isis-area-password;
1114 container default-information-originate {
1116 "Distribution of default information.";
1120 "Distribute default route for IPv4.";
1123 must "(. != \"level-1-2\") and ((../../../is-type = \"level-1-2\") or (. = ../../../is-type))";
1126 uses redistribute-default;
1132 "Distribute default route for IPv6.";
1135 must "(. != \"level-1-2\") and ((../../../is-type = \"level-1-2\") or (. = ../../../is-type))";
1138 uses redistribute-default;
1142 container redistribute {
1144 "Redistributes routes learned from other routing protocols.";
1146 key "protocol level";
1148 "IPv4 route redistribution.";
1150 type frr-route-types:frr-route-types-v4;
1151 must ". != \"isis\"";
1153 "Originating routing protocol for the IPv4 routes.";
1158 must "(. != \"level-1-2\") and ((../../../is-type = \"level-1-2\") or (. = ../../../is-type))";
1160 "IS-IS level into which the routes should be redistributed.";
1163 uses redistribute-attributes;
1167 key "protocol level";
1169 "IPv6 route redistribution.";
1171 type frr-route-types:frr-route-types-v6;
1172 must ". != \"isis\"";
1174 "Originating routing protocol for the IPv6 routes.";
1179 must "(. != \"level-1-2\") and ((../../../is-type = \"level-1-2\") or (. = ../../../is-type))";
1181 "IS-IS level into which the routes should be redistributed.";
1184 uses redistribute-attributes;
1188 container multi-topology {
1190 "IS-IS topologies configured for this area.";
1191 container ipv4-multicast {
1192 presence "Present if a separate IPv4-multicast topology is configured for this area.";
1194 "IPv4 multicast topology.";
1201 container ipv4-management {
1202 presence "Present if a separate IPv4-management topology is configured for this area.";
1204 "IPv4 management topology.";
1211 container ipv6-unicast {
1212 presence "Present if a separate IPv6-unicast topology is configured for this area.";
1214 "IPv6 unicast topology.";
1221 container ipv6-multicast {
1222 presence "Present if a separate IPv6-multicast topology is configured for this area.";
1224 "IPv6 multicast topology.";
1231 container ipv6-management {
1232 presence "Present if a separate IPv6-management topology is configured for this area.";
1234 "IPv6 management topology.";
1241 container ipv6-dstsrc {
1242 presence "Present if a separate IPv6 destination-source topology is configured for this area.";
1244 "IPv6 destination-source topology.";
1252 leaf log-adjacency-changes {
1256 "Log changes to the IS-IS adjacencies in this area.";
1260 presence "Present if MPLS-TE is enabled.";
1262 "Enable MPLS-TE functionality.";
1263 leaf router-address {
1264 type inet:ipv4-address;
1266 "Stable IP address of the advertising router.";
1270 container segment-routing {
1272 "Segment Routing global configuration.";
1277 "Enables segment-routing protocol extensions.";
1281 "Global blocks to be advertised.";
1282 must "./upper-bound > ./lower-bound";
1287 "Lower value in the label range.";
1293 "Upper value in the label range.";
1298 "Local blocks to be advertised.";
1299 must "./upper-bound > ./lower-bound";
1304 "Lower value in the label range.";
1310 "Upper value in the label range.";
1315 "MSD configuration.";
1319 "Node MSD is the lowest MSD supported by the node.";
1322 container prefix-sid-map {
1324 "Prefix SID configuration.";
1327 unique "sid-value-type sid-value";
1329 "List of prefix SID mapped to IPv4/IPv6
1332 type inet:ip-prefix;
1334 "Connected prefix sid.";
1336 leaf sid-value-type {
1341 "The value will be interpreted as an index.";
1346 "The value will become interpreted as an absolute
1352 "This leaf defines how value must be interpreted.";
1358 "Value associated with prefix. The value must be
1359 interpreted in the context of sid-value-type.";
1361 leaf last-hop-behavior {
1363 enum "explicit-null" {
1366 "Use explicit-null for the SID.";
1371 "Do not use Penultimate Hop Popping (PHP)
1377 "Use PHP for the SID.";
1382 "Configure last hop behavior.";
1390 "Configuration of MPLS parameters";
1391 container ldp-sync {
1392 presence "Present if MPLS LDP-Sync is enabled.";
1394 "Enable MPLS LDP-Sync functionality.";
1402 "Time to wait for LDP-Sync to occur before restoring interface metric.";
1410 augment "/frr-interface:lib/frr-interface:interface" {
1412 "Extends interface model with IS-IS related parameters.";
1414 presence "Present if an IS-IS circuit is defined for this interface.";
1416 "IS-IS interface parameters.";
1417 uses interface-config;
1421 augment "/frr-interface:lib/frr-interface:interface/frr-interface:state" {
1423 "Extends interface model with IS-IS operational data.";
1425 presence "Present if an IS-IS circuit is defined for this interface.";
1427 "IS-IS interface operational data.";
1429 uses interface-state;
1433 notification database-overload {
1435 "This notification is sent when an IS-IS instance
1436 overload state changes.";
1437 uses notification-instance-hdr;
1444 "Indicates IS-IS instance has left overload state";
1449 "Indicates IS-IS instance has entered overload state";
1453 "New overload state of the IS-IS instance";
1457 notification lsp-too-large {
1459 "This notification is sent when we attempt to propagate
1460 an LSP that is larger than the dataLinkBlockSize for the
1461 circuit. The notification generation must be throttled
1462 with at least 5 seconds between successive
1464 uses notification-instance-hdr;
1466 uses notification-interface-hdr;
1471 "Size of the LSP PDU";
1481 notification if-state-change {
1483 "This notification is sent when an interface
1484 state change is detected.";
1485 uses notification-instance-hdr;
1487 uses notification-interface-hdr;
1496 notification corrupted-lsp-detected {
1498 "This notification is sent when we find that
1499 an LSP that was stored in memory has become
1501 uses notification-instance-hdr;
1510 notification attempt-to-exceed-max-sequence {
1512 "This notification is sent when the system
1513 wraps the 32-bit sequence counter of an LSP.";
1514 uses notification-instance-hdr;
1523 notification id-len-mismatch {
1525 "This notification is sent when we receive a PDU
1526 with a different value for the System ID length.
1527 The notification generation must be throttled
1528 with at least 5 seconds between successive
1530 uses notification-instance-hdr;
1532 uses notification-interface-hdr;
1534 leaf pdu-field-len {
1537 "Size of the ID length in the received PDU";
1543 "Received raw PDU.";
1547 notification max-area-addresses-mismatch {
1549 "This notification is sent when we receive a PDU
1550 with a different value for the Maximum Area Addresses.
1551 The notification generation must be throttled
1552 with at least 5 seconds between successive
1554 uses notification-instance-hdr;
1556 uses notification-interface-hdr;
1558 leaf max-area-addresses {
1561 "Received number of supported areas";
1567 "Received raw PDU.";
1571 notification own-lsp-purge {
1573 "This notification is sent when the system receives
1574 a PDU with its own system ID and zero age.";
1575 uses notification-instance-hdr;
1577 uses notification-interface-hdr;
1586 notification sequence-number-skipped {
1588 "This notification is sent when the system receives a
1589 PDU with its own system ID and different contents. The
1590 system has to reoriginate the LSP with a higher sequence
1592 uses notification-instance-hdr;
1594 uses notification-interface-hdr;
1603 notification authentication-type-failure {
1605 "This notification is sent when the system receives a
1606 PDU with the wrong authentication type field.
1607 The notification generation must be throttled
1608 with at least 5 seconds between successive
1610 uses notification-instance-hdr;
1612 uses notification-interface-hdr;
1617 "Received raw PDU.";
1621 notification authentication-failure {
1623 "This notification is sent when the system receives
1624 a PDU with the wrong authentication information.
1625 The notification generation must be throttled with
1626 with at least 5 seconds between successive
1628 uses notification-instance-hdr;
1630 uses notification-interface-hdr;
1635 "Received raw PDU.";
1639 notification version-skew {
1641 "This notification is sent when the system receives a
1642 PDU with a different protocol version number.
1643 The notification generation must be throttled
1644 with at least 5 seconds between successive
1646 uses notification-instance-hdr;
1648 uses notification-interface-hdr;
1650 leaf protocol-version {
1653 "Protocol version received in the PDU.";
1659 "Received raw PDU.";
1663 notification area-mismatch {
1665 "This notification is sent when the system receives a
1666 Hello PDU from an IS that does not share any area
1667 address. The notification generation must be throttled
1668 with at least 5 seconds between successive
1670 uses notification-instance-hdr;
1672 uses notification-interface-hdr;
1677 "Received raw PDU.";
1681 notification rejected-adjacency {
1683 "This notification is sent when the system receives a
1684 Hello PDU from an IS but does not establish an adjacency
1685 for some reason. The notification generation must be
1686 throttled with at least 5 seconds between successive
1688 uses notification-instance-hdr;
1690 uses notification-interface-hdr;
1695 "Received raw PDU.";
1701 "The system may provide a reason to reject the
1702 adjacency. If the reason is not available,
1703 an empty string will be returned.";
1707 notification lsp-error-detected {
1709 "This notification is sent when the system receives an
1710 LSP with a parse error. The notification generation must
1711 be throttled with at least 5 seconds between successive
1713 uses notification-instance-hdr;
1715 uses notification-interface-hdr;
1726 "Received raw PDU.";
1732 "If the problem is a malformed TLV, the error-offset
1733 points to the start of the TLV. If the problem is with
1734 the LSP header, the error-offset points to the errant
1741 "If the problem is a malformed TLV, the tlv-type is set
1742 to the type value of the suspicious TLV. Otherwise,
1743 this leaf is not present.";
1747 notification adjacency-state-change {
1749 "This notification is sent when an IS-IS adjacency
1750 moves to Up state or to Down state.";
1751 uses notification-instance-hdr;
1753 uses notification-interface-hdr;
1758 "Name of the neighbor. If the name of the neighbor is
1759 not available, it is not returned.";
1762 leaf neighbor-system-id {
1765 "Neighbor system-id";
1769 type adj-state-type;
1771 "New state of the IS-IS adjacency.";
1777 "If the adjacency is going to DOWN, this leaf provides
1778 a reason for the adjacency going down. The reason is
1779 provided as a text. If the adjacency is going to UP, no
1780 reason is provided.";
1784 notification lsp-received {
1786 "This notification is sent when an LSP is received.
1787 The notification generation must be throttled with at
1788 least 5 seconds between successive notifications.";
1789 uses notification-instance-hdr;
1791 uses notification-interface-hdr;
1802 "Sequence number of the received LSP.";
1805 leaf received-timestamp {
1806 type yang:timestamp;
1808 "Timestamp when the LSP was received.";
1811 leaf neighbor-system-id {
1814 "Neighbor system-id of LSP sender";
1818 notification lsp-generation {
1820 "This notification is sent when an LSP is regenerated.
1821 The notification generation must be throttled with at
1822 least 5 seconds between successive notifications.";
1823 uses notification-instance-hdr;
1834 "Sequence number of the received LSP.";
1837 leaf send-timestamp {
1838 type yang:timestamp;
1840 "Timestamp when our LSP was regenerated.";