3 namespace "http://frrouting.org/yang/isisd";
6 import ietf-yang-types {
10 import ietf-inet-types {
14 import frr-interface {
18 import frr-route-types {
19 prefix frr-route-types;
25 "FRR Users List: <mailto:frog@lists.frrouting.org> FRR Development
26 List: <mailto:dev@lists.frrouting.org>";
28 "This module defines a model for managing FRR isisd daemon.";
32 "Changed default area is-type to level-1-2";
36 "Changed interface references to use
37 frr-interface:interface-ref typedef";
43 "ISO/IEC 10589:2002.";
51 "This enum indicates L1-only capability.";
56 "This enum indicates L2-only capability.";
61 "This enum indicates capability for both levels.";
65 "This type defines IS-IS level of an object.";
68 typedef extended-circuit-id {
71 "This type defines the extended circuit ID
72 associated with an interface.";
75 typedef network-type {
80 "Unknown network type. Only valid as a state.";
85 "Broadcast circuit network-type.";
87 enum "point-to-point" {
90 "Point-to-point circuit network-type.";
95 "Loopback circuit network-type. Only valid as a state.";
102 pattern "[0-9A-Fa-f]{4}\\.[0-9A-Fa-f]{4}\\.[0-9A-Fa-f]{4}\\.[0-9][0-9]-[0-9][0-9]";
105 "This type defines the IS-IS LSP ID format using a
106 pattern, An example LSP ID is 0143.0438.AeF0.02-01";
114 "This type defines the Subnetwork Point
115 of Attachment (SNPA) format.
116 The SNPA should be encoded according to the rules
117 specified for the particular type of subnetwork
118 being used. As an example, for an ethernet subnetwork,
119 the SNPA is encoded as a MAC address like
125 pattern "[0-9A-Fa-f]{4}\\.[0-9A-Fa-f]{4}\\.[0-9A-Fa-f]{4}";
128 "This type defines IS-IS system-id using a pattern,
129 An example system-id is 0143.0438.AeF0";
132 typedef net-address {
134 pattern "[a-fA-F0-9]{2}(\\.[a-fA-F0-9]{4}){3,9}\\.[a-fA-F0-9]{2}";
137 "This type defines an OSI NET address using a pattern,
138 An example net-address is 49.0123.6452.1972.00";
141 typedef if-state-type {
155 "This type defines the state of an interface";
158 typedef adj-state-type {
163 "State indicates the adjacency is established.";
168 "State indicates the adjacency is NOT established.";
173 "State indicates the adjacency is establishing.";
178 "State indicates the adjacency is failed.";
182 "This type defines states of an adjacency";
185 typedef metric-style-type {
190 "This enum describes narrow metric style";
197 "This enum describes wide metric style";
204 "This enum describes transition metric style";
209 grouping redistribute-attributes {
211 "Common optional attributes of any redistribute entry.";
217 "Applies the conditions of the specified route-map to routes that
218 are redistributed into this routing instance.";
227 "Metric used for the redistributed route. If 0,
228 the default-metric attribute is used instead.";
232 grouping redistribute-default {
234 "Redistribution of default route within a level.";
239 "Always advertise default route.";
242 uses redistribute-attributes;
245 grouping isis-password {
247 "Authentication attributes or an IS-IS area or domain.";
262 "Clear-text password type.";
267 "MD5 password type.";
272 "Type of password used.";
276 grouping isis-area-password {
279 leaf authenticate-snp {
284 "No SNP authentication.";
289 "Send authenticated PDUs but do not check on receiving.";
294 "Send authenticated PDUs and check on receiving.";
299 "SNP PDUs authentication.";
303 grouping interface-config {
304 description "Interface configuration grouping";
310 "Area-tag associated to this circuit.";
317 "Routing IS-IS IPv4 traffic over this circuit.";
324 "Routing IS-IS IPv6 traffic over this circuit.";
331 "IS-type of this circuit.";
334 leaf bfd-monitoring {
337 description "Monitor IS-IS peers on this circuit.";
340 container csnp-interval {
342 "Complete Sequence Number PDU (CSNP) generation interval.";
350 "CNSP interval for level-1";
360 "CNSP interval for level-2";
364 container psnp-interval {
366 "Partial Sequence Number PDU (PSNP) generation interval.";
374 "PNSP interval for level-1";
384 "PCNSP interval for level-2";
390 "Parameters related to IS-IS hello PDUs.";
395 "Add padding to IS-IS hello PDUs.";
400 "Interval between consecutive hello messages.";
408 "Holding time for level-1; interval will depend on multiplier.";
418 "Holding time for level-2; interval will depend on multiplier.";
422 container multiplier {
424 "Multiplier for the hello messages holding time.";
431 "Multiplier for the hello holding time.";
440 "Multiplier for the hello holding time.";
447 "Default metric for this IS-IS circuit.";
452 must ". < 64 or /frr-isisd:isis/instance[area-tag = current()/../../area-tag]/metric-style = 'wide'";
455 "Default level-1 metric for this IS-IS circuit.";
462 must ". < 64 or /frr-isisd:isis/instance[area-tag = current()/../../area-tag]/metric-style = 'wide'";
465 "Default level-2 metric for this IS-IS circuit.";
471 "Priority for Designated Router election.";
478 "Level-1 priority for this IS-IS circuit.";
487 "Level-2 priority for this IS-IS circuit.";
494 must "(. = \"point-to-point\") or (. = \"broadcast\")";
496 "Explicitly configured type of IS-IS circuit (broadcast or point-to-point).";
503 "Interface is in passive mode.";
507 presence "Present if a password is set for this IS interface.";
511 leaf disable-three-way-handshake {
515 "Disables three-way handshake when creating new adjacencies.";
518 container multi-topology {
520 "IS-IS topologies configured on this circuit.";
525 "IPv4 unicast topology.";
528 leaf ipv4-multicast {
532 "IPv4 multicast topology.";
535 leaf ipv4-management {
539 "IPv4 management topology.";
546 "IPv6 unicast topology.";
549 leaf ipv6-multicast {
553 "IPv6 multicast topology.";
556 leaf ipv6-management {
560 "IPv6 management topology.";
567 "IPv6 destination-source topology.";
572 grouping adjacency-state {
573 container adjacencies {
576 leaf neighbor-sys-type {
579 "Level capability of neighboring system";
581 leaf neighbor-sysid {
584 "The system-id of the neighbor";
586 leaf neighbor-extended-circuit-id {
587 type extended-circuit-id;
589 "Circuit ID of the neighbor";
594 "SNPA of the neighbor";
600 "The holding time in seconds for this
601 adjacency. This value is based on
602 received hello PDUs and the elapsed
603 time since receipt.";
605 leaf neighbor-priority {
610 "Priority of the neighboring IS for becoming
616 "This leaf describes the state of the interface.";
620 "List of operational adjacencies.";
623 "This container lists the adjacencies of
630 grouping event-counters {
631 container event-counters {
633 leaf adjacency-changes {
636 "The number of times an adjacency state change has
637 occurred on this interface.";
639 leaf adjacency-number {
642 "The number of adjacencies on this interface.";
647 "The number of times initialization of this
648 interface has failed. This counts events such
649 as PPP NCP failures. Failures to form an
650 adjacency are counted by adjacency-rejects.";
652 leaf adjacency-rejects {
655 "The number of times an adjacency has been
656 rejected on this interface.";
658 leaf id-len-mismatch {
661 "The number of times an IS-IS PDU with an ID
662 field length different from that for this
663 system has been received on this interface.";
665 leaf max-area-addresses-mismatch {
668 "The number of times an IS-IS PDU has been
669 received on this interface with the
670 max area address field differing from that of
673 leaf authentication-type-fails {
676 "Number of authentication type mismatches.";
678 leaf authentication-fails {
681 "Number of authentication key failures.";
683 description "IS-IS interface event counters.";
686 "Grouping for IS-IS interface event counters";
689 grouping interface-state {
691 "IS-IS interface operational state.";
692 uses adjacency-state;
696 grouping notification-instance-hdr {
698 "Instance specific IS-IS notification data grouping";
699 leaf routing-instance {
702 "Name of the routing-instance instance.";
705 leaf routing-protocol-name {
708 "Name of the IS-IS instance.";
714 "IS-IS level of the instance.";
718 grouping notification-interface-hdr {
720 "Interface specific IS-IS notification data grouping";
721 leaf interface-name {
722 type frr-interface:interface-ref;
724 "IS-IS interface name";
727 leaf interface-level {
730 "IS-IS level of the interface.";
733 leaf extended-circuit-id {
734 type extended-circuit-id;
736 "Eextended circuit-id of the interface.";
742 "Configuration of the IS-IS routing daemon.";
746 "IS-IS routing instance.";
750 "Area-tag associated to this routing instance.";
757 "Level of the IS-IS routing instance (OSI only).";
760 leaf-list area-address {
764 "List of OSI NET addresses for this protocol instance.";
767 leaf dynamic-hostname {
771 "Dynamic hostname support for IS-IS.";
778 "If true, identify as L1/L2 router for inter-area traffic.";
785 "If true, avoid any transit traffic.";
789 type metric-style-type;
790 must ". = 'wide' or count(../multi-topology/*) = 0";
793 "Define the style of TLVs metric supported.";
796 leaf purge-originator {
800 "Use the RFC 6232 purge-originator.";
807 "Configuration of Link-State Packets (LSP) parameters";
817 container refresh-interval {
825 "LSP refresh interval for level-1.";
833 "LSP refresh interval for level-2.";
837 container maximum-lifetime {
839 "Maximum LSP lifetime.";
845 must ". >= ../../refresh-interval/level-1 + 300";
848 "Maximum LSP lifetime for level-1.";
856 must ". >= ../../refresh-interval/level-2 + 300";
859 "Maximum LSP lifetime for level-2.";
863 container generation-interval {
865 "Minimum LSP regeneration interval.";
871 must ". < ../../refresh-interval/level-1";
874 "Minimum time allowed before level-1 LSP retransmissions.";
882 must ". < ../../refresh-interval/level-2";
885 "Minimum time allowed before level-2 LSP retransmissions.";
892 "Parameters related to the Shortest Path First algorithm.";
893 container ietf-backoff-delay {
894 presence "Present if IETF SPF back-off delay is enabled.";
896 "SPF back-off delay algorithm parameters (see RFC 8405).";
904 "Delay used while in QUIET state";
914 "Delay used while in SHORT_WAIT state";
924 "Delay used while in LONG_WAIT state";
934 "Time with no received IGP events before considering IGP stable";
944 "Maximum duration needed to learn all the events related to a
949 container minimum-interval {
951 "Minimum interval between consecutive executions of the
960 "Minimum time between consecutive level-1 SPFs.";
970 "Minimum time between consecutive level-2 SPFs.";
975 container area-password {
976 presence "Present if authentication is required for IS level-1.";
978 "Authentication password for an IS-IS area.";
979 uses isis-area-password;
982 container domain-password {
983 presence "Present if authentication is required for IS level-2.";
985 "Authentication password for an IS-IS domain.";
986 uses isis-area-password;
989 container default-information-originate {
991 "Distribution of default information.";
995 "Distribute default route for IPv4.";
998 must "(. != \"level-1-2\") and ((../../../is-type = \"level-1-2\") or (. = ../../../is-type))";
1001 uses redistribute-default;
1007 "Distribute default route for IPv6.";
1010 must "(. != \"level-1-2\") and ((../../../is-type = \"level-1-2\") or (. = ../../../is-type))";
1013 uses redistribute-default;
1017 container redistribute {
1019 "Redistributes routes learned from other routing protocols.";
1021 key "protocol level";
1023 "IPv4 route redistribution.";
1025 type frr-route-types:frr-route-types-v4;
1026 must ". != \"isis\"";
1028 "Originating routing protocol for the IPv4 routes.";
1033 must "(. != \"level-1-2\") and ((../../../is-type = \"level-1-2\") or (. = ../../../is-type))";
1035 "IS-IS level into which the routes should be redistributed.";
1038 uses redistribute-attributes;
1042 key "protocol level";
1044 "IPv6 route redistribution.";
1046 type frr-route-types:frr-route-types-v6;
1047 must ". != \"isis\"";
1049 "Originating routing protocol for the IPv6 routes.";
1054 must "(. != \"level-1-2\") and ((../../../is-type = \"level-1-2\") or (. = ../../../is-type))";
1056 "IS-IS level into which the routes should be redistributed.";
1059 uses redistribute-attributes;
1063 container multi-topology {
1065 "IS-IS topologies configured for this area.";
1066 container ipv4-multicast {
1067 presence "Present if a separate IPv4-multicast topology is configured for this area.";
1069 "IPv4 multicast topology.";
1076 container ipv4-management {
1077 presence "Present if a separate IPv4-management topology is configured for this area.";
1079 "IPv4 management topology.";
1086 container ipv6-unicast {
1087 presence "Present if a separate IPv6-unicast topology is configured for this area.";
1089 "IPv6 unicast topology.";
1096 container ipv6-multicast {
1097 presence "Present if a separate IPv6-multicast topology is configured for this area.";
1099 "IPv6 multicast topology.";
1106 container ipv6-management {
1107 presence "Present if a separate IPv6-management topology is configured for this area.";
1109 "IPv6 management topology.";
1116 container ipv6-dstsrc {
1117 presence "Present if a separate IPv6 destination-source topology is configured for this area.";
1119 "IPv6 destination-source topology.";
1127 leaf log-adjacency-changes {
1131 "Log changes to the IS-IS adjacencies in this area.";
1135 presence "Present if MPLS-TE is enabled.";
1137 "Enable MPLS-TE functionality.";
1138 leaf router-address {
1139 type inet:ipv4-address;
1141 "Stable IP address of the advertising router.";
1147 augment "/frr-interface:lib/frr-interface:interface" {
1149 "Extends interface model with IS-IS related parameters.";
1151 presence "Present if an IS-IS circuit is defined for this interface.";
1153 "IS-IS interface parameters.";
1154 uses interface-config;
1155 uses interface-state;
1159 notification database-overload {
1161 "This notification is sent when an IS-IS instance
1162 overload state changes.";
1163 uses notification-instance-hdr;
1170 "Indicates IS-IS instance has left overload state";
1175 "Indicates IS-IS instance has entered overload state";
1179 "New overload state of the IS-IS instance";
1183 notification lsp-too-large {
1185 "This notification is sent when we attempt to propagate
1186 an LSP that is larger than the dataLinkBlockSize for the
1187 circuit. The notification generation must be throttled
1188 with at least 5 seconds between successive
1190 uses notification-instance-hdr;
1192 uses notification-interface-hdr;
1197 "Size of the LSP PDU";
1207 notification if-state-change {
1209 "This notification is sent when an interface
1210 state change is detected.";
1211 uses notification-instance-hdr;
1213 uses notification-interface-hdr;
1222 notification corrupted-lsp-detected {
1224 "This notification is sent when we find that
1225 an LSP that was stored in memory has become
1227 uses notification-instance-hdr;
1236 notification attempt-to-exceed-max-sequence {
1238 "This notification is sent when the system
1239 wraps the 32-bit sequence counter of an LSP.";
1240 uses notification-instance-hdr;
1249 notification id-len-mismatch {
1251 "This notification is sent when we receive a PDU
1252 with a different value for the System ID length.
1253 The notification generation must be throttled
1254 with at least 5 seconds between successive
1256 uses notification-instance-hdr;
1258 uses notification-interface-hdr;
1260 leaf pdu-field-len {
1263 "Size of the ID length in the received PDU";
1269 "Received raw PDU.";
1273 notification max-area-addresses-mismatch {
1275 "This notification is sent when we receive a PDU
1276 with a different value for the Maximum Area Addresses.
1277 The notification generation must be throttled
1278 with at least 5 seconds between successive
1280 uses notification-instance-hdr;
1282 uses notification-interface-hdr;
1284 leaf max-area-addresses {
1287 "Received number of supported areas";
1293 "Received raw PDU.";
1297 notification own-lsp-purge {
1299 "This notification is sent when the system receives
1300 a PDU with its own system ID and zero age.";
1301 uses notification-instance-hdr;
1303 uses notification-interface-hdr;
1312 notification sequence-number-skipped {
1314 "This notification is sent when the system receives a
1315 PDU with its own system ID and different contents. The
1316 system has to reoriginate the LSP with a higher sequence
1318 uses notification-instance-hdr;
1320 uses notification-interface-hdr;
1329 notification authentication-type-failure {
1331 "This notification is sent when the system receives a
1332 PDU with the wrong authentication type field.
1333 The notification generation must be throttled
1334 with at least 5 seconds between successive
1336 uses notification-instance-hdr;
1338 uses notification-interface-hdr;
1343 "Received raw PDU.";
1347 notification authentication-failure {
1349 "This notification is sent when the system receives
1350 a PDU with the wrong authentication information.
1351 The notification generation must be throttled with
1352 with at least 5 seconds between successive
1354 uses notification-instance-hdr;
1356 uses notification-interface-hdr;
1361 "Received raw PDU.";
1365 notification version-skew {
1367 "This notification is sent when the system receives a
1368 PDU with a different protocol version number.
1369 The notification generation must be throttled
1370 with at least 5 seconds between successive
1372 uses notification-instance-hdr;
1374 uses notification-interface-hdr;
1376 leaf protocol-version {
1379 "Protocol version received in the PDU.";
1385 "Received raw PDU.";
1389 notification area-mismatch {
1391 "This notification is sent when the system receives a
1392 Hello PDU from an IS that does not share any area
1393 address. The notification generation must be throttled
1394 with at least 5 seconds between successive
1396 uses notification-instance-hdr;
1398 uses notification-interface-hdr;
1403 "Received raw PDU.";
1407 notification rejected-adjacency {
1409 "This notification is sent when the system receives a
1410 Hello PDU from an IS but does not establish an adjacency
1411 for some reason. The notification generation must be
1412 throttled with at least 5 seconds between successive
1414 uses notification-instance-hdr;
1416 uses notification-interface-hdr;
1421 "Received raw PDU.";
1427 "The system may provide a reason to reject the
1428 adjacency. If the reason is not available,
1429 an empty string will be returned.";
1433 notification lsp-error-detected {
1435 "This notification is sent when the system receives an
1436 LSP with a parse error. The notification generation must
1437 be throttled with at least 5 seconds between successive
1439 uses notification-instance-hdr;
1441 uses notification-interface-hdr;
1452 "Received raw PDU.";
1458 "If the problem is a malformed TLV, the error-offset
1459 points to the start of the TLV. If the problem is with
1460 the LSP header, the error-offset points to the errant
1467 "If the problem is a malformed TLV, the tlv-type is set
1468 to the type value of the suspicious TLV. Otherwise,
1469 this leaf is not present.";
1473 notification adjacency-state-change {
1475 "This notification is sent when an IS-IS adjacency
1476 moves to Up state or to Down state.";
1477 uses notification-instance-hdr;
1479 uses notification-interface-hdr;
1484 "Name of the neighbor. If the name of the neighbor is
1485 not available, it is not returned.";
1488 leaf neighbor-system-id {
1491 "Neighbor system-id";
1495 type adj-state-type;
1497 "New state of the IS-IS adjacency.";
1503 "If the adjacency is going to DOWN, this leaf provides
1504 a reason for the adjacency going down. The reason is
1505 provided as a text. If the adjacency is going to UP, no
1506 reason is provided.";
1510 notification lsp-received {
1512 "This notification is sent when an LSP is received.
1513 The notification generation must be throttled with at
1514 least 5 seconds between successive notifications.";
1515 uses notification-instance-hdr;
1517 uses notification-interface-hdr;
1528 "Sequence number of the received LSP.";
1531 leaf received-timestamp {
1532 type yang:timestamp;
1534 "Timestamp when the LSP was received.";
1537 leaf neighbor-system-id {
1540 "Neighbor system-id of LSP sender";
1544 notification lsp-generation {
1546 "This notification is sent when an LSP is regenerated.
1547 The notification generation must be throttled with at
1548 least 5 seconds between successive notifications.";
1549 uses notification-instance-hdr;
1560 "Sequence number of the received LSP.";
1563 leaf send-timestamp {
1564 type yang:timestamp;
1566 "Timestamp when our LSP was regenerated.";