diff options
Diffstat (limited to 'src/plugins/yang/openconfig/openconfig-isis-lsp.yang')
-rw-r--r-- | src/plugins/yang/openconfig/openconfig-isis-lsp.yang | 3592 |
1 files changed, 3592 insertions, 0 deletions
diff --git a/src/plugins/yang/openconfig/openconfig-isis-lsp.yang b/src/plugins/yang/openconfig/openconfig-isis-lsp.yang new file mode 100644 index 0000000..02f8b79 --- /dev/null +++ b/src/plugins/yang/openconfig/openconfig-isis-lsp.yang @@ -0,0 +1,3592 @@ +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.4.0"; + + revision "2018-05-14" { + description + "Update LSDB model to correct Extended IS reach TLV + bug. This change is backwards incompatible due to + adding an additional level of hierarchy to support + multiple instances of the TLV."; + reference "0.4.0"; + } + + 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 isis-lsdb-common-extisreach-neighbors { + description + "Common structure for the Extended IS Reachability and IS + Reachability Neighbour attributes."; + + container neighbors { + description + "This container describes IS neighbors."; + + list neighbor { + key "system-id"; + description + "This list describes ISIS extended neighbors 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 corresponding to the extended + neighbour."; + + leaf system-id { + type oc-isis-types:system-id; + description + "System-id of the neighbor."; + } + } + + container instances { + description + "This list contains all instances of an adjacency + between the originating IS and the remote IS. + Multiple instances are used where there are + parallel adjacencies between two systems."; + + list instance { + key "id"; + + description + "Instance of the TLV to the remote IS neighbor."; + + leaf id { + type leafref { + path "../state/id"; + } + description + "Reference to the unique identifier for + the instance of the extended IS + reachability sub-TLV."; + } + + container state { + description + "State parameters of extended neighbor"; + + leaf id { + type uint64; + description + "Unique identifier for the instance of the + TLV for the IS neighbor. The instance + ID is not required to be consistent across + across readvertisements of the LSP."; + } + + leaf metric { + type oc-isis-types:wide-metric; + description + "Metric value."; + } + } + uses is-reachability-neighbor-state; + } + } + } + } + } + + grouping isis-lsdb-mtis-common { + description + "Common grouping for structure used within the multi-topology IS + neighbour and multi-topology IS neighbour attribute TLVs."; + + 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."; + } + + container state { + description + "Operational state parameters related to the + MT ISN TLV."; + + uses mt-isis-neighbor-state; + } + + container instances { + description + "This list contains all instances of an adjacency + between the originating and remote IS. Multiple + instances are used to indicate where there are + parallel adjacencies between systems."; + + list instance { + key "id"; + + description + "Instance of TLV-222 between the originating + and remote IS."; + + leaf id { + type leafref { + path "../state/id"; + } + description + "Reference to the unique identifier for the + instance of the multi-topology IS neighbor + TLV instance."; + } + + uses mt-isis-neighbor-instance; + } + } + } + } + } + + grouping mt-isis-neighbor-state { + description + "This grouping defines state parameters that are related to + each neighbour entry for the MT ISN TLV."; + + 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."; + } + } + + grouping mt-isis-neighbor-instance { + 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 metric { + type oc-isis-types:wide-metric; + description + "ISIS metric value."; + } + + leaf id { + type uint64; + description + "Unique identifier for the TLV instance for the + neighbor. The ID is not required to be consistent + across readvertisements of the LSP."; + } + } + 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."; + + uses isis-lsdb-common-extisreach-neighbors; + } + + 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."; + + uses isis-lsdb-common-extisreach-neighbors; + } + + 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."; + + uses isis-lsdb-mtis-common; + } + + 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."; + + uses isis-lsdb-mtis-common; + } + + 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; + } +} |