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.";
34 "ISO/IEC 10589:2002.";
42 "This enum indicates L1-only capability.";
47 "This enum indicates L2-only capability.";
52 "This enum indicates capability for both levels.";
56 "This type defines IS-IS level of an object.";
59 typedef network-type {
64 "Unknown network type. Only valid as a state.";
69 "Broadcast circuit network-type.";
71 enum "point-to-point" {
74 "Point-to-point circuit network-type.";
79 "Loopback circuit network-type. Only valid as a state.";
86 pattern "[0-9A-Fa-f]{4}\\.[0-9A-Fa-f]{4}\\.[0-9A-Fa-f]{4}\\.[0-9][0-9]-[0-9][0-9]";
89 "This type defines the IS-IS LSP ID format using a
90 pattern, An example LSP ID is 0143.0438.AeF0.02-01";
95 pattern "[0-9A-Fa-f]{4}\\.[0-9A-Fa-f]{4}\\.[0-9A-Fa-f]{4}";
98 "This type defines IS-IS system-id using a pattern,
99 An example system-id is 0143.0438.AeF0";
102 typedef net-address {
104 pattern "[a-fA-F0-9]{2}(\\.[a-fA-F0-9]{4}){3,9}\\.[a-fA-F0-9]{2}";
107 "This type defines an OSI NET address using a pattern,
108 An example net-address is 49.0123.6452.1972.00";
111 typedef if-state-type {
125 "This type defines the state of an interface";
128 typedef adj-state-type {
133 "State indicates the adjacency is established.";
138 "State indicates the adjacency is NOT established.";
143 "State indicates the adjacency is establishing.";
148 "State indicates the adjacency is failed.";
152 "This type defines states of an adjacency";
155 typedef metric-style-type {
160 "This enum describes narrow metric style";
167 "This enum describes wide metric style";
174 "This enum describes transition metric style";
179 grouping redistribute-attributes {
181 "Common optional attributes of any redistribute entry.";
188 "Applies the conditions of the specified route-map to routes that
189 are redistributed into this routing instance.";
198 "Metric used for the redistributed route. If 0,
199 the default-metric attribute is used instead.";
204 grouping redistribute-default {
206 "Redistribution of default route within a level.";
211 "Always advertise default route.";
214 uses redistribute-attributes;
217 grouping isis-password {
219 "Authentication attributes or an IS-IS area or domain.";
234 "Clear-text password type.";
239 "MD5 password type.";
244 "Type of password used.";
248 grouping isis-area-password {
251 leaf authenticate-snp {
256 "No SNP authentication.";
261 "Send authenticated PDUs but do not check on receiving.";
266 "Send authenticated PDUs and check on receiving.";
271 "SNP PDUs authentication.";
275 grouping notification-instance-hdr {
277 "Instance specific IS-IS notification data grouping";
278 leaf routing-instance {
281 "Name of the routing-instance instance.";
284 leaf routing-protocol-name {
287 "Name of the IS-IS instance.";
293 "IS-IS level of the instance.";
297 grouping notification-interface-hdr {
299 "Interface specific IS-IS notification data grouping";
300 leaf interface-name {
303 "IS-IS interface name";
306 leaf interface-level {
309 "IS-IS level of the interface.";
312 leaf extended-circuit-id {
315 "Eextended circuit-id of the interface.";
321 "Configuration of the IS-IS routing daemon.";
325 "IS-IS routing instance.";
329 "Area-tag associated to this routing instance.";
336 "Level of the IS-IS routing instance (OSI only).";
339 leaf-list area-address {
343 "List of OSI NET addresses for this protocol instance.";
346 leaf dynamic-hostname {
350 "Dynamic hostname support for IS-IS.";
357 "If true, identify as L1/L2 router for inter-area traffic.";
364 "If true, avoid any transit traffic.";
368 type metric-style-type;
369 must ". = 'wide' or count(../multi-topology/*) = 0";
372 "Define the style of TLVs metric supported.";
375 leaf purge-originator {
379 "Use the RFC 6232 purge-originator.";
386 "Configuration of Link-State Packets (LSP) parameters";
396 container refresh-interval {
404 "LSP refresh interval for level-1.";
412 "LSP refresh interval for level-2.";
416 container maximum-lifetime {
418 "Maximum LSP lifetime.";
424 must ". >= ../../refresh-interval/level-1 + 300";
427 "Maximum LSP lifetime for level-1.";
435 must ". >= ../../refresh-interval/level-2 + 300";
438 "Maximum LSP lifetime for level-2.";
442 container generation-interval {
444 "Minimum LSP regeneration interval.";
450 must ". < ../../refresh-interval/level-1";
453 "Minimum time allowed before level-1 LSP retransmissions.";
461 must ". < ../../refresh-interval/level-2";
464 "Minimum time allowed before level-2 LSP retransmissions.";
471 "Parameters related to the Shortest Path First algorithm.";
472 container ietf-backoff-delay {
473 presence "Present if IETF SPF back-off delay is enabled.";
475 "SPF back-off delay algorithm parameters (see RFC 8405).";
483 "Delay used while in QUIET state";
493 "Delay used while in SHORT_WAIT state";
503 "Delay used while in LONG_WAIT state";
513 "Time with no received IGP events before considering IGP stable";
523 "Maximum duration needed to learn all the events related to a
528 container minimum-interval {
530 "Minimum interval between consecutive executions of the
539 "Minimum time between consecutive level-1 SPFs.";
549 "Minimum time between consecutive level-2 SPFs.";
554 container area-password {
555 presence "Present if authentication is required for IS level-1.";
557 "Authentication password for an IS-IS area.";
558 uses isis-area-password;
561 container domain-password {
562 presence "Present if authentication is required for IS level-2.";
564 "Authentication password for an IS-IS domain.";
565 uses isis-area-password;
568 container default-information-originate {
570 "Distribution of default information.";
574 "Distribute default route for IPv4.";
577 must "(. != \"level-1-2\") and ((../../../is-type = \"level-1-2\") or (. = ../../../is-type))";
580 uses redistribute-default;
586 "Distribute default route for IPv6.";
589 must "(. != \"level-1-2\") and ((../../../is-type = \"level-1-2\") or (. = ../../../is-type))";
592 uses redistribute-default;
596 container redistribute {
598 "Redistributes routes learned from other routing protocols.";
600 key "protocol level";
602 "IPv4 route redistribution.";
604 type frr-route-types:frr-route-types-v4;
605 must ". != \"isis\"";
607 "Originating routing protocol for the IPv4 routes.";
612 must "(. != \"level-1-2\") and ((../../../is-type = \"level-1-2\") or (. = ../../../is-type))";
614 "IS-IS level into which the routes should be redistributed.";
617 uses redistribute-attributes;
621 key "protocol level";
623 "IPv6 route redistribution.";
625 type frr-route-types:frr-route-types-v6;
626 must ". != \"isis\"";
628 "Originating routing protocol for the IPv6 routes.";
633 must "(. != \"level-1-2\") and ((../../../is-type = \"level-1-2\") or (. = ../../../is-type))";
635 "IS-IS level into which the routes should be redistributed.";
638 uses redistribute-attributes;
642 container multi-topology {
644 "IS-IS topologies configured for this area.";
645 container ipv4-multicast {
646 presence "Present if a separate IPv4-multicast topology is configured for this area.";
648 "IPv4 multicast topology.";
655 container ipv4-management {
656 presence "Present if a separate IPv4-management topology is configured for this area.";
658 "IPv4 management topology.";
665 container ipv6-unicast {
666 presence "Present if a separate IPv6-unicast topology is configured for this area.";
668 "IPv6 unicast topology.";
675 container ipv6-multicast {
676 presence "Present if a separate IPv6-multicast topology is configured for this area.";
678 "IPv6 multicast topology.";
685 container ipv6-management {
686 presence "Present if a separate IPv6-management topology is configured for this area.";
688 "IPv6 management topology.";
695 container ipv6-dstsrc {
696 presence "Present if a separate IPv6 destination-source topology is configured for this area.";
698 "IPv6 destination-source topology.";
706 leaf log-adjacency-changes {
710 "Log changes to the IS-IS adjacencies in this area.";
715 presence "Present if MPLS-TE is enabled.";
717 "Enable MPLS-TE functionality.";
718 leaf router-address {
719 type inet:ipv4-address;
721 "Stable IP address of the advertising router.";
726 augment "/frr-interface:lib/frr-interface:interface" {
728 "Extends interface model with IS-IS related parameters.";
730 presence "Present if an IS-IS circuit is defined for this interface.";
732 "IS-IS interface parameters.";
737 "Area-tag associated to this circuit.";
744 "IS-type of this circuit.";
751 "Routing IS-IS IPv4 traffic over this circuit.";
758 "Routing IS-IS IPv6 traffic over this circuit.";
761 container csnp-interval {
763 "Complete Sequence Number PDU (CSNP) generation interval.";
771 "CNSP interval for level-1";
781 "CNSP interval for level-2";
785 container psnp-interval {
787 "Partial Sequence Number PDU (PSNP) generation interval.";
795 "PNSP interval for level-1";
805 "PCNSP interval for level-2";
811 "Parameters related to IS-IS hello PDUs.";
816 "Add padding to IS-IS hello PDUs.";
821 "Interval between consecutive hello messages.";
829 "Holding time for level-1; interval will depend on multiplier.";
839 "Holding time for level-2; interval will depend on multiplier.";
843 container multiplier {
845 "Multiplier for the hello messages holding time.";
852 "Multiplier for the hello holding time.";
861 "Multiplier for the hello holding time.";
868 "Default metric for this IS-IS circuit.";
873 must ". < 64 or /frr-isisd:isis/instance[area-tag = current()/../../area-tag]/metric-style = 'wide'";
876 "Default level-1 metric for this IS-IS circuit.";
883 must ". < 64 or /frr-isisd:isis/instance[area-tag = current()/../../area-tag]/metric-style = 'wide'";
886 "Default level-2 metric for this IS-IS circuit.";
892 "Priority for Designated Router election.";
899 "Level-1 priority for this IS-IS circuit.";
908 "Level-2 priority for this IS-IS circuit.";
915 must "(. = \"point-to-point\") or (. = \"broadcast\")";
917 "Explicitly configured type of IS-IS circuit (broadcast or point-to-point).";
924 "Interface is in passive mode.";
928 presence "Present if a password is set for this IS interface.";
932 leaf disable-three-way-handshake {
936 "Disables three-way handshake when creating new adjacencies.";
939 container multi-topology {
941 "IS-IS topologies configured on this circuit.";
946 "IPv4 unicast topology.";
949 leaf ipv4-multicast {
953 "IPv4 multicast topology.";
956 leaf ipv4-management {
960 "IPv4 management topology.";
967 "IPv6 unicast topology.";
970 leaf ipv6-multicast {
974 "IPv6 multicast topology.";
977 leaf ipv6-management {
981 "IPv6 management topology.";
988 "IPv6 destination-source topology.";
994 notification database-overload {
996 "This notification is sent when an IS-IS instance
997 overload state changes.";
998 uses notification-instance-hdr;
1005 "Indicates IS-IS instance has left overload state";
1010 "Indicates IS-IS instance has entered overload state";
1014 "New overload state of the IS-IS instance";
1018 notification lsp-too-large {
1020 "This notification is sent when we attempt to propagate
1021 an LSP that is larger than the dataLinkBlockSize for the
1022 circuit. The notification generation must be throttled
1023 with at least 5 seconds betweeen successive
1025 uses notification-instance-hdr;
1027 uses notification-interface-hdr;
1032 "Size of the LSP PDU";
1042 notification if-state-change {
1044 "This notification is sent when an interface
1045 state change is detected.";
1046 uses notification-instance-hdr;
1048 uses notification-interface-hdr;
1057 notification corrupted-lsp-detected {
1059 "This notification is sent when we find that
1060 an LSP that was stored in memory has become
1062 uses notification-instance-hdr;
1071 notification attempt-to-exceed-max-sequence {
1073 "This notification is sent when the system
1074 wraps the 32-bit sequence counter of an LSP.";
1075 uses notification-instance-hdr;
1084 notification id-len-mismatch {
1086 "This notification is sent when we receive a PDU
1087 with a different value for the System ID length.
1088 The notification generation must be throttled
1089 with at least 5 seconds betweeen successive
1091 uses notification-instance-hdr;
1093 uses notification-interface-hdr;
1095 leaf pdu-field-len {
1098 "Size of the ID length in the received PDU";
1104 "Received raw PDU.";
1108 notification max-area-addresses-mismatch {
1110 "This notification is sent when we receive a PDU
1111 with a different value for the Maximum Area Addresses.
1112 The notification generation must be throttled
1113 with at least 5 seconds betweeen successive
1115 uses notification-instance-hdr;
1117 uses notification-interface-hdr;
1119 leaf max-area-addresses {
1122 "Received number of supported areas";
1128 "Received raw PDU.";
1132 notification own-lsp-purge {
1134 "This notification is sent when the system receives
1135 a PDU with its own system ID and zero age.";
1136 uses notification-instance-hdr;
1138 uses notification-interface-hdr;
1147 notification sequence-number-skipped {
1149 "This notification is sent when the system receives a
1150 PDU with its own system ID and different contents. The
1151 system has to reoriginate the LSP with a higher sequence
1153 uses notification-instance-hdr;
1155 uses notification-interface-hdr;
1164 notification authentication-type-failure {
1166 "This notification is sent when the system receives a
1167 PDU with the wrong authentication type field.
1168 The notification generation must be throttled
1169 with at least 5 seconds betweeen successive
1171 uses notification-instance-hdr;
1173 uses notification-interface-hdr;
1178 "Received raw PDU.";
1182 notification authentication-failure {
1184 "This notification is sent when the system receives
1185 a PDU with the wrong authentication information.
1186 The notification generation must be throttled with
1187 with at least 5 seconds betweeen successive
1189 uses notification-instance-hdr;
1191 uses notification-interface-hdr;
1196 "Received raw PDU.";
1200 notification version-skew {
1202 "This notification is sent when the system receives a
1203 PDU with a different protocol version number.
1204 The notification generation must be throttled
1205 with at least 5 seconds betweeen successive
1207 uses notification-instance-hdr;
1209 uses notification-interface-hdr;
1211 leaf protocol-version {
1214 "Protocol version received in the PDU.";
1220 "Received raw PDU.";
1224 notification area-mismatch {
1226 "This notification is sent when the system receives a
1227 Hello PDU from an IS that does not share any area
1228 address. The notification generation must be throttled
1229 with at least 5 seconds betweeen successive
1231 uses notification-instance-hdr;
1233 uses notification-interface-hdr;
1238 "Received raw PDU.";
1242 notification rejected-adjacency {
1244 "This notification is sent when the system receives a
1245 Hello PDU from an IS but does not establish an adjacency
1246 for some reason. The notification generation must be
1247 throttled with at least 5 seconds betweeen successive
1249 uses notification-instance-hdr;
1251 uses notification-interface-hdr;
1256 "Received raw PDU.";
1262 "The system may provide a reason to reject the
1263 adjacency. If the reason is not available,
1264 an empty string will be returned.";
1268 notification lsp-error-detected {
1270 "This notification is sent when the system receives an
1271 LSP with a parse error. The notification generation must
1272 be throttled with at least 5 seconds betweeen successive
1274 uses notification-instance-hdr;
1276 uses notification-interface-hdr;
1287 "Received raw PDU.";
1293 "If the problem is a malformed TLV, the error-offset
1294 points to the start of the TLV. If the problem is with
1295 the LSP header, the error-offset points to the errant
1302 "If the problem is a malformed TLV, the tlv-type is set
1303 to the type value of the suspicious TLV. Otherwise,
1304 this leaf is not present.";
1308 notification adjacency-state-change {
1310 "This notification is sent when an IS-IS adjacency
1311 moves to Up state or to Down state.";
1312 uses notification-instance-hdr;
1314 uses notification-interface-hdr;
1319 "Name of the neighbor. If the name of the neighbor is
1320 not available, it is not returned.";
1323 leaf neighbor-system-id {
1326 "Neighbor system-id";
1330 type adj-state-type;
1332 "New state of the IS-IS adjacency.";
1338 "If the adjacency is going to DOWN, this leaf provides
1339 a reason for the adjacency going down. The reason is
1340 provided as a text. If the adjacency is going to UP, no
1341 reason is provided.";
1345 notification lsp-received {
1347 "This notification is sent when an LSP is received.
1348 The notification generation must be throttled with at
1349 least 5 seconds betweeen successive notifications.";
1350 uses notification-instance-hdr;
1352 uses notification-interface-hdr;
1363 "Sequence number of the received LSP.";
1366 leaf received-timestamp {
1367 type yang:timestamp;
1369 "Timestamp when the LSP was received.";
1372 leaf neighbor-system-id {
1375 "Neighbor system-id of LSP sender";
1379 notification lsp-generation {
1381 "This notification is sent when an LSP is regenerated.
1382 The notification generation must be throttled with at
1383 least 5 seconds betweeen successive notifications.";
1384 uses notification-instance-hdr;
1395 "Sequence number of the received LSP.";
1398 leaf send-timestamp {
1399 type yang:timestamp;
1401 "Timestamp when our LSP was regenerated.";