Adding OpenConfig YANG models.
Change-Id: I0a2fdd5826e80933cf4b9ae939ff3051acec02aa
diff --git a/models/openconfig/src/main/yang/isis/openconfig-isis-lsdb-types.yang b/models/openconfig/src/main/yang/isis/openconfig-isis-lsdb-types.yang
new file mode 100644
index 0000000..b645e35
--- /dev/null
+++ b/models/openconfig/src/main/yang/isis/openconfig-isis-lsdb-types.yang
@@ -0,0 +1,677 @@
+module openconfig-isis-lsdb-types {
+
+ yang-version "1";
+
+ // namespace
+ namespace "http://openconfig.net/yang/isis-lsdb-types";
+
+ prefix "oc-isis-lsdb-types";
+
+ import openconfig-extensions { prefix oc-ext; }
+
+ // meta
+ organization "OpenConfig working group";
+
+ contact
+ "OpenConfig working group
+ www.openconfig.net";
+
+ description
+ "This module contains general LSDB type definitions for use in
+ ISIS YANG model. ";
+
+ oc-ext:openconfig-version "0.3.2";
+
+ revision "2017-07-26" {
+ description
+ "Update LSDB and fix bugs.";
+ reference "0.3.2";
+ }
+
+ revision "2017-05-15" {
+ description
+ "Refactor LSDB.";
+ reference "0.3.0";
+ }
+
+ revision "2017-01-13" {
+ description
+ "Remove top-level /isis container";
+ reference "0.2.1";
+ }
+
+ revision "2016-12-15" {
+ description
+ "Add segment routing to IS-IS module";
+ reference "0.2.0";
+ }
+
+ revision "2016-10-18" {
+ description
+ "Initial revision of IS-IS models.";
+ reference "0.1.0";
+ }
+
+ identity ISIS_TLV_TYPE {
+ description
+ "Base identity for an ISIS TLV type.";
+ }
+
+ identity ISIS_SUBTLV_TYPE {
+ description
+ "Base identity for an ISIS SUB-TLV type.";
+ }
+
+ identity IS_REACHABILITY_SUBTLVS_TYPE {
+ base "ISIS_SUBTLV_TYPE";
+ description
+ "Base identity for an ISIS TLV 22, 23, 222, 223, 141 SUB-TLV
+ type.";
+ }
+
+ identity IP_REACHABILITY_SUBTLVS_TYPE {
+ base "ISIS_SUBTLV_TYPE";
+ description
+ "Base identity for an ISIS TLV 135, 235, 236, 237 SUB-TLV
+ type.";
+ }
+
+ identity ROUTER_CAPABILITY_SUBTLVS_TYPE {
+ base "ISIS_SUBTLV_TYPE";
+ description
+ "Base identity for an ISIS TLV 242 SUB-TLV type.";
+ }
+
+ identity AREA_ADDRESSES {
+ base "ISIS_TLV_TYPE";
+ description
+ "ISIS TLV 1. Intermediate System to Intermediate System Intra-
+ Domain Routeing Exchange Protocol for use in Conjunction with
+ the Protocol for Providing the Connectionless-mode Network
+ Service (ISO 8473), International Standard 10589: 2002, Second
+ Edition, 2002.";
+ reference
+ "ISO 10589";
+ }
+
+ identity IIS_NEIGHBORS {
+ base "ISIS_TLV_TYPE";
+ description
+ "ISIS TLV 2. Intermediate System to Intermediate System Intra-
+ Domain Routeing Exchange Protocol for use in Conjunction with
+ the Protocol for Providing the Connectionless-mode Network
+ Service (ISO 8473), International Standard 10589: 2002, Second
+ Edition, 2002.";
+ reference
+ "ISO 10589";
+ }
+
+ identity INSTANCE_ID {
+ base "ISIS_TLV_TYPE";
+ description
+ "ISIS TLV 7. An Instance Identifier (IID) to uniquely
+ identify an IS-IS instance. When the IID = 0, the list of
+ supported ITIDs MUST NOT be present. An IID-TLV with IID = 0
+ MUST NOT appear in an SNP or LSP. When the TLV appears (with a
+ non-zero IID) in an SNP or LSP, exactly one ITID. MUST be
+ present indicating the topology with which the PDU is
+ associated. If no ITIDs or multiple ITIDs are present or the
+ IID is zero, then the PDU MUST be ignored";
+ reference
+ "RFC6822: IS-IS Multi-Instance";
+ }
+
+ identity AUTHENTICATION {
+ base "ISIS_TLV_TYPE";
+ description
+ "ISIS TLV 10.Intermediate System to Intermediate System Intra-
+ Domain Routeing Exchange Protocol for use in Conjunction with
+ the Protocol for Providing the Connectionless-mode Network
+ Service (ISO 8473) International Standard 10589: 2002, Second
+ Edition, 2002.";
+ reference
+ "ISO 10589";
+ }
+
+ identity PURGE_OI {
+ base "ISIS_TLV_TYPE";
+ description
+ "ISIS TLV 13. If an IS generates a purge, it SHOULD include
+ this TLV in the purge with its own system ID. If an IS
+ receives a purge that does not include this TLV, then it SHOULD
+ add this TLV with both its own system ID and the system ID of
+ the IS from which it received the purge. This allows ISs
+ receiving purges to log the system ID of the originator, or the
+ upstream source of the purge.";
+ reference
+ "RFC6232: Purge Originator Identification TLV";
+ }
+
+ identity LSP_BUFFER_SIZE {
+ base "ISIS_TLV_TYPE";
+ description
+ "ISIS TLV 14. The maximum MTU that the advertising system can
+ receive, expressed in bytes.";
+ reference
+ "ISO 10589: LSP Buffer Size TLV";
+ }
+
+ identity EXTENDED_IS_REACHABILITY {
+ base "ISIS_TLV_TYPE";
+ description
+ "ISIS TLV 22. An extended IS reachability TLV that has a
+ different data structure to TLV 2 that introduces the use of
+ sub-TLV object-group.";
+ reference
+ "RFC5305: IS-IS Extensions for Traffic Engineering";
+ }
+
+ identity IS_NEIGHBOR_ATTRIBUTE {
+ base "ISIS_TLV_TYPE";
+ description
+ "ISIS TLV 23. Identical in format to TLV 22 and included in
+ Original LSPs or Extended LSPs. Regardless of the type of LSP
+ in which the TLVs appear, the information pertains to the
+ neighbor relationship between the Originating System and the IS
+ identified in the TLV";
+ reference
+ "RFC5311: Simplified Extension of Link State PDU (LSP) Space
+ for IS-IS";
+ }
+
+ identity ISIS_ALIAS_ID {
+ base "ISIS_TLV_TYPE";
+ description
+ "ISIS TLV 24. IS-Alias TLV which extension-capable ISs to
+ recognize the Originating System of an Extended LSP set. It
+ identifies the Normal system-id of the Originating System";
+ reference
+ "RFC5311: Simplified Extension of Link State PDU (LSP) Space
+ for IS-IS";
+ }
+
+ identity IPV4_INTERNAL_REACHABILITY {
+ base "ISIS_TLV_TYPE";
+ description
+ "ISIS TLV 128. TLV defines IP addresses within the routing
+ domain reachable directly via one or more interfaces on this
+ Intermediate system";
+ reference
+ "RFC1195: OSI ISIS for IP and Dual Environments. RFC5302:
+ Domain-Wide Prefix Distribution with Two-Level IS-IS";
+ }
+
+ identity NLPID {
+ base "ISIS_TLV_TYPE";
+ description
+ "ISIS TLV 129. TLV defines the set Network Layer Protocol
+ Identifiers for Network Layer protocols that this Intermediate
+ System is capable of relaying";
+ reference
+ "RFC1195: Use of OSI IS-IS for Routing in TCP/IP and
+ Dual Environments";
+ }
+
+ identity IPV4_EXTERNAL_REACHABILITY {
+ base "ISIS_TLV_TYPE";
+ description
+ "ISIS TLV 130. TLV defines IP addresses outside the routing
+ domain reachable via interfaces on this Intermediate system.
+ This is permitted to appear multiple times, and in an LSP with
+ any LSP number. However, this field must not appear in
+ pseudonode LSPs";
+ reference "
+ RFC1195: OSI ISIS for IP and Dual Environments. RFC5302:
+ Domain-Wide Prefix Distribution with Two-Level IS-IS";
+ }
+
+ identity IPV4_INTERFACE_ADDRESSES {
+ base "ISIS_TLV_TYPE";
+ description
+ "ISIS TLV 132. The IP address of one or more interfaces
+ corresponding to the SNPAs enabled on this Intermediate system
+ (i.e., one or more IP addresses of this router). This is
+ permitted to appear multiple times, and in an LSP with any LSP
+ number.";
+ reference
+ "RFC1195: Use of OSI IS-IS for Routing in TCP/IP and Dual
+ Environments";
+ }
+
+ identity IPV4_TE_ROUTER_ID {
+ base "ISIS_TLV_TYPE";
+ description
+ "ISIS TLV 134. Traffic Engineering router ID TLV that contains
+ the 4-octet router ID of the router originating the LSP";
+ reference
+ "RFC5305: IS-IS Extensions for Traffic Engineering";
+ }
+
+ identity EXTENDED_IPV4_REACHABILITY {
+ base "ISIS_TLV_TYPE";
+ description
+ "ISIS TLV 135. Extended IP reachability TLV that provides for a
+ 32-bit metric and adds one bit to indicate that a prefix has
+ been redistributed _down_ in the hierarchy";
+ reference
+ "RFC5305: IS-IS Extensions for Traffic Engineering";
+ }
+
+ identity DYNAMIC_NAME {
+ base "ISIS_TLV_TYPE";
+ description
+ "ISIS TLV 137. The Dynamic hostname TLV is optional. This TLV
+ may be present in any fragment of a non-pseudonode LSP. The
+ value field identifies the symbolic name of the router
+ originating the LSP. This symbolic name can be the FQDN for the
+ router, it can be a subset of the FQDN, or it can be any string
+ operators want to use for the router.";
+ reference
+ "RFC6233: IS-IS Registry Extension for Purges, RFC 5301: Dynamic
+ Hostname Exchange Mechanism for IS-IS.";
+ }
+
+ identity IPV4_SRLG {
+ base "ISIS_TLV_TYPE";
+ description
+ "ISIS TLV 138. IPv4 Shared Risk Link Group TLV";
+ reference
+ "RFC5307: IS-IS Extensions in Support of Generalized
+ Multi-Protocol Label Switching (GMPLS)";
+ }
+
+ identity IPV6_SRLG {
+ base "ISIS_TLV_TYPE";
+ description
+ "ISIS TLV 139. IPv6 Shared Risk Link Group";
+ reference
+ "RFC6119: IPv6 Traffic Engineering in IS-IS";
+ }
+
+ identity IPV6_TE_ROUTER_ID {
+ base "ISIS_TLV_TYPE";
+ description
+ "ISIS TLV 140. The IPv6 TE Router ID TLV contains a 16-octet
+ IPv6 address. A stable global IPv6 address MUST be used, so that
+ the router ID provides a routable address, regardless of the
+ state of a node's interfaces. If a router does not implement
+ traffic engineering, it MAY include or omit the IPv6 TE Router
+ ID TLV. If a router implements traffic engineering for IPv6, it
+ MUST include this TLV in its LSP. This TLV MUST NOT be included
+ more than once in an LSP.";
+ reference
+ "RFC6119: IPv6 Traffic Engineering in IS-IS.";
+ }
+
+ identity MT_ISN {
+ base "ISIS_TLV_TYPE";
+ description
+ "ISIS TLV 222. TLV is aligned with extended IS reachability TLV
+ type 22 beside an additional two bytes in front at the beginning
+ of the TLV that. indicate MT membership.";
+ reference
+ "RFC5120: M-ISIS: Multi Topology (MT) Routing in Intermediate
+ System to Intermediate Systems (IS-ISs)";
+ }
+
+ identity MT_IS_NEIGHBOR_ATTRIBUTE {
+ base "ISIS_TLV_TYPE";
+ description
+ "ISIS TLV 223. Is is identical in format to TLV 222. In the
+ event that there is a need to advertise in Extended LSPs such
+ information associated with neighbors of the Originating System,
+ it is necessary to define new TLVs to carry the sub-TLV
+ information.";
+ reference
+ "RFC5311: Simplified Extension of Link State PDU (LSP) Space for
+ IS-IS";
+ }
+
+ identity MULTI_TOPOLOGY {
+ base "ISIS_TLV_TYPE";
+ description
+ "ISIS TLV 229. This MT TLV can advertise up to 127 MTs. It is
+ announced in IIHs and LSP fragment 0, and can occur multiple
+ times. The resulting MT set SHOULD be the union of all the MT
+ TLV occurrences in the packet. Any other IS-IS PDU occurrence of
+ this TLV MUST be ignored. Lack of MT TLV in hellos and fragment
+ zero LSPs MUST be interpreted as participation of the
+ advertising interface or router in MT ID #0 only. If a router
+ advertises MT TLV, it has to advertise all the MTs it
+ participates in, specifically including topology ID #0 also.";
+ reference
+ "RFC5120: M-ISIS: Multi Topology (MT) Routing in Intermediate
+ System to Intermediate Systems (IS-ISs)";
+ }
+
+ identity IPV6_INTERFACE_ADDRESSES {
+ base "ISIS_TLV_TYPE";
+ description
+ "ISIS TLV 232. IPv6 Interface Address TLV that maps directly to
+ the IP Interface Address TLV in [RFC1195]. We necessarily modify
+ the contents to be 0-15 16-octet IPv6 interface addresses
+ instead of 0-63 4-octet IPv4 interface addresses";
+ reference "RFC5308: Routing IPv6 with IS-IS.";
+ }
+
+ identity MT_IPV4_REACHABILITY {
+ base "ISIS_TLV_TYPE";
+ description
+ "ISIS TLV 235. TLV is aligned with extended IP reachability TLV
+ type 135 beside an additional two bytes in front to indicate MT
+ membership";
+ reference
+ "RFC5120: M-ISIS: Multi Topology (MT) Routing in Intermediate
+ System to Intermediate Systems (IS-ISs)";
+ }
+
+ identity IPV6_REACHABILITY {
+ base "ISIS_TLV_TYPE";
+ description
+ "ISIS TLV 236. The IPv6 Reachability TLV describes network
+ reachability through the specification of a routing prefix,
+ metric information, a bit to indicate if the prefix is being
+ advertised down from a higher level, a bit to indicate if the
+ prefix is being distributed from another routing protocol, and
+ OPTIONALLY the existence of Sub-TLVs to allow for later
+ extension.";
+ reference
+ "RFC5308: Routing IPv6 with IS-IS";
+ }
+
+ identity MT_IPV6_REACHABILITY {
+ base "ISIS_TLV_TYPE";
+ description
+ "ISIS TLV 237. TLV is aligned with IPv6 Reachability TLV type
+ 236 beside an additional two bytes in front to indicate MT
+ membership.";
+ reference
+ "RFC5120: M-ISIS: Multi Topology (MT) Routing in Intermediate
+ System to Intermediate Systems (IS-ISs).";
+ }
+
+ identity ROUTER_CAPABILITY {
+ base "ISIS_TLV_TYPE";
+ description
+ "ISIS TLV 242. IS-IS TLV named CAPABILITY, formed of multiple
+ sub-TLVs, which allows a router to announce its capabilities
+ within an IS-IS level or the entire routing domain.";
+ reference
+ "RFC4971: Intermediate System to Intermediate System (IS-IS)
+ Extensions for Advertising Router Information.";
+ }
+
+ //sub-TLVs for TLVs 22, 23, 141, 222, 223
+
+ identity IS_REACHABILITY_ADMIN_GROUP {
+ base "IS_REACHABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 3. Administrative group(color).";
+ reference
+ "RFC5305: IS-IS Extensions for Traffic Engineering";
+ }
+
+ identity IS_REACHABILITY_LINK_ID {
+ base "IS_REACHABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 4. Link Local/Remote Identifiers.";
+ reference
+ "RFC5307: IS-IS Extensions in Support of Generalized
+ Multi-Protocol Label Switching (GMPLS)";
+ }
+
+ identity IS_REACHABILITY_IPV4_INTERFACE_ADDRESS {
+ base "IS_REACHABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 6. IPv4 Interface Address.";
+ reference
+ "RFC5305: IS-IS Extensions for Traffic Engineering.";
+ }
+
+ identity IS_REACHABILITY_IPV4_NEIGHBOR_ADDRESS {
+ base "IS_REACHABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 8. IPv4 Neighbor Address.";
+ reference
+ "RFC5305: IS-IS Extensions for Traffic Engineering.";
+ }
+
+ identity IS_REACHABILITY_MAX_LINK_BANDWIDTH {
+ base "IS_REACHABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 9. Maximum Link Bandwidth.";
+ reference
+ "RFC5305: IS-IS Extensions for Traffic Engineering.";
+ }
+
+ identity IS_REACHABILITY_MAX_RESERVABLE_BANDWIDTH {
+ base "IS_REACHABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 10. Maximum Reservable Bandwidth.";
+ reference
+ "RFC5305: IS-IS Extensions for Traffic Engineering.";
+ }
+
+ identity IS_REACHABILITY_UNRESERVED_BANDWIDTH {
+ base "IS_REACHABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 11. Unreserved bandwidth.";
+ reference
+ "RFC5305: IS-IS Extensions for Traffic Engineering.";
+ }
+
+ identity IS_REACHABILITY_IPV6_INTERFACE_ADDRESS {
+ base "IS_REACHABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 12. IPv6 Interface Address.";
+ reference
+ "RFC6119: IPv6 Traffic Engineering in IS-IS.";
+ }
+
+ identity IS_REACHABILITY_IPV6_NEIGHBOR_ADDRESS {
+ base "IS_REACHABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 13. IPv6 Neighbor Address.";
+ reference
+ "RFC6119: IPv6 Traffic Engineering in IS-IS.";
+ }
+
+ identity IS_REACHABILITY_EXTENDED_ADMIN_GROUP {
+ base "IS_REACHABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 14. Extended Administrative Group.";
+ reference
+ "RFC7308: Extended Administrative Groups in MPLS Traffic
+ Engineering (MPLS-TE).";
+ }
+
+ identity IS_REACHABILITY_TE_DEFAULT_METRIC {
+ base "IS_REACHABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 18. TE Default Metric.";
+ reference
+ "RFC5305: IS-IS Extensions for Traffic Engineering.";
+ }
+
+ identity IS_REACHABILITY_LINK_ATTRIBUTES {
+ base "IS_REACHABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 19. Link Attributes.";
+ reference
+ "RFC5209: Definition of an IS-IS Link Attribute Sub-TLV.";
+ }
+
+ identity IS_REACHABILITY_LINK_PROTECTION_TYPE {
+ base "IS_REACHABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 20. Link Protection Type.";
+ reference
+ "RFC5307: IS-IS Extensions in Support of Generalized
+ Multi-Protocol Label Switching (GMPLS)";
+ }
+
+ identity IS_REACHABILITY_BANDWIDTH_CONSTRAINTS {
+ base "IS_REACHABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 22. Bandwidth Constraints.";
+ reference
+ "RFC4124: Protocol Extensions for Support of Diffserv-aware MPLS
+ Traffic Engineering.";
+ }
+
+ identity IS_REACHABILITY_UNCONSTRAINED_LSP {
+ base "IS_REACHABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 23. Unconstrained LSP.";
+ reference
+ "RFC5330: A Link-Type sub-TLV to Convey the Number of Traffic
+ Engineering Label Switched Paths Signalled with Zero
+ Reserved Bandwidth across a Link.";
+ }
+
+ identity IS_REACHABILITY_ADJ_SID {
+ base "IS_REACHABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 31. Adjacency Segment Identifier.";
+ reference
+ "draft-ietf-isis-segment-routing-extensions.";
+ }
+
+ identity IS_REACHABILITY_ADJ_LAN_SID {
+ base "IS_REACHABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 32. Adjacency LAN Segment Identifier.";
+ reference
+ "draft-ietf-isis-segment-routing-extensions.";
+ }
+
+ identity IS_REACHABILITY_LINK_DELAY {
+ base "IS_REACHABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 33. Unidirectional Link Delay.";
+ reference
+ "RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions.";
+ }
+
+ identity IS_REACHABILITY_MIN_MAX_LINK_DELAY {
+ base "IS_REACHABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 34. Min/Max Unidirectional Link Delay.";
+ reference
+ "RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions.";
+ }
+
+ identity IS_REACHABILITY_LINK_DELAY_VARIATION {
+ base "IS_REACHABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 35. Unidirectional Link Delay Variation.";
+ reference
+ "RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions.";
+ }
+
+ identity IS_REACHABILITY_LINK_LOSS {
+ base "IS_REACHABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 36. Unidirectional Link Loss Delay.";
+ reference
+ "RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions.";
+ }
+
+ identity IS_REACHABILITY_RESIDUAL_BANDWIDTH {
+ base "IS_REACHABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 37. Unidirectional Residual Bandwidth.";
+ reference
+ "RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions.";
+ }
+
+ identity IS_REACHABILITY_AVAILABLE_BANDWIDTH {
+ base "IS_REACHABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 38. Unidirectional Available Bandwidth.";
+ reference
+ "RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions.";
+ }
+
+ identity IS_REACHABILITY_UTILIZED_BANDWIDTH {
+ base "IS_REACHABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 39. Unidirectional Utilized Bandwidth.";
+ reference
+ "RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions.";
+ }
+
+ //sub-TLVs for TLVs 135, 235, 236, 237
+ identity IP_REACHABILITY_TAG {
+ base "IP_REACHABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 1. 32-bit Administrative Tag.";
+ reference
+ "RFC7794: IS-IS Prefix Attributes for Extended IPv4 and IPv6
+ Reachability.";
+ }
+
+ identity IP_REACHABILITY_TAG64 {
+ base "IP_REACHABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 2. 64-bit Administrative Tag.";
+ reference
+ "RFC7794: IS-IS Prefix Attributes for Extended IPv4 and IPv6
+ Reachability.";
+ }
+
+ identity IP_REACHABILITY_PREFIX_SID {
+ base "IP_REACHABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 3. Prefix Segment Identifier.";
+ reference
+ "draft-ietf-isis-segment-routing-extension.";
+ }
+
+ identity IP_REACHABILITY_PREFIX_FLAGS {
+ base "IP_REACHABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 4. Prefix Attribute Flags.";
+ reference
+ "RFC7794: IS-IS Prefix Attributes for Extended IPv4 and IPv6
+ Reachability.";
+ }
+
+ identity IP_REACHABILITY_IPV4_ROUTER_ID {
+ base "IP_REACHABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 11. IPv4 Source Router ID.";
+ reference
+ "RFC7794: IS-IS Prefix Attributes for Extended IPv4 and IPv6
+ Reachability.";
+ }
+
+ identity IP_REACHABILITY_IPV6_ROUTER_ID {
+ base "IP_REACHABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 12. IPv6 Source Router ID.";
+ reference
+ "RFC7794: IS-IS Prefix Attributes for Extended IPv4 and IPv6
+ Reachability.";
+ }
+
+
+ //sub-TLVs for TLVs 242
+
+ identity ROUTER_CAPABILITY_SR_CAPABILITY {
+ base "ROUTER_CAPABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 2. Segment Routing Capability.";
+ reference
+ "draft-ietf-isis-segment-routing-extensions.";
+ }
+
+ identity ROUTER_CAPABILITY_SR_ALGORITHM {
+ base "ROUTER_CAPABILITY_SUBTLVS_TYPE";
+ description
+ "sub-TLV 19. Segment Routing Algorithm.";
+ reference
+ "draft-ietf-isis-segment-routing-extensions.";
+ }
+
+}
diff --git a/models/openconfig/src/main/yang/isis/openconfig-isis-lsp.yang b/models/openconfig/src/main/yang/isis/openconfig-isis-lsp.yang
new file mode 100644
index 0000000..81c48e6
--- /dev/null
+++ b/models/openconfig/src/main/yang/isis/openconfig-isis-lsp.yang
@@ -0,0 +1,3542 @@
+submodule openconfig-isis-lsp {
+
+ belongs-to openconfig-isis {
+ prefix oc-isis;
+ }
+ import openconfig-extensions { prefix "oc-ext"; }
+ import openconfig-inet-types { prefix "inet"; }
+ import openconfig-isis-types { prefix "oc-isis-types"; }
+ import openconfig-isis-lsdb-types { prefix "oc-isis-lsdb-types"; }
+ import openconfig-types { prefix "oc-types"; }
+ import openconfig-mpls-types { prefix "oc-mpls-types"; }
+ // meta
+ organization
+ "OpenConfig working group";
+
+ contact
+ "OpenConfig working group
+ www.openconfig.net ";
+
+ description
+ "This sub-module describes a YANG model for the IS-IS Link State
+ Database (LSDB).
+
+ Portions of this code were derived from IETF RFCs relating to the
+ IS-IS protocol.
+ Please reproduce this note if possible.
+ IETF code is subject to the following copyright and license:
+ Copyright (c) IETF Trust and the persons identified as authors of
+ the code.
+ All rights reserved.
+ Redistribution and use in source and binary forms, with or without
+ modification, is permitted pursuant to, and subject to the license
+ terms contained in, the Simplified BSD License set forth in
+ Section 4.c of the IETF Trust's Legal Provisions Relating
+ to IETF Documents (http://trustee.ietf.org/license-info).";
+
+ oc-ext:openconfig-version "0.3.2";
+
+ revision "2017-07-26" {
+ description
+ "Update LSDB and fix bugs.";
+ reference "0.3.2";
+ }
+
+ revision "2017-05-15" {
+ description
+ "Refactor LSDB.";
+ reference "0.3.0";
+ }
+
+ revision "2017-01-13" {
+ description
+ "Remove top-level /isis container";
+ reference "0.2.1";
+ }
+
+ revision "2016-12-15" {
+ description
+ "Add segment routing to IS-IS module";
+ reference "0.2.0";
+ }
+
+ revision "2016-10-18" {
+ description
+ "Initial revision of IS-IS models.";
+ reference "0.1.0";
+ }
+
+ typedef isis-metric-flags {
+ type enumeration {
+ enum INTERNAL {
+ description
+ "When this flag is not set, internal metrics are in use.";
+ }
+ enum UNSUPPORTED {
+ description
+ "When this flag (referred to as the S-bit) is set, then
+ the metric is unsupported.";
+ }
+ }
+ description
+ "Type definition for flags used in IS-IS metrics";
+ }
+
+ grouping isis-lsdb-link-characteristics-a-bit {
+ description
+ "Definition of the A bit, as used in IS-IS link delay TLVs.";
+
+ leaf a-bit {
+ type boolean;
+ description
+ "The A bit is set when the measured value of this parameter
+ exceeds its configured maximum threshold. The A bit is cleared
+ when the measured value falls below its configured reuse
+ threshold.";
+ }
+ }
+
+ grouping isis-lsdb-tlv-nlpid-state {
+ description
+ "NLP ID parameters for IS-IS.";
+
+ leaf-list nlpid {
+ type enumeration {
+ enum IPV4 {
+ description "IPv4 Address family.";
+ }
+ enum IPV6 {
+ description "IPv6 Address family.";
+ }
+ }
+ description
+ "Protocol supported. IPv4 is defined as (0xcc) and IPv6 -
+ (0x8e)";
+ reference
+ "RFC1195: Use of OSI IS-IS for Routing in TCP/IP and
+ Dual Environments. TLV 129. ";
+ }
+ }
+
+ grouping isis-lsdb-subtlv-type-state {
+ description
+ "Per-subTLV type operational state parameters for ISIS.";
+
+ leaf type {
+ type identityref {
+ base oc-isis-lsdb-types:ISIS_SUBTLV_TYPE;
+ }
+ description
+ "The type of subTLV being described. The type of subTLV is
+ expressed as a canonical name.";
+ }
+ }
+
+ grouping isis-lsdb-tlv-type-state {
+ description
+ "Per-subTLV type operational state parameters for ISIS.";
+
+ leaf type {
+ type identityref {
+ base oc-isis-lsdb-types:ISIS_TLV_TYPE;
+ }
+ description
+ "The type of TLV being described. The type of TLV is
+ expressed as a canonical name.";
+ }
+ }
+
+ grouping is-reachability-neighbor-state {
+ description
+ "This grouping defines is-reachability neighbor.";
+
+ container subtlvs {
+ description
+ "This container describes IS Neighbor sub-TLVs.";
+
+ list subtlv {
+ key "type";
+
+ description
+ "List of subTLV types in the LSDB for the specified TLV.";
+
+ leaf type {
+ type leafref {
+ path "../state/type";
+ }
+ description
+ "Reference to the sub-TLV type.";
+ }
+
+ container state {
+ description
+ "State parameters of IS neighbor state";
+
+ uses isis-lsdb-subtlv-type-state;
+ }
+
+ container admin-group {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IS_REACHABILITY_ADMIN_GROUP'" {
+ description
+ "Only include the administrative group container when
+ the sub-TLV is type 3";
+ }
+ description
+ "This container defines sub-TLV 3.";
+
+ container state {
+ description
+ "State parameters of sub-TLV 3.";
+
+ leaf-list admin-group {
+ type uint32;
+ description
+ "The administrative group sub-TLV contains a 4-octet
+ bit mask assigned by the network administrator. Each
+ set bit corresponds to one administrative group
+ assigned to the interface. By convention, the least
+ significant bit is referred to as group 0, and the
+ most significant bit is referred to as group 31.";
+ reference
+ "RFC5305: IS-IS Extensions for Traffic Engineering.
+ sub-TLV 3: TLV 22,23,141,222, 223.";
+ }
+ }
+ }
+
+ container link-id {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IS_REACHABILITY_LINK_ID'" {
+ description
+ "Only include the link identifier container when the
+ sub-TLV is type 4";
+ }
+ description
+ "This container defines sub-TLV 4.";
+
+ container state {
+ description
+ "State parameters of sub-TLV 4.";
+
+ leaf local {
+ type uint32;
+ description
+ "The value field of this sub-TLV contains 4 octets of
+ Link Local Identifier followed by 4 octets of Link
+ Remote Identifier.";
+ reference
+ "RFC5307: IS-IS Extensions in Support of Generalized
+ Multi-Protocol Label Switching (GMPLS). sub-TLV 3: TLV
+ 22,23,141,222, 223.";
+ }
+
+ leaf remote {
+ type uint32;
+ description
+ "If the Link Remote Identifier is unknown, it is set
+ to 0.";
+ reference
+ "RFC5307: IS-IS Extensions in Support of Generalized
+ Multi-Protocol Label Switching (GMPLS). sub-TLV 3: TLV
+ 22,23,141,222, 223.";
+ }
+ }
+ }
+
+ container ipv4-interface-address {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IS_REACHABILITY_IPV4_INTERFACE_ADDRESS'" {
+ description
+ "Only include the IPv4 interface address group container
+ when the sub-TLV is type 6";
+ }
+ description
+ "This container defines sub-TLV 6.";
+
+ container state {
+ description
+ "State parameters of sub-TLV 6.";
+
+ leaf-list address {
+ type inet:ipv4-address;
+ description
+ "A 4-octet IPv4 address for the interface described by
+ the (main) TLV. This sub-TLV can occur multiple
+ times.";
+ reference
+ "RFC5305: IS-IS Extensions for Traffic Engineering.
+ sub-TLV 6: TLV 22,23,41,222,223.";
+ }
+ }
+ }
+
+ container ipv4-neighbor-address {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IS_REACHABILITY_IPV4_NEIGHBOR_ADDRESS'" {
+ description
+ "Only include the IPv4 neighbor address container when
+ the sub-TLV is type 8.";
+ }
+ description
+ "This container defines sub-TLV 8.";
+
+ container state {
+ description
+ "State parameters of sub-TLV 8.";
+
+ leaf-list address {
+ type inet:ipv4-address;
+ description
+ "A single IPv4 address for a neighboring router on
+ this link. This sub-TLV can occur multiple times.";
+ reference
+ "RFC5305: IS-IS Extensions for Traffic Engineering.
+ sub-TLV 8: TLV 22,23, 141,222,223.";
+ }
+ }
+ }
+
+ container max-link-bandwidth {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IS_REACHABILITY_MAX_LINK_BANDWIDTH'" {
+ description
+ "Only include the maximum link bandwidth container when
+ the sub-TLV is type 9.";
+ }
+ description
+ "This container defines sub-TLV 9.";
+
+ container state {
+ description
+ "State parameters of sub-TLV 9.";
+
+ leaf bandwidth {
+ type oc-types:ieeefloat32;
+ units "bytes per second";
+ description
+ "The maximum bandwidth that can be used on this link
+ in this direction (from the system originating the LSP
+ to its neighbors). It is encoded in 32 bits in IEEE
+ floating point format. The units are bytes (not
+ bits!) per second.";
+ reference
+ "RFC5305: IS-IS Extensions for Traffic Engineering.
+ sub-TLV 9: TLV 22,23,141,222,223.";
+ }
+ }
+ }
+
+ container max-reservable-link-bandwidth {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IS_REACHABILITY_MAX_RESERVABLE_BANDWIDTH'" {
+ description
+ "Only include the maximum reservable link bandwidth
+ container when the sub-TLV type is 10.";
+ }
+ description
+ "This container defines sub-TLV 10.";
+
+ container state {
+ description
+ "State parameters of sub-TLV 10.";
+
+ leaf bandwidth {
+ type oc-types:ieeefloat32;
+ units "bytes per second";
+ description
+ "The maximum amount of bandwidth that can be reserved
+ in this direction on this link. Note that for
+ oversubscription purposes, this can be greater than
+ the bandwidth of the link. It is encoded in 32 bits
+ in IEEE floating point format. The units are bytes
+ (not bits!) per second.";
+ reference
+ "RFC5305: IS-IS Extensions for Traffic Engineering.
+ Sub-TLV 10: TLV 22,23,141,222,223.";
+ }
+ }
+ }
+
+ container unreserved-bandwidth {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IS_REACHABILITY_UNRESERVED_BANDWIDTH'" {
+ description
+ "Only include the unreserved bandwidth container when
+ the sub-TLV type is 11.";
+ }
+ description
+ "This container defines unreserved-bandwidth. The units
+ are bytes per second.";
+
+ reference
+ "RFC5305: IS-IS Extensions for Traffic Engineering. sub-
+ TLV 11: TLV 22,23,141,222,223";
+
+ list setup-priority {
+ key "priority";
+
+ leaf priority {
+ type leafref {
+ path "../state/priority";
+ }
+ description
+ "Reference to the setup priority to which the
+ unreserved bandwidth corresponds.";
+ }
+
+ description
+ "Setup priority (0 through 7) for unreserved
+ bandwidth.";
+
+ container state {
+ description
+ "State parameters of IS Extended Reachability sub-TLV
+ 11.";
+
+ leaf priority {
+ type uint8 {
+ range "0..7";
+ }
+ description
+ "Setup priority level of 0 through 7 to be used by
+ Unreserved Bandwidth sub-TLV 11.";
+ }
+
+ leaf bandwidth {
+ type oc-types:ieeefloat32;
+ units "bytes per second";
+ description
+ "The amount of bandwidth reservable in this
+ direction on this link. Note that for
+ oversubscription purposes, this can be greater than
+ the bandwidth of the link. It contains eight 32-bit
+ IEEE floating point numbers(one for each priority).
+ The units are bytes (not bits!) per second. The
+ values correspond to the bandwidth that can be
+ reserved with a setup priority of 0 through 7,
+ arranged in increasing order with priority 0
+ occurring at the start of the sub-TLV, and priority
+ 7 at the end of the sub-TLV.";
+ }
+ }
+ }
+ }
+
+ container ipv6-interface-address {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IS_REACHABILITY_IPV6_INTERFACE_ADDRESS'" {
+ description
+ "Only include the IPv6 interface address when the
+ sub-TLV type is 12.";
+ }
+ description
+ "This container defines sub-TLV 12.";
+
+ container state {
+ description
+ "State parameters of sub-TLV 12.";
+
+ leaf-list address {
+ type inet:ipv6-address;
+ description
+ "Contains a 16-octet IPv6 address for the interface
+ described by the containing Extended IS Reachability
+ TLV. This sub-TLV can occur multiple times.";
+ reference
+ "RFC6119: IPv6 Traffic Engineering in IS-IS. sub-TLV
+ 12: TLV 22,23,141,222,223.";
+ }
+ }
+ }
+
+ container ipv6-neighbor-address {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IS_REACHABILITY_IPV6_NEIGHBOR_ADDRESS'" {
+ description
+ "Only include the IPv6 neighbor address when the
+ sub-TLV type is 13.";
+ }
+ description
+ "This container defines sub-TLV 13.";
+
+ container state {
+ description
+ "State parameters of sub-TLV 13.";
+
+ leaf-list address {
+ type inet:ipv6-address;
+ description
+ "Contains a 16-octet IPv6 address for a neighboring
+ router on the link described by the (main) TLV. This
+ sub-TLV can occur multiple times.";
+ reference
+ "RFC6119: IPv6 Traffic Engineering in IS-IS. sub-TLV
+ 13: ISIS TLV 22,23,141,222,223.";
+ }
+ }
+ }
+
+ container extended-admin-group {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IS_REACHABILITY_EXTENDED_ADMIN_GROUP'" {
+ description
+ "Only include the extended admin group when the
+ sub-TLV type is 14.";
+ }
+ description
+ "This container defines sub-TLV 14.";
+ container state {
+ description
+ "State parameters of sub-TLV 14.";
+
+ leaf-list extended-admin-group {
+ type uint32;
+ description
+ "The extended-admin-group sub-TLV is used in addition
+ to the Administrative Groups when it is desirable to
+ make more than 32 colors available for advertisement
+ in a network.";
+ reference
+ "RFC7308: Extended Administrative Groups in MPLS
+ Traffic Engineering (MPLS-TE). sub-TLV 14: TLV
+ 22,23,141,222,223.";
+ }
+ }
+ }
+
+ container te-default-metric {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IS_REACHABILITY_TE_DEFAULT_METRIC'" {
+ description
+ "Only include the default traffic engineering metric
+ container when the sub-TLV type is 18.";
+ }
+ description
+ "This container defines sub-TLV 18.";
+ container state {
+ description
+ "State parameters of sub-TLV 18.";
+
+ leaf metric {
+ type uint32;
+ description
+ "This metric is administratively assigned and can be
+ used to present a differently weighted topology to
+ traffic engineering SPF calculations. To preclude
+ overflow within a traffic engineering SPF
+ implementation, all metrics greater than or equal to
+ MAX_PATH_METRIC SHALL be considered to have a metric
+ of MAX_PATH_METRIC.";
+ reference
+ "RFC5305: IS-IS Extensions for Traffic Engineering.
+ sub-TLV 18: TLV 22,23,141,222,223.";
+ }
+ }
+ }
+
+ container link-attributes {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IS_REACHABILITY_LINK_ATTRIBUTES'" {
+ description
+ "Only include the link attributes container when the
+ sub-TLV is type 19.";
+ }
+ description
+ "This container defines link-attributes.";
+
+ container state {
+ description
+ "State parameters of IS Extended Reachability sub-TLV
+ 19.";
+
+ leaf-list local-protection {
+ type enumeration {
+ enum LOCAL_PROTECTION {
+ description
+ "If set, local protection is available for the
+ link.";
+ }
+ enum LINK_EXCLUDED {
+ description
+ "If set, the link is excluded from local
+ protection.";
+ }
+ }
+ description
+ "Link local-protection attributes.";
+
+ reference
+ "RFC5029: Definition of an IS-IS Link Attribute Sub-
+ TLV. TLV 22, sub-TLV 19.";
+ }
+ }
+ }
+
+ container link-protection-type {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IS_REACHABILITY_LINK_PROTECTION_TYPE'" {
+ description
+ "Only include the link protection type container when
+ the sub-TLV type 20.";
+ }
+ description
+ "ISIS LSDB parameters relating to the type of link
+ protection offered.";
+
+ container state {
+ description
+ "State parameters of sub-TLV 20.";
+
+ leaf-list type {
+ type enumeration {
+ enum EXTRA_TRAFFIC {
+ description
+ "If set the link has extra traffic protection. If
+ the link is of type Extra Traffic, it means that
+ the link is protecting another link or links. The
+ LSPs on a link of this type will be lost if any of
+ the links it is protecting fail.";
+ }
+ enum UNPROTECTED {
+ description
+ "If set, the link is unprotected. If the link is
+ of type Unprotected, it means that there is no
+ other link protecting this link. The LSPs on a
+ link of this type will be lost if the link
+ fails.";
+ }
+ enum SHARED {
+ description
+ "If set, the link has shared protection. If the
+ link is of type Shared, it means that there are
+ one or more disjoint links of type Extra Traffic
+ that are protecting this link. These Extra
+ Traffic links are shared between one or more links
+ of type Shared.";
+ }
+ enum ONE_ONE {
+ description
+ "If set, the link has dedicated 1:1 protection. If
+ the link is of type Dedicated 1:1, it means that
+ there is one dedicated disjoint link of type Extra
+ Traffic that is protecting this link.";
+ }
+ enum PLUS_ONE {
+ description
+ "If set, the link has dedicated 1+1 protection. If
+ the link is of type Dedicated 1+1, it means that a
+ dedicated disjoint link is protecting this link.
+ However, the protecting link is not advertised in
+ the link state database and is therefore not
+ available for the routing of LSPs.";
+ }
+ enum ENHANCED {
+ description
+ "If set the link has enhanced protection. If the
+ link is of type Enhanced, it means that a
+ protection scheme that is more reliable than
+ Dedicated 1+1, e.g., 4 fiber BLSR/MS-SPRING, is
+ being used to protect this link.";
+ }
+ }
+ description
+ "Link protection capabilities.";
+ reference
+ "RFC5307: IS-IS Extensions in Support of Generalized
+ Multi-Protocol Label Switching (GMPLS). sub-TLV 20:
+ TLV 22,23,141,222,223.";
+ }
+ }
+ }
+
+ container bandwidth-constraints {
+ when "../state/type =" +
+ "'oc-isis-lsdb-types:IS_REACHABILITY_BANDWIDTH_CONSTRAINTS'" {
+ description
+ "Only include the bandwidth constraints container when
+ the sub-TLV is type 22.";
+ }
+ description
+ "This container defines bandwidth-constraints. For DS-TE,
+ the existing Maximum Reservable link bandwidth parameter
+ is retained, but its semantics is generalized and
+ interpreted as the aggregate bandwidth constraint across
+ all Class-Types";
+
+ reference
+ "RFC4124: Protocol Extensions for Support of Diffserv-
+ aware MPLS Traffic Engineering. sub-TLV 22: TLV 22, 23,
+ 141, 222,223";
+
+ list bandwidth-constraint {
+ key "model-id";
+
+ description
+ "List of the Bandwidth Constraints sub-TLV instances
+ present in the TLV.";
+
+ leaf model-id {
+ type leafref {
+ path "../state/model-id";
+ }
+ description
+ "Reference to the model ID associated with the
+ instance of the Bandwidth Constraints sub-TLV.";
+ }
+
+ container state {
+ description
+ "State parameters of IS Extended Reachability sub-TLV
+ 22.";
+
+ leaf model-id {
+ type uint8;
+ description
+ "Identifier for the Bandwidth Constraints Model
+ currently in use by the LSR initiating the IGP
+ advertisement.";
+ }
+ }
+
+ container constraints {
+ description
+ "Constraints contained within the Bandwidth
+ Constraints sub-TLV";
+
+ list constraint {
+ key "constraint-id";
+
+ description
+ "List of the constraints within the Bandwidth
+ Constraints sub-TLV. The BC0 level is indicated by
+ the constraint-id leaf being set to 0, with BCN
+ being indicated by constraint-id N.";
+
+ leaf constraint-id {
+ type leafref {
+ path "../state/constraint-id";
+ }
+ description
+ "Reference to the unique ID for the BCN level.";
+ }
+
+ container state {
+ description
+ "Operational state parameters of the BCN level";
+
+ leaf constraint-id {
+ type uint32;
+ description
+ "Unique reference for the bandwidth constraint level. BC0
+ is indicated by this leaf being set to zero, with BCN
+ represented by this leaf being set to N.";
+ }
+
+ leaf bandwidth {
+ type oc-types:ieeefloat32;
+ units "bytes per second";
+ description
+ "The bandwidth constraint, expressed as a 32-bit IEEE
+ floating point number expressed in bytes per second.";
+ }
+ }
+ }
+ }
+ }
+ }
+
+ container unconstrained-lsp {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IS_REACHABILITY_UNCONSTRAINED_LSP'" {
+ description
+ "Only include the unconstrained LSP container when the
+ sub-TLV is type 23.";
+ }
+ description
+ "This container defines sub-TLV 23.";
+ container state {
+ description
+ "State parameters of sub-TLV 23.";
+
+ uses isis-lsdb-subtlv-type-state;
+
+ leaf count {
+ type uint16;
+ description
+ "Unconstrained TE LSP count(TE Label Switched Paths
+ (LSPs) signalled with zero bandwidth).";
+ reference
+ "RFC5330: A Link-Type sub-TLV to Convey the Number of
+ Traffic Engineering Label Switched Paths Signalled
+ with Zero Reserved Bandwidth across a Link. sub-TLV
+ 23: TLV 22,23,141,222,223";
+ }
+ }
+ }
+
+ container adjacency-sids {
+ when "../state/type = 'oc-isis-lsdb-types:IS_REACHABILITY_ADJ_SID'" {
+ description
+ "Only include the adjacency SIDs container when the
+ sub-TLV type is 31";
+ }
+
+ description
+ "This container defines segment routing adjacency SIDs.";
+
+ list adjacency-sid {
+ key "value";
+
+ description
+ "Adjacency Segment-IDs List. An IGP-Adjacency Segment is
+ an IGP segment attached to a unidirectional adjacency or
+ a set of unidirectional adjacencies. By default, an IGP-
+ Adjacency Segment is local to the node which advertises
+ it.";
+
+ leaf value {
+ type leafref {
+ path "../state/value";
+ }
+ description
+ "Reference to the value of the Adjacency-SID.";
+ }
+
+ container state {
+ description
+ "State parameters of Adjacency-SID.";
+
+ leaf value {
+ type uint32;
+ description
+ "Adjacency-SID value.";
+ }
+
+ leaf-list flags {
+ type enumeration {
+ enum ADDRESS_FAMILY {
+ description
+ "Address-family flag. When unset, the Adj-SID
+ refers to an adjacency with outgoing IPv4
+ encapsulation. If set then the Adj-SID refers to
+ an adjacency with outgoing IPv6 encapsulation.";
+ }
+ enum BACKUP {
+ description
+ "Backup flag. When set, the Adj-SID refers to an
+ adjacency being protected (e.g.: using IPFRR or
+ MPLS-FRR).";
+ }
+ enum VALUE {
+ description
+ "Value flag. When set, the SID carries a value
+ (instead of an index). By default the flag is
+ SET.";
+ }
+ enum LOCAL {
+ description
+ "Local flag. When set, the value/index carried
+ by the SID has local significance. By default
+ the flag is SET.";
+ }
+ enum SET {
+ description
+ "Set flag. When set, the S-Flag indicates that
+ the Adj-SID refers to a set of adjacencies.";
+ }
+ }
+ description
+ "Flags associated with Adj-Segment-ID.";
+ }
+
+ leaf weight {
+ type uint8;
+ description
+ "Value that represents the weight of the Adj-SID for
+ the purpose of load balancing.";
+ }
+ }
+ }
+
+ reference
+ "draft-ietf-isis-segment-routing-extensions. sub-TLV 31:
+ TLV 22, 222, 223, 141. ";
+ }
+
+ container lan-adjacency-sids {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IS_REACHABILITY_ADJ_LAN_SID'" {
+ description
+ "Only include the LAN adjacency SID container when
+ the sub-TLV is type 32.";
+ }
+ description
+ "This container defines segment routing LAN adjacency
+ SIDs";
+
+ list lan-adjacency-sid {
+ key "value";
+
+ description
+ "Adjacency Segment-IDs List. An IGP-Adjacency Segment is
+ an IGP segment attached to a unidirectional adjacency or
+ a set of unidirectional adjacencies. By default, an IGP-
+ Adjacency Segment is local to the node which advertises
+ it.";
+
+ leaf value {
+ type leafref {
+ path "../state/value";
+ }
+ description
+ "Reference to the value of the LAN Adjacency-SID.";
+ }
+
+ container state {
+ description
+ "State parameters of LAN Adjacency-SID.";
+
+ leaf value {
+ type uint32;
+ description
+ "LAN Adjacency-SID value.";
+ }
+
+ leaf-list flags {
+ type enumeration {
+ enum ADDRESS_FAMILY {
+ description
+ "Address-family flag. When unset, the Adj-SID
+ refers to an adjacency with outgoing IPv4
+ encapsulation. If set then the Adj-SID refers to
+ an adjacency with outgoing IPv6 encapsulation.";
+ }
+ enum BACKUP {
+ description
+ "Backup flag. When set, the Adj-SID refers to an
+ adjacency being protected (e.g.: using IPFRR or
+ MPLS-FRR).";
+ }
+ enum VALUE {
+ description
+ "Value flag. When set, the SID carries a value
+ (instead of an index). By default the flag is
+ SET.";
+ }
+ enum LOCAL {
+ description
+ "Local flag. When set, the value/index carried
+ by the SID has local significance. By default
+ the flag is SET.";
+ }
+ enum SET {
+ description
+ "Set flag. When set, the S-Flag indicates that
+ the Adj-SID refers to a set of adjacencies.";
+ }
+ }
+ description
+ "Flags associated with LAN-Adj-Segment-ID.";
+ }
+
+ leaf weight {
+ type uint8;
+ description
+ "Value that represents the weight of the Adj-SID
+ for the purpose of load balancing.";
+ }
+
+ leaf neighbor-id {
+ type oc-isis-types:system-id;
+ description
+ "System ID of the neighbor associated with the LAN-
+ Adj-Segment-ID value.";
+ }
+ }
+ }
+
+ reference
+ "draft-ietf-isis-segment-routing-extensions. sub-TLV 32:
+ TLV 22, 222, 223, 141.";
+ }
+
+ container link-delay {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IS_REACHABILITY_LINK_DELAY'" {
+ description
+ "Include the link delay container only when the sub-TLV
+ type is type 33.";
+ }
+ description
+ "This container defines unidirectional link delay.";
+
+ reference
+ "RFC7810: IS-IS Traffic Engineering (TE) Metric
+ Extensions. sub-TLV 33: TLV 22, 23, 141, 222, 223.";
+
+ container state {
+ description
+ "State parameters of IS Extended Reachability sub-TLV
+ 33.";
+
+ uses isis-lsdb-link-characteristics-a-bit;
+
+ leaf delay {
+ type uint32;
+ units microseconds;
+ description
+ "Average link delay value (in microseconds) between
+ two directly connected IS-IS neighbors over a
+ configurable interval.";
+ }
+ }
+ }
+
+ container min-max-link-delay {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IS_REACHABILITY_MIN_MAX_LINK_DELAY'" {
+ description
+ "Only include the min/max link delay container when the
+ sub-TLV is type 34.";
+ }
+ description
+ "This container defines min/max link delay.";
+
+ reference
+ "RFC7810: IS-IS Traffic Engineering (TE) Metric
+ Extensions. sub-TLV 34: TLV 22, 23, 141, 222, 223.";
+
+ container state {
+ description
+ "State parameters of IS Extended Reachability sub-TLV
+ 34.";
+
+ uses isis-lsdb-link-characteristics-a-bit;
+
+ leaf min-delay {
+ type uint32;
+ units microseconds;
+ description
+ "Minimum measured link delay value(in microseconds)
+ between two directly connected IS-IS neighbors over a
+ configurable interval.";
+ }
+
+ leaf max-delay {
+ type uint32;
+ units microseconds;
+ description
+ "Maximum measured link delay value(in microseconds)
+ between two directly connected IS-IS neighbors over a
+ configurable interval.";
+ }
+ }
+ }
+
+ container link-delay-variation {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IS_REACHABILITY_LINK_DELAY_VARIATION'" {
+ description
+ "Only include the link delay variation container when
+ the sub-TLV is type 35.";
+ }
+ description
+ "This container defines unidirectional link delay
+ variation.";
+
+ reference
+ "RFC7810: IS-IS Traffic Engineering (TE) Metric
+ Extensions. sub-TLV 35: TLV 22,23,141,222,223.";
+
+ container state {
+ description
+ "State parameters of IS Extended Reachability sub-TLV
+ 35.";
+
+ leaf delay {
+ type uint32;
+ units microseconds;
+ description
+ "Average link delay between two directly connected IS-
+ IS neighbors over a configurable interval.";
+ }
+ }
+ }
+
+ container link-loss {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IS_REACHABILITY_LINK_LOSS'" {
+ description
+ "Only include the link loss container when the sub-TLV
+ is type 36.";
+ }
+ description
+ "This container defines unidirectional link loss delay.";
+
+ reference
+ "RFC7810: IS-IS Traffic Engineering (TE) Metric
+ Extensions. sub-TLV 36: TLV 22, 23, 141, 222, 223.";
+
+ container state {
+ description
+ "State parameters of IS Extended Reachability sub-TLV
+ 36.";
+
+ uses isis-lsdb-link-characteristics-a-bit;
+
+ leaf link-loss {
+ type uint32;
+ description
+ "Link packet loss as a percentage of the total traffic
+ sent over a configurable interval. The basic unit is
+ 0.000003%, where (2^24 - 2) is 50.331642%. This value
+ is the highest packet-loss percentage that can be
+ expressed (the assumption being that precision is more
+ important on high-speed links than the ability to
+ advertise loss rates greater than this, and that high-
+ speed links with over 50% loss are unusable).
+ Therefore, measured values that are larger than the
+ field maximum SHOULD be encoded as the maximum
+ value.";
+ }
+ }
+ }
+
+ container residual-bandwidth {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IS_REACHABILITY_RESIDUAL_BANDWIDTH'" {
+ description
+ "Only include the resdiual bandwidth container when the
+ sub-TLV is type 37.";
+ }
+ description
+ "This container defines unidirectional residual
+ bandwidth.";
+
+ reference
+ "RFC7810: IS-IS Traffic Engineering (TE) Metric
+ Extensions. sub-TLV 37: TLV 22, 23, 141, 222, 223.";
+
+ container state {
+ description
+ "State parameters of IS Extended Reachability sub-TLV
+ 37.";
+
+ leaf bandwidth {
+ type oc-types:ieeefloat32;
+ units "bytes per second";
+ description
+ "Residual bandwidth on a link,forwarding adjacency
+ [RFC4206], or bundled link in IEEE floating-point
+ format with units of bytes per second. For a link or
+ forwarding adjacency, residual bandwidth is defined to
+ be the Maximum Bandwidth [RFC5305] minus the bandwidth
+ currently allocated to RSVP-TE label switched paths.
+ For a bundled link, residual bandwidth is defined to
+ be the sum of the component link residual
+ bandwidths.";
+ }
+ }
+ }
+
+ container available-bandwidth {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IS_REACHABILITY_AVAILABLE_BANDWIDTH'" {
+ description
+ "Only include the available bandwdith container when the
+ sub-TLV is type 38.";
+ }
+ description
+ "This container defines unidirectional lavailable
+ bandwidth.";
+
+ reference
+ "RFC7810: IS-IS Traffic Engineering (TE) Metric
+ Extensions. sub-TLV 38: TLV 22, 23, 141, 222, 223.";
+
+ container state {
+ description
+ "State parameters of IS Extended Reachability sub-TLV
+ 38.";
+
+ uses isis-lsdb-subtlv-type-state;
+
+ leaf bandwidth {
+ type oc-types:ieeefloat32;
+ units "bytes per second";
+ description
+ "The available bandwidth on a link, forwarding
+ adjacency, or bundled link in IEEE floating-point
+ format with units of bytes per second. For a link or
+ forwarding adjacency, available bandwidth is defined
+ to be residual bandwidth minus the measured bandwidth
+ used for the actual forwarding of non-RSVP-TE label
+ switched path packets. For a bundled link, available
+ bandwidth is defined to be the sum of the component
+ link available bandwidths minus the measured bandwidth
+ used for the actual forwarding of non-RSVP-TE label
+ switched path packets. For a bundled link, available
+ bandwidth is defined to be the sum of the component
+ link available bandwidths.";
+ }
+ }
+ }
+
+ container utilized-bandwidth {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IS_REACHABILITY_UTILIZED_BANDWIDTH'" {
+ description
+ "Only include the utilized bandwidth container when the
+ TLV is type 39.";
+ }
+ description
+ "This container defines unidirectional utilized
+ bandwidth.";
+
+ reference
+ "RFC7810: IS-IS Traffic Engineering (TE) Metric
+ Extensions. sub-TLV 39: TLV 22, 23, 141, 222, 223.";
+
+ container state {
+ description
+ "State parameters of IS Extended Reachability sub-TLV
+ 39.";
+
+ uses isis-lsdb-subtlv-type-state;
+
+ leaf bandwidth {
+ type oc-types:ieeefloat32;
+ units "bytes per second";
+ description
+ "The bandwidth utilization on a link, forwarding
+ adjacency, or bundled link in IEEE floating-point
+ format with units of bytes per second. For a link or
+ forwarding adjacency, bandwidth utilization represents
+ the actual utilization of the link (i.e., as measured
+ by the advertising node). For a bundled link,
+ bandwidth utilization is defined to be the sum of the
+ component link bandwidth utilizations.";
+ }
+ }
+ }
+ }
+ }
+
+ uses isis-lsdb-undefined-subtlv;
+ }
+
+ grouping isis-lsdb-undefined-tlv {
+ description
+ "Grouping for unknown TLVs in the IS-IS LSDB";
+
+ container undefined-tlvs {
+ description
+ "Surrounding container for a list of unknown TLVs.";
+
+ list undefined-tlv {
+ key "type";
+ description
+ "List of TLVs that are not defined within the model, or are
+ not recognised by the system.";
+
+ leaf type {
+ type leafref {
+ path "../state/type";
+ }
+ description
+ "Reference to the undefined TLV's type";
+ }
+
+ container state {
+ description
+ "State parameters of the undefined TLV.";
+
+ uses undefined-tlv-state;
+ }
+ }
+ }
+ }
+
+ grouping isis-lsdb-undefined-subtlv {
+ description
+ "Grouping for unknown Sub-TLVs in the IS-IS LSDB.";
+
+ container undefined-subtlvs {
+ description
+ "This container describes undefined ISIS TLVs.";
+
+ list undefined-subtlv {
+ key "type";
+
+ description
+ "Sub-TLVs that are not defined in the model or not
+ recognised by system.";
+
+ leaf type {
+ type leafref {
+ path "../state/type";
+ }
+ description
+ "Reference to the type of the undefined sub-TLV";
+ }
+
+ container state {
+ description
+ "State parameters of the undefined sub-TLV.";
+
+ uses undefined-subtlv-state;
+ }
+ }
+ }
+ }
+
+ grouping isis-lsdb-prefix-state {
+ description
+ "This grouping defines prefix reachability.";
+
+ container subtlvs {
+ description
+ "This container describes IS prefix sub-TLVs.";
+
+ list subtlv {
+ key "type";
+
+ description
+ "List of subTLV types in the LSDB for the specified TLV.";
+
+ leaf type {
+ type leafref {
+ path "../state/type";
+ }
+ description
+ "Reference to the sub-TLV type";
+ }
+
+ container state {
+ description
+ "State parameters for a prefix.";
+
+ uses isis-lsdb-subtlv-type-state;
+ }
+
+ container tag {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IP_REACHABILITY_TAG'" {
+ description
+ "Only include the tag container when the sub-TLV is type
+ 1.";
+ }
+ description
+ "This container defines sub-TLV 1.";
+
+ container state {
+ description
+ "State parameters of sub-TLV 1.";
+
+ leaf-list tag32 {
+ type uint32;
+ description
+ "List of 32-bit tags associated with the prefix. Example
+ uses of these tags include carrying BGP standard (or
+ extended) communities and controlling redistribution
+ between levels and areas, different routing protocols,
+ or multiple instances of IS-IS running on the same
+ router.";
+ reference
+ "RFC5130: A Policy Control Mechanism in IS-IS Using
+ Administrative Tags. sub-TLV 1.";
+ }
+ }
+ }
+
+ container tag64 {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IP_REACHABILITY_TAG64'" {
+ description
+ "Only include the tag64 container when the sub-TLV is type
+ 2.";
+ }
+ description
+ "This container defines sub-TLV 2.";
+
+ container state {
+ description
+ "State parameters of sub-TLV 2.";
+
+ leaf-list tag64 {
+ type uint64;
+ description
+ "List of 64-bit tags associated with the prefix. Example
+ uses of these tags include carrying BGP standard (or
+ extended) communities and controlling redistribution
+ between levels and areas, different routing protocols,
+ or multiple instances of IS-IS running on the same
+ router.";
+ reference
+ "RFC5130: A Policy Control Mechanism in IS-IS Using
+ Administrative Tags. sub-TLV 2.";
+ }
+ }
+ }
+
+ container flags {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IP_REACHABILITY_PREFIX_FLAGS'" {
+ description
+ "Only include the flags container when the sub-TLV is type
+ 4.";
+ }
+ description
+ "This container defines sub-TLV 4.";
+
+ container state {
+ description
+ "State parameters of sub-TLV 4.";
+
+ uses isis-lsdb-subtlv-type-state;
+
+ leaf-list flags {
+ type enumeration {
+ enum EXTERNAL_FLAG {
+ description
+ "External prefix flag. Set if the prefix has been
+ redistributed from another protocol. This includes
+ the case where multiple virtual routers are
+ supported and the source of the redistributed prefix
+ is another IS-IS instance.";
+ }
+ enum READVERTISEMENT_FLAG {
+ description
+ "Readvertisement flag. Set when the prefix has been
+ leaked from one level to another (upwards or
+ downwards).";
+ }
+ enum NODE_FLAG {
+ description
+ "Node flag. Set when the prefix identifies the
+ advertising router, i.e., the prefix is a host
+ prefix advertising a globally reachable address
+ typically associated with a loopback address.";
+ }
+ }
+ description
+ "Additional prefix reachability flags.";
+
+ reference
+ "RFC7794: IS-IS Prefix Attributes for Extended IPv4 and
+ IPv6 Reachability. sub-TLV 4.";
+ }
+ }
+ }
+
+ container ipv4-source-router-id {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IP_REACHABILITY_IPV4_ROUTER_ID'" {
+ description
+ "Only include the IPv4 Source Router ID container when
+ the sub-TLV is type 11.";
+ }
+ description
+ "This container defines sub-TLV 11.";
+
+ container state {
+ description
+ "State parameters of sub-TLV 11.";
+
+ uses isis-lsdb-subtlv-type-state;
+
+ leaf router-id {
+ type inet:ipv4-address;
+ description
+ "IPv4 Source router ID address. In cases where the
+ advertisement is an identifier for the advertising
+ router (e.g., with the N-flag set in the Prefix
+ Attribute Flags sub-TLV), it may be useful for other
+ routers to know the source of the advertisement. When
+ reachability advertisement is leaked from one level to
+ another, Router ID advertised is always the Router ID
+ of the IS-IS instance that originated the
+ advertisement. This would be true even if the prefix
+ had been learned from another protocol.";
+ reference
+ "RFC7794: IS-IS Prefix Attributes for Extended IPv4
+ and IPv6 Reachability. sub-TLV 11";
+ }
+ }
+ }
+
+ container ipv6-source-router-id {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IP_REACHABILITY_IPV6_ROUTER_ID'" {
+ description
+ "Only include the IPv6 Source Router ID container when
+ the sub-TLV is type 12.";
+ }
+ description
+ "This container defines sub-TLV 12.";
+
+ container state {
+ description
+ "State parameters of sub-TLV 12.";
+
+ uses isis-lsdb-subtlv-type-state;
+
+ leaf router-id {
+ type inet:ipv6-address;
+ description
+ "IPv6 Source router ID address. In cases where the
+ advertisement is an identifier for the advertising
+ router (e.g., with the N-flag set in the Prefix
+ Attribute Flags sub-TLV), it may be useful for other
+ routers to know the source of the advertisement. When
+ reachability advertisement is leaked from one level to
+ another, Router ID advertised is always the Router ID
+ of the IS-IS instance that originated the
+ advertisement. This would be true even if the prefix
+ had been learned from another protocol.";
+ reference
+ "RFC7794: IS-IS Prefix Attributes for Extended IPv4
+ and IPv6 Reachability. sub-TLV 12.";
+ }
+ }
+ }
+
+ uses isis-lsdb-prefix-sid-state;
+ }
+ }
+
+ uses isis-lsdb-undefined-subtlv;
+ }
+
+ grouping isis-lsdb-prefix-sid-state {
+ description
+ "This grouping defines ISIS Prefix SID.";
+
+ container prefix-sids {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IP_REACHABILITY_PREFIX_SID'" {
+ description
+ "Only include the Prefix SID container when
+ the sub-TLV is type 3.";
+ }
+ description
+ "This container defines segment routing extensions for
+ prefixes.";
+
+ reference
+ "draft-ietf-isis-segment-routing-extensions. sub-TLV 3: TLV
+ 135, 235, 236, 237.";
+
+ list prefix-sid {
+ key "value";
+
+ description
+ "Prefix Segment-ID list. IGP-Prefix Segment is an IGP segment
+ attached to an IGP prefix. An IGP-Prefix Segment is global
+ (unless explicitly advertised otherwise) within the SR/IGP
+ domain.";
+
+ leaf value {
+ type leafref {
+ path "../state/value";
+ }
+ description
+ "Reference to the value of the prefix SID.";
+ }
+
+ container state {
+ description
+ "State parameters for Prefix-SID.";
+
+ leaf value {
+ type uint32;
+ description
+ "IGP Prefix-SID value.";
+ }
+
+ leaf-list flags {
+ type enumeration {
+ enum READVERTISEMENT {
+ description
+ "Readvertisment flag. When set, the prefix to which
+ this Prefix-SID is attached, has been propagated by
+ the router either from another level or from
+ redistribution.";
+ }
+ enum NODE {
+ description
+ "Node flag. When set, the Prefix-SID refers to the
+ router identified by the prefix. Typically, the
+ N-Flag is set on Prefix-SIDs attached to a router
+ loopback address.";
+ }
+ enum NO_PHP {
+ description
+ "Penultimate-Hop-Popping flag. When set, then the
+ penultimate hop MUST NOT pop the Prefix-SID before
+ delivering the packet to the node that advertised
+ the Prefix-SID.";
+ }
+ enum EXPLICIT_NULL {
+ description
+ "Explicit-Null flag. When set, any upstream neighbor
+ of the Prefix-SID originator MUST replace the
+ Prefix-SID with a Prefix-SID having an Explicit-NULL
+ value (0 for IPv4 and 2 for IPv6) before forwarding
+ the packet.";
+ }
+ enum VALUE {
+ description
+ "Value flag. When set, the Prefix-SID carries a
+ value (instead of an index). By default the flag is
+ UNSET.";
+ }
+ enum LOCAL {
+ description
+ "Local flag. When set, the value/index carried by
+ the Prefix-SID has local significance. By default
+ the flag is UNSET.";
+ }
+ }
+ description
+ "Flags associated with Prefix Segment-ID.";
+ }
+
+ leaf algorithm {
+ type uint8;
+ description
+ "Prefix-SID algorithm to be used for path computation.";
+ }
+ }
+ }
+ }
+ }
+
+ grouping isis-lsdb-common-metric-specification {
+ description
+ "Common definitions of the metric in IS-IS.";
+
+ container default-metric {
+ description
+ "This container defines ISIS Default Metric.";
+
+ container state {
+ description
+ "State parameters for default-metric.";
+
+ leaf flags {
+ type enumeration {
+ enum INTERNAL {
+ description
+ "When set to zero, indicates internal metrics.";
+ }
+ }
+ description
+ "ISIS Default-Metric Flags.";
+ }
+
+ leaf metric {
+ type oc-isis-types:narrow-metric;
+ description
+ "ISIS default metric value. This is a metric understood by
+ every Intermediate system in the domain. Each circuit
+ shall have a positive integral value assigned for this
+ metric. The value may be associated with any objective
+ function of the circuit, but by convention is intended to
+ measure the capacity of the circuit for handling traffic,
+ for example, its throughput in bits-per-second. Higher
+ values indicate a lower capacity.";
+ }
+ }
+ }
+
+ container delay-metric {
+ description
+ "This container defines the ISIS delay metric.";
+
+ container state {
+ description
+ "State parameters of delay-metric.";
+
+ leaf metric {
+ type oc-isis-types:narrow-metric;
+ description
+ "ISIS delay metric value. This metric measures the transit
+ delay of the associated circuit. It is an optional metric,
+ which if assigned to a circuit shall have a positive
+ integral value. Higher values indicate a longer transit
+ delay.";
+ }
+
+ leaf-list flags {
+ type isis-metric-flags;
+ description
+ "ISIS Delay Metric Flags.";
+ }
+ }
+ }
+
+ container expense-metric {
+ description
+ "This container defines the ISIS expense metric.";
+
+ container state {
+ description
+ "State parameters of expense-metric.";
+
+ leaf metric {
+ type oc-isis-types:narrow-metric;
+ description
+ "ISIS expense metric value. This metric measures the
+ monetary cost of utilising the associated circuit. It is
+ an optional metric, which if assigned to a circuit shall
+ have a positive integral value1). Higher values indicate a
+ larger monetary expense.";
+ }
+
+ leaf-list flags {
+ type isis-metric-flags;
+ description
+ "ISIS Expense Metric Flags.";
+ }
+ }
+ }
+
+ container error-metric {
+ description
+ "This container defines the ISIS error metric.";
+
+ container state {
+ description
+ "State parameters of error-metric.";
+
+ leaf metric {
+ type oc-isis-types:narrow-metric;
+ description
+ "ISIS error metric value. This metric measures the
+ residual error probability of the associated circuit. It
+ is an optional metric, which if assigned to a circuit
+ shall have a non-zero value. Higher values indicate a
+ larger probability of undetected errors on the circuit.";
+ }
+
+ leaf-list flags {
+ type isis-metric-flags;
+ description
+ "IS-IS error metric flags.";
+ }
+ }
+ }
+ }
+
+ grouping isis-lsdb-neighbor {
+ description
+ "This grouping defines attributes of an ISIS standard
+ neighbor.";
+
+ container state {
+ description
+ "State parameters of IS standard neighbor.";
+
+ leaf system-id {
+ type oc-isis-types:system-id;
+ description
+ "System-ID of IS neighbor.";
+ }
+ }
+
+ uses isis-lsdb-common-metric-specification;
+
+ }
+
+ grouping ipv4-prefix-attributes-state {
+ description
+ "This group defines attributes of an IPv4 standard prefix.";
+
+ container state {
+ description
+ "State parameters of IPv4 standard prefix.";
+
+ leaf up-down {
+ type boolean;
+ description
+ "The up/down bit. Set if a prefix is advertised from a
+ higher level to a lower level (e.g., level 2 to level 1),
+ indicating that the prefix has traveled down the hierarchy.
+ Prefixes that have the up/down bit set may only be
+ advertised down the hierarchy, i.e., to lower levels. When a
+ prefix is first injected into IS-IS, the bit is UNSET.";
+ }
+
+ leaf prefix {
+ type inet:ipv4-prefix;
+ description
+ "IPv4 prefix contained within reachability TLVs.";
+ }
+ }
+
+ uses isis-lsdb-common-metric-specification;
+ }
+
+ grouping isis-lsdb-common-mt-id {
+ description
+ "Common definition of the multi-topology ID";
+
+ leaf mt-id {
+ type uint16 {
+ range "0..4095";
+ }
+ description
+ "Multi-topology ID";
+ }
+ }
+
+ grouping ipv4-prefix-extended-state {
+ description
+ "This grouping defines attributes of an IPv4 extended prefix.";
+
+ container state {
+ description
+ "State parameters of an IPv4 extended prefix.";
+ uses ipv4-prefix-extended-params-state;
+ }
+
+ uses isis-lsdb-prefix-state;
+ }
+
+ grouping ipv4-mt-prefix-extended-state {
+ description
+ "State parameters that relate to an IPv4 prefix in a
+ multi-topology context.";
+
+ container state {
+ description
+ "State parameters of an IPv4 extended prefix.";
+ uses ipv4-prefix-extended-params-state;
+ uses isis-lsdb-common-mt-id;
+ }
+
+ uses isis-lsdb-prefix-state;
+ }
+
+ grouping ipv4-prefix-extended-params-state {
+ description
+ "State parameters that relate to an IPv4 prefix";
+
+ leaf up-down {
+ type boolean;
+ description
+ "The up/down bit. Set if a prefix is advertised from a
+ higher level to a lower level (e.g., level 2 to level 1),
+ indicating that the prefix has traveled down the hierarchy.
+ Prefixes that have the up/down bit set may only be
+ advertised down the hierarchy, i.e., to lower levels. When a
+ prefix is first injected into IS-IS, the bit is UNSET.";
+ }
+
+ leaf s-bit {
+ type boolean;
+ description
+ "The Sub-TLV present bit. If UNSET, the octets of Sub-TLVs
+ are not present. Otherwise, the bit is set and the octet
+ following the prefix will contain the length of the Sub-TLV
+ portion of the structure.";
+ }
+
+ leaf prefix {
+ type inet:ipv4-prefix;
+ description
+ "IPv4 prefix contained within extended reachability TLVs.";
+ }
+
+ leaf metric {
+ type oc-isis-types:wide-metric;
+ description
+ "ISIS metric value.";
+ }
+ }
+
+ grouping ipv6-prefix-extended-state {
+ description
+ "State parameters relating to an IPv6 prefix.";
+
+ container state {
+ description
+ "State parameters of IPv6 prefix attributes";
+
+ uses ipv6-prefix-extended-params-state;
+ }
+
+ uses isis-lsdb-prefix-state;
+ }
+
+ grouping ipv6-mt-prefix-extended-state {
+ description
+ "State parameters relating to a multi-topology IPv6
+ prefix.";
+
+ container state {
+ description
+ "State parameters relating an IPv6 prefix attribute";
+ uses ipv6-prefix-extended-params-state;
+ uses isis-lsdb-common-mt-id;
+ }
+
+ uses isis-lsdb-prefix-state;
+ }
+
+ grouping ipv6-prefix-extended-params-state {
+ description
+ "Common parameters of an IPv6 extended prefix.";
+
+ leaf up-down {
+ type boolean;
+ description
+ "The up/down bit. Set if a prefix is advertised from a
+ higher level to a lower level (e.g., level 2 to level 1),
+ indicating that the prefix has traveled down the hierarchy.
+ Prefixes that have the up/down bit set may only be
+ advertised down the hierarchy, i.e., to lower levels. When a
+ prefix is first injected into IS-IS, the bit is UNSET.";
+ }
+
+ leaf x-bit {
+ type boolean;
+ description
+ "The external bit. Set when the prefix was distributed into
+ IS-IS from another routing protocol.";
+ }
+
+ leaf s-bit {
+ type boolean;
+ description
+ "The sub-tlv present bit. If UNSET, the octets of Sub-TLVs
+ are not present. Otherwise, the bit is set and the octet
+ following the prefix will contain the length of the Sub-TLV
+ portion of the structure.";
+ }
+
+ leaf prefix {
+ type inet:ipv6-prefix;
+ description
+ "IPv6 prefix contained within extended reachability TLVs.";
+ }
+
+ leaf metric {
+ type oc-isis-types:wide-metric;
+ description
+ "ISIS metric value.";
+ }
+ }
+
+ grouping mt-isis-neighbor {
+ description
+ "This grouping defines list of ISIS multi-topology neighbors for
+ extended ISIS LSP(multiple system IDs).";
+
+ container state {
+ description
+ "State parameters of MT neighbor.";
+
+ leaf mt-id {
+ type uint16 {
+ range "0..4095";
+ }
+ description
+ "Identifier of a topology being announced.";
+ }
+
+ leaf system-id {
+ type oc-isis-types:system-id;
+ description
+ "System-id of the IS neighbor.";
+ }
+
+ leaf metric {
+ type oc-isis-types:wide-metric;
+ description
+ "ISIS metric value.";
+ }
+ }
+ uses is-reachability-neighbor-state;
+ }
+
+ grouping isis-lsdb-generic-tlv {
+ description
+ "Generic TLV encoding grouping.";
+
+ leaf type {
+ type uint8;
+ description
+ "TLV Type.";
+ }
+
+ leaf length {
+ type uint8;
+ description
+ "TLV length.";
+ }
+
+ leaf value {
+ type binary;
+ description
+ "TLV value.";
+ }
+ }
+
+ grouping undefined-tlv-state {
+ description
+ "Generic grouping defining an unknown TLV.";
+
+ uses isis-lsdb-generic-tlv;
+ }
+
+ grouping undefined-subtlv-state {
+ description
+ "Generic grouping defining an unknown sub-TLV.";
+
+ uses isis-lsdb-generic-tlv;
+ }
+
+ grouping lsp-state {
+ description
+ "This grouping defines ISIS LSP state information.";
+
+ leaf lsp-id {
+ type leafref {
+ path "../state/lsp-id";
+ }
+
+ description
+ "A reference to the Link State PDU ID.";
+ }
+
+ container state {
+ description
+ "State parameters of Link State PDU.";
+
+ leaf lsp-id {
+ type oc-isis-types:lsp-id;
+ description
+ "LSP ID of the LSP.";
+ }
+
+ leaf maximum-area-addresses {
+ type uint8;
+ description
+ "Number of area addresses permitted for this ISs area. 0
+ indicates the IS only supports three area addresses (by
+ default). Any number inclusive of 1 and 254 indicates the
+ number of areas allowed.";
+ }
+
+ leaf version {
+ type uint8;
+ default 1;
+ description
+ "PDU version. This is set to 1.";
+ }
+
+ leaf version2 {
+ type uint8;
+ default 1;
+ description
+ "PDU version2. This is set to 1";
+ }
+
+ leaf id-length {
+ type uint8;
+ description
+ "Length of the ID field of NSAP addresses and NETs used in
+ this routing domain.";
+ }
+
+ leaf pdu-type {
+ type enumeration {
+ enum LEVEL_1 {
+ description "This enum describes ISIS level 1 PDU.";
+ }
+ enum LEVEL_2 {
+ description "This enum describes ISIS level 2 PDU.";
+ }
+ }
+ description
+ "Link State PDU type.";
+ }
+
+ leaf remaining-lifetime {
+ type uint16;
+ units "seconds";
+ description
+ "Remaining lifetime in seconds before the LSP expiration.";
+ }
+
+ leaf sequence-number {
+ type uint32;
+ description
+ "Sequence number of the LSP.";
+ }
+
+ leaf checksum {
+ type uint16;
+ description
+ "Checksum of the LSP.";
+ }
+
+ leaf pdu-length {
+ type uint16;
+ description
+ "Total length of the LSP.";
+ }
+
+ leaf-list flags {
+ type enumeration {
+ enum PARTITION_REPAIR {
+ description
+ "When set, the originator supports partition
+ repair.";
+ }
+ enum ATTACHED_ERROR {
+ description
+ "When set, the originator is attached to another
+ area using the referred metric.";
+ }
+ enum ATTACHED_EXPENSE {
+ description
+ "When set, the originator is attached to another
+ area using the referred metric.";
+ }
+ enum ATTACHED_DELAY {
+ description
+ "When set, the originator is attached to another
+ area using the referred metric.";
+ }
+ enum ATTACHED_DEFAULT {
+ description
+ "When set, the originator is attached to another
+ area using the referred metric.";
+ }
+ enum OVERLOAD {
+ description
+ "When set, the originator is overloaded, and must
+ be avoided in path calculation.";
+ }
+ }
+ description
+ "LSP Type-Block flags.";
+ }
+
+ leaf is-type {
+ type oc-isis-types:level-number;
+ description
+ "Type of neighboring system.";
+ }
+ }
+
+ container tlvs {
+ description
+ "This container defines Link State PDU State TLVs.";
+
+ list tlv {
+ key "type";
+
+ description
+ "List of TLV types in the LSDB for the specified LSP.";
+
+ leaf type {
+ type leafref {
+ path "../state/type";
+ }
+ description
+ "Reference to the TLV's type.";
+ }
+
+ container state {
+ config false;
+ description
+ "Operational state parameters relating to the specified
+ LSP";
+
+ uses isis-lsdb-tlv-type-state;
+ }
+
+ container area-address {
+ when "../state/type = 'oc-isis-lsdb-types:AREA_ADDRESSES'" {
+ description
+ "Include area address parameters only when the TLV type
+ is TLV 1.";
+ }
+
+ description
+ "This container defines TLV 1.";
+
+ container state {
+ description
+ "State parameters of ISIS TLV 1.";
+
+ leaf-list address {
+ type oc-isis-types:area-address;
+ description
+ "Area adress(es) of the IS. Set of manual area
+ addresses of this IS.";
+ reference
+ "ISO 10589 Intermediate System to Intermediate System
+ Intra- Domain Routeing Exchange Protocol for use in
+ Conjunction with the Protocol for Providing the
+ Connectionless-mode Network Service (ISO 8473 )
+ International Standard 10589: 2002, Second Edition,
+ 2002. TLV 1.";
+ }
+ }
+ }
+
+ container lsp-buffer-size {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:LSP_BUFFER_SIZE'" {
+ description
+ "Include the LSP buffer size parameters only when the
+ TLV type is TLV 14.";
+ }
+
+ description
+ "This container defines TLV 14 - the LSP Buffer Size
+ TLV.";
+
+ container state {
+ description
+ "State parameters of TLV 14.";
+
+ leaf size {
+ type uint16;
+ units "bytes";
+ description
+ "The maximum MTU that the advertising system can
+ receive, expressed in bytes.";
+ reference
+ "ISO 10589 Intermediate System to Intermediate System
+ Intra- Domain Routeing Exchange Protocol for use in
+ Conjunction with the Protocol for Providing the
+ Connectionless-mode Network Service (ISO 8473 )
+ International Standard 10589: 2002, Second Edition,
+ 2002. TLV 14.";
+ }
+ }
+ }
+
+ container nlpid {
+ when "../state/type = 'oc-isis-lsdb-types:NLPID'" {
+ description
+ "Include NLPID specification only when the TLV type is
+ TLV 129.";
+ }
+
+ description
+ "This container defines TLV 129.";
+
+ container state {
+ description
+ "State parameters of ISIS TLV 129.";
+
+ uses isis-lsdb-tlv-nlpid-state;
+ }
+ }
+
+ container hostname {
+ when "../state/type = 'oc-isis-lsdb-types:DYNAMIC_NAME'" {
+ description
+ "Include the dynamic hostname TLV only when the TLV is
+ type 137.";
+ }
+ description
+ "This container defines TLV 137.";
+
+ container state {
+ description
+ "State parameters of ISIS TLV 137.";
+
+ leaf-list hostname {
+ type string;
+ description
+ "Name of the node.";
+
+ reference
+ "RFC6233: IS-IS Registry Extension for Purges, RFC
+ 5301: Dynamic Hostname Exchange Mechanism for IS-IS.
+ TLV 137";
+ }
+ }
+ }
+
+ container ipv4-interface-addresses {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IPV4_INTERFACE_ADDRESSES'" {
+ description
+ "Include the IPv4 interface addresses TLV only when the
+ TLV is type 132.";
+ }
+ description
+ "This container defines TLV 132.";
+
+ container state {
+ description
+ "State parameters of ISIS TLV 132.";
+
+ leaf-list address {
+ type inet:ipv4-address;
+ description
+ "IPv4 address(es) of the interface corresponding to
+ the SNPA over which this PDU is to be transmitted.";
+ reference
+ "RFC1195: Use of OSI IS-IS for Routing in TCP/IP and
+ Dual Environments. TLV 132.";
+ }
+ }
+ }
+
+ container ipv6-interface-addresses {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IPV6_INTERFACE_ADDRESSES'" {
+ description
+ "Include the IPv6 interface addresses TLV only when the
+ TLV is type 232.";
+ }
+ description
+ "This container defines TLV 232.";
+
+ container state {
+ description
+ "State parameters of ISIS TLV 232.";
+
+ leaf-list address {
+ type inet:ipv6-address;
+ description
+ "IPv6 interface addresses of the node. MUST contain
+ only the non-link-local IPv6 addresses assigned to the
+ IS.";
+ reference
+ "RFC5308: Routing IPv6 with IS-IS. TLV 232.";
+ }
+ }
+ }
+
+ container ipv4-te-router-id {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IPV4_TE_ROUTER_ID'" {
+ description
+ "Include the IPv4 traffic engineering router ID TLV only
+ when the TLV is type 134.";
+ }
+ description
+ "This container defines TLV 134.";
+
+ container state {
+ description
+ "State parameters of ISIS TLV 134.";
+
+ leaf-list router-id {
+ type inet:ipv4-address;
+ description
+ "IPv4 Traffic Engineering router ID of the node. For
+ traffic engineering, it guarantees that we have a
+ single stable address that can always be referenced in
+ a path that will be reachable from multiple hops away,
+ regardless of the state of the node's interfaces.";
+ reference
+ "RFC5305: IS-IS Extensions for Traffic Engineering. TLV
+ 134.";
+ }
+ }
+ }
+
+ container ipv6-te-router-id {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IPV6_TE_ROUTER_ID'" {
+ description
+ "Include the IPv6 traffic engineering router ID TLV only
+ when the TLV is type 140.";
+ }
+ description
+ "This container defines TLV 140.";
+
+ container state {
+ description
+ "State parameters of ISIS TLV 140.";
+
+ leaf-list router-id {
+ type inet:ipv6-address;
+ description
+ "IPv6 Traffic Engineering router ID of the node. For
+ traffic engineering, it guarantees that we have a
+ single stable address that can always be referenced in
+ a path that will be reachable from multiple hops away,
+ regardless of the state of the node's interfaces.";
+ reference
+ "RFC6119: IPv6 Traffic Engineering in IS-IS. TLV
+ 140.";
+ }
+ }
+ }
+
+ container instance-ids {
+ when "../state/type = 'oc-isis-lsdb-types:INSTANCE_ID'" {
+ description
+ "Include the ISIS Instance Identifier TLV only when the
+ TLV is type 7.";
+ }
+ description
+ "This container defines ISIS Instance Identifier TLV.";
+ reference "RFC6822: IS-IS Multi-Instance. TLV 7.";
+
+ list instance-id {
+ key "instance-id";
+
+ description
+ "A list of instance IDs received within TLV 7 within an
+ IS-IS LSP. In the case that more than one instance of
+ TLV 7 is included in the LSP, the instance IDs specified
+ within the instances are concatenated within this
+ list.";
+
+ leaf instance-id {
+ type leafref {
+ path "../state/instance-id";
+ }
+ description
+ "Reference to the unique instance ID.";
+ }
+ container state {
+ description
+ "State parameters of ISIS TLV 7.";
+
+ leaf instance-id {
+ type uint16;
+ description
+ "An Instance Identifier (IID) to uniquely identify
+ an IS-IS instance. When the IID = 0, the list of
+ supported ITIDs MUST NOT be present. An IID-TLV with
+ IID = 0 MUST NOT appear in an SNP or LSP. When the
+ TLV appears (with a non-zero IID) in an SNP or LSP,
+ exactly one ITID. MUST be present indicating the
+ topology with which the PDU is associated. If no
+ ITIDs or multiple ITIDs are present or the IID is
+ zero, then the PDU MUST be ignored.";
+ }
+
+ leaf-list topology-id {
+ type uint16;
+ description
+ "Instance-Specific Topology Identifiers (ITIDs).";
+ }
+ }
+ }
+ }
+
+ container ipv4-srlgs {
+ when "../state/type = 'oc-isis-lsdb-types:IPV4_SRLG'" {
+ description
+ "Include the IPv4 SRLG TLV only when the TLV is type
+ 138.";
+ }
+ description
+ "This container defines ISIS SRLG TLV 138.";
+
+ reference
+ "RFC5307: IS-IS Extensions in Support of Generalized
+ Multi-Protocol Label Switching (GMPLS). TLV 138.";
+
+ list ipv4-srlg {
+ key "instance-number";
+
+ description
+ "Instance of the IPv4 SRLG TLV";
+
+ leaf instance-number {
+ type leafref {
+ path "../state/instance-number";
+ }
+ description
+ "Reference to the instance number of TLV 138.";
+ }
+
+ container state {
+ description
+ "State parameters of TLV 138.";
+
+ leaf instance-number {
+ type uint32;
+ description
+ "An arbitrary unsigned 32-bit integer used to
+ disambiguate the instance of TLV 138. The instance
+ identifier is synthesised by the system
+ and may be renumbered for the same SRLG definition
+ in subsequent advertised LSPs if (and only if) the
+ entire list of SRLGs is replaced.";
+ }
+
+ leaf system-id {
+ type oc-isis-types:system-id;
+ description
+ "Neighbor system ID.";
+ }
+
+ leaf psn-number {
+ type uint8;
+ description
+ "Pseudonode number if the neighbor is on a LAN
+ interface.";
+ }
+
+ leaf-list flags {
+ type enumeration {
+ enum NUMBERED {
+ description
+ "When set, the interface is numbered, whereas if
+ unset indicates that the interface is
+ unnumbered.";
+ }
+ }
+ description
+ "SRLG flags.";
+ }
+
+ leaf ipv4-interface-address {
+ type inet:ipv4-address;
+ description
+ "IPv4 interface address.";
+ }
+
+ leaf ipv4-neighbor-address {
+ type inet:ipv4-address;
+ description
+ "IPv4 neighbor address.";
+ }
+
+ leaf-list srlg-value {
+ type uint32;
+ description
+ "List of SRLG values.";
+ }
+ }
+ }
+ }
+
+ container ipv6-srlgs {
+ when "../state/type = 'oc-isis-lsdb-types:IPV6_SRLG'" {
+ description
+ "Include the IPv6 SRLG TLV only when the TLV is type
+ 139.";
+ }
+ description
+ "This container defines ISIS SRLG TLV.";
+
+ reference
+ "RFC6119: IPv6 Traffic Engineering in IS-IS. TLV 139.";
+
+ list ipv6-srlg {
+ key "instance-number";
+
+ description
+ "Instance of the IPv6 SRLG TLV.";
+
+ leaf instance-number {
+ type leafref {
+ path "../state/instance-number";
+ }
+ description
+ "Reference to the instance number of the IPv6 Shared
+ Risk Link Group (SRLG) TLV.";
+ }
+
+ container state {
+ description
+ "State parameters of TLV 139.";
+
+ leaf instance-number {
+ type uint32;
+ description
+ "An arbitrary unsigned 32-bit integer used to
+ disambiguate the instance of TLV 138. The instance
+ identifier is synthesised by the system
+ and may be renumbered for the same SRLG definition
+ in subsequent advertised LSPs if (and only if) the
+ entire list of SRLGs is replaced.";
+ }
+
+ leaf system-id {
+ type oc-isis-types:system-id;
+ description
+ "Neighbor system ID.";
+ }
+
+ leaf psn-number {
+ type uint8;
+ description
+ "Pseudonode number if the neighbor is on a LAN
+ interface.";
+ }
+
+ leaf-list flags {
+ type enumeration {
+ enum NA {
+ description
+ "When set, the IPv6 neighbour address is
+ included, whereas if unset, it is omitted";
+ }
+ }
+ description
+ "IPv6 SRLG flags.";
+ }
+
+ leaf ipv6-interface-address {
+ type inet:ipv6-address;
+ description
+ "IPv6 interface address or Link Local Identifier.";
+ }
+
+ leaf ipv6-neighbor-address {
+ type inet:ipv6-address;
+ description
+ "IPv6 neighbor address or Link Remote Identifier.";
+ }
+
+ leaf-list srlg-value {
+ type uint32;
+ description
+ "SRLG values.";
+ }
+ }
+ }
+ }
+
+ container purge-oi {
+ when "../state/type = 'oc-isis-lsdb-types:PURGE_OI'" {
+ description
+ "Only include the purge originator identitication TLV
+ when the TLV type is 13.";
+ }
+ description
+ "This container defines ISIS purge TLV.";
+
+ reference
+ "RFC6232: Purge Originator Identification TLV for IS-IS.
+ TLV 13.";
+
+ container state {
+ description
+ "State parameters of TLV 13.";
+
+ leaf system-id-count {
+ type uint8;
+ description
+ "Number of system IDs carried in this TLV.";
+ }
+
+ leaf source-system-id {
+ type oc-isis-types:system-id;
+ description
+ "System ID of the Intermediate System that inserted
+ this TLV.";
+ }
+
+ leaf received-system-id {
+ type oc-isis-types:system-id;
+ description
+ "System ID of the Intermediate System from which the
+ purge was received.";
+ }
+ }
+ }
+
+ container router-capabilities {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:ROUTER_CAPABILITY'" {
+ description
+ "Only include the router capability TLV when the TLV is
+ type 242.";
+ }
+ description
+ "This container defines router capabilities.";
+
+ list capability {
+ key "instance-number";
+
+ description
+ "This list describes IS Router capabilities.";
+
+ reference
+ "RFC4971: Intermediate System to Intermediate System
+ (IS-IS) Extensions for Advertising Router Information.
+ TLV 242.";
+
+ leaf instance-number {
+ type leafref {
+ path "../state/instance-number";
+ }
+ description
+ "Reference to the instance number of the router
+ capability TLV.";
+ }
+
+ container state {
+ description
+ "State parameters of TLV 242.";
+
+ leaf instance-number {
+ type uint32;
+ description
+ "A unique instance number for the instance of the
+ router capabilities TLV. The instance number should
+ be autogenerated by the producer of the data and may
+ be renumbered if the entire LSP contents are
+ replaced in subsequent advertisements.";
+ }
+
+ leaf router-id {
+ type inet:ipv4-address;
+ description
+ "IPv4 router-id.";
+ }
+
+ leaf-list flags {
+ type enumeration {
+ enum FLOOD {
+ description
+ "When the S bit is set(1), the IS - IS Router
+ CAPABILITY TLV MUST be flooded across the entire
+ routing domain. When the S bit is not set(0),
+ the TLV MUST NOT be leaked between levels . This
+ bit MUST NOT be altered during the TLV
+ leaking.";
+ }
+ enum DOWN {
+ description
+ "When the IS-IS Router CAPABILITY TLV is leaked
+ from level - 2 to level-1, the Down bit MUST be
+ set. Otherwise, this bit MUST be clear. IS - IS
+ Router capability TLVs with the Down bit set
+ MUST NOT be leaked from level - 1 to level-2.
+ This is to prevent TLV looping.";
+ }
+ }
+ description
+ "Router capability flags.";
+ }
+ }
+
+ container subtlvs {
+ description
+ "This container describes router capability TLV
+ sub-TLVs";
+
+ list subtlv {
+ key "type";
+ description
+ "List of subTLV types in the LSDB for the specified
+ TLV";
+
+ leaf type {
+ type leafref {
+ path "../state/type";
+ }
+ description
+ "Reference to the sub-TLV type";
+ }
+
+ container state {
+ description
+ "State parameters of IS Router Capabilities";
+
+ uses isis-lsdb-subtlv-type-state;
+ }
+
+ container segment-routing-algorithms {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:ROUTER_CAPABILITY_SR_ALGORITHM'" {
+ description
+ "Only include segment routing algorithm when the
+ sub-TLV is type 19.";
+ }
+ description
+ "This container defines SR algorithm sub-TLV 19.";
+
+ reference
+ "draft-ietf-isis-segment-routing-extensions.
+ TLV 242, sub-TLV 19";
+
+ container state {
+ description
+ "State parameters of sub-TLV 19 - Segment
+ Routing Algorithm.";
+
+ leaf-list algorithm {
+ type enumeration {
+ enum SPF {
+ value 0;
+ description
+ "Shortest Path First (SPF) algorithm
+ based on link metric. This is the
+ well-known shortest path algorithm as
+ computed by the IS-IS Decision process.
+ Consistent with the deployed practice
+ for link-state protocols, algorithm 0
+ permits any node to overwrite the SPF
+ path with a different path based on
+ local policy.";
+ }
+ enum STRICT_SPF {
+ value 1;
+ description
+ "Strict Shortest Path First (SPF)
+ algorithm based on link metric. The
+ algorithm is identical to algorithm 0
+ but algorithm 1 requires that all nodes
+ along the path will honor the SPF
+ routing decision. Local policy MUST NOT
+ alter the forwarding decision computed
+ by algorithm 1 at the node claiming to
+ support algorithm 1.";
+ }
+ }
+ description
+ "The Segment Routing algorithm that is
+ described by the TLV.";
+ }
+ }
+ }
+
+ container segment-routing-capability {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:ROUTER_CAPABILITY_SR_CAPABILITY'" {
+ description
+ "Only include the SR capability sub-TLV when
+ the sub-TLV type is 2.";
+ }
+ description
+ "This container defines SR Capability sub-TLV 2.";
+
+ reference
+ "draft-ietf-isis-segment-routing-extensions. TLV
+ 242, sub-TLV 2.";
+
+ container state {
+ description
+ "State parameters of IS SR Router Capability";
+
+ leaf-list flags {
+ type enumeration {
+ enum IPV4_MPLS {
+ description
+ "When set, the router is capable of
+ processing SR MPLS encapsulated IPv4
+ packets on all interfaces.";
+ }
+ enum IPV6_MPLS {
+ description
+ "When set, the router is capable of
+ processing SR MPLS encapsulated IPv6
+ packets on all interfaces.";
+ }
+ enum IPV6_SR {
+ description
+ "When set, the router is capable of
+ processing the IPv6 Segment Routing Header
+ on all interfaces.";
+ }
+ }
+ description
+ "Segment Routing Capability Flags.";
+ }
+ }
+
+ container srgb-descriptors {
+ description
+ "SRGB Descriptors included within the SR
+ capability sub-TLV";
+
+ list srgb-descriptor {
+ key "range";
+ description
+ "Descriptor entry within the SR capabilty
+ sub-TLV";
+
+ leaf range {
+ type leafref {
+ path "../state/range";
+ }
+ description
+ "Reference to unique SRGB Descriptor.";
+ }
+
+ container state {
+ description
+ "State parameters of the SR range";
+
+ leaf range {
+ type uint32;
+ description
+ "Number of SRGB elements. The range
+ value MUST be greater than 0.";
+ }
+
+ leaf label {
+ type oc-mpls-types:mpls-label;
+ description
+ "The first value of the SRGB when
+ expressed as an MPLS label.";
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ uses isis-lsdb-undefined-subtlv;
+ }
+ }
+
+ container is-reachability {
+ when "../state/type = 'oc-isis-lsdb-types:IIS_NEIGHBORS'" {
+ description
+ "Include IIS_NEIGHBORS sub-TLV when the TLV type is 2.";
+ }
+ description
+ "This container describes list of ISIS neighbors and
+ attributes.";
+
+ reference
+ "ISO 10589, Intermediate System to Intermediate System
+ Intra- Domain Routeing Exchange Protocol for use in
+ Conjunction with the Protocol for Providing the
+ Connectionless-mode Network Service (ISO 8473),
+ International Standard 10589: 2002, Second Edition,
+ 2002. TLV 2.";
+
+ container neighbors {
+ description
+ "This container describes IS neighbors.";
+
+ list neighbor {
+ key "system-id";
+ description
+ "IS reachability neighbor attributes.";
+
+ leaf system-id {
+ type leafref {
+ path "../state/system-id";
+ }
+ description
+ "Reference to the system ID of the neighbor.";
+ }
+
+ uses isis-lsdb-neighbor;
+ }
+ }
+ }
+
+ container ipv4-internal-reachability {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IPV4_INTERNAL_REACHABILITY'" {
+ description
+ "Include IPv4 internal reachability TLV when the TLV
+ type is specified as 128.";
+ }
+ description
+ "This container defines list of IPv4 internal reachability
+ information.";
+
+ reference
+ "RFC1195: OSI ISIS for IP and Dual Environments. RFC5302:
+ Domain-Wide Prefix Distribution with Two-Level IS-IS. TLV
+ 128";
+
+ container prefixes {
+ description
+ "This container describes IS prefixes.";
+
+ list prefix {
+ key "prefix";
+
+ description
+ "IPv4 prefixes and internal reachability attributes.";
+
+ leaf prefix {
+ type leafref {
+ path "../state/prefix";
+ }
+ description
+ "Reference to the IPv4 prefix";
+ }
+
+ uses ipv4-prefix-attributes-state;
+ }
+ }
+ }
+
+ container ipv4-external-reachability {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IPV4_EXTERNAL_REACHABILITY'" {
+ description
+ "Include IPv4 external reachability when the TLV type
+ is set to 130.";
+ }
+ description
+ "This container defines list of IPv4 external reachability
+ information.";
+
+ reference
+ "RFC1195: OSI ISIS for IP and Dual Environments. RFC5302:
+ Domain-Wide Prefix Distribution with Two-Level IS-IS. TLV
+ 130";
+
+ container prefixes {
+ description
+ "This container describes IS neighbors.";
+
+ list prefix {
+ key "prefix";
+
+ description
+ "IPv4 external prefixes and reachability attributes.";
+
+ leaf prefix {
+ type leafref {
+ path "../state/prefix";
+ }
+ description
+ "Reference to the IPv4 prefix.";
+ }
+
+ uses ipv4-prefix-attributes-state;
+ }
+ }
+ }
+
+ container authentication {
+ when "../state/type = 'oc-isis-lsdb-types:AUTHENTICATION'" {
+ description
+ "Only include the authentication TLV when the TLV is
+ type 10.";
+ }
+ description
+ "This container defines authentication information of the
+ node.";
+
+ reference
+ "ISO 10589 Intermediate System to Intermediate System
+ Intra- Domain Routeing Exchange Protocol for use in
+ Conjunction with the Protocol for Providing the
+ Connectionless-mode Network Service (ISO 8473)
+ International Standard 10589: 2002, Second Edition, 2002.
+ TLV 10.";
+
+ container state {
+ description
+ "State parameters of TLV 10.";
+
+ leaf crypto-type {
+ type enumeration {
+ enum HMAC_MD5 {
+ description
+ "HMAC-MD5 Authentication type.";
+ }
+ enum CLEARTEXT {
+ description
+ "Cleartext Authentication type.";
+ }
+ }
+ description
+ "Authentication type to be used.";
+ }
+
+ leaf authentication-key {
+ type string;
+ description
+ "Authentication key to be used.";
+ }
+ }
+ }
+
+ container extended-is-reachability {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:EXTENDED_IS_REACHABILITY'" {
+ description
+ "Only included the extended IS reachability TLV when the
+ TLV is type 22.";
+ }
+
+ description
+ "This container defines list of ISIS extended reachability
+ neighbors.";
+
+ reference
+ "RFC5305: IS-IS Extensions for Traffic Engineering. TLV
+ 22.";
+
+ container neighbors {
+ description
+ "This container describes IS neighbors.";
+
+ list neighbor {
+ key "system-id";
+ description
+ "This list describes ISIS extended neigbors and
+ reachability attributes.";
+
+ leaf system-id {
+ type leafref {
+ path "../state/system-id";
+ }
+ description
+ "Reference to the neighboring system's system ID.";
+ }
+
+ container state {
+ description
+ "State parameters of extended neighbor";
+
+ leaf system-id {
+ type oc-isis-types:system-id;
+ description
+ "System-id of the neighbor.";
+ }
+ leaf metric {
+ type oc-isis-types:wide-metric;
+ description
+ "Metric value.";
+ }
+ }
+ uses is-reachability-neighbor-state;
+ }
+ }
+ }
+
+ container extended-ipv4-reachability {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:EXTENDED_IPV4_REACHABILITY'" {
+ description
+ "Only include the extended IPv4 reachability container
+ when the TLV type is 135.";
+ }
+ description
+ "This container defines list of IPv4 extended reachability
+ information.";
+
+ reference
+ "RFC5305: IS-IS Extensions for Traffic Engineering. TLV
+ 135";
+
+ container prefixes {
+ description
+ "This container describes IS prefixes.";
+
+ list prefix {
+ key "prefix";
+
+ description
+ "This list describes IPv4 extended prefixes and
+ attributes.";
+
+ leaf prefix {
+ type leafref {
+ path "../state/prefix";
+ }
+ description
+ "Reference to the IPv4 prefix that the TLV describes
+ the attributes of.";
+ }
+
+ uses ipv4-prefix-extended-state;
+ }
+ }
+ }
+
+ container ipv6-reachability {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IPV6_REACHABILITY'" {
+ description
+ "Only include the IPv6 reachability container when the
+ TLV type is 236.";
+ }
+ description
+ "This container defines list of IPv6 reachability
+ information.";
+
+ reference
+ "RFC5308: Routing IPv6 with IS-IS. TLV 236";
+
+ container prefixes {
+ description
+ "This container describes IS prefixes.";
+
+ list prefix {
+ key "prefix";
+
+ description
+ "This list defines IPv6 extended prefix attributes.";
+
+ leaf prefix {
+ type leafref {
+ path "../state/prefix";
+ }
+ description
+ "Reference to the IPv6 prefix that the TLV
+ corresponds to.";
+ }
+
+ uses ipv6-prefix-extended-state;
+ }
+ }
+ }
+
+ container multi-topology {
+ when "../state/type = 'oc-isis-lsdb-types:MULTI_TOPOLOGY'" {
+ description
+ "Only include the multi-topology container when the TLV
+ is type 229.";
+ }
+
+ description
+ "This container defines the topology supported.";
+
+ reference
+ "RFC5120: M-ISIS: Multi Topology (MT) Routing in
+ Intermediate System to Intermediate Systems (IS-ISs). TLV
+ 229";
+
+ container topologies {
+ description
+ "This container describes IS topologies.";
+
+ list topology {
+ key "mt-id";
+
+ description
+ "This list describes a topology.";
+
+ leaf mt-id {
+ type leafref {
+ path "../state/mt-id";
+ }
+ description
+ "Reference to the multi-topology ID being described
+ by the list entry.";
+ }
+
+ container state {
+ description
+ "State parameters of IS multi-topology TLV 229.";
+
+ leaf mt-id {
+ type uint16 {
+ range "0 .. 4095";
+ }
+ description
+ "Multi-topology ID.";
+ }
+
+ leaf attributes {
+ type enumeration {
+ enum OVERLOAD {
+ description
+ "When set, node is overloaded, still part of
+ the topology but cannot be used for transit.";
+ }
+ enum ATTACHED {
+ description
+ "When set, node is attached to another area
+ using the referred metric and can be used as
+ default gateway.";
+ }
+ }
+ description
+ "Attributes of the LSP for the associated
+ topology.";
+ }
+ }
+ }
+ }
+ }
+
+ container isis-neighbor-attribute {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:IS_NEIGHBOR_ATTRIBUTE'" {
+ description
+ "Only include the neighbor attribute container when the
+ TLV is type 23.";
+ }
+ description
+ "This container defines list of ISIS topology neighbors
+ for extended ISIS LSP (multiple system IDs). ";
+
+ reference
+ "RFC5311: Simplified Extension of Link State PDU (LSP)
+ Space for IS-IS. TLV 23. It is identical in format to the
+ extended IS reachability TLV 22.";
+
+ container neighbors {
+ description
+ "This container describes IS neighbors.";
+
+ list neighbor {
+ key "system-id";
+
+ leaf system-id {
+ type leafref {
+ path "../state/system-id";
+ }
+ description
+ "Reference to the neighboring IS";
+ }
+
+ container state {
+ description
+ "State parameters of extended neighbor.";
+
+ leaf system-id {
+ type oc-isis-types:system-id;
+ description
+ "System-id of the neighbor.";
+ }
+ leaf metric {
+ type oc-isis-types:wide-metric;
+ description
+ "Metric value.";
+ }
+ }
+ uses is-reachability-neighbor-state;
+
+ description
+ "This list defines ISIS extended reachability neighbor
+ attributes.";
+ }
+ }
+ }
+
+ container is-alias-id {
+ when "../state/type = 'oc-isis-lsdb-types:ISIS_ALIAS_ID'" {
+ description
+ "Only include the ISIS alias ID container when the TLV
+ is type 24.";
+ }
+
+ description
+ "This container defines the IS-Alias TLV which allows
+ extension-capable ISs to recognize the Originating System
+ of an Extended LSP set. It identifies the Normal system-
+ id of the Originating System.";
+
+ reference
+ "RFC5311: Simplified Extension of Link State PDU (LSP)
+ Space for IS-IS TLV 24.";
+
+ container state {
+ config false;
+ description
+ "State parameters of alias ID.";
+
+ leaf alias-id {
+ type oc-isis-types:system-id;
+ description
+ "List of alias ID(s).";
+ }
+ }
+ }
+
+ container mt-isn {
+ when "../state/type = 'oc-isis-lsdb-types:MT_ISN'" {
+ description
+ "Only include the MT ISN container when the TLV is type
+ 222.";
+ }
+ description
+ "This container defines list of ISIS multi-topology
+ neighbors.";
+
+ reference
+ "RFC5120: M-ISIS: Multi Topology (MT) Routing in
+ Intermediate System to Intermediate Systems (IS-ISs). TLV
+ 222.";
+
+ container neighbors {
+ description
+ "MT-IS neigbor attributes.";
+
+ list neighbor {
+ key "mt-id system-id";
+ description
+ "This container describes IS neighbors.";
+
+ leaf mt-id {
+ type leafref {
+ path "../state/mt-id";
+ }
+ description
+ "Reference to the topology that the neighbor is
+ within.";
+ }
+
+ leaf system-id {
+ type leafref {
+ path "../state/system-id";
+ }
+ description
+ "Reference to the System ID of the neighbor.";
+ }
+
+ uses mt-isis-neighbor;
+ }
+ }
+ }
+
+ container mt-isis-neighbor-attribute {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:MT_IS_NEIGHBOR_ATTRIBUTE'" {
+ description
+ "Only include the MT ISIS neighbor attribute container
+ when the TLV is type 223.";
+ }
+
+ description
+ "This container defines list of ISIS multi-topology
+ neighbors.";
+
+ reference
+ "RFC5311: Simplified Extension of Link State PDU (LSP)
+ Space for IS-IS. TLV 223. It is identical in format to the
+ MT-ISN TLV 222.";
+
+ container neighbors {
+ description
+ "This container describes IS neighbors.";
+
+ list neighbor {
+ key "mt-id system-id";
+ description
+ "List of multi-topology neighbors.";
+
+ leaf mt-id {
+ type leafref {
+ path "../state/mt-id";
+ }
+ description
+ "Reference to the topology that the neighbor is
+ within.";
+ }
+
+ leaf system-id {
+ type leafref {
+ path "../state/system-id";
+ }
+ description
+ "Reference to the system ID of the neighbor";
+ }
+
+ uses mt-isis-neighbor;
+ }
+ }
+ }
+
+ container mt-ipv4-reachability {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:MT_IPV4_REACHABILITY'" {
+ description
+ "Only include the multi-topology IPv4 reachability
+ container when the TLV is type 235.";
+ }
+ description
+ "This container defines list of IPv4 reachability
+ Information in multi-topology environment.";
+
+ reference
+ "RFC5120: M-ISIS: Multi Topology (MT) Routing in
+ Intermediate System to Intermediate Systems (IS-ISs). TLV
+ 235.";
+
+ container prefixes {
+ description
+ "This container describes IS prefixes.";
+
+ list prefix {
+ key "mt-id prefix";
+
+ leaf mt-id {
+ type leafref {
+ path "../state/mt-id";
+ }
+ description
+ "Reference to the topology ID of the topology that
+ the prefix is within.";
+ }
+
+ leaf prefix {
+ type leafref {
+ path "../state/prefix";
+ }
+ description
+ "Reference to the prefix to which reachability is
+ being advertised.";
+ }
+
+ description
+ "IPv4 prefixes that are contained within MT
+ reachability TLV.";
+
+ uses ipv4-mt-prefix-extended-state;
+ }
+ }
+ }
+
+ container mt-ipv6-reachability {
+ when "../state/type = " +
+ "'oc-isis-lsdb-types:MT_IPV6_REACHABILITY'" {
+ description
+ "Only include the multi-topology IPv6 reachability
+ container when the TLV is type 237.";
+ }
+ description
+ "This container defines list of IPv6 reachability
+ information in multi - topology environment.";
+
+ reference
+ "RFC5120: M-ISIS: Multi Topology (MT) Routing in
+ Intermediate System to Intermediate Systems (IS-ISs). TLV
+ 237.";
+
+ container prefixes {
+ description
+ "This container describes IS prefixes.";
+
+ list prefix {
+ key "prefix mt-id";
+ description
+ "List of IPv6 prefixes contained within MT
+ reachability TLV.";
+
+ leaf prefix {
+ type leafref {
+ path "../state/prefix";
+ }
+ description
+ "Reference to the IPv6 prefix described by the
+ TLV.";
+ }
+
+ leaf mt-id {
+ type leafref {
+ path "../state/mt-id";
+ }
+ description
+ "Reference to the multi-topology ID.";
+ }
+
+ uses ipv6-mt-prefix-extended-state;
+ }
+ }
+ }
+ }
+ }
+
+ uses isis-lsdb-undefined-tlv;
+ }
+}
diff --git a/models/openconfig/src/main/yang/isis/openconfig-isis-policy.yang b/models/openconfig/src/main/yang/isis/openconfig-isis-policy.yang
new file mode 100644
index 0000000..3d5de82
--- /dev/null
+++ b/models/openconfig/src/main/yang/isis/openconfig-isis-policy.yang
@@ -0,0 +1,180 @@
+module openconfig-isis-policy {
+
+ yang-version "1";
+
+ // namespace
+ namespace "http://openconfig.net/yang/openconfig-isis-policy";
+
+ prefix "oc-isis-pol";
+
+ // import some basic types
+ import openconfig-routing-policy {prefix rpol; }
+ import openconfig-extensions { prefix oc-ext; }
+ import openconfig-isis-types { prefix isis-types; }
+
+
+ // meta
+ organization
+ "OpenConfig working group";
+
+ contact
+ "OpenConfig working group
+ www.openconfig.net ";
+
+ description
+ "This module contains data definitions for ISIS routing policy.
+ It augments the base routing-policy module with BGP-specific
+ options for conditions and actions.";
+
+ oc-ext:openconfig-version "0.3.2";
+
+ revision "2017-07-26" {
+ description
+ "Update LSDB and fix bugs.";
+ reference "0.3.2";
+ }
+
+ revision "2017-05-15" {
+ description
+ "Refactor LSDB.";
+ reference "0.3.0";
+ }
+
+ revision "2017-01-13" {
+ description
+ "Remove top-level /isis container";
+ reference "0.2.1";
+ }
+
+ revision "2016-12-15" {
+ description
+ "Add segment routing to IS-IS module";
+ reference "0.2.0";
+ }
+
+ revision "2016-10-18" {
+ description
+ "Initial revision of IS-IS models.";
+ reference "0.1.0";
+ }
+
+ // extension statements
+
+ // feature statements
+
+ // identity statements
+
+ // typedef statements
+
+ // grouping statements
+
+ grouping isis-match-conditions {
+ description
+ "Criteria used to match IS-IS routes within the policy";
+
+ container isis-conditions {
+ description
+ "Match conditions relating to the IS-IS protocol";
+
+ container config {
+ description
+ "Configuration parameters relating to IS-IS match
+ conditions";
+
+ uses isis-match-conditions-config;
+ }
+
+ container state {
+ config false;
+ description
+ "Operational state parameters relating to IS-IS match
+ conditions";
+ uses isis-match-conditions-config;
+ }
+ }
+ }
+
+ grouping isis-match-conditions-config {
+ description
+ "Match conditions for IS-IS";
+
+ leaf level-eq {
+ type isis-types:level-number;
+ description
+ "Match the level that the IS-IS prefix is within. This can
+ be used in the case that import or export policies refer
+ to an IS-IS instance that has multiple levels configured
+ within it";
+ }
+ }
+
+ grouping isis-actions {
+ description
+ "Actions supplied by the IS-IS protocol to be set on a
+ route within the policy";
+
+ container isis-actions {
+ description
+ "Actions that can be performed by IS-IS within a policy";
+
+ container config {
+ description
+ "Configuration parameters relating to IS-IS actions";
+
+ uses isis-actions-config;
+ }
+
+ container state {
+ config false;
+ description
+ "Operational state associated with IS-IS actions";
+
+ uses isis-actions-config;
+ }
+ }
+ }
+
+ grouping isis-actions-config {
+ description
+ "Actions for IS-IS";
+
+ leaf set-level {
+ type isis-types:level-number;
+ description
+ "Set the level that a prefix is to be imported into.";
+ }
+
+ leaf set-metric-type {
+ type isis-types:level-number;
+ description
+ "Set the type of metric that is to be specified when the
+ set metric leaf is specified";
+ }
+
+ leaf set-metric {
+ type isis-types:wide-metric;
+ description
+ "Set the metric of the IS-IS prefix";
+ }
+ }
+
+ // augment statements
+ augment "/rpol:routing-policy/rpol:policy-definitions/" +
+ "rpol:policy-definition/rpol:statements/rpol:statement/" +
+ "rpol:actions" {
+ description "This augments igp-actions with ISIS conditions";
+ uses isis-actions;
+
+ }
+
+ augment "/rpol:routing-policy/rpol:policy-definitions/" +
+ "rpol:policy-definition/rpol:statements/rpol:statement/" +
+ "rpol:conditions" {
+ description "This augments igp-conditions with ISIS conditions";
+ uses isis-match-conditions;
+ }
+
+ // rpc statements
+
+ // notification statements
+}
diff --git a/models/openconfig/src/main/yang/isis/openconfig-isis-routing.yang b/models/openconfig/src/main/yang/isis/openconfig-isis-routing.yang
new file mode 100644
index 0000000..ac1f779
--- /dev/null
+++ b/models/openconfig/src/main/yang/isis/openconfig-isis-routing.yang
@@ -0,0 +1,375 @@
+submodule openconfig-isis-routing {
+
+ belongs-to openconfig-isis {
+ prefix "oc-isis";
+ }
+
+ // import some basic types
+ import openconfig-isis-types { prefix oc-isis-types; }
+ import openconfig-extensions { prefix oc-ext; }
+ import openconfig-mpls-types { prefix oc-mplst; }
+ import openconfig-segment-routing { prefix oc-sr; }
+
+ // meta
+ organization "OpenConfig working group";
+
+ contact
+ "OpenConfig working group
+ www.openconfig.net";
+
+ description
+ "This module describes YANG model for ISIS Routing";
+
+ oc-ext:openconfig-version "0.3.2";
+
+ revision "2017-07-26" {
+ description
+ "Update LSDB and fix bugs.";
+ reference "0.3.2";
+ }
+
+ revision "2017-05-15" {
+ description
+ "Refactor LSDB.";
+ reference "0.3.0";
+ }
+
+ revision "2017-01-13" {
+ description
+ "Remove top-level /isis container";
+ reference "0.2.1";
+ }
+
+ revision "2016-12-15" {
+ description
+ "Add segment routing to IS-IS module";
+ reference "0.2.0";
+ }
+
+ revision "2016-10-18" {
+ description
+ "Initial revision of IS-IS models.";
+ reference "0.1.0";
+ }
+
+ // extension statements
+
+ // feature statements
+
+ // identity statements
+
+ // typedef statements
+
+ // grouping statements
+
+ grouping rt-admin-config {
+ description
+ "Re-usable grouping to enable or disable a particular IS-IS feature.";
+
+ leaf enabled {
+ type boolean;
+ description
+ "When set to true, the functionality within which this leaf is
+ defined is enabled, when set to false it is explicitly disabled.";
+ }
+ }
+
+ grouping isis-afi-safi-config {
+ description
+ "This grouping defines Address-Family configuration parameters";
+
+ leaf afi-name {
+ type identityref {
+ base oc-isis-types:AFI_TYPE;
+ }
+ description
+ "Address-family type.";
+ }
+
+ leaf safi-name {
+ type identityref {
+ base oc-isis-types:SAFI_TYPE;
+ }
+ description
+ "Subsequent address-family type.";
+ }
+ }
+
+ grouping isis-shortcuts-afi-config {
+ description
+ "This grouping defines ISIS Shortcuts configuration parameters";
+
+ leaf afi-name {
+ type identityref {
+ base oc-isis-types:AFI_TYPE;
+ }
+ description "Address-family type.";
+ }
+
+ leaf-list nh-type {
+ type identityref {
+ base oc-mplst:PATH_SETUP_PROTOCOL;
+ }
+ description "Tunnel NH Type(RSVP,SR). When present it implies
+ that nh-type shortcut is enabled for a specified AFI.";
+ }
+ }
+
+ grouping isis-shortcuts-config {
+ description
+ "This grouping defines ISIS Shortcuts consfiguration parameters";
+
+ container config {
+ description "This container defines ISIS shortcuts configuration.";
+ uses rt-admin-config;
+ }
+
+ container state {
+ config false;
+ description "This container defines state for ISIS shortcuts.";
+ uses rt-admin-config;
+ }
+ }
+
+ grouping isis-mt-config {
+ description
+ "This grouping defines ISIS multi-topology configuration parameters";
+
+ leaf afi-name {
+ type identityref {
+ base oc-isis-types:AFI_TYPE;
+ }
+ description
+ "Address-family type.";
+ }
+ leaf safi-name {
+ type identityref {
+ base oc-isis-types:SAFI_TYPE;
+ }
+ description
+ "Subsequent address-family type.";
+ }
+ //prefer single topology
+ }
+
+
+
+ // *********** STRUCTURE GROUPINGS **********************
+
+ grouping isis-metric-config {
+ description
+ "This grouping defines ISIS metric configuration";
+
+ leaf metric {
+ type uint32;
+ default 10;
+ description "ISIS metric value(default=10).";
+ }
+ }
+
+ grouping isis-afi-safi-list {
+ description
+ "This grouping defines address-family configuration and state
+ information";
+
+ list af {
+ key "afi-name safi-name";
+
+ description
+ "Address-family/Subsequent Address-family list.";
+
+ leaf afi-name {
+ type leafref {
+ path "../config/afi-name";
+ }
+ description
+ "Reference to address-family type";
+ }
+
+ leaf safi-name {
+ type leafref {
+ path "../config/safi-name";
+ }
+ description
+ "Reference to subsequent address-family type";
+ }
+
+ container config {
+ description
+ "This container defines AFI-SAFI configuration parameters";
+
+ uses isis-afi-safi-config;
+ uses isis-metric-config;
+ uses rt-admin-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines AFI-SAFI State information";
+
+ uses isis-afi-safi-config;
+ uses isis-metric-config;
+ uses rt-admin-config;
+ }
+
+ uses isis-mt-list;
+ }
+ }
+
+ grouping isis-if-afi-safi-list {
+ description
+ "This grouping defines address-family configuration and state
+ information";
+
+ list af {
+ key "afi-name safi-name";
+
+ description
+ "Address-family/Subsequent Address-family list.";
+
+ leaf afi-name {
+ type leafref {
+ path "../config/afi-name";
+ }
+ description
+ "Reference to address-family type";
+ }
+
+ leaf safi-name {
+ type leafref {
+ path "../config/safi-name";
+ }
+ description
+ "Reference to subsequent address-family type";
+ }
+
+ container config {
+ description
+ "This container defines AFI-SAFI configuration parameters. Single
+ topology is the default setting.";
+ uses isis-afi-safi-config;
+ uses isis-metric-config;
+ uses rt-admin-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines AFI-SAFI State information";
+ uses isis-afi-safi-config;
+ uses isis-metric-config;
+ uses rt-admin-config;
+ }
+
+ uses oc-sr:sr-igp-interface-top;
+ }
+ }
+
+ grouping isis-if-global-afi-safi-list {
+ description
+ "This grouping defines address-family configuration and state
+ information";
+
+ list af {
+ key "afi-name safi-name";
+
+ description
+ "Address-family/Subsequent Address-family list.";
+
+ leaf afi-name {
+ type leafref {
+ path "../config/afi-name";
+ }
+ description
+ "Reference to address-family type";
+ }
+
+ leaf safi-name {
+ type leafref {
+ path "../config/safi-name";
+ }
+ description
+ "Reference to subsequent address-family type";
+ }
+
+ container config {
+ description
+ "This container defines AFI-SAFI configuration parameters. Single
+ topology is the default setting.";
+ uses isis-afi-safi-config;
+ uses rt-admin-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines AFI-SAFI State information";
+ uses isis-afi-safi-config;
+ uses rt-admin-config;
+ }
+ }
+ }
+
+ grouping isis-shortcuts-afi-list {
+ description
+ "This grouping defines ISIS Shorcuts configuration and
+ state information";
+
+ list afi {
+ key "afi-name";
+
+ description
+ "Address-family list.";
+
+ leaf afi-name {
+ type leafref {
+ path "../config/afi-name";
+ }
+ description
+ "Reference to address-family type.";
+ }
+
+ container config {
+ description
+ "This container defines ISIS Shortcuts configuration parameters";
+ uses isis-shortcuts-afi-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines ISIS Shortcuts state information";
+ uses isis-shortcuts-afi-config;
+ }
+ }
+ }
+
+ grouping isis-mt-list {
+ description
+ "This grouping defines multi-topology address-family configuration and
+ state information. MT0 - IPv4 Unicast, MT2 - IPv6 Unicast, MT3 -
+ IPv4 Multicast, MT4 - IPv6 Multicast";
+
+ container multi-topology {
+ description
+ "This container defines multi-topology address-family configuration
+ and state information. ISIS TLV 235, 237.";
+
+ container config {
+ description
+ "This container defines AFI-SAFI multi-topology configuration
+ parameters";
+ uses isis-mt-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines AFI-SAFI multi-topology state information";
+ uses isis-mt-config;
+ uses rt-admin-config;
+ }
+ }
+ }
+}
diff --git a/models/openconfig/src/main/yang/isis/openconfig-isis-types.yang b/models/openconfig/src/main/yang/isis/openconfig-isis-types.yang
new file mode 100644
index 0000000..fc474c9
--- /dev/null
+++ b/models/openconfig/src/main/yang/isis/openconfig-isis-types.yang
@@ -0,0 +1,330 @@
+module openconfig-isis-types {
+
+ yang-version "1";
+
+ // namespace
+ namespace "http://openconfig.net/yang/isis-types";
+
+ prefix "oc-isis-types";
+
+ import openconfig-extensions { prefix oc-ext; }
+
+ // meta
+ organization "OpenConfig working group";
+
+ contact
+ "OpenConfig working group
+ www.openconfig.net";
+
+ description
+ "This module contains general data definitions for use in ISIS YANG
+ model.";
+
+ oc-ext:openconfig-version "0.3.2";
+
+ revision "2017-07-26" {
+ description
+ "Update LSDB and fix bugs.";
+ reference "0.3.2";
+ }
+
+ revision "2017-05-15" {
+ description
+ "Refactor LSDB.";
+ reference "0.3.0";
+ }
+
+ revision "2017-01-13" {
+ description
+ "Remove top-level /isis container";
+ reference "0.2.1";
+ }
+
+ revision "2016-12-15" {
+ description
+ "Add segment routing to IS-IS module";
+ reference "0.2.0";
+ }
+
+ revision "2016-10-18" {
+ description
+ "Initial revision of IS-IS models.";
+ reference "0.1.0";
+ }
+
+ // identity statements
+ identity OVERLOAD_RESET_TRIGGER_TYPE {
+ description
+ "Base identify type for triggers that reset Overload Bit";
+ }
+
+ identity WAIT_FOR_BGP {
+ base OVERLOAD_RESET_TRIGGER_TYPE;
+ description
+ "Base identity type for resetting Overload Bit when BGP has converged. ";
+ }
+
+ identity WAIT_FOR_SYSTEM {
+ base OVERLOAD_RESET_TRIGGER_TYPE;
+ description
+ "Base identity type for resetting Overload Bit when system resources have
+ been restored. ";
+ }
+
+ identity MT_TYPE {
+ description
+ "Base identify type for multi-topology";
+ }
+
+ identity SAFI_TYPE {
+ description
+ "Base identify type for SAFI";
+ }
+
+ identity AFI_TYPE {
+ description
+ "Base identify type for AFI";
+ }
+
+ identity AFI_SAFI_TYPE {
+ description
+ "Base identify type for AFI/SAFI";
+ }
+
+ identity IPV4_UNICAST {
+ base AFI_SAFI_TYPE;
+ description
+ "Base identify type for IPv4 Unicast address family";
+ }
+
+ identity IPV6_MULTICAST {
+ base AFI_SAFI_TYPE;
+ description
+ "Base identify type for IPv6 multicast address family";
+ }
+
+ identity IPV4_MULTICAST {
+ base AFI_SAFI_TYPE;
+ description
+ "Base identify type for IPv4 multicast address family";
+ }
+
+ identity IPV6_UNICAST {
+ base AFI_SAFI_TYPE;
+ description
+ "Base identify type for IPv6 unicast address family";
+ }
+
+ identity UNICAST {
+ base SAFI_TYPE;
+ description
+ "Base identify type for IPv4 Unicast address family";
+ }
+
+ identity MULTICAST {
+ base SAFI_TYPE;
+ description
+ "Base identify type for IPv6 multicast address family";
+ }
+
+ identity IPV4 {
+ base AFI_TYPE;
+ description
+ "Base identify type for IPv4 address family";
+ }
+
+ identity IPV6 {
+ base AFI_TYPE;
+ description
+ "Base identify type for IPv6 address family";
+ }
+
+ // typedef statements
+ typedef level-type {
+ type enumeration {
+ enum LEVEL_1 {
+ description "This enum describes ISIS level 1";
+ }
+ enum LEVEL_2 {
+ description "This enum describes ISIS level 2";
+ }
+ enum LEVEL_1_2 {
+ description "This enum describes ISIS level 1-2";
+ }
+ }
+ description
+ "This type defines ISIS level types";
+ }
+
+ typedef level-number {
+ type uint8 {
+ range "1..2";
+ }
+ description
+ "This type defines ISIS level.";
+ }
+
+ typedef adaptive-timer-type {
+ type enumeration {
+ enum LINEAR {
+ description "This enum describes linear algorithm timer";
+ }
+ enum EXPONENTIAL {
+ description "This enum describes exponential algorithm timer";
+ }
+ }
+ description
+ "This type defines ISIS adaptive timer types";
+ }
+
+ typedef hello-padding-type {
+ type enumeration {
+ enum STRICT {
+ description "This enum describes strict padding";
+ }
+ enum LOOSE {
+ description "This enum describes loose padding";
+ }
+ enum ADAPTIVE {
+ description "This enum describes adaptive padding";
+ }
+ enum DISABLE {
+ description "This enum disables padding";
+ }
+ }
+ description
+ "This type defines ISIS hello padding type";
+ }
+
+ typedef circuit-type {
+ type enumeration {
+ enum POINT_TO_POINT {
+ description "This enum describes a point-to-point interface";
+ }
+ enum BROADCAST {
+ description "This enum describes a broadcast interface";
+ }
+ }
+ description
+ "This type defines ISIS interface types ";
+ }
+
+ typedef metric-type {
+ type enumeration {
+ enum INTERNAL {
+ description "This enum describes internal route type";
+ }
+ enum EXTERNAL {
+ description "This enum describes external route type";
+ }
+ }
+ description
+ "This type defines ISIS metric type";
+ }
+
+ typedef wide-metric {
+ type uint32 {
+ range "1..16777215";
+ }
+ description
+ "This type defines ISIS wide metric.";
+ }
+
+ typedef narrow-metric {
+ type uint8 {
+ range "1..63";
+ }
+ description
+ "This type defines ISIS narrow metric.";
+ }
+
+ typedef metric-style {
+ type enumeration {
+ enum NARROW_METRIC {
+ description
+ "This enum describes narrow metric style";
+ reference "RFC1195";
+ }
+ enum WIDE_METRIC {
+ description
+ "This enum describes wide metric style";
+ reference "RFC5305";
+ }
+ }
+ description
+ "This type defines ISIS metric styles";
+ }
+
+ typedef isis-interface-adj-state {
+ type enumeration {
+ enum UP {
+ description
+ "This state describes that adjacency is established.";
+ }
+ enum DOWN {
+ description
+ "This state describes that adjacency is NOT established.";
+ }
+ enum INIT {
+ description
+ "This state describes that adjacency is establishing.";
+ }
+ enum FAILED {
+ description
+ "This state describes that adjacency is failed.";
+ }
+ }
+ description
+ "This type defines the state of the interface.";
+ }
+
+ typedef net {
+ type string {
+ pattern '^[a-fA-F0-9]{2}(\.[a-fA-F0-9]{4}){3,9}\.[a-fA-F0-9]{2}$';
+ }
+ description
+ "This type defines OSI NET address. A NET should should be in
+ the form xx.yyyy.yyyy.yyyy.00 with up to 9 sets of yyyy.";
+ }
+
+ typedef area-address {
+ type string {
+ pattern '^[0-9A-Fa-f]{2}\.([0-9A-Fa-f]{4}\.){0,3}$';
+ }
+ description
+ "This type defines the ISIS area address.";
+ }
+
+ typedef system-id {
+ type string {
+ pattern '^[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}$';
+ }
+ description
+ "This type defines ISIS system id using pattern, system id looks
+ like : 0143.0438.AeF0";
+ }
+
+ typedef extended-circuit-id {
+ type uint32;
+ description
+ "This type defines interface circuit ID.";
+ }
+
+ typedef lsp-id {
+ type string {
+ pattern
+ '^[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]'
+ + '{4}\.[0-9][0-9]-[0-9][0-9]$';
+ }
+ description
+ "This type defines ISIS LSP ID. ISIS LSP ID type should be in
+ the form of xxxx.xxxx.xxxx.xx-xx";
+ }
+ typedef snpa {
+ type string {
+ length "0 .. 20";
+ }
+ description
+ "This type defines Subnetwork Point of Attachment format.";
+ }
+}
diff --git a/models/openconfig/src/main/yang/isis/openconfig-isis.yang b/models/openconfig/src/main/yang/isis/openconfig-isis.yang
new file mode 100644
index 0000000..ce8e669
--- /dev/null
+++ b/models/openconfig/src/main/yang/isis/openconfig-isis.yang
@@ -0,0 +1,2032 @@
+module openconfig-isis {
+
+ yang-version "1";
+
+ // namespace
+ namespace "http://openconfig.net/yang/openconfig-isis";
+
+ prefix "oc-isis";
+
+ // import some basic types
+ import ietf-inet-types { prefix "inet"; }
+ import ietf-yang-types { prefix "yang"; }
+ import openconfig-types { prefix "oc-types"; }
+ import openconfig-isis-types { prefix "oc-isis-types"; }
+ import openconfig-routing-policy { prefix "oc-rpol"; }
+ import openconfig-extensions { prefix "oc-ext"; }
+ import openconfig-interfaces { prefix "oc-if"; }
+ import openconfig-segment-routing { prefix "oc-sr"; }
+ // TODO(robjs): Import authentication and keychain following merge of these
+ // modules.
+ //import openconfig-authentication-types { prefix "oc-auth-types"; }
+ //import openconfig-keychain { prefix "oc-keychain"; }
+
+ // Include submodules:
+ // IS-IS LSP is the LSDB for IS-IS.
+ include openconfig-isis-lsp;
+ // IS-IS RT is routing-related features for IS-IS
+ include openconfig-isis-routing;
+
+ // meta
+ organization
+ "OpenConfig working group";
+
+ contact
+ "OpenConfig working group
+ www.openconfig.net ";
+
+ description
+ "This module describes a YANG model for ISIS protocol configuration.
+ It is a limited subset of all of the configuration parameters
+ available in the variety of vendor implementations, hence it is
+ expected that it would be augmented with vendor - specific configuration
+ data as needed. Additional modules or submodules to handle other
+ aspects of ISIS configuration, including policy, routing, types,
+ LSDB and additional address families are also expected. This model
+ supports the following ISIS configuration level hierarchy:
+
+ ISIS
+ +-> { global ISIS configuration}
+ +-> levels +-> { level config}
+ +-> { system-level-counters }
+ +-> { level link-state-database}
+ +-> interface +-> { interface config }
+ +-> { circuit-counters }
+ +-> { levels config }
+ +-> { level adjacencies }";
+
+ oc-ext:openconfig-version "0.3.2";
+
+ revision "2017-07-26" {
+ description
+ "Update LSDB and fix bugs.";
+ reference "0.3.2";
+ }
+
+ revision "2017-05-15" {
+ description
+ "Refactor LSDB.";
+ reference "0.3.0";
+ }
+
+ revision "2017-01-13" {
+ description
+ "Remove top-level /isis container";
+ reference "0.2.1";
+ }
+
+ revision "2016-12-15" {
+ description
+ "Add segment routing to IS-IS module";
+ reference "0.2.0";
+ }
+
+ revision "2016-10-18" {
+ description
+ "Initial revision of IS-IS models.";
+ reference "0.1.0";
+ }
+
+ // extension statements
+
+ // feature statements
+
+ // identity statements
+
+ // typedef statements
+
+ // grouping statements
+
+ grouping isis-global-config {
+ description
+ "This grouping defines lobal configuration options for ISIS router.";
+
+ // multi-instance
+ leaf instance {
+ type string;
+ default 0;
+ description
+ "ISIS Instance.";
+ }
+
+ leaf-list net {
+ type oc-isis-types:net;
+ description
+ "ISIS network entity title (NET). The first 8 bits are usually
+ 49 (private AFI), next 16 bits represent area, next 48 bits represent
+ system id and final 8 bits are set to 0.";
+ reference
+ "International Organization for Standardization, Information
+ technology - Open Systems Interconnection-Network service
+ Definition - ISO/ IEC 8348:2002.";
+ }
+
+ leaf maximum-area-addresses {
+ type uint8;
+ default 3;
+ description
+ "Maximum areas supported.";
+ }
+
+ leaf level-capability {
+ type oc-isis-types:level-type;
+ default "LEVEL_1_2";
+ description
+ "ISIS level capability(level-1, level-2,vlevel-1-2).";
+ }
+
+ leaf max-ecmp-paths {
+ type uint8;
+ description
+ "ISIS max-paths count.";
+ }
+
+ leaf poi-tlv {
+ type boolean;
+ default false;
+ description
+ "ISIS purge TLV. When set to true, a TLV is added to purges to record
+ the system ID of the IS generating the purge.";
+ reference "RFC6232: Purge Originator Identification TLV for IS-IS. TLV 13.";
+ }
+
+ leaf iid-tlv {
+ type boolean;
+ default false;
+ description
+ "ISIS Instance Identifier TLV. When set to trues, the IID-TLV identifies
+ the unique instance as well as the topology/topologies to which the
+ PDU applies.";
+ reference "RFC6822: IS-IS Multi-Instance. TLV 7";
+ }
+
+ leaf fast-flooding {
+ type boolean;
+ default true;
+ description
+ "When set to true, IS will always flood the LSP that triggered an SPF
+ before the router actually runs the SPF computation.";
+ }
+ }
+
+ grouping admin-config {
+ description
+ "Re-usable grouping to enable or disable a particular IS-IS feature.";
+
+ leaf enabled {
+ type boolean;
+ default false;
+ description
+ "When set to true, the functionality within which this leaf is
+ defined is enabled, when set to false it is explicitly disabled.";
+ }
+ }
+
+ grouping isis-bfd-config {
+ description
+ "This grouping defines Bidirectionl-Forwarding-Detection
+ configuration.";
+
+ //There is also BFD state under adjacency
+ leaf bfd-tlv {
+ type boolean;
+ description
+ "When set to true, BFD TLV is used. This enables support for the IS-IS
+ BFD TLV options, which specify that a BFD session must be established
+ before an IS-IS adjacency can transition to the established state.
+ This option should be enabled on all IS-IS neighbors on a shared
+ interface.";
+ reference "RFC6213. TLV 148";
+ }
+ reference "RFC5880: Bidirectional Forwarding Detection (BFD).";
+ }
+
+ grouping isis-authentication-check-config {
+ description
+ "This grouping defines ISIS authentication check.";
+
+ leaf authentication-check {
+ type boolean;
+ default true;
+ description
+ "When set to true, reject all ISIS protocol PDUs that either have a mismatch
+ in authentication-type or authentication-key.";
+ }
+ }
+
+ grouping isis-metric-style-config {
+ description
+ "This grouping defines ISIS metric style.";
+
+ leaf metric-style {
+ type oc-isis-types:metric-style;
+ description
+ "ISIS metric style types(narrow, wide).";
+ }
+ }
+
+ grouping authentication-key-config {
+ description
+ "This grouping defines authentication key configuration.";
+
+ leaf auth-password {
+ type oc-types:routing-password;
+ description
+ "Authentication key string.";
+ }
+ }
+
+ grouping keychain-base-group {
+ description
+ "This grouping defines keychain configuration.";
+
+ container keychain {
+ description
+ "This container defines keychain parameters.";
+
+ // TODO(robjs): Import keychain parameters following merge of the auth
+ // models.
+ //uses oc-keychain:keychain-common-base;
+ //uses oc-keychain:tolerance-base;
+ //uses oc-keychain:keychain-key-base;
+ }
+ }
+
+ grouping isis-authentication-config {
+ description
+ "This grouping defines ISIS authentication configuration.";
+
+ // TODO(robjs): Add authentication following merge of auth modules.
+ //leaf auth-type {
+ // type oc-auth-types:auth-type;
+ // description
+ // "ISIS authentication type (key, key-chain).";
+ //}
+
+ leaf csnp-authentication {
+ type boolean;
+ default false;
+ description
+ "Enable or disable for IS-IS CSNPs.";
+ }
+
+ leaf psnp-authentication {
+ type boolean;
+ default false;
+ description
+ "Enable or disable authentication for IS-IS PSNPs.";
+ }
+
+ leaf lsp-authentication {
+ type boolean;
+ default false;
+ description
+ "Enable or disable authentication for IS-IS LSPs.";
+ }
+ }
+
+ grouping isis-authentication-group {
+ description
+ "This grouping defines ISIS authentication.";
+
+ container config {
+ description
+ "This container defines ISIS authentication configuration.";
+
+ uses isis-authentication-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines ISIS authentication state.";
+
+ uses isis-authentication-config;
+ }
+
+ container key {
+ description
+ "This container defines ISIS authentication key";
+ container config {
+ description
+ "This container defines ISIS authentication key configuration.";
+
+ uses authentication-key-group-config {
+ when "../auth-type = KEY";
+ }
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines ISIS authentication key state.";
+
+ uses authentication-key-group-config {
+ when "../auth-type = KEY";
+ }
+ }
+ }
+
+ uses keychain-base-group {
+ when "../auth-type = KEY_CHAIN";
+ }
+ }
+
+ grouping isis-hello-authentication-config {
+ description
+ "Configuration options for IS-IS hello authentication.";
+
+ leaf hello-authentication {
+ type boolean;
+ default false;
+ description
+ "Enabled or disable ISIS Hello authentication.";
+ }
+
+ // TODO(robjs): Add hello-auth-type following merge of auth models.
+ //leaf hello-auth-type {
+ // type oc-auth-types:auth-type;
+ // description
+ // "ISIS authentication type (key, key-chain).";
+ //}
+ }
+
+ grouping isis-hello-authentication-group {
+ description
+ "This grouping defines ISIS hello-authentication.";
+
+ container config {
+ description
+ "This container defines ISIS authentication configuration.";
+
+ uses isis-hello-authentication-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines ISIS authentication state.";
+
+ uses isis-hello-authentication-config;
+ }
+
+ container key {
+ description
+ "This container defines ISIS authentication key";
+
+ container config {
+ description
+ "This container defines ISIS authentication key configuration.";
+
+ uses authentication-key-group-config {
+ when "../auth-type = KEY";
+ }
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines ISIS authentication key state.";
+
+ uses authentication-key-group-config {
+ when "../auth-type = KEY";
+ }
+ }
+ }
+
+ uses keychain-base-group {
+ when "../auth-type = KEY_CHAIN";
+ }
+ }
+
+ grouping isis-ldp-igp-config {
+ description
+ "This grouping defines ISIS/LDP Synchronization configuration.";
+
+ leaf enabled {
+ type boolean;
+ default true;
+ description
+ "When set to true, rely on IGP/LDP synchronization. IGP cost for
+ link is maintained at max until LDP adjacencies are established ";
+ reference "RFC5443: LDP IGP Synchronization.";
+ }
+
+ leaf post-session-up-delay {
+ type uint16;
+ units seconds;
+ description
+ "Specifies a delay, expressed in units of seconds,
+ between the LDP session to the IGP neighbor being established, and
+ it being considered synchronized by the IGP.";
+ }
+ }
+
+ grouping isis-te-config {
+ description
+ "This grouping defines ISIS Traffic Engineering configuration.";
+
+ leaf ipv4-router-id {
+ type inet:ipv4-address-no-zone;
+ description
+ "IPv4 MPLS Traffic Engineering Router-ID.";
+ }
+
+ leaf ipv6-router-id {
+ type inet:ipv6-address-no-zone;
+ description
+ "IPv6 MPLS Traffic Engineering Router-ID.";
+ }
+ }
+
+ grouping isis-reference-bandwidth-config {
+ description
+ "This grouping defines ISIS Reference Bandwidth Configuration.";
+
+ leaf reference-bandwidth {
+ type uint32;
+ description
+ "ISIS Reference Bandwidth value";
+ }
+ }
+
+ grouping isis-overload-bit-set-config {
+ description
+ "This grouping defines ISIS Overload Bit.";
+
+ leaf set-bit {
+ type boolean;
+ default false;
+ description
+ "When set to true, IS-IS overload bit is set.";
+ }
+
+ leaf set-bit-on-boot {
+ type boolean;
+ default false;
+ description
+ "When set to true, the IS-IS overload bit is set on system boot.";
+ }
+
+ leaf advertise-high-metric {
+ type boolean;
+ default false;
+ description
+ "When set to true, the local IS advertises links with the highest
+ available metric regardless of their configured metric. The metric
+ value is based on the metric style - if wide metrics are utilised
+ the metric is advertised as 16777214, otherwise they are advertised
+ with a value of 63.";
+ }
+ }
+
+ grouping isis-overload-bit-reset-config {
+ description
+ "This grouping defines ISIS Overload Bit Reset Triggers";
+
+ leaf reset-trigger {
+ type identityref {
+ base oc-isis-types:OVERLOAD_RESET_TRIGGER_TYPE;
+ }
+ description
+ "In the case that the system sets the overload bit on start, the
+ system should reset the bit (i.e., clear the overload bit) upon
+ the specified trigger.";
+ }
+
+ leaf delay {
+ type uint16;
+ units seconds;
+ description
+ "If a reset trigger is specified, the system should delay resetting
+ the overload bit for the specified number of seconds after the
+ trigger occurs.";
+ }
+ }
+
+ grouping isis-attached-bit-config {
+ description
+ "This grouping defines ISIS Attached Bit";
+
+ leaf ignore-bit {
+ type boolean;
+ default false;
+ description
+ "When set to true, if the attached bit is set on an incoming Level 1
+ IS-IS, the local system ignores it. In this case the local system
+ does not set a default route to the L1L2 router advertising the PDU
+ with the attached bit set.";
+ }
+
+ leaf suppress-bit {
+ type boolean;
+ default false;
+ description
+ "When set to true, if the local IS acts as a L1L2 router, then the
+ attached bit is not advertised in locally generated PDUs.";
+ }
+ }
+
+ grouping overload-bit-group {
+ description
+ "This grouping defines ISIS Overload Bit.";
+
+ container config {
+ description
+ "This container defines ISIS Overload Bit configuration.";
+
+ uses isis-overload-bit-set-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines state for ISIS Overload Bit.";
+
+ uses isis-overload-bit-set-config;
+ }
+
+ container reset-triggers {
+ description
+ "This container defines state for ISIS Overload Bit reset triggers";
+
+ list reset-trigger {
+ key "reset-trigger";
+
+ description
+ "This list describes ISIS Overload reset trigger reasons.";
+
+ leaf reset-trigger {
+ type leafref {
+ path "../config/reset-trigger";
+ }
+ description
+ "Reference to the reset trigger reason";
+ }
+
+ container config {
+ description
+ "This container defines ISIS Overload Bit reset trigger
+ configuration.";
+
+ uses isis-overload-bit-reset-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines state for ISIS Overload Bit reset
+ triggers.";
+
+ uses isis-overload-bit-reset-config;
+ }
+ }
+ }
+ }
+
+
+ grouping isis-base-level-config {
+ description
+ "This grouping defines ISIS Level configuration.";
+
+ leaf level-number {
+ type oc-isis-types:level-number;
+ description
+ "ISIS level number (level-1, level-2).";
+ }
+ }
+
+ grouping isis-interface-level-config {
+ description
+ "This grouping defines ISIS Interface Level configuration.";
+
+ leaf level-number {
+ type oc-isis-types:level-number;
+ description
+ "ISIS level number(level-1, level-2).";
+ }
+
+ leaf passive {
+ type boolean;
+ default false;
+ description
+ "ISIS passive interface admin enable/disable function.";
+ }
+
+ leaf priority {
+ type uint8 {
+ range "0 .. 127";
+ }
+ description
+ "ISIS neighbor priority(LAN hello PDU only).";
+ }
+ }
+
+ grouping isis-hello-timers-config {
+ description
+ "This grouping defines ISIS hello timers configuration.";
+
+ leaf hello-interval {
+ type uint32;
+ description
+ "ISIS hello-interval value.";
+ }
+
+ leaf hello-multiplier {
+ type uint8;
+ description
+ "ISIS hello-multiplier value.";
+ }
+ }
+
+ grouping isis-interface-config {
+ description
+ "This grouping defines ISIS interface configuration.";
+
+ leaf interface-id {
+ type oc-if:interface-id;
+ description
+ "Interface for which ISIS configuration is to be applied.";
+ }
+
+ leaf passive {
+ type boolean;
+ default false;
+ description
+ "When set to true, the referenced interface is a passive interface
+ such that it is not eligible to establish adjacencies with other
+ systems, but is advertised into the IS-IS topology.";
+ }
+
+ leaf hello-padding {
+ type oc-isis-types:hello-padding-type;
+ description
+ "This leaf controls padding type for IS-IS Hello PDUs.";
+ }
+
+ leaf circuit-type {
+ type oc-isis-types:circuit-type;
+ description
+ "ISIS circuit type (p2p, broadcast).";
+ }
+ }
+
+ grouping isis-adaptive-timers-state {
+ description
+ "This grouping defines ISIS adaptive timers state";
+
+ leaf adaptive-timer {
+ type oc-isis-types:adaptive-timer-type;
+ description
+ "ISIS adaptive timer types (linear, exponential).";
+ }
+ }
+
+ grouping isis-lsp-generation-timers-config {
+ description
+ "This grouping defines ISIS LSP Generation timers configuration";
+
+ leaf lsp-max-wait-interval {
+ type uint64;
+ units milliseconds;
+ description
+ "Time interval in milliseconds that specifies max interval between
+ two consecutive occurrences of an LSP being generated.";
+ }
+
+ leaf lsp-first-wait-interval {
+ type uint64;
+ units milliseconds;
+ description
+ "Time interval in milliseconds that specifies the first LSP generation
+ delay.";
+ }
+
+ leaf lsp-second-wait-interval {
+ type uint64;
+ units milliseconds;
+ description
+ "Time interval in milliseconds that specifies the millisecond LSP
+ generation delay.";
+ }
+ }
+
+ grouping isis-lsp-timers-config {
+ description
+ "This grouping defines ISIS LSP timers configuration";
+
+ leaf lsp-lifetime-interval {
+ type uint16;
+ units seconds;
+ default 1200;
+ description
+ "Time interval in seconds that specifies how long an LSP remains in
+ LSDB without being refreshed.";
+ }
+
+ leaf lsp-refresh-interval {
+ type uint16;
+ units seconds;
+ description
+ "Time interval in seconds that specifies how often route topology
+ that a device originates is transmitted in LSPs.";
+ }
+ }
+
+ grouping isis-spf-timers-config {
+ description
+ "This grouping defines ISIS SPF timers configuration.";
+
+ leaf spf-hold-interval {
+ type uint64;
+ units milliseconds;
+ default 5000;
+ description
+ "SPF Hold Down time interval in milliseconds.";
+ }
+
+ leaf spf-first-interval {
+ type uint64;
+ units milliseconds;
+ description
+ "Time interval in milliseconds between the
+ detection of topology change and when the SPF algorithm runs.";
+ }
+ leaf spf-second-interval {
+ type uint64;
+ units milliseconds;
+ description
+ "Time interval in milliseconds between the first and second
+ SPF calculation.";
+ }
+ }
+
+ grouping isis-interface-timers-config {
+ description
+ "This grouping defines ISIS interface timers configuration.";
+
+ leaf csnp-interval {
+ type uint16;
+ units seconds;
+ description
+ "The interval, specified in seconds, at which periodic CSNP packets
+ should be transmitted by the local IS.";
+ }
+
+ leaf lsp-pacing-interval {
+ type uint64;
+ units milliseconds;
+ description
+ "The interval interval in milliseconds between the
+ detection of topology change and when the SPF algorithm runs.";
+ }
+ }
+
+ grouping isis-transport-config {
+ description
+ "This grouping defines configuration parameters relating to the
+ transport protocol used by the ISIS.";
+
+ leaf lsp-mtu-size {
+ type uint16;
+ description
+ "The maximum size in bytes of an IS-IS Link state PDU.";
+ }
+ }
+
+ grouping isis-graceful-restart-config {
+ description
+ "This grouping defines ISIS graceful restart configuration.";
+
+ leaf helper-only {
+ type boolean;
+ description
+ "Enable or disable the IS-IS graceful restart helper function. When
+ this leaf is set, the local system does not utilise the IS-IS
+ graceful restart procedures during its own restart, but supports
+ retaining forwarding information during a remote speaker's restart.";
+ }
+ reference "RFC 5306: Restart Signaling for IS-IS.";
+ }
+
+ // configuration context containers
+ grouping inter-level-propagation-policies-structural {
+ description
+ "Propagate prefixes between IS-IS levels.";
+
+ container inter-level-propagation-policies {
+ description
+ "Policies to propagate prefixes between IS-IS levels.";
+
+ container level1-to-level2 {
+ description
+ "Policies relating to prefixes to be propagated from
+ Level 1 to Level 2.";
+
+ container config {
+ description
+ "Configuration parameters relating to the propagation
+ of prefixes from IS-IS Level 1 to Level 2.";
+
+ uses inter-level-propagation-policy-config;
+ }
+
+ container state {
+ config false;
+ description
+ "Operational state parameters relating to the
+ propagation of prefixes from IS-IS Level 1 to Level 2.";
+
+ uses inter-level-propagation-policy-config;
+ }
+
+ }
+
+ container level2-to-level1 {
+ description
+ "Policies relating to prefixes to be propagated from
+ Level2 to Level 1.";
+
+ container config {
+ description
+ "Configuration parameters relating to the propagation
+ of prefixes from IS-IS Level 2 to Level 1.";
+
+ uses inter-level-propagation-policy-config;
+ }
+
+ container state {
+ config false;
+ description
+ "Operational state parameters relating to the propagation
+ of prefixes from IS-IS Level 2 to Level 1.";
+
+ uses inter-level-propagation-policy-config;
+ }
+ }
+ }
+ }
+
+ grouping inter-level-propagation-policy-config {
+ description
+ "Policy governing the propagation of prefixes between levels.";
+
+ uses oc-rpol:apply-policy-import-config;
+ }
+
+ grouping authentication-key-group-config {
+ description
+ "This grouping defines ISIS authentication key configuration.";
+
+ uses authentication-key-config;
+
+ // TODO(robjs): Add crypto-algorithm after merge of authentication modules.
+ //leaf crypto-algorithm {
+ // type identityref {
+ // base oc-auth-types:CRYPTO_TYPE;
+ // }
+ // description
+ // "Authentication key cryptographic algorithm to be used for key encryption.";
+ //}
+ }
+
+ grouping isis-global-base {
+ description
+ "This grouping describes ISIS Global router.";
+
+ container config {
+ description
+ "This container defines ISIS global configuration router.";
+
+ uses isis-authentication-check-config;
+ uses isis-global-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines state for ISIS global router.";
+
+ uses isis-authentication-check-config;
+ uses isis-global-config;
+ }
+
+ container lsp-bit {
+ description
+ "This container defines ISIS LSP Operational Bits.";
+
+ container overload-bit {
+ description
+ "This container defines Overload Bit configuration.";
+ uses overload-bit-group;
+ }
+
+ container attached-bit {
+ description
+ "This container defines Attached Bit.";
+
+ container config {
+ description
+ "This container defines Attached Bit configuration.";
+
+ uses isis-attached-bit-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines state for Link State PDU Bit.";
+
+ uses isis-attached-bit-config;
+ }
+ }
+ }
+
+ container reference-bandwidth {
+ description
+ "This container defines ISIS Reference Bandwidth.";
+
+ container config {
+ description
+ "This container defines Reference Bandwidth configuration";
+ uses isis-reference-bandwidth-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines state for Reference Bandwidth.";
+
+ uses isis-reference-bandwidth-config;
+ }
+ }
+
+ container nsr {
+ description
+ "This container defines ISIS Non-Stop Routing.";
+
+ container config {
+ description
+ "This container defines Non-Stop-Routing configuration.";
+
+ uses admin-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines state for Non-Stop-Routing";
+
+ uses admin-config;
+ }
+ }
+
+ container graceful-restart {
+ description
+ "This container defines ISIS Graceful Restart.";
+
+ container config {
+ description
+ "This container defines ISIS graceful-restart configuration.";
+
+ uses admin-config;
+ uses isis-graceful-restart-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines state information for ISIS graceful-restart.";
+
+ uses admin-config;
+ uses isis-graceful-restart-config;
+ }
+ }
+
+ container timers {
+ description
+ "This container defines ISIS timers.";
+
+ container config {
+ description
+ "This container defines ISIS global timers configuration.";
+
+ uses isis-lsp-timers-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines state information for ISIS global timers.";
+
+ uses isis-lsp-timers-config;
+ }
+
+ container spf {
+ description
+ "This container defines ISIS SPF timer settings.";
+
+ container config {
+ description
+ "This container defines ISIS SPF timers configuration.";
+
+ uses isis-spf-timers-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines state information for ISIS SPF timers.";
+
+ uses isis-spf-timers-config;
+ uses isis-adaptive-timers-state;
+ }
+ }
+
+ container lsp-generation {
+ description
+ "This container defines ISIS LSP Generation.";
+
+ container config {
+ description
+ "This container defines ISIS LSP Generation timers
+ configuration.";
+
+ uses isis-lsp-generation-timers-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines state information for ISIS LSP Generation
+ timers.";
+
+ uses isis-lsp-generation-timers-config;
+ uses isis-adaptive-timers-state;
+ }
+ }
+ }
+
+ container transport {
+ description
+ "This container defines ISIS transport.";
+
+ container config {
+ description
+ "This container defines ISIS transport related configuration.";
+
+ uses isis-transport-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines state information for ISIS transport
+ parameters.";
+
+ uses isis-transport-config;
+ }
+ }
+
+ container mpls {
+ description
+ "Configuration and operational state relating to MPLS-related
+ features in IS-IS";
+
+ container igp-ldp-sync {
+ description
+ "Configuration and operational state relating to synchronisation
+ between the LDP and IS-IS";
+
+ container config {
+ description
+ "This container defines ISIS/IGP configuration.";
+
+ uses isis-ldp-igp-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines state information for ISIS/LDP Sync.";
+
+ uses isis-ldp-igp-config;
+ }
+ }
+ }
+
+ container igp-shortcuts {
+ description
+ "This container defines IGP shortcuts configuration and state
+ information.";
+
+ uses isis-shortcuts-afi-list;
+ }
+
+ container afi-safi {
+ description
+ "This container defines address-family specific configuration
+ and state information.";
+
+ uses isis-afi-safi-list;
+ }
+
+ uses oc-sr:sr-igp-top;
+ }
+
+ grouping isis-route-preference-config {
+ description
+ "This grouping defines ISIS route preference configuration";
+
+ leaf external-route-preference {
+ type uint8 {
+ range "1..max";
+ }
+ description
+ "Administrative Distance(preference) for external ISIS routes.";
+ }
+
+ leaf internal-route-preference {
+ type uint8 {
+ range "1..max";
+ }
+ description
+ "Administrative Distance(preference) for internal ISIS routes.";
+ }
+ }
+
+ grouping isis-interfaces {
+ description
+ "This grouping defines ISIS interfaces configured on local system.";
+
+ list interface {
+ key "interface-id";
+
+ description
+ "This list contains ISIS interfaces.";
+
+ leaf interface-id {
+ type leafref {
+ path "../config/interface-id";
+ }
+ description
+ "Reference to interface-id";
+ }
+
+ uses isis-interface-group;
+ uses oc-if:interface-ref;
+ }
+ }
+
+ grouping isis-interface-group {
+ description
+ "This grouping defines ISIS interfaces configured on local system.";
+
+ container config {
+ description
+ "This container defines ISIS interface configuration.";
+
+ uses admin-config;
+ uses isis-interface-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines state information for ISIS interfaces.";
+
+ uses admin-config;
+ uses isis-interface-config;
+ }
+
+ container circuit-counters {
+ description
+ "This container defines state information for ISIS circuit counters.";
+
+ uses circuit-counters-structural;
+ }
+
+ container authentication {
+ description
+ "This container defines ISIS authentication.";
+
+ uses isis-hello-authentication-group;
+ }
+
+ container afi-safi {
+ description
+ "This container defines address-family specific configuration
+ and state information.";
+
+ uses isis-if-global-afi-safi-list;
+ }
+
+ container levels {
+ description
+ "This container defines ISIS level specific configuration and
+ state information.";
+
+ uses isis-interface-levels;
+ }
+
+ container timers {
+ description
+ "This container describes ISIS interface timers configuration";
+
+ container config {
+ description
+ "Configuration parameters relating to interface
+ timers for IS-IS";
+
+ uses isis-interface-timers-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines state information for ISIS interface timers.";
+
+ uses isis-interface-timers-config;
+ }
+ }
+
+ container bfd {
+ //TODO(bogdanov): Integrate BFD model/module
+ description
+ "This container defines BFD.";
+
+ container config {
+ description
+ "This container defines BFD configuration parameters.";
+
+ uses isis-bfd-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines BFD state information.";
+
+ uses isis-bfd-config;
+ }
+ }
+ }
+
+ grouping isis-levels {
+ description
+ "This grouping defines global ISIS Levels.";
+
+ list level {
+ key "level-number";
+
+ description
+ "Configuration and operational state parameters related to a
+ particular level within the IS-IS protocol instance";
+
+ leaf level-number {
+ type leafref {
+ path "../config/level-number";
+ }
+ description
+ "Reference to ISIS level-number.";
+ }
+
+ uses isis-level-group;
+ }
+ }
+
+ grouping isis-interface-levels {
+ description
+ "This grouping defines ISIS interface Levels.";
+
+ list level {
+ key "level-number";
+ description
+ "Configuration and operational state parameters related to a
+ particular level on an IS-IS enabled interface.";
+
+ leaf level-number {
+ type leafref {
+ path "../config/level-number";
+ }
+ description
+ "Reference to ISIS level-number.";
+ }
+
+ uses isis-interface-level-group;
+ }
+ }
+
+ grouping isis-level-group {
+ description
+ "This grouping defines ISIS level configuration and state
+ information.";
+
+ container config {
+ description
+ "This container defines ISIS level based configuration.";
+
+ uses admin-config;
+ uses isis-base-level-config;
+ uses isis-metric-style-config;
+ uses isis-authentication-check-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines ISIS level state information.";
+
+ uses admin-config;
+ uses isis-base-level-config;
+ uses isis-metric-style-config;
+ uses isis-authentication-check-config;
+ }
+
+ container system-level-counters {
+ description
+ "This container defines ISIS system level counters.";
+
+ uses system-level-counters-structural;
+ }
+
+ container link-state-database {
+ config false;
+ description
+ "This container defines ISIS LSDB.";
+
+ list lsp {
+ key "lsp-id";
+ description
+ "This list describes LSPs in the LSDB.";
+ uses lsp-state;
+ }
+ }
+
+ container traffic-engineering {
+ description
+ "This container defines ISIS TE.";
+
+ container config {
+ description
+ "This container defines ISIS TE configuration.";
+
+ uses admin-config;
+ uses isis-te-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines ISIS TE state information.";
+
+ uses admin-config;
+ uses isis-te-config;
+ }
+ }
+
+ container route-preference {
+ description
+ "This container defines Administrative Distance (or preference)
+ assigned to ISIS routes (level1 internal, level2 internal, level1
+ external, level2 external).";
+
+ container config {
+ description
+ "This container defines route preference configuration.";
+ uses isis-route-preference-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines ISIS route preference state information.";
+ uses isis-route-preference-config;
+ }
+ }
+
+ container authentication {
+ description
+ "This container defines ISIS authentication.";
+ uses isis-authentication-group;
+ }
+
+ }
+
+ grouping isis-interface-level-group {
+ description
+ "This grouping defines ISIS interface level.";
+
+ container config {
+ description
+ "This container defines interface ISIS level configuration.";
+
+ uses isis-interface-level-config;
+ uses admin-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines interface ISIS level state information.";
+
+ uses isis-interface-level-config;
+ uses admin-config;
+ }
+
+ container packet-counters {
+ description
+ "This container defines ISIS interface packet counters.";
+
+ uses packet-counters-structural;
+ }
+
+ container adjacencies {
+ config false;
+ description
+ "This container defines ISIS adjacencies.";
+
+ list adjacency {
+ key "system-id";
+
+ description
+ "List of the local system's IS-IS adjacencies.";
+
+ leaf system-id {
+ type leafref {
+ path "../state/system-id";
+ }
+ description
+ "Reference to the IS neighbor.";
+ }
+
+ container state {
+ description
+ "Operational state relating to the IS-IS adjacency with the
+ remote system";
+
+ uses adjacency-state;
+ }
+ }
+ }
+
+ container timers {
+ description
+ "This container defines ISIS timers.";
+
+ container config {
+ description
+ "This container defines ISIS interface hello-timers configuration.";
+
+ uses isis-hello-timers-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines ISIS interface hello-timers state.";
+
+ uses isis-hello-timers-config;
+ }
+ }
+
+ container afi-safi {
+ description
+ "This container defines address-family specific configuration
+ and state information.";
+
+ uses isis-if-afi-safi-list;
+ }
+
+ container hello-authentication {
+ description
+ "This container defines ISIS authentication.";
+
+ uses isis-hello-authentication-group;
+ }
+ }
+
+
+ grouping isis-top {
+ description
+ "This grouping define top-level ISIS model data.";
+
+ container isis {
+ description
+ "This container defines top-level ISIS configuration and state
+ information.";
+
+ container global {
+ description
+ "This container defines global ISIS configuration and state
+ information.";
+
+ uses isis-global-base;
+ uses inter-level-propagation-policies-structural;
+ }
+
+ container levels {
+ description
+ "This container defines ISIS level configuration and state
+ information.";
+ uses isis-levels;
+ }
+
+ container interfaces {
+ description
+ "This container defines global ISIS interface configuration and
+ state information.";
+ uses isis-interfaces;
+ }
+ }
+ }
+
+ grouping adjacency-state {
+ description
+ "This grouping defines ISIS adjacency.";
+
+ leaf system-id {
+ type oc-isis-types:system-id;
+ description
+ "ISIS neighbor system-id.";
+ }
+
+ leaf neighbor-ipv4-address {
+ type inet:ipv4-address-no-zone;
+ description
+ "ISIS Neighbor IPv4 address.";
+ }
+
+ leaf neighbor-ipv6-address {
+ type inet:ipv6-address-no-zone;
+ description
+ "ISIS Neighbor IPv6 address.";
+ }
+
+ leaf neighbor-snpa {
+ type oc-isis-types:snpa;
+ description
+ "ISIS neighbor SNPA.";
+ }
+
+ leaf local-extended-circuit-id {
+ type oc-isis-types:extended-circuit-id;
+ description
+ "Local extended circuit ID.";
+ }
+ leaf neighbor-extended-circuit-id {
+ type oc-isis-types:extended-circuit-id;
+ description
+ "ISIS neighbor extended circuit ID.";
+ }
+
+ leaf priority {
+ type uint8 {
+ range "0..127";
+ }
+ description
+ "Priority of the neighboring IS(LAN Hello only).";
+ }
+
+ leaf dis-system-id {
+ type oc-isis-types:system-id;
+ description
+ "DIS System ID(LAN hello only).";
+ }
+
+ leaf neighbor-circuit-type {
+ type oc-isis-types:level-type;
+ description
+ "Received ISIS circuit type (level-1, level-2, level-1-2).";
+ }
+
+ leaf adjacency-type {
+ type oc-isis-types:level-type;
+ description
+ "Formed ISIS adjacency type(level-1, level-2, level-1-2).";
+ }
+
+ leaf adjacency-state {
+ type oc-isis-types:isis-interface-adj-state;
+ description
+ "P2P 3-way ISIS adjacency state(up, down, init, failed).";
+ reference "RFC4303. TLV 240.";
+ }
+
+ leaf remaining-hold-time {
+ type uint16;
+ units seconds;
+ description
+ "Holding time in seconds for adjacency. This value is based on received
+ hello PDUs and the elapsed time since receipt.";
+ }
+
+ leaf up-time {
+ type yang:timestamp;
+ description
+ "Adjacency up time.";
+ }
+
+ leaf multi-topology {
+ type boolean;
+ description
+ "When set to true, ISIS multi-topology is supported.";
+ reference "RFC5129. TLV 229.";
+ }
+
+ leaf-list topology {
+ type identityref {
+ base oc-isis-types:AFI_SAFI_TYPE;
+ }
+ description
+ "ISIS topology type support(ipv4-unicast, ipv6-unicast,
+ ipv4-multicast, ipv6-multicast).";
+ }
+
+ leaf restart-support {
+ type boolean;
+ description
+ "When set to true, Graceful-restart signaling is supported.";
+ }
+
+ leaf restart-suppress {
+ type boolean;
+ description
+ "When set to true, adjacency is not advertised. The SA bit is used by a
+ starting router to request that its neighbor suppress advertisement of
+ the adjacency to the starting router in the neighbor's LSPs.";
+ }
+
+ leaf restart-status {
+ type boolean;
+ description
+ "When set to true, neighbor is being helped. The RR bit is used by a
+ (re)starting router to signal to its neighbors that a (re)start is in
+ progress.";
+ }
+
+ leaf-list area-address {
+ type oc-isis-types:area-address;
+ description
+ "List of ISIS area-address(es).";
+ }
+
+ leaf-list nlpid {
+ type enumeration {
+ enum IPV4 {
+ description
+ "IPv4 Address family.";
+ }
+ enum IPV6 {
+ description
+ "IPv6 Address family.";
+ }
+ }
+ description
+ "Supported Protocol. IPv4 is defined as (0xcc)
+ and IPv6 - (0x8e). ISIS reference is TLV 129.";
+ }
+
+ // TODO(bogdanov): update when BFD model is integrated.
+ //leaf ipv4-bfd-status {
+ //type oc-isis-types:bfd-state;
+ //description
+ // "IPv4 BFD session status.";
+ //}
+ //leaf ipv6-bfd-status {
+ //type oc-isis-types:bfd-state;
+ //description
+ // "IPv4 BFD session status. ";
+ //}
+
+ }
+
+ grouping packet-counters-generic-state {
+ description
+ "Operational state parameters relating to LSP packet counters.";
+
+ leaf received {
+ type yang:counter32;
+ description
+ "The number of the specified type of PDU received on the interface.";
+ }
+ leaf processed {
+ type yang:counter32;
+ description
+ "The number of the specified type of PDU received on the interface
+ that have been processed by the local system.";
+ }
+ leaf dropped {
+ type yang:counter32;
+ description
+ "The number of the specified type of PDU received on the interface
+ that have been dropped.";
+ }
+
+ leaf sent {
+ type yang:counter32;
+ description
+ "The number of the specified type of PDU that have been sent by the
+ local system on the interface.";
+ }
+
+ leaf retransmit {
+ type yang:counter32;
+ description
+ "The number of the specified type of PDU that that have been
+ retransmitted by the local system on the interface.";
+ }
+ }
+
+ grouping packet-counters-structural {
+ description
+ "This grouping defines ISIS packet counter state.";
+
+ container lsp {
+ description
+ "This container defines LSP packet counters.";
+
+ container state {
+ config false;
+ description
+ "This container defines LSP PDU counters.";
+
+ uses packet-counters-generic-state;
+ }
+ }
+
+ container iih {
+ description
+ "This container defines IIH packet counters.";
+
+ container state {
+ config false;
+ description
+ "Operational counters relating to IIH PDUs";
+
+ uses packet-counters-generic-state;
+ }
+ }
+
+ container ish {
+ description
+ "This container defines ISH packet counters.";
+
+ container state {
+ config false;
+ description
+ "Operational state relating to ISH PDUs.";
+
+ uses packet-counters-generic-state;
+ }
+ }
+
+ container esh {
+ description
+ "This container defines ESH packet counters.";
+ container state {
+ config false;
+ description
+ "Operational state relating to ESH PDUs";
+
+ uses packet-counters-generic-state;
+ }
+ }
+
+ container psnp {
+ description
+ "This container defines PSNP packet counters.";
+
+ container state {
+ config false;
+ description
+ "Packet counters relating to PSNPs.";
+
+ uses packet-counters-generic-state;
+ }
+ }
+
+ container csnp {
+ description
+ "Operational state parameters relating to CSNPs.";
+
+ container state {
+ config false;
+ description
+ "Packet counters relating to CSNPs.";
+
+ uses packet-counters-generic-state;
+ }
+ }
+
+ container unknown {
+ description
+ "Operational state parameters relating to IS-IS PDUs that are not
+ otherwise classified - referred to as Unknown PDUs.";
+
+ container state {
+ config false;
+ description
+ "Packet counters relating to unknown PDUs.";
+
+ uses packet-counters-generic-state;
+ }
+ }
+ }
+
+ grouping system-level-counters-state {
+ description
+ "IS-IS counters that are relevant to the system IS-IS context.";
+
+ leaf corrupted-lsps {
+ type yang:counter32;
+ description
+ "Number of corrupted in-memory LSPs detected. LSPs received from the
+ wire with a bad checksum are silently dropped and not counted. LSPs
+ received from the wire with parse errors are counted by lsp-errors. MIB
+ Entry: SysCorrLSPs.";
+ }
+
+ leaf database-overloads {
+ type yang:counter32;
+ description
+ "Number of times the database has become
+ overloaded.
+ MIB entry: SysLSPL(Level)DbaseOloads.";
+ }
+
+ leaf manual-address-drop-from-areas {
+ type yang:counter32;
+ description
+ "Number of times a manual address has been dropped from area.
+ MIB Entry: SysManAddrDropFromAreas.";
+ }
+
+ leaf exceed-max-seq-nums {
+ type yang:counter32;
+ description
+ "The number of times the system has attempted to exceed the maximum
+ sequence number. MIB Entry: SysAttmptToExMaxSeqNums.";
+ }
+ leaf seq-num-skips {
+ type yang:counter32;
+ description
+ "Number of times a sequence number skip has occurred. MIB Entry:
+ SysSeqNumSkips.";
+ }
+
+ leaf own-lsp-purges {
+ type yang:counter32;
+ description
+ "Number of times a zero-aged copy of the system's
+ own LSP is received from some other node.
+ MIB Entry: isisSysOwnLSPPurges.";
+ }
+
+ leaf id-len-mismatch {
+ type yang:counter32;
+ description
+ "Number of times a PDU is received with a different value for ID field
+ length from that of the receiving system. MIB Entry:
+ isisSysIDFieldLenMismatches.";
+ }
+
+ leaf part-changes {
+ type yang:counter32;
+ description
+ "The number of partition changes detected. MIB Entry: SysPartChanges.";
+ }
+
+ leaf max-area-address-mismatches {
+ type yang:counter32;
+ description
+ "Number of times a PDU is received with a different value for
+ MaximumAreaAddresses from that of the receiving system. MIB Entry:
+ SysMaxAreaAddrMismatches.";
+ }
+
+ leaf auth-fails {
+ type yang:counter32;
+ description
+ "The number of authentication key failures.
+ MIB Entry: SysAuthFails.";
+ }
+
+ leaf spf-runs {
+ type yang:counter32;
+ description
+ "The number of times SPF was ran at this level.";
+ }
+
+ leaf auth-type-fails {
+ type yang:counter32;
+ description
+ "The number of authentication type mismatches.";
+ }
+
+ leaf lsp-errors {
+ type yang:counter32;
+ description
+ "The number of received LSPs with errors.";
+ }
+ }
+
+ grouping system-level-counters-structural {
+ description
+ "This grouping defines system level counters.";
+
+ container state {
+ config false;
+ description
+ "The container defines a list of system counters for the IS.";
+
+ uses system-level-counters-state;
+ }
+ }
+
+ grouping circuit-counters-state {
+ description
+ "Operational state parameters relating to counters specific to one
+ interface or circuit.";
+
+ leaf adj-changes {
+ type yang:counter32;
+ description
+ "Number of times an adjacency state change has occurred on this circuit.
+ MIB Entry: CircAdjChanges.";
+ }
+
+ leaf init-fails {
+ type yang:counter32;
+ description
+ "Number of times initialization of this circuit has failed. This counts
+ events such as PPP NCP failures. MIB Entry: CircInitFails.";
+ }
+
+ leaf rejected-adj {
+ type yang:counter32;
+ description
+ "Number of times an adjacency has been rejected on this circuit. MIB
+ Entry: CircRejAdjs.";
+ }
+
+ leaf id-field-len-mismatches {
+ type yang:counter32;
+ description
+ "Number of times an IS-IS control PDU with an ID field length different
+ from that for this system has been received.
+ MIB Entry: CircIDFieldLenMismatches.";
+ }
+
+ leaf max-area-address-mismatches {
+ type yang:counter32;
+ description
+ "Number of times an IS-IS control PDU with a max area address field
+ different from that for this system has been received. MIB Entry:
+ CircMaxAreaAddrMismatches.";
+ }
+
+ leaf auth-type-fails {
+ type yang:counter32;
+ description
+ "Number of times an IS-IS control PDU with an auth type field different
+ from that for this system has been received. MIB Entry:
+ CircAuthTypeFails.";
+ }
+
+ leaf auth-fails {
+ type yang:counter32;
+ description
+ "Number of times an IS-IS control PDU with the correct auth type has
+ failed to pass authentication validation. MIB Entry: CircAuthFails.";
+ }
+
+ leaf lan-dis-changes {
+ type yang:counter32;
+ description
+ "Number of times the Designated IS has changed on this circuit at this
+ level. If the circuit is point to point, this count is zero. MIB Entry:
+ CircLANDesISChanges.";
+ }
+
+ leaf adj-number {
+ type uint32;
+ description
+ "Number of adjacencies on this circuit.
+ MIB Entry: CircNumAdj.";
+ }
+ }
+
+ grouping circuit-counters-structural {
+ description
+ "This grouping defines circuit counters.";
+
+ container state {
+ config false;
+ description
+ "The container defines a list of counters for IS circuit.";
+
+ uses circuit-counters-state;
+ }
+ }
+}