rfc9130.original   rfc9130.txt 
IS-IS Working Group S. Litkowski Internet Engineering Task Force (IETF) S. Litkowski
Internet-Draft Cisco Systems Request for Comments: 9130 Cisco Systems
Intended status: Standards Track D. Yeung Category: Standards Track D. Yeung
Expires: April 17, 2020 Arrcus, Inc ISSN: 2070-1721 Arrcus, Inc.
A. Lindem A. Lindem
Cisco Systems Cisco Systems
J. Zhang J. Zhang
Juniper Networks Juniper Networks
L. Lhotka L. Lhotka
CZ.NIC CZ.NIC
October 15, 2019 September 2021
YANG Data Model for IS-IS Protocol YANG Data Model for the IS-IS Protocol
draft-ietf-isis-yang-isis-cfg-42
Abstract Abstract
This document defines a YANG data model that can be used to configure This document defines a YANG data model that can be used to configure
and manage the IS-IS protocol on network elements. and manage the IS-IS protocol on network elements.
Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP
14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This is an Internet Standards Track document.
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months This document is a product of the Internet Engineering Task Force
and may be updated, replaced, or obsoleted by other documents at any (IETF). It represents the consensus of the IETF community. It has
time. It is inappropriate to use Internet-Drafts as reference received public review and has been approved for publication by the
material or to cite them other than as "work in progress." Internet Engineering Steering Group (IESG). Further information on
Internet Standards is available in Section 2 of RFC 7841.
This Internet-Draft will expire on April 17, 2020. Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
https://www.rfc-editor.org/info/rfc9130.
Copyright Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2021 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction
2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3 1.1. Requirements Language
2.1. IS-IS Configuration . . . . . . . . . . . . . . . . . . . 9 2. Design of the Data Model
2.2. Multi-topology Parameters . . . . . . . . . . . . . . . . 10 2.1. IS-IS Configuration
2.3. Per-Level Parameters . . . . . . . . . . . . . . . . . . 10 2.2. Multi-Topology Parameters
2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 12 2.3. Per-Level Parameters
2.5. Authentication Parameters . . . . . . . . . . . . . . . . 19 2.4. Per-Interface Parameters
2.6. IGP/LDP synchronization . . . . . . . . . . . . . . . . . 19 2.5. Authentication Parameters
2.7. ISO parameters . . . . . . . . . . . . . . . . . . . . . 20 2.6. IGP/LDP Synchronization
2.8. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.7. ISO Parameters
2.9. Operational States . . . . . . . . . . . . . . . . . . . 20 2.8. IP FRR
3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 21 2.9. Operational States
4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 21 3. RPC Operations
5. Interaction with Other YANG Modules . . . . . . . . . . . . . 22 4. Notifications
6. IS-IS YANG Module . . . . . . . . . . . . . . . . . . . . . . 23 5. Interactions with Other YANG Modules
7. Security Considerations . . . . . . . . . . . . . . . . . . . 108 6. IS-IS YANG Module
8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 110 7. Security Considerations
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 110 8. IANA Considerations
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 110 9. References
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 110 9.1. Normative References
11.1. Normative References . . . . . . . . . . . . . . . . . . 110 9.2. Informative References
11.2. Informative References . . . . . . . . . . . . . . . . . 115 Appendix A. Example of IS-IS Configuration in XML
Appendix A. Example of IS-IS configuration in XML . . . . . . . 115 Acknowledgments
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 117 Contributors
Authors' Addresses
1. Introduction 1. Introduction
This document defines a YANG [RFC7950] data model for IS-IS routing This document defines a YANG data model [RFC7950] for the IS-IS
protocol. routing protocol.
The data model covers configuration of an IS-IS routing protocol The data model covers the configuration of an IS-IS routing protocol
instance, as well as, the retrieval of IS-IS operational states. instance, as well as the retrieval of IS-IS operational states.
A simplified tree representation of the data model is presented in A simplified tree representation of the data model is presented in
Section 2. Tree diagrams used in this document follow the notation Section 2. Tree diagrams used in this document follow the notation
defined in [RFC8340]. defined in [RFC8340].
The module is designed as per the NMDA (Network Management Datastore The module defined in this document is designed as per the Network
Architecture) [RFC8342]. Management Datastore Architecture (NMDA) [RFC8342].
1.1. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here.
2. Design of the Data Model 2. Design of the Data Model
The IS-IS YANG module augments the "control-plane-protocol" list in The IS-IS YANG module augments the "control-plane-protocol" list in
the ietf-routing module [RFC8349] with specific IS-IS parameters. the "ietf-routing" module [RFC8349] with specific IS-IS parameters.
The figure below describes the overall structure of the ietf-isis
YANG module:
module: ietf-isis The diagram below shows the overall structure of the "ietf-isis" YANG
augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route: module defined in this document:
+--ro metric? uint32
+--ro tag* uint64
+--ro route-type? enumeration
augment /if:interfaces/if:interface:
+--rw clns-mtu? uint16 {osi-interface}?
augment /rt:routing/rt:control-plane-protocols/rt:
control-plane-protocol:
+--rw isis
+--rw enable? boolean {admin-control}?
+--rw level-type? level
+--rw system-id? system-id
+--rw maximum-area-addresses? uint8 {maximum-area-addresses}?
+--rw area-address* area-address
+--rw lsp-mtu? uint16
+--rw lsp-lifetime? uint16
+--rw lsp-refresh? rt-types:timer-value-seconds16
| {lsp-refresh}?
+--rw poi-tlv? boolean {poi-tlv}?
+--rw graceful-restart {graceful-restart}?
| +--rw enable? boolean
| +--rw restart-interval? rt-types:timer-value-seconds16
| +--rw helper-enable? boolean
+--rw nsr {nsr}?
| +--rw enable? boolean
+--rw node-tags {node-tag}?
| +--rw node-tag* [tag]
| ...
+--rw metric-type module: ietf-isis
| +--rw value? enumeration augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route:
| +--rw level-1 +--ro metric? uint32
| | ... +--ro tag* uint64
| +--rw level-2 +--ro route-type? enumeration
| ... augment /if:interfaces/if:interface:
+--rw default-metric +--rw clns-mtu? uint16 {osi-interface}?
| +--rw value? wide-metric augment /rt:routing/rt:control-plane-protocols/rt:
| +--rw level-1 control-plane-protocol:
| | ... +--rw isis
| +--rw level-2 +--rw enable? boolean {admin-control}?
| ... +--rw level-type? level
+--rw auto-cost {auto-cost}? +--rw system-id? system-id
| +--rw enable? boolean +--rw maximum-area-addresses? uint8 {maximum-area-addresses}?
| +--rw reference-bandwidth? uint32 +--rw area-address* area-address
+--rw authentication +--rw lsp-mtu? uint16
| +--rw (authentication-type)? +--rw lsp-lifetime? uint16
| | ... +--rw lsp-refresh? rt-types:timer-value-seconds16
| +--rw level-1 | {lsp-refresh}?
| | ... +--rw poi-tlv? boolean {poi-tlv}?
| +--rw level-2 +--rw graceful-restart {graceful-restart}?
| ... | +--rw enable? boolean
+--rw address-families {nlpid-control}? | +--rw restart-interval? rt-types:timer-value-seconds16
| +--rw address-family-list* [address-family] | +--rw helper-enable? boolean
| ... +--rw nsr {nsr}?
+--rw mpls | +--rw enable? boolean
| +--rw te-rid {te-rid}? +--rw node-tags {node-tag}?
| | ... | +--rw node-tag* [tag]
| +--rw ldp | ...
| ... +--rw metric-type
+--rw spf-control | +--rw value? enumeration
| +--rw paths? uint16 {max-ecmp}? | +--rw level-1
| +--rw ietf-spf-delay {ietf-spf-delay}? | | ...
| ... | +--rw level-2
+--rw fast-reroute {fast-reroute}? | ...
| +--rw lfa {lfa}? +--rw default-metric
+--rw preference | +--rw value? wide-metric
| +--rw (granularity)? | +--rw level-1
| ... | | ...
+--rw overload | +--rw level-2
| +--rw status? boolean | ...
+--rw overload-max-metric {overload-max-metric}? +--rw auto-cost {auto-cost}?
| +--rw timeout? rt-types:timer-value-seconds16 | +--rw enable? boolean
+--ro spf-log | +--rw reference-bandwidth? uint32
| +--ro event* [id] +--rw authentication
| ... | +--rw (authentication-type)?
+--ro lsp-log | | ...
| +--ro event* [id] | +--rw level-1
| ... | | ...
+--ro hostnames | +--rw level-2
| +--ro hostname* [system-id] | ...
| ... +--rw address-families {nlpid-control}?
+--ro database | +--rw address-family-list* [address-family]
| +--ro levels* [level] | ...
| ... +--rw mpls
+--ro local-rib | +--rw te-rid {te-rid}?
| +--ro route* [prefix] | | ...
| ... | +--rw ldp
+--ro system-counters | ...
| +--ro level* [level] +--rw spf-control
| ... | +--rw paths? uint16 {max-ecmp}?
+--ro protected-routes | +--rw ietf-spf-delay {ietf-spf-delay}?
| +--ro address-family-stats* [address-family prefix alternate] | ...
| ... +--rw fast-reroute {fast-reroute}?
+--ro unprotected-routes | +--rw lfa {lfa}?
| +--ro prefixes* [address-family prefix] +--rw preference
| ... | +--rw (granularity)?
+--ro protection-statistics* [frr-protection-method] | ...
| +--ro frr-protection-method identityref +--rw overload
| +--ro address-family-stats* [address-family] | +--rw status? boolean
| ... +--rw overload-max-metric {overload-max-metric}?
+--rw discontinuity-time? yang:date-and-time | +--rw timeout? rt-types:timer-value-seconds16
+--rw topologies {multi-topology}? +--ro spf-log
| +--rw topology* [name] | +--ro event* [id]
| ... | ...
+--rw interfaces +--ro lsp-log
+--rw interface* [name] | +--ro event* [id]
... | ...
+--ro hostnames
| +--ro hostname* [system-id]
| ...
+--ro database
| +--ro levels* [level]
| ...
+--ro local-rib
| +--ro route* [prefix]
| ...
+--ro system-counters
| +--ro level* [level]
| ...
+--ro protected-routes
| +--ro address-family-stats* [address-family prefix alternate]
| ...
+--ro unprotected-routes
| +--ro prefixes* [address-family prefix]
| ...
+--ro protection-statistics* [frr-protection-method]
| +--ro frr-protection-method identityref
| +--ro address-family-stats* [address-family]
| ...
+--rw discontinuity-time? yang:date-and-time
+--rw topologies {multi-topology}?
| +--rw topology* [name]
| ...
+--rw interfaces
+--rw interface* [name]
...
rpcs: rpcs:
+---x clear-adjacency +---x clear-adjacency
| +---w input | +---w input
| +---w routing-protocol-instance-name -> /rt:routing/ | +---w routing-protocol-instance-name -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +---w level? level | +---w level? level
| +---w interface? if:interface-ref | +---w interface? if:interface-ref
+---x clear-database +---x clear-database
+---w input +---w input
+---w routing-protocol-instance-name -> /rt:routing/ +---w routing-protocol-instance-name -> /rt:routing/
| control-plane-protocols/ | control-plane-protocols/
| control-plane-protocol/name | control-plane-protocol/name
+---w level? level +---w level? level
notifications: notifications:
+---n database-overload +---n database-overload
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro overload? enumeration | +--ro overload? enumeration
+---n lsp-too-large +---n lsp-too-large
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| control-plane-protocols/ | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro pdu-size? uint32 | +--ro pdu-size? uint32
| +--ro lsp-id? lsp-id | +--ro lsp-id? lsp-id
+---n if-state-change +---n if-state-change
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro state? if-state-type | +--ro state? if-state-type
+---n corrupted-lsp-detected +---n corrupted-lsp-detected
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro lsp-id? lsp-id | +--ro lsp-id? lsp-id
+---n attempt-to-exceed-max-sequence +---n attempt-to-exceed-max-sequence
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro lsp-id? lsp-id | +--ro lsp-id? lsp-id
+---n id-len-mismatch +---n id-len-mismatch
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro pdu-field-len? uint8 | +--ro pdu-field-len? uint8
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
+---n max-area-addresses-mismatch +---n max-area-addresses-mismatch
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro max-area-addresses? uint8 | +--ro max-area-addresses? uint8
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
+---n own-lsp-purge +---n own-lsp-purge
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro lsp-id? lsp-id | +--ro lsp-id? lsp-id
+---n sequence-number-skipped +---n sequence-number-skipped
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro lsp-id? lsp-id | +--ro lsp-id? lsp-id
+---n authentication-type-failure +---n authentication-type-failure
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
+---n authentication-failure +---n authentication-failure
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
+---n version-skew +---n version-skew
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro protocol-version? uint8 | +--ro protocol-version? uint8
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
+---n area-mismatch +---n area-mismatch
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
+---n rejected-adjacency +---n rejected-adjacency
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
| +--ro reason? string | +--ro reason? string
+---n protocols-supported-mismatch +---n protocols-supported-mismatch
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
| +--ro protocols* uint8 | +--ro protocols* uint8
+---n lsp-error-detected +---n lsp-error-detected
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro lsp-id? lsp-id | +--ro lsp-id? lsp-id
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
| +--ro error-offset? uint32 | +--ro error-offset? uint32
| +--ro tlv-type? uint8 | +--ro tlv-type? uint8
+---n adjacency-state-change +---n adjacency-state-change
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro neighbor? string | +--ro neighbor? string
| +--ro neighbor-system-id? system-id | +--ro neighbor-system-id? system-id
| +--ro state? adj-state-type | +--ro state? adj-state-type
| +--ro reason? string | +--ro reason? string
+---n lsp-received +---n lsp-received
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro lsp-id? lsp-id | +--ro lsp-id? lsp-id
| +--ro sequence? uint32 | +--ro sequence? uint32
| +--ro received-timestamp? yang:timestamp | +--ro received-timestamp? yang:timestamp
| +--ro neighbor-system-id? system-id | +--ro neighbor-system-id? system-id
+---n lsp-generation +---n lsp-generation
+--ro routing-protocol-name? -> /rt:routing/ +--ro routing-protocol-name? -> /rt:routing/
| control-plane-protocols/ | control-plane-protocols/
| control-plane-protocol/name | control-plane-protocol/name
+--ro isis-level? level +--ro isis-level? level
+--ro lsp-id? lsp-id +--ro lsp-id? lsp-id
+--ro sequence? uint32 +--ro sequence? uint32
+--ro send-timestamp? yang:timestamp +--ro send-timestamp? yang:timestamp
2.1. IS-IS Configuration 2.1. IS-IS Configuration
The IS-IS configuration is divided into: The IS-IS configuration is divided into two areas:
o Global parameters. * Global parameters
o Per-interface configuration (see Section 2.4). * Per-interface configuration (see Section 2.4)
Additional modules may be created to support additional parameters. Additional modules may be created to support additional parameters.
These additional modules MUST augment the ietf-isis module. These additional modules MUST augment the "ietf-isis" module.
The model includes optional features, for which the corresponding The model includes optional features for which the corresponding
configuration data nodes are also optional. As an example, the configuration data nodes are also optional. As an example, the
ability to control the administrative state of a particular IS-IS ability to control the administrative state of a particular IS-IS
instance is optional. By advertising the feature "admin-control", a instance is optional. By advertising the feature "admin-control", a
device communicates to the client that it supports the ability to device communicates to the client that it supports the ability to
shutdown a particular IS-IS instance. shut down a particular IS-IS instance.
The global configuration contains usual IS-IS parameters, such as, The global configuration contains the usual IS-IS parameters, e.g.,
lsp-mtu, lsp-lifetime, lsp-refresh, default-metric, etc. "lsp-mtu", "lsp-lifetime", "lsp-refresh", "default-metric".
2.2. Multi-topology Parameters 2.2. Multi-Topology Parameters
The model supports multi-topology (MT) IS-IS as defined in [RFC5120]. The model supports Multi-Topology (MT) IS-IS as defined in [RFC5120].
The "topologies" container is used to enable support of the MT The "topologies" container is used to enable support of the MT
extensions. extensions.
The "name" used in the topology list should refer to an existing The "name" used in the topology list should refer to an existing
Routing Information Base (RIB) defined for the device [RFC8349]. Routing Information Base (RIB) defined for the device [RFC8349].
Some specific parameters can be defined on a per-topology basis, both Some specific parameters can be defined on a per-topology basis, at
at the global level and at the interface level: for example, an both the global level and the interface level: for example, an
interface metric can be defined per topology. interface metric can be defined per topology.
Multiple address families (such as, IPv4 or IPv6) can also be enabled Multiple address families (such as IPv4 or IPv6) can also be enabled
within the default topology. This can be achieved using the address- within the default topology. This can be achieved using the
families container (requiring the "nlpid-control" feature to be "address-families" container (requiring the "nlpid-control" feature
supported). to be supported).
2.3. Per-Level Parameters 2.3. Per-Level Parameters
Some parameters allow a per-level configuration. For such Some parameters allow per-level configuration. For such parameters,
parameters, the parameter is modeled as a container with three the parameter is modeled as a container with three configuration
configuration locations: locations:
o a Top-level container: Corresponds to level-1-2, so the A top-level container:
configuration applies to both levels. Corresponds to "level-all", so the configuration applies to both
levels.
o a Level-1 container: Corresponds to level-1 specific parameters. A level-1 container:
Corresponds to parameters specific to level 1.
o a Level-2 container: Corresponds to level-2 specific parameters. A level-2 container:
Corresponds to parameters specific to level 2.
+--rw priority +--rw priority
| +--rw value? uint8 | +--rw value? uint8
| +--rw level-1 | +--rw level-1
| | +--rw value? uint8 | | +--rw value? uint8
| +--rw level-2 | +--rw level-2
| +--rw value? uint8 | +--rw value? uint8
Example: Example:
<priority> <priority>
<value>250</value> <value>250</value>
<level-1> <level-1>
<value>100</value> <value>100</value>
</level-1> </level-1>
</priority> </priority>
An implementation MUST prefer a level-specific parameter over a top- An implementation MUST prefer a level-specific parameter over a top-
level parameter. For example, if the priority is 100 for the level-1 level parameter. For example, if the priority is 100 for the level-1
and 250 for the top-level configuration, the implementation must use configuration and 250 for the top-level configuration, the
100 for the level-1 priority and 250 for the level-2 priority. implementation must use 100 for the level-1 priority and 250 for the
level-2 priority.
Some parameters, such as, "overload bit" and "route preference", are Some parameters, such as "overload bit" and "route preference", are
not modeled to support a per-level configuration. If an not modeled to support per-level configuration. If an implementation
implementation supports per-level configuration for such parameter, supports per-level configuration for such parameters, this
this implementation MUST augment the current model by adding both implementation MUST augment the current model by adding both level-1
level-1 and level-2 containers and MUST reuse existing configuration and level-2 containers and MUST reuse existing configuration
groupings. groupings.
Example of augmentation: Example of augmentation:
augment "/rt:routing/" + augment "/rt:routing/" +
"rt:control-plane-protocols/rt:control-plane-protocol"+ "rt:control-plane-protocols/rt:control-plane-protocol"+
"/isis:isis/isis:overload" { "/isis:isis/isis:overload" {
when "rt:type = 'isis:isis'" { when "rt:type = 'isis:isis'" {
description description
"This augment IS-IS routing protocol when used"; "This augments the IS-IS routing protocol when used.";
} }
description description
"This augments IS-IS overload configuration "This augments the IS-IS overload configuration
with per-level configuration."; with per-level configuration.";
container level-1 { container level-1 {
uses isis:overload-global-cfg; uses isis:overload-global-cfg;
description description
"Level 1 configuration."; "Level-1 configuration.";
} }
container level-2 { container level-2 {
uses isis:overload-global-cfg; uses isis:overload-global-cfg;
description description
"Level 2 configuration."; "Level-2 configuration.";
} }
} }
If an implementation does not support per-level configuration for a If an implementation does not support per-level configuration for a
parameter modeled with per-level configuration, the implementation parameter modeled with per-level configuration, the implementation
should advertise a deviation to announce the non-support of the should advertise a deviation to announce that it does not support the
level-1 and level-2 containers. configuration of level-1 and level-2 containers.
Finally, if an implementation supports per-level configuration but Finally, if an implementation supports per-level configuration but
does not support the level-1-2 configuration, it should also does not support the "level-all" configuration, it should also
advertise a deviation. advertise a deviation.
2.4. Per-Interface Parameters 2.4. Per-Interface Parameters
The per-interface section of the IS-IS instance describes the The per-interface section of the IS-IS instance describes the
interface-specific parameters. interface-specific parameters.
The interface is modeled as a reference to an existing interface The interface is modeled as a reference to an existing interface as
defined in the "ietf-interfaces" YANG model ([RFC8343]. defined in the "ietf-interfaces" YANG module [RFC8343].
Each interface has some interface-specific parameters that may have a Each interface has some interface-specific parameters that may have a
different per-level value as described in the previous section. An different per-level value as described in the previous section. An
interface-specific parameter MUST be preferred over an IS-IS global interface-specific parameter MUST be preferred over an IS-IS global
parameter. parameter.
Some parameters, such as, hello-padding are defined as containers to Some parameters, such as "hello-padding", are defined as containers
allow easy extension by vendor-specific modules. to allow easy extension by vendor-specific modules.
+--rw interfaces +--rw interfaces
+--rw interface* [name] +--rw interface* [name]
+--rw name if:interface-ref +--rw name if:interface-ref
+--rw enable? boolean {admin-control}? +--rw enable? boolean {admin-control}?
+--rw level-type? level +--rw level-type? level
+--rw lsp-pacing-interval? rt-types: +--rw lsp-pacing-interval? rt-types:
| timer-value-milliseconds | timer-value-milliseconds
+--rw lsp-retransmit-interval? rt-types: +--rw lsp-retransmit-interval? rt-types:
| timer-value-seconds16 | timer-value-seconds16
+--rw passive? boolean +--rw passive? boolean
+--rw csnp-interval? rt-types: +--rw csnp-interval? rt-types:
| timer-value-seconds16 | timer-value-seconds16
+--rw hello-padding +--rw hello-padding
| +--rw enable? boolean | +--rw enable? boolean
+--rw mesh-group-enable? mesh-group-state +--rw mesh-group-enable? mesh-group-state
+--rw mesh-group? uint8 +--rw mesh-group? uint8
+--rw interface-type? interface-type +--rw interface-type? interface-type
+--rw tag* uint32 {prefix-tag}? +--rw tag* uint32 {prefix-tag}?
+--rw tag64* uint64 {prefix-tag64}? +--rw tag64* uint64 {prefix-tag64}?
+--rw node-flag? boolean {node-flag}? +--rw node-flag? boolean {node-flag}?
+--rw hello-authentication +--rw hello-authentication
| +--rw (authentication-type)? | +--rw (authentication-type)?
| | +--:(key-chain) {key-chain}? | | +--:(key-chain) {key-chain}?
| | | +--rw key-chain? key-chain:key-chain-ref | | | +--rw key-chain? key-chain:key-chain-ref
| | +--:(password) | | +--:(password)
| | +--rw key? string | | +--rw key? string
| | +--rw crypto-algorithm? identityref | | +--rw crypto-algorithm? identityref
| +--rw level-1 | +--rw level-1
| | +--rw (authentication-type)? | | +--rw (authentication-type)?
| | +--:(key-chain) {key-chain}? | | +--:(key-chain) {key-chain}?
| | | +--rw key-chain? key-chain:key-chain-ref | | | +--rw key-chain? key-chain:key-chain-ref
| | +--:(password) | | +--:(password)
| | +--rw key? string | | +--rw key? string
| | +--rw crypto-algorithm? identityref | | +--rw crypto-algorithm? identityref
| +--rw level-2 | +--rw level-2
| +--rw (authentication-type)? | +--rw (authentication-type)?
| +--:(key-chain) {key-chain}? | +--:(key-chain) {key-chain}?
| | +--rw key-chain? key-chain:key-chain-ref | | +--rw key-chain? key-chain:key-chain-ref
| +--:(password) | +--:(password)
| +--rw key? string | +--rw key? string
| +--rw crypto-algorithm? identityref | +--rw crypto-algorithm? identityref
+--rw hello-interval +--rw hello-interval
| +--rw value? rt-types:timer-value-seconds16 | +--rw value? rt-types:timer-value-seconds16
| +--rw level-1 | +--rw level-1
| | +--rw value? rt-types:timer-value-seconds16 | | +--rw value? rt-types:timer-value-seconds16
| +--rw level-2 | +--rw level-2
| +--rw value? rt-types:timer-value-seconds16 | +--rw value? rt-types:timer-value-seconds16
+--rw hello-multiplier +--rw hello-multiplier
| +--rw value? uint16 | +--rw value? uint16
| +--rw level-1 | +--rw level-1
| | +--rw value? uint16 | | +--rw value? uint16
| +--rw level-2 | +--rw level-2
| +--rw value? uint16 | +--rw value? uint16
+--rw priority +--rw priority
| +--rw value? uint8 | +--rw value? uint8
| +--rw level-1 | +--rw level-1
| | +--rw value? uint8 | | +--rw value? uint8
| +--rw level-2 | +--rw level-2
| +--rw value? uint8 | +--rw value? uint8
+--rw metric +--rw metric
| +--rw value? wide-metric | +--rw value? wide-metric
| +--rw level-1 | +--rw level-1
| | +--rw value? wide-metric | | +--rw value? wide-metric
| +--rw level-2 | +--rw level-2
| +--rw value? wide-metric | +--rw value? wide-metric
+--rw bfd {bfd}? +--rw bfd {bfd}?
| +--rw enable? boolean | +--rw enable? boolean
| +--rw local-multiplier? multiplier | +--rw local-multiplier? multiplier
| +--rw (interval-config-type)? | +--rw (interval-config-type)?
| +--:(tx-rx-intervals) | +--:(tx-rx-intervals)
| | +--rw desired-min-tx-interval? uint32 | | +--rw desired-min-tx-interval? uint32
| | +--rw required-min-rx-interval? uint32 | | +--rw required-min-rx-interval? uint32
| +--:(single-interval) {single-minimum-interval}? | +--:(single-interval) {single-minimum-interval}?
| +--rw min-interval? uint32 | +--rw min-interval? uint32
+--rw address-families {nlpid-control}? +--rw address-families {nlpid-control}?
| +--rw address-family-list* [address-family] | +--rw address-family-list* [address-family]
| +--rw address-family iana-rt-types:address-family | +--rw address-family iana-rt-types:address-family
+--rw mpls +--rw mpls
| +--rw ldp | +--rw ldp
| +--rw igp-sync? boolean {ldp-igp-sync}? | +--rw igp-sync? boolean {ldp-igp-sync}?
+--rw fast-reroute {fast-reroute}? +--rw fast-reroute {fast-reroute}?
| +--rw lfa {lfa}? | +--rw lfa {lfa}?
| +--rw candidate-enable? boolean | +--rw candidate-enable? boolean
| +--rw enable? boolean | +--rw enable? boolean
| +--rw remote-lfa {remote-lfa}? | +--rw remote-lfa {remote-lfa}?
| | +--rw enable? boolean | | +--rw enable? boolean
| +--rw level-1 | +--rw level-1
| | +--rw candidate-enable? boolean | | +--rw candidate-enable? boolean
| | +--rw enable? boolean | | +--rw enable? boolean
| | +--rw remote-lfa {remote-lfa}? | | +--rw remote-lfa {remote-lfa}?
| | +--rw enable? boolean | | +--rw enable? boolean
| +--rw level-2 | +--rw level-2
| +--rw candidate-enable? boolean | +--rw candidate-enable? boolean
| +--rw enable? boolean | +--rw enable? boolean
| +--rw remote-lfa {remote-lfa}? | +--rw remote-lfa {remote-lfa}?
| +--rw enable? boolean | +--rw enable? boolean
+--ro adjacencies +--ro adjacencies
| +--ro adjacency* [] | +--ro adjacency* []
| +--ro neighbor-sys-type? level | +--ro neighbor-sys-type? level
| +--ro neighbor-sysid? system-id | +--ro neighbor-sysid? system-id
| +--ro neighbor-extended-circuit-id? extended-circuit-id | +--ro neighbor-extended-circuit-id? extended-circuit-id
| +--ro neighbor-snpa? snpa | +--ro neighbor-snpa? snpa
| +--ro usage? level | +--ro usage? level
| +--ro hold-timer? rt-types: | +--ro hold-timer? rt-types:
| | timer-value-seconds16 | | timer-value-seconds16
| +--ro neighbor-priority? uint8 | +--ro neighbor-priority? uint8
| +--ro lastuptime? yang:timestamp | +--ro lastuptime? yang:timestamp
| +--ro state? adj-state-type | +--ro state? adj-state-type
+--ro event-counters +--ro event-counters
| +--ro adjacency-changes? uint32 | +--ro adjacency-changes? uint32
| +--ro adjacency-number? uint32 | +--ro adjacency-number? uint32
| +--ro init-fails? uint32 | +--ro init-fails? uint32
| +--ro adjacency-rejects? uint32 | +--ro adjacency-rejects? uint32
| +--ro id-len-mismatch? uint32 | +--ro id-len-mismatch? uint32
| +--ro max-area-addresses-mismatch? uint32 | +--ro max-area-addresses-mismatch? uint32
| +--ro authentication-type-fails? uint32 | +--ro authentication-type-fails? uint32
| +--ro authentication-fails? uint32 | +--ro authentication-fails? uint32
| +--ro lan-dis-changes? uint32 | +--ro lan-dis-changes? uint32
+--ro packet-counters +--ro packet-counters
| +--ro level* [level] | +--ro level* [level]
| +--ro level level-number | +--ro level level-number
| +--ro iih | +--ro iih
| | +--ro in? uint32 | | +--ro in? uint32
| | +--ro out? uint32 | | +--ro out? uint32
| +--ro ish | +--ro ish
| | +--ro in? uint32 | | +--ro in? uint32
| | +--ro out? uint32 | | +--ro out? uint32
| +--ro esh | +--ro esh
| | +--ro in? uint32 | | +--ro in? uint32
| | +--ro out? uint32 | | +--ro out? uint32
| +--ro lsp | +--ro lsp
| | +--ro in? uint32 | | +--ro in? uint32
| | +--ro out? uint32 | | +--ro out? uint32
| +--ro psnp | +--ro psnp
| | +--ro in? uint32 | | +--ro in? uint32
| | +--ro out? uint32 | | +--ro out? uint32
| +--ro csnp | +--ro csnp
| | +--ro in? uint32 | | +--ro in? uint32
| | +--ro out? uint32 | | +--ro out? uint32
| +--ro unknown | +--ro unknown
| +--ro in? uint32 | +--ro in? uint32
+--rw discontinuity-time? yang:date-and-time +--rw discontinuity-time? yang:date-and-time
+--rw topologies {multi-topology}? +--rw topologies {multi-topology}?
+--rw topology* [name] +--rw topology* [name]
+--rw name -> +--rw name ->
| ../../../../../../../../rt:ribs/rib/name | ../../../../../../../../rt:ribs/rib/name
+--rw metric +--rw metric
+--rw value? wide-metric +--rw value? wide-metric
+--rw level-1 +--rw level-1
| +--rw value? wide-metric | +--rw value? wide-metric
+--rw level-2 +--rw level-2
+--rw value? wide-metric +--rw value? wide-metric
rpcs: rpcs:
+---x clear-adjacency +---x clear-adjacency
| +---w input | +---w input
| +---w routing-protocol-instance-name -> /rt:routing/ | +---w routing-protocol-instance-name -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +---w level? level | +---w level? level
| +---w interface? if:interface-ref | +---w interface? if:interface-ref
+---x clear-database +---x clear-database
+---w input +---w input
+---w routing-protocol-instance-name -> /rt:routing/ +---w routing-protocol-instance-name -> /rt:routing/
| control-plane-protocols/ | control-plane-protocols/
| control-plane-protocol/name | control-plane-protocol/name
+---w level? level +---w level? level
notifications: notifications:
+---n database-overload +---n database-overload
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro overload? enumeration | +--ro overload? enumeration
+---n lsp-too-large +---n lsp-too-large
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro pdu-size? uint32 | +--ro pdu-size? uint32
| +--ro lsp-id? lsp-id | +--ro lsp-id? lsp-id
+---n if-state-change +---n if-state-change
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro state? if-state-type | +--ro state? if-state-type
+---n corrupted-lsp-detected +---n corrupted-lsp-detected
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro lsp-id? lsp-id | +--ro lsp-id? lsp-id
+---n attempt-to-exceed-max-sequence +---n attempt-to-exceed-max-sequence
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro lsp-id? lsp-id | +--ro lsp-id? lsp-id
+---n id-len-mismatch +---n id-len-mismatch
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro pdu-field-len? uint8 | +--ro pdu-field-len? uint8
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
+---n max-area-addresses-mismatch +---n max-area-addresses-mismatch
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro max-area-addresses? uint8 | +--ro max-area-addresses? uint8
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
+---n own-lsp-purge +---n own-lsp-purge
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro lsp-id? lsp-id | +--ro lsp-id? lsp-id
+---n sequence-number-skipped +---n sequence-number-skipped
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro lsp-id? lsp-id | +--ro lsp-id? lsp-id
+---n authentication-type-failure +---n authentication-type-failure
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
+---n authentication-failure +---n authentication-failure
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
+---n version-skew +---n version-skew
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro protocol-version? uint8 | +--ro protocol-version? uint8
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
+---n area-mismatch +---n area-mismatch
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
+---n rejected-adjacency +---n rejected-adjacency
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
| +--ro reason? string | +--ro reason? string
+---n protocols-supported-mismatch +---n protocols-supported-mismatch
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
| +--ro protocols* uint8 | +--ro protocols* uint8
+---n lsp-error-detected +---n lsp-error-detected
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro lsp-id? lsp-id | +--ro lsp-id? lsp-id
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
| +--ro error-offset? uint32 | +--ro error-offset? uint32
| +--ro tlv-type? uint8 | +--ro tlv-type? uint8
+---n adjacency-state-change +---n adjacency-state-change
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro neighbor? string | +--ro neighbor? string
| +--ro neighbor-system-id? system-id | +--ro neighbor-system-id? system-id
| +--ro state? adj-state-type | +--ro state? adj-state-type
| +--ro reason? string | +--ro reason? string
+---n lsp-received +---n lsp-received
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro lsp-id? lsp-id | +--ro lsp-id? lsp-id
| +--ro sequence? uint32 | +--ro sequence? uint32
| +--ro received-timestamp? yang:timestamp | +--ro received-timestamp? yang:timestamp
| +--ro neighbor-system-id? system-id | +--ro neighbor-system-id? system-id
+---n lsp-generation +---n lsp-generation
+--ro routing-protocol-name? -> /rt:routing/ +--ro routing-protocol-name? -> /rt:routing/
| control-plane-protocols/ | control-plane-protocols/
| control-plane-protocol/name | control-plane-protocol/name
+--ro isis-level? level +--ro isis-level? level
+--ro lsp-id? lsp-id +--ro lsp-id? lsp-id
+--ro sequence? uint32 +--ro sequence? uint32
+--ro send-timestamp? yang:timestamp +--ro send-timestamp? yang:timestamp
2.5. Authentication Parameters 2.5. Authentication Parameters
The module enables authentication configuration through the IETF key- The module defined in this document enables authentication
chain module [RFC8177]. The IS-IS module imports the "ietf-key- configuration through the "ietf-key-chain" module [RFC8177]. The IS-
chain" module and reuses some groupings to allow global and per- IS module imports the "ietf-key-chain" module and reuses some
interface configuration of authentication. If global authentication groupings to allow global and per-interface configuration of
is configured, an implementation SHOULD authenticate PSNPs (Partial authentication. If global authentication is configured, an
Sequence Number Packets), CSNPs (Complete Sequence Number Packets) implementation SHOULD authenticate PSNPs (Partial Sequence Number
and LSPs (Link State Packets) with the authentication parameters Packets), CSNPs (Complete Sequence Number Packets), and LSPs (Link
supplied. The authentication of HELLO PDUs (Protocol Data Units) can State Packets) with the authentication parameters supplied. The
be activated on a per-interface basis. authentication of Hello PDUs (Protocol Data Units) can be activated
on a per-interface basis.
2.6. IGP/LDP synchronization 2.6. IGP/LDP Synchronization
[RFC5443] defines a mechanism where IGP (Interior Gateway Protocol) [RFC5443] defines a mechanism where IGP (the Interior Gateway
needs to be synchronized with LDP (Label Distribution Protocol). An Protocol) needs to be synchronized with LDP (the Label Distribution
"ldp-igp-sync" feature has been defined in the model to support this Protocol). An "ldp-igp-sync" feature has been defined in the model
functionality. The "mpls/ldp/igp-sync" leaf under "interface" allows to support this functionality. The "mpls/ldp/igp-sync" leaf under
activation of the functionality on a per-interface basis. The "interface" allows activation of the functionality on a per-interface
"mpls/ldp/igp-sync" container in the global configuration is basis. The "mpls/ldp/igp-sync" container in the global configuration
intentionally empty and is not required for feature activation. The is intentionally empty and is not required for feature activation.
goal of this empty container is to facilitate augmentation with The goal of this empty container is to facilitate augmentation with
additional parameters, e.g., timers. additional parameters, e.g., timers.
2.7. ISO parameters 2.7. ISO Parameters
As the IS-IS protocol is based on the ISO protocol suite, some ISO As the IS-IS protocol is based on the ISO protocol suite, some ISO
parameters may be required. parameters may be required.
This module augments interface configuration model to support This module augments the "ietf-interfaces" module configuration to
selected ISO configuration parameters. support selected ISO configuration parameters.
The clns-mtu can be configured for an interface. The "clns-mtu" parameter can be configured for an interface.
2.8. IP FRR 2.8. IP FRR
This YANG module supports LFA (Loop Free Alternates) [RFC5286] and The YANG module defined in this document supports LFAs (Loop-Free
remote LFA [RFC7490] as IP Fast Re-Route (FRR) techniques. The Alternates) [RFC5286] and remote LFAs [RFC7490] as IP Fast Reroute
"fast-reroute" container may be augmented by other models to support (FRR) techniques. The "fast-reroute" container may be augmented by
other IP FRR flavors (MRT as defined in [RFC7812], TI-LFA as defined other models to support other IP FRR flavors (Maximally Redundant
in [I-D.ietf-rtgwg-segment-routing-ti-lfa], etc.). Trees (MRTs) as defined in [RFC7812], Topology Independent LFA (TI-
LFA) FRR as defined in [SR-TI-LFA], etc.).
The current version of the model supports activation of LFA and The current version of the model supports activation of LFAs and
remote LFA at the interface-level only. The global "lfa" container remote LFAs at the interface level only. The global "lfa" container
is present but kept empty to allow augmentation with vendor-specific is present but kept empty to allow augmentation with vendor-specific
properties, e.g., policies. properties, e.g., policies.
Remote LFA is considered as an extension of LFA. Remote LFA cannot Remote LFAs are considered an extension of LFAs. Remote LFAs cannot
be enabled if LFA is not enabled. be enabled if LFAs are not enabled.
The "candidate-enable" data leaf designates that an interface can be The "candidate-enable" data leaf designates that an interface can be
used as a backup. used as a backup.
2.9. Operational States 2.9. Operational States
Operational state is defined in module in various containers at Operational states are defined in the "ietf-isis" module in various
various levels: containers at various levels:
o system-counters: Provides statistical information about the global system-counters:
system. Provides statistical information about the global system.
o interface: Provides configuration state information for each interface:
interface. Provides configuration state information for each interface.
o adjacencies: Provides state information about current IS-IS adjacencies:
adjacencies. Provides state information about current IS-IS adjacencies.
o spf-log: Provides information about SPF events for an IS-IS spf-log:
instance. This SHOULD be implemented as a wrapping buffer. Provides information about Shortest Path First (SPF) events for an
IS-IS instance. This SHOULD be implemented as a wrapping buffer.
o lsp-log: Provides information about LSP events for an IS-IS lsp-log:
instance (reception of an LSP or modification of a local LSP). Provides information about LSP events for an IS-IS instance
This SHOULD be implemented as a wrapping buffer and the (reception of an LSP or modification of a local LSP). This SHOULD
implementation MAY optionally log LSP refreshes. be implemented as a wrapping buffer. The implementation MAY
optionally log LSP refreshes.
o local-rib: Provides the IS-IS internal routing table. local-rib:
Provides the IS-IS internal routing table.
o database: Provides contents of the current Link State Database. database:
Provides the contents of the current Link State Database (LSDB).
o hostnames: Provides the system-id to hostname mappings [RFC5301]. hostnames:
Provides the system-ID-to-hostname mappings [RFC5301].
o fast-reroute: Provides IP FRR state information. fast-reroute:
Provides IP FRR state information.
3. RPC Operations 3. RPC Operations
The "ietf-isis" module defines two RPC operations: The "ietf-isis" module defines two RPC operations:
o clear-database: Reset the content of a particular IS-IS database clear-database:
and restart database synchronization with all neighbors. Resets the contents of a particular IS-IS database and restarts
database synchronization with all neighbors.
o clear-adjacency: Restart a particular set of IS-IS adjacencies. clear-adjacency:
Restarts a particular set of IS-IS adjacencies.
4. Notifications 4. Notifications
The "ietf-isis" module defines the following notifications: The "ietf-isis" module defines the following notifications:
database-overload: This notification is sent when the IS-IS Node database-overload:
overload condition changes. This notification is sent when the IS-IS node's overload condition
changes.
lsp-too-large: This notification is sent when the system tries to lsp-too-large:
propagate a PDU that is too large. This notification is sent when the system tries to propagate a PDU
that is too large.
if-state-change: This notification is sent when an interface's if-state-change:
state changes. This notification is sent when an interface's state changes.
corrupted-lsp-detected: This notification is sent when the IS-IS corrupted-lsp-detected:
node discovers that an LSP that was previously stored in the Link This notification is sent when the IS-IS node discovers that an
State Database, i.e., local memory, has become corrupted. LSP that was previously stored in the LSDB, i.e., local memory,
has become corrupted.
attempt-to-exceed-max-sequence: This notification is sent when the attempt-to-exceed-max-sequence:
system wraps the 32-bit sequence counter of an LSP. This notification is sent when the system wraps the 32-bit
sequence counter of an LSP.
id-len-mismatch: This notification is sent when we receive a PDU id-len-mismatch:
with a different value for the System ID length. This notification is sent when we receive a PDU with a different
value for the system ID length.
max-area-addresses-mismatch: This notification is sent when we max-area-addresses-mismatch:
receive a PDU with a different value for the Maximum Area This notification is sent when we receive a PDU with a different
Addresses. value for the Maximum Area Addresses.
own-lsp-purge: This notification is sent when the system receives own-lsp-purge:
a PDU with its own system ID and zero age. This notification is sent when the system receives a PDU with its
own system ID and zero age.
sequence-number-skipped: This notification is sent when the system sequence-number-skipped:
receives a PDU with its own system ID and different contents. The This notification is sent when the system receives a PDU with its
system has to reissue the LSP with a higher sequence number. own system ID and different contents. The system has to reissue
the LSP with a higher sequence number.
authentication-type-failure: This notification is sent when the authentication-type-failure:
system receives a PDU with the wrong authentication type field. This notification is sent when the system receives a PDU with the
wrong authentication type field.
authentication-failure: This notification is sent when the system authentication-failure:
receives a PDU with the wrong authentication information. This notification is sent when the system receives a PDU with the
wrong authentication information.
version-skew: This notification is sent when the system receives a version-skew:
PDU with a different protocol version number. This notification is sent when the system receives a PDU with a
different protocol version number.
area-mismatch: This notification is sent when the system receives area-mismatch:
a Hello PDU from an IS that does not share any area address. This notification is sent when the system receives a Hello PDU
from an IS that does not share any area address.
rejected-adjacency: This notification is sent when the system rejected-adjacency:
receives a Hello PDU from an IS but does not establish an This notification is sent when the system receives a Hello PDU
adjacency for some reason. from an IS but does not establish an adjacency for some reason.
protocols-supported-mismatch: This notification is sent when the protocols-supported-mismatch:
system receives a non-pseudonode LSP that has no matching protocol This notification is sent when the system receives a non-
supported. pseudonode LSP that has no matching protocol supported.
lsp-error-detected: This notification is sent when the system lsp-error-detected:
receives an LSP with a parse error. This notification is sent when the system receives an LSP with a
parse error.
adjacency-state-change: This notification is sent when an IS-IS adjacency-state-change:
adjacency moves to Up state or to Down state. This notification is sent when an IS-IS adjacency moves to the
"up" state or the "down" state.
lsp-received: This notification is sent when an LSP is received. lsp-received:
This notification is sent when an LSP is received.
lsp-generation: This notification is sent when an LSP is lsp-generation:
regenerated. This notification is sent when an LSP is regenerated.
5. Interaction with Other YANG Modules 5. Interactions with Other YANG Modules
The "isis" container augments the "/rt:routing/rt:control-plane- The "isis" container augments the "/rt:routing/rt:control-plane-
protocols/control-plane-protocol" container of the ietf-routing protocols/control-plane-protocol" container of the "ietf-routing"
[RFC8349] module with IS-IS-specific parameters. module [RFC8349] with IS-IS-specific parameters.
The "isis" module augments "/if:interfaces/if:interface" defined by
[RFC8343] with ISO specific parameters.
The "isis" operational state container augments the "/rt:routing- The "ietf-isis" module augments "/if:interfaces/if:interface" as
state/rt:control-plane-protocols/control-plane-protocol" container of defined by [RFC8343] with ISO-specific parameters.
the ietf-routing module with IS-IS-specific operational states.
Some IS-IS-specific route attributes are added to route objects in Some IS-IS-specific route attributes are added to route objects in
the ietf-routing module by augmenting "/rt:routing- the "ietf-routing" module by augmenting "/rt:routing-
state/rt:ribs/rt:rib/rt:routes/rt:route". state/rt:ribs/rt:rib/rt:routes/rt:route".
The modules defined in this document uses some groupings from ietf- The module defined in this document uses some groupings from "ietf-
keychain [RFC8177]. keychain" [RFC8177].
The module reuses types from [RFC6991] and [RFC8294]. The module reuses types from [RFC6991] and [RFC8294].
To support BFD for fast detection, the module relies on To support Bidirectional Forwarding Detection (BFD) for fast
[I-D.ietf-bfd-yang]. detection, the module relies on [RFC9127].
6. IS-IS YANG Module 6. IS-IS YANG Module
The following RFCs, drafts and external standards are not referenced The following specifications are referenced in this module:
in the document text but are referenced in the ietf-isis.yang module: [ISO-10589], [RFC1195], [RFC4090], [RFC5029], [RFC5120], [RFC5130],
[ISO-10589], [RFC1195], [RFC4090],[RFC5029], [RFC5130], [RFC5302], [RFC5286], [RFC5301], [RFC5302], [RFC5305], [RFC5307], [RFC5308],
[RFC5305], [RFC5306], [RFC5307], [RFC5308], [RFC5880], [RFC5881], [RFC5443], [RFC5880], [RFC5881], [RFC6119], [RFC6232], [RFC6241],
[RFC6119], [RFC6232], [RFC7794], [RFC7981], [RFC8570], [RFC7917], [RFC6991], [RFC7490], [RFC7794], [RFC7917], [RFC7981], [RFC8177],
[RFC8405]. [RFC8294], [RFC8342], [RFC8343], [RFC8349], [RFC8405], [RFC8570],
[RFC8706], and [RFC9127].
<CODE BEGINS> file "ietf-isis@2019-10-15.yang" <CODE BEGINS> file "ietf-isis@2021-08-31.yang"
module ietf-isis { module ietf-isis {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-isis"; namespace "urn:ietf:params:xml:ns:yang:ietf-isis";
prefix isis; prefix isis;
import ietf-routing { import ietf-routing {
prefix "rt"; prefix "rt";
reference "RFC 8349 - A YANG Data Model for Routing reference
Management (NMDA Version)"; "RFC 8349: A YANG Data Model for Routing Management
(NMDA Version)";
} }
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
reference "RFC 6991 - Common YANG Data Types"; reference
"RFC 6991: Common YANG Data Types";
} }
import ietf-yang-types { import ietf-yang-types {
prefix yang; prefix yang;
reference "RFC 6991 - Common YANG Data Types"; reference
"RFC 6991: Common YANG Data Types";
} }
import ietf-interfaces { import ietf-interfaces {
prefix "if"; prefix "if";
reference "RFC 8343 - A YANG Data Model for Interface reference
Management (NDMA Version)"; "RFC 8343: A YANG Data Model for Interface Management";
} }
import ietf-key-chain { import ietf-key-chain {
prefix "key-chain"; prefix "key-chain";
reference "RFC 8177 - YANG Data Model for Key Chains"; reference
"RFC 8177: YANG Data Model for Key Chains";
} }
import ietf-routing-types { import ietf-routing-types {
prefix "rt-types"; prefix "rt-types";
reference "RFC 8294 - Common YANG Data Types for the reference
Routing Area"; "RFC 8294: Common YANG Data Types for the Routing Area";
} }
import iana-routing-types { import iana-routing-types {
prefix "iana-rt-types"; prefix "iana-rt-types";
reference "RFC 8294 - Common YANG Data Types for the reference
Routing Area"; "RFC 8294: Common YANG Data Types for the Routing Area";
} }
import ietf-bfd-types { import ietf-bfd-types {
prefix "bfd-types"; prefix "bfd-types";
reference "RFC YYYY - YANG Data Model for Bidirectional reference
Forwarding Detection (BFD). "RFC 9127: YANG Data Model for Bidirectional Forwarding
Detection (BFD)";
-- Note to RFC Editor Please replace YYYY with published RFC
number for draft-ietf-bfd-yang.";
} }
organization organization
"IETF LSR Working Group"; "IETF LSR Working Group";
contact contact
"WG Web: <https://datatracker.ietf.org/group/lsr/> "WG Web: <https://datatracker.ietf.org/wg/lsr/>
WG List: <mailto:lsr@ietf.org> WG List: <mailto:lsr@ietf.org>
Editor: Stephane Litkowski Editor: Stephane Litkowski
<mailto:slitkows.ietf@gmail.com> <mailto:slitkows.ietf@gmail.com>
Author: Derek Yeung Author: Derek Yeung
<mailto:derek@arrcus.com> <mailto:derek@arrcus.com>
Author: Acee Lindem Author: Acee Lindem
<mailto:acee@cisco.com> <mailto:acee@cisco.com>
Author: Jeffrey Zhang Author: Jeffrey Zhang
<mailto:zzhang@juniper.net> <mailto:zzhang@juniper.net>
Author: Ladislav Lhotka Author: Ladislav Lhotka
<mailto:llhotka@nic.cz>"; <mailto:ladislav.lhotka@nic.cz>";
description description
"This YANG module defines the generic configuration and "This YANG module defines the generic configuration and
operational state for the IS-IS protocol common to all operational states for the IS-IS protocol common to all
vendor implementations. It is intended that the module vendor implementations. It is intended that the module
will be extended by vendors to define vendor-specific will be extended by vendors to define vendor-specific
IS-IS configuration parameters and policies, IS-IS configuration parameters and policies -
for example, route maps or route policies. for example, route maps or route policies.
This YANG model conforms to the Network Management
Datastore Architecture (NMDA) as described in RFC 8242.
Copyright (c) 2018 IETF Trust and the persons identified as This YANG data model conforms to the Network Management
authors of the code. All rights reserved. Datastore Architecture (NMDA) as described in RFC 8342.
Redistribution and use in source and binary forms, with or The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
without modification, is permitted pursuant to, and subject to NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
the license terms contained in, the Simplified BSD License set 'MAY', and 'OPTIONAL' in this document are to be interpreted as
forth in Section 4.c of the IETF Trust's Legal Provisions described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
Relating to IETF Documents they appear in all capitals, as shown here.
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX Copyright (c) 2021 IETF Trust and the persons identified as
(https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself authors of the code. All rights reserved.
for full legal notices.
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL Redistribution and use in source and binary forms, with or
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', without modification, is permitted pursuant to, and subject to
'MAY', and 'OPTIONAL' in this document are to be interpreted as the license terms contained in, the Simplified BSD License set
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, forth in Section 4.c of the IETF Trust's Legal Provisions
they appear in all capitals, as shown here. Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; This version of this YANG module is part of RFC 9130; see the
see the RFC itself for full legal notices."; RFC itself for full legal notices.";
reference
"RFC 8342: Network Management Datastore Architecture (NMDA)";
revision 2019-10-15 { revision 2021-08-31 {
description description
"Initial revision."; "Initial revision.";
reference "RFC XXXX"; reference
"RFC 9130: YANG Data Model for the IS-IS Protocol";
} }
/* Identities */ /* Identities */
identity isis { identity isis {
base rt:routing-protocol; base rt:routing-protocol;
description "Identity for the IS-IS routing protocol."; description
"Identity for the IS-IS routing protocol.";
} }
identity lsp-log-reason { identity lsp-log-reason {
description "Base identity for an LSP change log reason."; description
"Base identity for a Link State Packet (LSP)
change log reason.";
} }
identity refresh { identity refresh {
base lsp-log-reason; base lsp-log-reason;
description description
"Identity used when the LSP log reason is "Identity used when the LSP log reason is that an LSP
a refresh LSP received."; refresh was received.";
} }
identity content-change { identity content-change {
base lsp-log-reason; base lsp-log-reason;
description description
"Identity used when the LSP log reason is "Identity used when the LSP log reason is
a change in the content of the LSP."; a change in the contents of the LSP.";
} }
identity frr-protection-method { identity frr-protection-method {
description description
"Base identity for a Fast Reroute protection method."; "Base identity for a Fast Reroute protection method.";
} }
identity frr-protection-method-lfa { identity frr-protection-method-lfa {
base frr-protection-method; base frr-protection-method;
description "Loop Free Alternate as defined in RFC5286."; description
"Loop-Free Alternate as defined in RFC 5286.";
reference
"RFC 5286: Basic Specification for IP Fast Reroute:
Loop-Free Alternates";
} }
identity frr-protection-method-rlfa { identity frr-protection-method-rlfa {
base frr-protection-method; base frr-protection-method;
description "Remote Loop Free Alternate as defined in RFC7490."; description
"Remote Loop-Free Alternate as defined in RFC 7490.";
reference
"RFC 7490: Remote Loop-Free Alternate (LFA)
Fast Reroute (FRR)";
} }
identity frr-protection-method-rsvpte { identity frr-protection-method-rsvpte {
base frr-protection-method; base frr-protection-method;
description "RSVP-TE as defined in RFC4090."; description
"RSVP-TE as defined in RFC 4090.";
reference
"RFC 4090: Fast Reroute Extensions to RSVP-TE for
LSP Tunnels";
} }
identity frr-protection-available-type { identity frr-protection-available-type {
description "Base identity for Fast Reroute protection types description
provided by an alternate path."; "Base identity for Fast Reroute protection types
provided by an alternate path.";
} }
identity frr-protection-available-node-type { identity frr-protection-available-node-type {
base frr-protection-available-type; base frr-protection-available-type;
description "Node protection is provided by the alternate."; description
"Node protection is provided by the alternate.";
} }
identity frr-protection-available-link-type { identity frr-protection-available-link-type {
base frr-protection-available-type; base frr-protection-available-type;
description "Link protection is provided by the alternate."; description
"Link protection is provided by the alternate.";
} }
identity frr-protection-available-srlg-type { identity frr-protection-available-srlg-type {
base frr-protection-available-type; base frr-protection-available-type;
description "SRLG protection is provided by the alternate."; description
"Shared Risk Link Group (SRLG) protection is provided by
the alternate.";
} }
identity frr-protection-available-downstream-type { identity frr-protection-available-downstream-type {
base frr-protection-available-type; base frr-protection-available-type;
description "The alternate is downstream of node in the path."; description
"The alternate is downstream of the node in the path.";
} }
identity frr-protection-available-other-type { identity frr-protection-available-other-type {
base frr-protection-available-type; base frr-protection-available-type;
description "The level of protection is unknown."; description
"The level of protection is unknown.";
} }
identity frr-alternate-type { identity frr-alternate-type {
description "Base identity for IP Fast Reroute alternate type."; description
"Base identity for the IP Fast Reroute alternate type.";
} }
identity frr-alternate-type-equal-cost { identity frr-alternate-type-equal-cost {
base frr-alternate-type; base frr-alternate-type;
description "ECMP alternate."; description
"ECMP-based alternate.";
} }
identity frr-alternate-type-lfa { identity frr-alternate-type-lfa {
base frr-alternate-type; base frr-alternate-type;
description "LFA alternate."; description
"LFA-based alternate.";
} }
identity frr-alternate-type-remote-lfa { identity frr-alternate-type-remote-lfa {
base frr-alternate-type; base frr-alternate-type;
description "Remote LFA alternate."; description
"Remote-LFA-based alternate.";
} }
identity frr-alternate-type-tunnel { identity frr-alternate-type-tunnel {
base frr-alternate-type; base frr-alternate-type;
description "Tunnel based alternate (such as, description
RSVP-TE or GRE)."; "Tunnel-based alternate (such as RSVP-TE or GRE).";
} }
identity frr-alternate-mrt { identity frr-alternate-mrt {
base frr-alternate-type; base frr-alternate-type;
description "MRT alternate."; description
"MRT-based alternate.";
} }
identity frr-alternate-tilfa { identity frr-alternate-tilfa {
base frr-alternate-type; base frr-alternate-type;
description "TILFA alternate."; description
"TI-LFA-based alternate.";
} }
identity frr-alternate-other { identity frr-alternate-other {
base frr-alternate-type; base frr-alternate-type;
description "Other alternate."; description
"Other type of alternate.";
} }
identity unidirectional-link-delay-subtlv-flag { identity unidirectional-link-delay-subtlv-flag {
description "Base identity for unidirectional-link-delay description
subTLV flags. Flags are defined in RFC8570."; "Base identity for the flag corresponding to the
Unidirectional Link Delay sub-TLV as defined in RFC 8570.";
reference
"RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
} }
identity unidirectional-link-delay-subtlv-a-flag { identity unidirectional-link-delay-subtlv-a-flag {
base unidirectional-link-delay-subtlv-flag; base unidirectional-link-delay-subtlv-flag;
description description
"The A bit represents the Anomalous (A) bit. "The 'A' bit field represents the Anomalous (A) bit.
The A bit is set when the measured value of The A bit is set when the measured value of
this parameter exceeds its configured this parameter exceeds its configured
maximum threshold. maximum threshold.
The A bit is cleared when the measured value The A bit is cleared when the measured value
falls below its configured reuse threshold. falls below its configured reuse threshold.
If the A bit is clear, If the A bit is clear,
the value represents steady-state link performance."; the value represents steady-state link performance.";
} }
identity min-max-unidirectional-link-delay-subtlv-flag { identity min-max-unidirectional-link-delay-subtlv-flag {
description description
"Base identity for min-max-unidirectional-link-delay "Base identity for the flag corresponding to the Min/Max
subTLV flags. Flags are defined in RFC8570."; Unidirectional Link Delay sub-TLV as defined in RFC 8570.";
reference
"RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
} }
identity min-max-unidirectional-link-delay-subtlv-a-flag { identity min-max-unidirectional-link-delay-subtlv-a-flag {
base min-max-unidirectional-link-delay-subtlv-flag; base min-max-unidirectional-link-delay-subtlv-flag;
description description
"The A bit represents the Anomalous (A) bit. "The 'A' bit field represents the Anomalous (A) bit.
The A bit is set when the measured value of The A bit is set when the measured value of
this parameter exceeds its configured this parameter exceeds its configured
maximum threshold. maximum threshold.
The A bit is cleared when the measured value The A bit is cleared when the measured value
falls below its configured reuse threshold. falls below its configured reuse threshold.
If the A bit is clear, If the A bit is clear,
the value represents steady-state link performance."; the value represents steady-state link performance.";
} }
identity unidirectional-link-loss-subtlv-flag { identity unidirectional-link-loss-subtlv-flag {
description "Base identity for unidirectional-link-loss description
subTLV flags. Flags are defined in RFC8570."; "Base identity for the flag corresponding to the
Unidirectional Link Loss sub-TLV as defined in RFC 8570.";
reference
"RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
} }
identity unidirectional-link-loss-subtlv-a-flag { identity unidirectional-link-loss-subtlv-a-flag {
base unidirectional-link-loss-subtlv-flag; base unidirectional-link-loss-subtlv-flag;
description description
"The A bit represents the Anomalous (A) bit. "The 'A' bit field represents the Anomalous (A) bit.
The A bit is set when the measured value of The A bit is set when the measured value of
this parameter exceeds its configured this parameter exceeds its configured
maximum threshold. maximum threshold.
The A bit is cleared when the measured value
The A bit is cleared when the measured value falls below its configured reuse threshold.
falls below its configured reuse threshold. If the A bit is clear,
If the A bit is clear, the value represents steady-state link performance.";
the value represents steady-state link performance.";
} }
identity tlv229-flag { identity tlv229-flag {
description "Base identity for TLV229 flags. Flags are defined description
in RFC5120."; "Base identity for the flag corresponding to TLV 229
(M-Topologies) as defined in RFC 5120.";
reference
"RFC 5120: M-ISIS: Multi Topology (MT) Routing in
Intermediate System to Intermediate Systems (IS-ISs)";
} }
identity tlv229-overload-flag { identity tlv229-overload-flag {
base tlv229-flag; base tlv229-flag;
description description
"If set, the originator is overloaded, "If set, the originator is overloaded
and must be avoided in path calculation."; and must be avoided in the path calculation.";
} }
identity tlv229-attached-flag { identity tlv229-attached-flag {
base tlv229-flag; base tlv229-flag;
description description
"If set, the originator is attached to "If set, the originator is attached to
another area using the referred metric."; another area using the referred metric.";
} }
identity router-capability-flag { identity router-capability-flag {
description "Base identity for router capability flags. description
Flags are defined in RFC7981."; "Base identity for the flag corresponding to the
Router Capability TLV as defined in RFC 7981.";
reference
"RFC 7981: IS-IS Extensions for Advertising Router
Information";
} }
identity router-capability-flooding-flag { identity router-capability-flooding-flag {
base router-capability-flag; base router-capability-flag;
description description
"Quote from RFC7981: 'If the S bit is set, "Quote from RFC 7981:
the IS-IS Router CAPABILITY 'If the S bit is set(1), the IS-IS Router CAPABILITY TLV
TLV MUST be flooded across the entire routing MUST be flooded across the entire routing domain. If the
domain. If the S bit is clear, the TLV MUST NOT S bit is not set(0), the TLV MUST NOT be leaked between
be leaked between levels. This bit MUST NOT levels. This bit MUST NOT be altered during the TLV
be altered during the TLV leaking'."; leaking.'.";
} }
identity router-capability-down-flag { identity router-capability-down-flag {
base router-capability-flag; base router-capability-flag;
description description
"Quote from RFC7981: 'When the IS-IS Router CAPABILITY TLV "Quote from RFC 7981:
is leaked from level-2 to level-1, the D bit MUST be set. 'When the IS-IS Router CAPABILITY TLV is leaked from
Otherwise, this bit MUST be clear. IS-IS Router Level 2 (L2) to Level 1 (L1), the D bit MUST be set.
capability TLVs with the D bit set MUST NOT be Otherwise, this bit MUST be clear. IS-IS Router
leaked from level-1 to level-2 in to prevent CAPABILITY TLVs with the D bit set MUST NOT be leaked from
TLV looping'."; Level 1 to Level 2. This is to prevent TLV looping.'.";
} }
identity lsp-flag { identity lsp-flag {
description "Base identity for LSP attributes. description
"Base identity for LSP attributes as defined in ISO 10589.";
Attributes are defined in ISO 10589"; reference
"ISO 10589: Intermediate System to Intermediate System
intra-domain routeing information exchange protocol
for use in conjunction with the protocol for providing
the connectionless-mode network service (ISO 8473)";
} }
identity lsp-partitioned-flag { identity lsp-partitioned-flag {
base lsp-flag; base lsp-flag;
description "Originator partition repair supported"; description
"Originator partition repair supported.";
} }
identity lsp-attached-error-metric-flag { identity lsp-attached-error-metric-flag {
base lsp-flag; base lsp-flag;
description "Set when originator is attached to description
another area using the error metric."; "Set when the originator is attached to
another area using the error metric.";
} }
identity lsp-attached-delay-metric-flag { identity lsp-attached-delay-metric-flag {
base lsp-flag; base lsp-flag;
description "Set when originator is attached to description
another area using the delay metric."; "Set when the originator is attached to
another area using the delay metric.";
} }
identity lsp-attached-expense-metric-flag { identity lsp-attached-expense-metric-flag {
base lsp-flag; base lsp-flag;
description "Set when originator is attached to description
another area using the expense metric."; "Set when the originator is attached to
another area using the expense metric.";
} }
identity lsp-attached-default-metric-flag { identity lsp-attached-default-metric-flag {
base lsp-flag; base lsp-flag;
description "Set when originator is attached to description
another area using the default metric."; "Set when the originator is attached to
another area using the default metric.";
} }
identity lsp-overload-flag { identity lsp-overload-flag {
base lsp-flag; base lsp-flag;
description description
"If set, the originator is overloaded, "If set, the originator is overloaded
and must be avoided in path calculation."; and must be avoided in the path calculation.";
} }
identity lsp-l1system-flag { identity lsp-l1system-flag {
base lsp-flag; base lsp-flag;
description description
"Set when the Intermediate System has an L1 type."; "Set when the Intermediate System has an L1 type.";
} }
identity lsp-l2system-flag { identity lsp-l2system-flag {
base lsp-flag; base lsp-flag;
description description
"Set when the Intermediate System has an L2 type."; "Set when the Intermediate System has an L2 type.";
} }
/* Feature definitions */ /* Feature definitions */
feature osi-interface { feature osi-interface {
description "Support of OSI specific parameters on an description
interface."; "Support of OSI-specific parameters on an interface.";
} }
feature poi-tlv { feature poi-tlv {
description "Support of Purge Originator Identification."; description
reference "RFC 6232 - Purge Originator Identification TLV "Support of the Purge Originator Identification (POI) TLV.";
for IS-IS"; reference
"RFC 6232: Purge Originator Identification TLV for IS-IS";
} }
feature ietf-spf-delay { feature ietf-spf-delay {
description description
"Support for IETF SPF delay algorithm."; "Support for the IETF SPF delay algorithm.";
reference "RFC 8405 - SPF Back-off algorithm for link reference
state IGPs"; "RFC 8405: Shortest Path First (SPF) Back-Off Delay Algorithm
for Link-State IGPs";
} }
feature bfd { feature bfd {
description description
"Support for BFD detection of IS-IS neighbor reachability."; "Support for detection of IS-IS neighbor reachability
reference "RFC 5880 - Bidirectional Forwarding Detection (BFD) via BFD.";
RFC 5881 - Bidirectional Forwarding Detection reference
(BFD) for IPv4 and IPv6 (Single Hop)"; "RFC 5880: Bidirectional Forwarding Detection (BFD)
RFC 5881: Bidirectional Forwarding Detection (BFD)
for IPv4 and IPv6 (Single Hop)";
} }
feature key-chain { feature key-chain {
description description
"Support of keychain for authentication."; "Support of key chains for authentication.";
reference "RFC8177 - YANG Data Model for Key Chains"; reference
"RFC 8177: YANG Data Model for Key Chains";
} }
feature node-flag { feature node-flag {
description description
"Support for node-flag for IS-IS prefixes."; "Support for node flags for IS-IS prefixes.";
reference "RFC7794 - IS-IS Prefix Attributes for reference
Extended IP and IPv6 Reachability"; "RFC 7794: IS-IS Prefix Attributes for Extended IPv4 and IPv6
Reachability";
} }
feature node-tag { feature node-tag {
description description
"Support for node admin tag for IS-IS routing instances."; "Support for node administrative tags for IS-IS
reference "RFC7917 - Advertising Node Administrative Tags routing instances.";
in IS-IS"; reference
"RFC 7917: Advertising Node Administrative Tags in IS-IS";
} }
feature ldp-igp-sync { feature ldp-igp-sync {
description description
"Support for LDP IGP synchronization."; "Support for LDP IGP synchronization.";
reference "RFC5443 - LDP IGP Synchronization."; reference
"RFC 5443: LDP IGP Synchronization";
} }
feature fast-reroute { feature fast-reroute {
description description
"Support for IP Fast Reroute (IP-FRR)."; "Support for IP Fast Reroute (IP FRR).";
} }
feature nsr { feature nsr {
description description
"Support for Non-Stop-Routing (NSR). The IS-IS NSR feature "Support for Non-Stop-Routing (NSR). The IS-IS NSR feature
allows a router with redundant control-plane capability allows a router with redundant control-plane capability
(e.g., dual Route-Processor (RP) cards) to maintain its (e.g., dual Route Processor (RP) cards) to maintain its
state and adjacencies during planned and unplanned state and adjacencies during planned and unplanned
IS-IS instance restarts. It differs from graceful-restart IS-IS instance restarts. It differs from graceful restart
or Non-Stop Forwarding (NSF) in that no protocol signaling or Non-Stop Forwarding (NSF) in that no protocol signaling
or assistance from adjacent IS-IS neighbors is required to or assistance from adjacent IS-IS neighbors is required to
recover control-plane state."; recover control-plane state.";
} }
feature lfa { feature lfa {
description description
"Support for Loop-Free Alternates (LFAs)."; "Support for Loop-Free Alternates (LFAs).";
reference "RFC5286 - Basic Specification of IP Fast-Reroute: reference
Loop-free Alternates"; "RFC 5286: Basic Specification for IP Fast Reroute:
Loop-Free Alternates";
} }
feature remote-lfa { feature remote-lfa {
description description
"Support for Remote Loop-Free Alternates (R-LFAs)."; "Support for remote LFAs (R-LFAs).";
reference "RFC7490 - Remote Loop-Free Alternate Fast Reroute"; reference
"RFC 7490: Remote Loop-Free Alternate (LFA)
Fast Reroute (FRR)";
} }
feature overload-max-metric { feature overload-max-metric {
description description
"Support of overload by setting all links to max metric. "Support of overload by setting all links to the maximum
In IS-IS, the overload bit is usually used to signal that link metric. In IS-IS, the overload bit is usually used to
a node cannot be used as a transit. The overload-max-metric signal that a node cannot be used as a transit node. The
feature brings a similar behavior leveraging on setting all 'overload-max-metric' feature provides similar behavior,
the link metrics to MAX_METRIC."; leveraging on setting all the link metrics to MAX_METRIC.";
} }
feature prefix-tag { feature prefix-tag {
description description
"Support for 32-bit prefix tags"; "Support for 32-bit prefix tags.";
reference "RFC5130 - A Policy Control Mechanism in reference
IS-IS Using Administrative Tags"; "RFC 5130: A Policy Control Mechanism in IS-IS Using
Administrative Tags";
} }
feature prefix-tag64 { feature prefix-tag64 {
description description
"Support for 64-bit prefix tags"; "Support for 64-bit prefix tags.";
reference "RFC5130 - A Policy Control Mechanism in reference
IS-IS Using Administrative Tags"; "RFC 5130: A Policy Control Mechanism in IS-IS Using
Administrative Tags";
} }
feature auto-cost { feature auto-cost {
description description
"Support for IS-IS interface metric computation "Support for an IS-IS interface metric computation
according to a reference bandwidth."; according to a reference bandwidth.";
} }
feature te-rid { feature te-rid {
description description
"Traffic-Engineering Router-ID."; "Traffic Engineering router ID.";
reference "RFC5305 - IS-IS Extensions for Traffic Engineering reference
RFC6119 - IPv6 Traffic Engineering in IS-IS"; "RFC 5305: IS-IS Extensions for Traffic Engineering
RFC 6119: IPv6 Traffic Engineering in IS-IS";
} }
feature max-ecmp { feature max-ecmp {
description description
"Setting maximum number of ECMP paths."; "Sets the maximum number of ECMP paths.";
} }
feature multi-topology { feature multi-topology {
description description
"Support for Multiple-Topology Routing (MTR)."; "Support for Multi-Topology (MT) Routing.";
reference "RFC5120 - M-IS-IS: Multi Topology Routing in IS-IS"; reference
"RFC 5120: M-ISIS: Multi Topology (MT) Routing in
Intermediate System to Intermediate Systems (IS-ISs)";
} }
feature nlpid-control { feature nlpid-control {
description description
"Support for the advertisement "Support for the advertisement of a Network Layer
of a Network Layer Protocol Identifier within IS-IS Protocol Identifier within an IS-IS configuration.";
configuration.";
} }
feature graceful-restart { feature graceful-restart {
description description
"IS-IS Graceful restart support."; "Support for IS-IS graceful restart.";
reference "RFC5306 - Restart Signaling in IS-IS"; reference
"RFC 8706: Restart Signaling for IS-IS";
} }
feature lsp-refresh { feature lsp-refresh {
description description
"Configuration of LSP refresh interval."; "Configuration of the LSP refresh interval.";
} }
feature maximum-area-addresses { feature maximum-area-addresses {
description description
"Support for maximum-area-addresses configuration."; "Support for 'maximum-area-addresses' configuration.";
} }
feature admin-control { feature admin-control {
description description
"Administrative control of the protocol state."; "Administrative control of the protocol state.";
} }
/* Type definitions */ /* Type definitions */
typedef circuit-id { typedef circuit-id {
skipping to change at page 34, line 28 skipping to change at line 1699
"Broadcast interface type."; "Broadcast interface type.";
} }
enum point-to-point { enum point-to-point {
description description
"Point-to-point interface type."; "Point-to-point interface type.";
} }
} }
description description
"This type defines the type of adjacency "This type defines the type of adjacency
to be established for the interface. to be established for the interface.
The interface-type determines the type 'interface-type' determines the type
of hello message that is used."; of Hello message that is used.";
} }
typedef level { typedef level {
type enumeration { type enumeration {
enum "level-1" { enum "level-1" {
description description
"This enum indicates L1-only capability."; "This enum indicates L1-only capability.";
} }
enum "level-2" { enum "level-2" {
description description
"This enum indicates L2-only capability."; "This enum indicates L2-only capability.";
} }
enum "level-all" { enum "level-all" {
description description
"This enum indicates capability for both levels."; "This enum indicates capability for both levels.";
} }
} }
default "level-all"; default "level-all";
description description
"This type defines IS-IS level of an object."; "This type defines the IS-IS level of an object.";
} }
typedef adj-state-type { typedef adj-state-type {
type enumeration { type enumeration {
enum "up" { enum "up" {
description description
"State indicates the adjacency is established."; "This state indicates that the adjacency is established.";
} }
enum "down" { enum "down" {
description description
"State indicates the adjacency is NOT established."; "This state indicates that the adjacency is
NOT established.";
} }
enum "init" { enum "init" {
description description
"State indicates the adjacency is establishing."; "This state indicates that the adjacency is being
established.";
} }
enum "failed" { enum "failed" {
description description
"State indicates the adjacency is failed."; "This state indicates that the adjacency has failed.";
} }
} }
description description
"This type defines states of an adjacency"; "This type defines the states of an adjacency.";
} }
typedef if-state-type { typedef if-state-type {
type enumeration { type enumeration {
enum "up" { enum "up" {
description "Up state."; description
"'up' state.";
} }
enum "down" { enum "down" {
description "Down state"; description
"'down' state.";
} }
} }
description description
"This type defines the state of an interface"; "This type defines the state of an interface.";
} }
typedef level-number { typedef level-number {
type uint8 { type uint8 {
range "1 .. 2"; range "1 .. 2";
} }
description description
"This type defines the current IS-IS level."; "This type defines the current IS-IS level.";
} }
typedef lsp-id { typedef lsp-id {
type string { type string {
pattern pattern
'[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]' '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]'
+'{4}\.[0-9][0-9]-[0-9][0-9]'; +'{4}\.[0-9][0-9]-[0-9][0-9]';
} }
description description
"This type defines the IS-IS LSP ID format using a "This type defines the IS-IS LSP ID format using a
pattern. An example LSP ID is 0143.0438.AEF0.02-01"; pattern. An example LSP ID is '0143.0438.AEF0.02-01'.";
} }
typedef area-address { typedef area-address {
type string { type string {
pattern '[0-9A-Fa-f]{2}(\.[0-9A-Fa-f]{4}){0,6}'; pattern '[0-9A-Fa-f]{2}(\.[0-9A-Fa-f]{4}){0,6}';
} }
description description
"This type defines the area address format."; "This type defines the area address format.";
} }
typedef snpa { typedef snpa {
type string { type string {
length "0 .. 20"; length "0 .. 20";
} }
description description
"This type defines the Subnetwork Point "This type defines the Subnetwork Point of Attachment (SNPA)
of Attachment (SNPA) format. format. The SNPA should be encoded according to the rules
The SNPA should be encoded according to the rules specified for the particular type of subnetwork being used.
specified for the particular type of subnetwork As an example, for an Ethernet subnetwork, the SNPA is
being used. As an example, for an ethernet subnetwork, encoded as a Media Access Control (MAC) address, such as
the SNPA is encoded as a MAC address, such as,
'00aa.bbcc.ddee'."; '00aa.bbcc.ddee'.";
} }
typedef system-id { typedef system-id {
type string { type string {
pattern pattern
'[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}'; '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}';
} }
description description
"This type defines IS-IS system-id using pattern, "This type defines the IS-IS system ID by using a pattern.
An example system-id is 0143.0438.AEF0"; An example system ID pattern is '0143.0438.AEF0'.";
} }
typedef extended-system-id { typedef extended-system-id {
type string { type string {
pattern pattern
'[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.' '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.'
+'[0-9][0-9]'; +'[0-9][0-9]';
} }
description description
"This type defines IS-IS system-id using pattern. The extended "This type defines the IS-IS system ID using a pattern.
system-id contains the pseudonode number in addition to the 'extended-system-id' contains the pseudonode number
system-id. in addition to the system ID.
An example system-id is 0143.0438.AEF0.00"; An example system ID pattern is '0143.0438.AEF0.00'.";
} }
typedef wide-metric { typedef wide-metric {
type uint32 { type uint32 {
range "0 .. 16777215"; range "0 .. 16777215";
} }
description description
"This type defines wide style format of IS-IS metric."; "This type defines the wide-style format of an IS-IS metric.";
} }
typedef std-metric { typedef std-metric {
type uint8 { type uint8 {
range "0 .. 63"; range "0 .. 63";
} }
description description
"This type defines old style format of IS-IS metric."; "This type defines the old-style format of the IS-IS metric.";
} }
typedef mesh-group-state { typedef mesh-group-state {
type enumeration { type enumeration {
enum "mesh-inactive" { enum "mesh-inactive" {
description description
"Interface is not part of a mesh group."; "The interface is not part of a mesh group.";
} }
enum "mesh-set" { enum "mesh-set" {
description description
"Interface is part of a mesh group."; "The interface is part of a mesh group.";
} }
enum "mesh-blocked" { enum "mesh-blocked" {
description description
"LSPs must not be flooded over this interface."; "LSPs must not be flooded over this interface.";
} }
} }
description description
"This type describes mesh group state of an interface"; "This type describes the mesh group state of an interface.";
} }
/* Grouping for notifications */ /* Grouping for notifications */
grouping notification-instance-hdr { grouping notification-instance-hdr {
description description
"Instance specific IS-IS notification data grouping"; "Instance-specific IS-IS notification data grouping.";
leaf routing-protocol-name { leaf routing-protocol-name {
type leafref { type leafref {
path "/rt:routing/rt:control-plane-protocols/" path "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:name"; + "rt:control-plane-protocol/rt:name";
} }
description "Name of the IS-IS instance."; description
"Name of the IS-IS instance.";
} }
leaf isis-level { leaf isis-level {
type level; type level;
description "IS-IS level of the instance."; description
"IS-IS level of the instance.";
} }
} }
grouping notification-interface-hdr { grouping notification-interface-hdr {
description description
"Interface specific IS-IS notification data grouping"; "Interface-specific IS-IS notification data grouping.";
leaf interface-name { leaf interface-name {
type if:interface-ref; type if:interface-ref;
description "IS-IS interface name"; description
"IS-IS interface name.";
} }
leaf interface-level { leaf interface-level {
type level; type level;
description "IS-IS level of the interface."; description
"IS-IS level of the interface.";
} }
leaf extended-circuit-id { leaf extended-circuit-id {
type extended-circuit-id; type extended-circuit-id;
description "Extended circuit-id of the interface."; description
"Extended circuit ID of the interface.";
} }
} }
/* Groupings for IP Fast Reroute */ /* Groupings for IP Fast Reroute */
grouping instance-fast-reroute-config { grouping instance-fast-reroute-config {
description description
"This group defines global configuration of IP "This group defines the global configuration of IP
Fast ReRoute (FRR)."; Fast Reroute (FRR).";
container fast-reroute { container fast-reroute {
if-feature fast-reroute; if-feature fast-reroute;
description description
"This container may be augmented with global "This container may be augmented with global
parameters for IP-FRR."; parameters for IP FRR.";
container lfa { container lfa {
if-feature lfa; if-feature lfa;
description description
"This container may be augmented with "This container may be augmented with
global parameters for Loop-Free Alternatives (LFA). global parameters for Loop-Free Alternates (LFAs).
Container creation has no effect on LFA activation."; The creation of this container has no effect on
LFA activation.";
} }
} }
} }
grouping interface-lfa-config { grouping interface-lfa-config {
leaf candidate-enable { leaf candidate-enable {
type boolean; type boolean;
default "true"; default "true";
description description
"Enable the interface to be used as backup."; "Enables the interface to be used as a backup.";
} }
leaf enable { leaf enable {
type boolean; type boolean;
default false; default false;
description description
"Activates LFA - Per-prefix LFA computation "Activates the LFA. Per-prefix LFA computation is assumed.";
is assumed.";
} }
container remote-lfa { container remote-lfa {
if-feature remote-lfa; if-feature remote-lfa;
leaf enable { leaf enable {
type boolean; type boolean;
default false; default false;
description description
"Activates Remote LFA (R-LFA)."; "Activates the remote LFA (R-LFA).";
} }
description description
"Remote LFA configuration."; "Remote LFA configuration.";
} }
description "Grouping for LFA interface configuration"; description
"Grouping for LFA interface configuration.";
} }
grouping interface-fast-reroute-config { grouping interface-fast-reroute-config {
description description
"This group defines interface configuration of IP-FRR."; "This group defines the interface configuration of IP FRR.";
container fast-reroute { container fast-reroute {
if-feature fast-reroute; if-feature fast-reroute;
container lfa { container lfa {
if-feature lfa; if-feature lfa;
uses interface-lfa-config; uses interface-lfa-config;
container level-1 { container level-1 {
uses interface-lfa-config; uses interface-lfa-config;
description description
"LFA level 1 config"; "LFA level-1 configuration.";
} }
container level-2 { container level-2 {
uses interface-lfa-config; uses interface-lfa-config;
description description
"LFA level 2 config"; "LFA level-2 configuration.";
} }
description description
"LFA configuration."; "LFA configuration.";
} }
description description
"Interface IP Fast-reroute configuration."; "Interface IP FRR configuration.";
} }
} }
grouping instance-fast-reroute-state { grouping instance-fast-reroute-state {
description "IPFRR state data grouping"; description
"IP FRR state data grouping.";
container protected-routes { container protected-routes {
config false; config false;
list address-family-stats { list address-family-stats {
key "address-family prefix alternate"; key "address-family prefix alternate";
leaf address-family { leaf address-family {
type iana-rt-types:address-family; type iana-rt-types:address-family;
description description
"Address-family"; "Address family.";
} }
leaf prefix { leaf prefix {
type inet:ip-prefix; type inet:ip-prefix;
description description
"Protected prefix."; "Protected prefix.";
} }
leaf alternate { leaf alternate {
type inet:ip-address; type inet:ip-address;
description description
"Alternate next hop for the prefix."; "Alternate next hop for the prefix.";
skipping to change at page 40, line 40 skipping to change at line 2010
leaf alternate-type { leaf alternate-type {
type identityref { type identityref {
base frr-alternate-type; base frr-alternate-type;
} }
description description
"Type of alternate."; "Type of alternate.";
} }
leaf best { leaf best {
type boolean; type boolean;
description description
"Is set when the alternate is the preferred one, "Set when the alternate is the preferred alternate;
is clear otherwise."; clear otherwise.";
} }
leaf non-best-reason { leaf non-best-reason {
type string { type string {
length "1..255"; length "1..255";
} }
description description
"Information field to describe why the alternate "Information field that explains why the alternate
is not best. The length should be limited to 255 is not the best alternate. The length should be
unicode characters. The expected format is a single limited to 255 Unicode characters. The expected format
line text."; is a single line of text.";
} }
container protection-available { container protection-available {
leaf-list protection-types { leaf-list protection-types {
type identityref { type identityref {
base frr-protection-available-type; base frr-protection-available-type;
} }
description "This list contains a set of protection description
types defined as identities. "This list contains a set of protection
An identity must be added for each type of types defined as identities.
protection provided by the alternate. An identity must be added for each type of
As an example, if an alternate provides protection provided by the alternate.
SRLG, node and link protection, three As an example, if an alternate provides
identities must be added in this list: SRLG, node, and link protection, three
one for SRLG protection, one for node identities must be added in this list:
protection, one for link protection."; one for SRLG protection, one for node
protection, and one for link protection.";
} }
description "Protection types provided by the alternate."; description
"Protection types provided by the alternate.";
} }
leaf alternate-metric1 { leaf alternate-metric1 {
type uint32; type uint32;
description description
"Metric from Point of Local Repair (PLR) to "Metric from the Point of Local Repair (PLR) to the
destination through the alternate path."; destination through the alternate path.";
} }
leaf alternate-metric2 { leaf alternate-metric2 {
type uint32; type uint32;
description description
"Metric from PLR to the alternate node"; "Metric from the PLR to the alternate node.";
} }
leaf alternate-metric3 { leaf alternate-metric3 {
type uint32; type uint32;
description description
"Metric from alternate node to the destination"; "Metric from the alternate node to the destination.";
} }
description description
"Per-AF protected prefix statistics."; "Per-address-family protected prefix statistics.";
} }
description description
"List of prefixes that are protected."; "List of prefixes that are protected.";
} }
container unprotected-routes { container unprotected-routes {
config false; config false;
list prefixes { list prefixes {
key "address-family prefix"; key "address-family prefix";
leaf address-family { leaf address-family {
type iana-rt-types:address-family; type iana-rt-types:address-family;
description "Address-family"; description
"Address family.";
} }
leaf prefix { leaf prefix {
type inet:ip-prefix; type inet:ip-prefix;
description "Unprotected prefix."; description
"Unprotected prefix.";
} }
description description
"Per-AF unprotected prefix statistics."; "Per-address-family unprotected prefix statistics.";
} }
description description
"List of prefixes that are not protected."; "List of prefixes that are not protected.";
} }
list protection-statistics { list protection-statistics {
key frr-protection-method; key frr-protection-method;
config false; config false;
leaf frr-protection-method { leaf frr-protection-method {
type identityref { type identityref {
base frr-protection-method; base frr-protection-method;
} }
description "Protection method used."; description
"Protection method used.";
} }
list address-family-stats { list address-family-stats {
key address-family; key address-family;
leaf address-family { leaf address-family {
type iana-rt-types:address-family; type iana-rt-types:address-family;
description
description "Address-family"; "Address family.";
} }
leaf total-routes { leaf total-routes {
type yang:gauge32; type yang:gauge32;
description "Total prefixes."; description
"Total prefixes.";
} }
leaf unprotected-routes { leaf unprotected-routes {
type yang:gauge32; type yang:gauge32;
description description
"Total prefixes that are not protected."; "Total prefixes that are not protected.";
} }
leaf protected-routes { leaf protected-routes {
type yang:gauge32; type yang:gauge32;
description description
"Total prefixes that are protected."; "Total prefixes that are protected.";
skipping to change at page 43, line 4 skipping to change at line 2124
} }
leaf protected-routes { leaf protected-routes {
type yang:gauge32; type yang:gauge32;
description description
"Total prefixes that are protected."; "Total prefixes that are protected.";
} }
leaf link-protected-routes { leaf link-protected-routes {
type yang:gauge32; type yang:gauge32;
description description
"Total prefixes that are link protected."; "Total prefixes that are link protected.";
} }
leaf node-protected-routes { leaf node-protected-routes {
type yang:gauge32; type yang:gauge32;
description description
"Total prefixes that are node protected."; "Total prefixes that are node protected.";
} }
description description
"Per-AF protected prefix statistics."; "Per-address-family protected prefix statistics.";
} }
description "Global protection statistics."; description
"Global protection statistics.";
} }
} }
/* Route table and local RIB groupings */ /* Routing table and local Routing Information Base (RIB)
groupings */
grouping local-rib { grouping local-rib {
description "Local-rib - RIB for Routes computed by the local description
IS-IS routing instance."; "Local RIB: RIB for routes computed by the local IS-IS
routing instance.";
container local-rib { container local-rib {
config false; config false;
description "Local-rib."; description
"Local RIB.";
list route { list route {
key "prefix"; key "prefix";
description "Routes"; description
"Routes.";
leaf prefix { leaf prefix {
type inet:ip-prefix; type inet:ip-prefix;
description "Destination prefix."; description
"Destination prefix.";
} }
container next-hops { container next-hops {
description "Next hops for the route."; description
"Next hops for the route.";
list next-hop { list next-hop {
key "next-hop"; key "next-hop";
description "List of next hops for the route"; description
"List of next hops for the route.";
leaf outgoing-interface { leaf outgoing-interface {
type if:interface-ref; type if:interface-ref;
description description
"Name of the outgoing interface."; "Name of the outgoing interface.";
} }
leaf next-hop { leaf next-hop {
type inet:ip-address; type inet:ip-address;
description "Next hop address."; description
"Next-hop address.";
} }
} }
} }
leaf metric { leaf metric {
type uint32; type uint32;
description "Metric for this route."; description
"Metric for this route.";
} }
leaf level { leaf level {
type level-number; type level-number;
description "Level number for this route."; description
"Level number for this route.";
} }
leaf route-tag { leaf route-tag {
type uint32; type uint32;
description "Route tag for this route."; description
"Route tag for this route.";
} }
} }
} }
} }
grouping route-content { grouping route-content {
description description
"IS-IS protocol-specific route properties grouping."; "IS-IS protocol-specific route properties grouping.";
leaf metric { leaf metric {
type uint32; type uint32;
description "IS-IS metric of a route."; description
"IS-IS metric of a route.";
} }
leaf-list tag { leaf-list tag {
type uint64; type uint64;
description description
"List of tags associated with the route. "List of tags associated with the route. This list
This list provides a consolidated view of both provides a consolidated view of both 32-bit and 64-bit
32-bit and 64-bit tags (RFC5130) available for the prefix."; tags (RFC 5130) available for the prefix.";
reference
"RFC 5130: A Policy Control Mechanism in IS-IS Using
Administrative Tags";
} }
leaf route-type { leaf route-type {
type enumeration { type enumeration {
enum l2-intra-area { enum l2-intra-area {
description "Level 2 internal route. As per RFC5302, description
the prefix is directly connected to the "Level-2 internal route. As per RFC 5302,
advertising router. It cannot be the prefix is directly connected to the
distinguished from an L1->L2 inter-area advertising router. It cannot be
route."; distinguished from an L1->L2 inter-area
route.";
reference
"RFC 5302: Domain-Wide Prefix Distribution with
Two-Level IS-IS";
} }
enum l1-intra-area { enum l1-intra-area {
description "Level 1 internal route. As per RFC5302, description
the prefix is directly connected to the "Level-1 internal route. As per RFC 5302,
advertising router."; the prefix is directly connected to the
advertising router.";
} }
enum l2-external { enum l2-external {
description "Level 2 external route. As per RFC5302, description
such a route is learned from other IGPs. "Level-2 external route. As per RFC 5302,
It cannot be distinguished from an L1->L2 such a route is learned from other IGPs.
inter-area external route."; It cannot be distinguished from an L1->L2
inter-area external route.";
} }
enum l1-external { enum l1-external {
description "Level 1 external route. As per RFC5302, description
such a route is learned from other IGPs."; "Level-1 external route. As per RFC 5302,
such a route is learned from other IGPs.";
} }
enum l1-inter-area { enum l1-inter-area {
description "These prefixes are learned via L2 routing."; description
"These prefixes are learned via L2 routing.";
} }
enum l1-inter-area-external { enum l1-inter-area-external {
description "These prefixes are learned via L2 routing description
towards an l2-external route."; "These prefixes are learned via L2 routing
towards a level-2 external route.";
} }
} }
description "IS-IS route type."; description
"IS-IS route type.";
} }
} }
/* Grouping definitions for configuration and ops state */ /* Grouping definitions for configuration and operational states */
grouping adjacency-state { grouping adjacency-state {
container adjacencies { container adjacencies {
config false; config false;
list adjacency { list adjacency {
leaf neighbor-sys-type { leaf neighbor-sys-type {
type level; type level;
description description
"Level capability of neighboring system"; "Level capability of the neighboring system.";
} }
leaf neighbor-sysid { leaf neighbor-sysid {
type system-id; type system-id;
description description
"The system-id of the neighbor"; "The system ID of the neighbor.";
} }
leaf neighbor-extended-circuit-id { leaf neighbor-extended-circuit-id {
type extended-circuit-id; type extended-circuit-id;
description description
"Circuit ID of the neighbor"; "The circuit ID of the neighbor.";
} }
leaf neighbor-snpa { leaf neighbor-snpa {
type snpa; type snpa;
description description
"SNPA of the neighbor"; "The SNPA of the neighbor.";
} }
leaf usage { leaf usage {
type level; type level;
description description
"Define the level(s) activated for the adjacency. "Defines the level(s) activated for the adjacency.
On a p2p link this might be level 1 and 2, On a point-to-point link, this might be level 1 and
but on a LAN, the usage will be level 1 level 2, but on a LAN, the usage will be level 1
between neighbors at level 1 or level 2 between between neighbors at level 1 or level 2 between
neighbors at level 2."; neighbors at level 2.";
} }
leaf hold-timer { leaf hold-timer {
type rt-types:timer-value-seconds16; type rt-types:timer-value-seconds16;
units seconds; units seconds;
description description
"The holding time in seconds for this "The holding time (in seconds) for this adjacency.
adjacency. This value is based on This value is based on received Hello PDUs and the
received hello PDUs and the elapsed elapsed time since receipt.";
time since receipt.";
} }
leaf neighbor-priority { leaf neighbor-priority {
type uint8 { type uint8 {
range "0 .. 127"; range "0 .. 127";
} }
description description
"Priority of the neighboring IS for becoming "Priority of the neighboring IS for becoming the
the DIS."; Designated Intermediate System (DIS).";
} }
leaf lastuptime { leaf lastuptime {
type yang:timestamp; type yang:timestamp;
description description
"When the adjacency most recently entered "When the adjacency most recently entered the
state 'up', measured in hundredths of a 'up' state, measured in hundredths of a
second since the last reinitialization of second since the last reinitialization of
the network management subsystem. the network management subsystem.
The value is 0 if the adjacency has never The value is 0 if the adjacency has never
been in state 'up'."; been in the 'up' state.";
} }
leaf state { leaf state {
type adj-state-type; type adj-state-type;
description description
"This leaf describes the state of the interface."; "This leaf describes the state of the interface.";
} }
description description
"List of operational adjacencies."; "List of operational adjacencies.";
} }
description description
"This container lists the adjacencies of "This container lists the adjacencies of
the local node."; the local node.";
} }
description description
"Adjacency state"; "Adjacency state.";
} }
grouping admin-control { grouping admin-control {
leaf enable { leaf enable {
if-feature admin-control; if-feature admin-control;
type boolean; type boolean;
default "true"; default "true";
description description
"Enable/Disable the protocol."; "Enables or disables the protocol.";
} }
description description
"Grouping for admin control."; "Grouping for administrative control.";
} }
grouping ietf-spf-delay { grouping ietf-spf-delay {
leaf initial-delay { leaf initial-delay {
type rt-types:timer-value-milliseconds; type rt-types:timer-value-milliseconds;
units msec; units msec;
description description
"Delay used while in QUIET state (milliseconds)."; "Delay used while in the QUIET state (milliseconds).";
} }
leaf short-delay { leaf short-delay {
type rt-types:timer-value-milliseconds; type rt-types:timer-value-milliseconds;
units msec; units msec;
description description
"Delay used while in SHORT_WAIT state (milliseconds)."; "Delay used while in the SHORT_WAIT state (milliseconds).";
} }
leaf long-delay { leaf long-delay {
type rt-types:timer-value-milliseconds; type rt-types:timer-value-milliseconds;
units msec; units msec;
description description
"Delay used while in LONG_WAIT state (milliseconds)."; "Delay used while in the LONG_WAIT state (milliseconds).";
} }
leaf hold-down { leaf hold-down {
type rt-types:timer-value-milliseconds; type rt-types:timer-value-milliseconds;
units msec; units msec;
description description
"Timer used to consider an IGP stability period "This timer value defines the period without any changes
(milliseconds)."; for the IGP to be considered stable (in milliseconds).";
} }
leaf time-to-learn { leaf time-to-learn {
type rt-types:timer-value-milliseconds; type rt-types:timer-value-milliseconds;
units msec; units msec;
description description
"Duration used to learn all the IGP events "Duration used to learn all the IGP events
related to a single component failure (milliseconds)."; related to a single component failure (milliseconds).";
} }
leaf current-state { leaf current-state {
type enumeration { type enumeration {
enum "quiet" { enum "quiet" {
description "QUIET state"; description
"QUIET state.";
} }
enum "short-wait" { enum "short-wait" {
description "SHORT_WAIT state"; description
"SHORT_WAIT state.";
} }
enum "long-wait" { enum "long-wait" {
description "LONG_WAIT state"; description
"LONG_WAIT state.";
} }
} }
config false; config false;
description description
"Current SPF back-off algorithm state."; "Current SPF Back-Off algorithm state.";
} }
leaf remaining-time-to-learn { leaf remaining-time-to-learn {
type rt-types:timer-value-milliseconds; type rt-types:timer-value-milliseconds;
units "msec"; units "msec";
config false; config false;
description description
"Remaining time until time-to-learn timer fires."; "Remaining time until the time-to-learn timer fires.";
} }
leaf remaining-hold-down { leaf remaining-hold-down {
type rt-types:timer-value-milliseconds; type rt-types:timer-value-milliseconds;
units "msec"; units "msec";
config false; config false;
description description
"Remaining time until hold-down timer fires."; "Remaining time until the hold-down timer fires.";
} }
leaf last-event-received { leaf last-event-received {
type yang:timestamp; type yang:timestamp;
config false; config false;
description description
"Time of last IGP event received"; "Time of the last IGP event received.";
} }
leaf next-spf-time { leaf next-spf-time {
type yang:timestamp; type yang:timestamp;
config false; config false;
description description
"Time when next SPF has been scheduled."; "Time when the next SPF has been scheduled.";
} }
leaf last-spf-time { leaf last-spf-time {
type yang:timestamp; type yang:timestamp;
config false; config false;
description description
"Time of last SPF computation."; "Time of the last SPF computation.";
} }
description description
"Grouping for IETF SPF delay configuration and state."; "Grouping for IETF SPF delay configuration and state.";
} }
grouping node-tag-config { grouping node-tag-config {
description description
"IS-IS node tag config state."; "IS-IS node tag configuration state.";
container node-tags { container node-tags {
if-feature node-tag; if-feature node-tag;
list node-tag { list node-tag {
key tag; key tag;
leaf tag { leaf tag {
type uint32; type uint32;
description description
"Node tag value."; "Node tag value.";
} }
description description
"List of tags."; "List of tags.";
} }
description description
"Container for node admin tags."; "Container for node administrative tags.";
} }
} }
grouping authentication-global-cfg { grouping authentication-global-cfg {
choice authentication-type { choice authentication-type {
case key-chain { case key-chain {
if-feature key-chain; if-feature key-chain;
leaf key-chain { leaf key-chain {
type key-chain:key-chain-ref; type key-chain:key-chain-ref;
description description
"Reference to a key-chain."; "Reference to a key chain.";
} }
} }
case password { case password {
leaf key { leaf key {
type string; type string;
description description
"This leaf specifies the authentication key. The "This leaf specifies the authentication key. The
length of the key may be dependent on the length of the key may be dependent on the
cryptographic algorithm."; cryptographic algorithm.";
} }
leaf crypto-algorithm { leaf crypto-algorithm {
type identityref { type identityref {
base key-chain:crypto-algorithm; base key-chain:crypto-algorithm;
} }
description description
"Cryptographic algorithm associated with key."; "Cryptographic algorithm associated with a key.";
} }
} }
description "Choice of authentication."; description
"Choice of authentication.";
} }
description "Grouping for global authentication config."; description
"Grouping for global authentication configuration.";
} }
grouping metric-type-global-cfg { grouping metric-type-global-cfg {
leaf value { leaf value {
type enumeration { type enumeration {
enum wide-only { enum wide-only {
description description
"Advertise new metric style only (RFC5305)"; "Advertises the new metric style only (RFC 5305).";
reference
"RFC 5305: IS-IS Extensions for Traffic Engineering";
} }
enum old-only { enum old-only {
description description
"Advertise old metric style only (RFC1195)"; "Advertises the old metric style only (RFC 1195).";
reference
"RFC 1195: Use of OSI IS-IS for routing in TCP/IP and
dual environments";
} }
enum both { enum both {
description "Advertise both metric styles"; description
"Advertises both metric styles.";
} }
} }
description description
"Type of metric to be generated: "Type of metric to be generated:
- wide-only means only new metric style
is generated, - 'wide-only' means that only a new metric style
- old-only means that only old-style metric is generated.
is generated, - 'old-only' means that only an old metric style
- both means that both are advertised. is generated.
This leaf is only affecting IPv4 metrics."; - 'both' means that both are advertised.
This leaf only affects IPv4 metrics.";
} }
description description
"Grouping for global metric style config."; "Grouping for global metric style configuration.";
} }
grouping metric-type-global-cfg-with-default { grouping metric-type-global-cfg-with-default {
leaf value { leaf value {
type enumeration { type enumeration {
enum wide-only { enum wide-only {
description description
"Advertise new metric style only (RFC5305)"; "Advertises the new metric style only (RFC 5305).";
reference
"RFC 5305: IS-IS Extensions for Traffic Engineering";
} }
enum old-only { enum old-only {
description description
"Advertise old metric style only (RFC1195)"; "Advertises the old metric style only (RFC 1195).";
reference
"RFC 1195: Use of OSI IS-IS for routing in TCP/IP and
dual environments";
} }
enum both { enum both {
description "Advertise both metric styles"; description
"Advertises both metric styles.";
} }
} }
default wide-only; default wide-only;
description description
"Type of metric to be generated: "Type of metric to be generated:
- wide-only means only new metric style
is generated, - 'wide-only' means that only a new metric style
- old-only means that only old-style metric is generated.
is generated, - 'old-only' means that only an old metric style
- both means that both are advertised. is generated.
This leaf is only affecting IPv4 metrics."; - 'both' means that both are advertised.
This leaf only affects IPv4 metrics.";
} }
description description
"Grouping for global metric style config."; "Grouping for global metric style configuration.";
} }
grouping default-metric-global-cfg { grouping default-metric-global-cfg {
leaf value { leaf value {
type wide-metric; type wide-metric;
description "Value of the metric"; description
"Value of the metric.";
} }
description description
"Global default metric config grouping."; "Global default metric configuration grouping.";
} }
grouping default-metric-global-cfg-with-default { grouping default-metric-global-cfg-with-default {
leaf value { leaf value {
type wide-metric; type wide-metric;
default "10"; default "10";
description "Value of the metric"; description
"Value of the metric.";
} }
description description
"Global default metric config grouping."; "Global default metric configuration grouping.";
} }
grouping overload-global-cfg { grouping overload-global-cfg {
leaf status { leaf status {
type boolean; type boolean;
default false; default false;
description description
"This leaf specifies the overload status."; "This leaf specifies the overload status.";
} }
description "Grouping for overload bit config."; description
"Grouping for overload bit configuration.";
} }
grouping overload-max-metric-global-cfg { grouping overload-max-metric-global-cfg {
leaf timeout { leaf timeout {
type rt-types:timer-value-seconds16; type rt-types:timer-value-seconds16;
units "seconds"; units "seconds";
description description
"Timeout (in seconds) of the overload condition."; "Timeout (in seconds) of the overload condition.";
} }
description description
"Overload maximum metric configuration grouping"; "Overload maximum metric configuration grouping.";
} }
grouping route-preference-global-cfg { grouping route-preference-global-cfg {
choice granularity { choice granularity {
case detail { case detail {
leaf internal { leaf internal {
type uint8; type uint8;
description description
"Protocol preference for internal routes."; "Protocol preference for internal routes.";
} }
skipping to change at page 52, line 37 skipping to change at line 2633
leaf default { leaf default {
type uint8; type uint8;
description description
"Protocol preference for all IS-IS routes."; "Protocol preference for all IS-IS routes.";
} }
} }
description description
"Choice for implementation of route preference."; "Choice for implementation of route preference.";
} }
description description
"Global route preference grouping"; "Global route preference grouping.";
} }
grouping hello-authentication-cfg { grouping hello-authentication-cfg {
choice authentication-type { choice authentication-type {
case key-chain { case key-chain {
if-feature key-chain; if-feature key-chain;
leaf key-chain { leaf key-chain {
type key-chain:key-chain-ref; type key-chain:key-chain-ref;
description "Reference to a key-chain."; description
"Reference to a key chain.";
} }
} }
case password { case password {
leaf key { leaf key {
type string; type string;
description "Authentication key specification - The description
length of the key may be dependent on the "Authentication key specification. The length of the
cryptographic algorithm."; key may be dependent on the cryptographic algorithm.";
} }
leaf crypto-algorithm { leaf crypto-algorithm {
type identityref { type identityref {
base key-chain:crypto-algorithm; base key-chain:crypto-algorithm;
} }
description description
"Cryptographic algorithm associated with key."; "Cryptographic algorithm associated with a key.";
} }
} }
description "Choice of authentication."; description
"Choice of authentication.";
} }
description "Grouping for hello authentication."; description
"Grouping for Hello authentication.";
} }
grouping hello-interval-cfg { grouping hello-interval-cfg {
leaf value { leaf value {
type rt-types:timer-value-seconds16; type rt-types:timer-value-seconds16;
units "seconds"; units "seconds";
description description
"Interval (in seconds) between successive hello "Interval (in seconds) between successive Hello
messages."; messages.";
} }
description "Interval between hello messages."; description
"Interval between Hello messages.";
} }
grouping hello-interval-cfg-with-default { grouping hello-interval-cfg-with-default {
leaf value { leaf value {
type rt-types:timer-value-seconds16; type rt-types:timer-value-seconds16;
units "seconds"; units "seconds";
default 10; default 10;
description description
"Interval (in seconds) between successive hello "Interval (in seconds) between successive Hello
messages."; messages.";
} }
description "Interval between hello messages."; description
"Interval between Hello messages.";
} }
grouping hello-multiplier-cfg { grouping hello-multiplier-cfg {
leaf value { leaf value {
type uint16; type uint16;
description description
"Number of missed hello messages prior to "Number of missed Hello messages prior to
declaring the adjacency down."; declaring the adjacency down.";
} }
description description
"Number of missed hello messages prior to "Grouping for the number of missed Hello messages prior to
adjacency down grouping."; declaring the adjacency down.";
} }
grouping hello-multiplier-cfg-with-default { grouping hello-multiplier-cfg-with-default {
leaf value { leaf value {
type uint16; type uint16;
default 3; default 3;
description description
"Number of missed hello messages prior to "Number of missed Hello messages prior to
declaring the adjacency down."; declaring the adjacency down.";
} }
description description
"Number of missed hello messages prior to "Grouping for the number of missed Hello messages prior to
adjacency down grouping."; declaring the adjacency down.";
} }
grouping priority-cfg { grouping priority-cfg {
leaf value { leaf value {
type uint8 { type uint8 {
range "0 .. 127"; range "0 .. 127";
} }
description description
"Priority of interface for DIS election."; "Priority of the interface for DIS election.";
} }
description "Interface DIS election priority grouping"; description
"Interface DIS election priority grouping.";
} }
grouping priority-cfg-with-default { grouping priority-cfg-with-default {
leaf value { leaf value {
type uint8 { type uint8 {
range "0 .. 127"; range "0 .. 127";
} }
default 64; default 64;
description description
"Priority of interface for DIS election."; "Priority of the interface for DIS election.";
} }
description "Interface DIS election priority grouping"; description
"Interface DIS election priority grouping.";
} }
grouping metric-cfg { grouping metric-cfg {
leaf value { leaf value {
type wide-metric; type wide-metric;
description "Metric value."; description
"Metric value.";
} }
description "Interface metric grouping"; description
"Interface metric grouping.";
} }
grouping metric-cfg-with-default { grouping metric-cfg-with-default {
leaf value { leaf value {
type wide-metric; type wide-metric;
default "10"; default "10";
description "Metric value."; description
"Metric value.";
} }
description "Interface metric grouping"; description
"Interface metric grouping.";
} }
grouping metric-parameters { grouping metric-parameters {
container metric-type { container metric-type {
uses metric-type-global-cfg-with-default; uses metric-type-global-cfg-with-default;
container level-1 { container level-1 {
uses metric-type-global-cfg; uses metric-type-global-cfg;
description "level-1 specific configuration"; description
"Configuration specific to level 1.";
} }
container level-2 { container level-2 {
uses metric-type-global-cfg; uses metric-type-global-cfg;
description "level-2 specific configuration"; description
"Configuration specific to level 2.";
} }
description "Metric style global configuration"; description
"Metric style global configuration.";
} }
container default-metric { container default-metric {
uses default-metric-global-cfg-with-default; uses default-metric-global-cfg-with-default;
container level-1 { container level-1 {
uses default-metric-global-cfg; uses default-metric-global-cfg;
description "level-1 specific configuration"; description
"Configuration specific to level 1.";
} }
container level-2 { container level-2 {
uses default-metric-global-cfg; uses default-metric-global-cfg;
description "level-2 specific configuration"; description
"Configuration specific to level 2.";
} }
description "Default metric global configuration"; description
"Default metric global configuration.";
} }
container auto-cost { container auto-cost {
if-feature auto-cost; if-feature auto-cost;
description description
"Interface Auto-cost configuration state."; "Interface auto-cost configuration state.";
leaf enable { leaf enable {
type boolean; type boolean;
description description
"Enable/Disable interface auto-cost."; "Enables or disables interface auto-cost.";
} }
leaf reference-bandwidth { leaf reference-bandwidth {
when "../enable = 'true'" { when "../enable = 'true'" {
description "Only when auto cost is enabled"; description
"Only when auto-cost is enabled.";
} }
type uint32 { type uint32 {
range "1..4294967"; range "1..4294967";
} }
units Mbits; units Mbits;
description description
"Configure reference bandwidth used to automatically "Configures the reference bandwidth used to automatically
determine interface cost (Mbits). The cost is the determine the interface cost (Mbits). The cost is the
reference bandwidth divided by the interface speed reference bandwidth divided by the interface speed,
with 1 being the minimum cost."; with 1 being the minimum cost.";
} }
} }
description "Grouping for global metric parameters."; description
"Grouping for global metric parameters.";
} }
grouping high-availability-parameters { grouping high-availability-parameters {
container graceful-restart { container graceful-restart {
if-feature graceful-restart; if-feature graceful-restart;
leaf enable { leaf enable {
type boolean; type boolean;
default false; default false;
description "Enable graceful restart."; description
"Enables graceful restart.";
} }
leaf restart-interval { leaf restart-interval {
type rt-types:timer-value-seconds16; type rt-types:timer-value-seconds16;
units "seconds"; units "seconds";
description description
"Interval (in seconds) to attempt graceful restart prior "Interval (in seconds) to attempt graceful restart prior
to failure."; to failure.";
} }
leaf helper-enable { leaf helper-enable {
type boolean; type boolean;
default "true"; default "true";
description description
"Enable local IS-IS router as graceful restart helper."; "Enables a local IS-IS router as a graceful restart
helper.";
} }
description "Graceful-Restart Configuration."; description
"Configuration of graceful restart.";
} }
container nsr { container nsr {
if-feature nsr; if-feature nsr;
description "Non-Stop Routing (NSR) configuration."; description
"Non-Stop Routing (NSR) configuration.";
leaf enable { leaf enable {
type boolean; type boolean;
default false; default false;
description "Enable/Disable Non-Stop Routing (NSR)."; description
"Enables or disables NSR.";
} }
} }
description "Grouping for High Availability parameters."; description
"Grouping for high-availability parameters.";
} }
grouping authentication-parameters { grouping authentication-parameters {
container authentication { container authentication {
uses authentication-global-cfg; uses authentication-global-cfg;
container level-1 { container level-1 {
uses authentication-global-cfg; uses authentication-global-cfg;
description "level-1 specific configuration"; description
"Configuration specific to level 1.";
} }
container level-2 { container level-2 {
uses authentication-global-cfg; uses authentication-global-cfg;
description "level-2 specific configuration"; description
"Configuration specific to level 2.";
} }
description "Authentication global configuration for description
both LSPs and SNPs."; "Authentication global configuration for
both LSPs and Sequence Number PDUs (SNPs).";
} }
description "Grouping for authentication parameters"; description
"Grouping for authentication parameters.";
} }
grouping address-family-parameters { grouping address-family-parameters {
container address-families { container address-families {
if-feature nlpid-control; if-feature nlpid-control;
list address-family-list { list address-family-list {
key address-family; key address-family;
leaf address-family { leaf address-family {
type iana-rt-types:address-family; type iana-rt-types:address-family;
description "Address-family"; description
"Address family.";
} }
leaf enable { leaf enable {
type boolean; type boolean;
description "Activate the address family."; description
"Activates the address family.";
} }
description description
"List of address families and whether or not they "List of address families and whether or not they
are activated."; are activated.";
} }
description "Address Family configuration"; description
"Address family configuration.";
} }
description "Grouping for address family parameters."; description
"Grouping for address family parameters.";
} }
grouping mpls-parameters { grouping mpls-parameters {
container mpls { container mpls {
container te-rid { container te-rid {
if-feature te-rid; if-feature te-rid;
description description
"Stable ISIS Router IP Address used for Traffic "Stable IS-IS router IP address used for Traffic
Engineering"; Engineering.";
leaf ipv4-router-id { leaf ipv4-router-id {
type inet:ipv4-address; type inet:ipv4-address;
description description
"Router ID value that would be used in TLV 134."; "Router ID value that would be used in TLV 134.";
} }
leaf ipv6-router-id { leaf ipv6-router-id {
type inet:ipv6-address; type inet:ipv6-address;
description description
"Router ID value that would be used in TLV 140."; "Router ID value that would be used in TLV 140.";
} }
} }
container ldp { container ldp {
container igp-sync { container igp-sync {
if-feature ldp-igp-sync; if-feature ldp-igp-sync;
description description
"This container may be augmented with global "This container may be augmented with global
parameters for igp-ldp-sync."; parameters for LDP IGP synchronization.";
} }
description "LDP configuration."; description
"LDP configuration.";
} }
description "MPLS configuration"; description
"MPLS configuration.";
} }
description "Grouping for MPLS global parameters."; description
"Grouping for MPLS global parameters.";
} }
grouping lsp-parameters { grouping lsp-parameters {
leaf lsp-mtu { leaf lsp-mtu {
type uint16; type uint16;
units "bytes"; units "bytes";
default 1492; default 1492;
description description
"Maximum size of an LSP PDU in bytes."; "Maximum size of an LSP PDU in bytes.";
} }
skipping to change at page 59, line 4 skipping to change at line 2971
units "seconds"; units "seconds";
description description
"Lifetime of the router's LSPs in seconds."; "Lifetime of the router's LSPs in seconds.";
} }
leaf lsp-refresh { leaf lsp-refresh {
if-feature lsp-refresh; if-feature lsp-refresh;
type rt-types:timer-value-seconds16; type rt-types:timer-value-seconds16;
units "seconds"; units "seconds";
description description
"Refresh interval of the router's LSPs in seconds."; "Refresh interval of the router's LSPs in seconds.";
} }
leaf poi-tlv { leaf poi-tlv {
if-feature poi-tlv; if-feature poi-tlv;
type boolean; type boolean;
default false; default false;
description description
"Enable advertisement of IS-IS Purge Originator "Enables the advertisement of the IS-IS Purge Originator
Identification TLV."; Identification TLV.";
} }
description "Grouping for LSP global parameters."; description
"Grouping for LSP global parameters.";
} }
grouping spf-parameters { grouping spf-parameters {
container spf-control { container spf-control {
leaf paths { leaf paths {
if-feature max-ecmp; if-feature max-ecmp;
type uint16 { type uint16 {
range "1..65535"; range "1..65535";
} }
description description
"Maximum number of Equal-Cost Multi-Path (ECMP) paths."; "Maximum number of Equal-Cost Multi-Path (ECMP) paths.";
} }
container ietf-spf-delay { container ietf-spf-delay {
if-feature ietf-spf-delay; if-feature ietf-spf-delay;
uses ietf-spf-delay; uses ietf-spf-delay;
description "IETF SPF delay algorithm configuration."; description
"IETF SPF delay algorithm configuration.";
} }
description description
"SPF calculation control."; "SPF calculation control.";
} }
description "Grouping for SPF global parameters."; description
"Grouping for SPF global parameters.";
} }
grouping instance-config { grouping instance-config {
description "IS-IS global configuration grouping"; description
"IS-IS global configuration grouping.";
uses admin-control; uses admin-control;
leaf level-type { leaf level-type {
type level; type level;
default "level-all"; default "level-all";
description description
"Level of an IS-IS node - can be level-1, "Level of an IS-IS node. Can be 'level-1', 'level-2', or
level-2 or level-all."; 'level-all'.";
} }
leaf system-id { leaf system-id {
type system-id; type system-id;
description "system-id of the node."; description
"System ID of the node.";
} }
leaf maximum-area-addresses { leaf maximum-area-addresses {
if-feature maximum-area-addresses; if-feature maximum-area-addresses;
type uint8; type uint8;
default 3; default 3;
description "Maximum areas supported."; description
"Maximum areas supported.";
} }
leaf-list area-address { leaf-list area-address {
type area-address; type area-address;
description description
"List of areas supported by the protocol instance."; "List of areas supported by the protocol instance.";
} }
uses lsp-parameters; uses lsp-parameters;
uses high-availability-parameters; uses high-availability-parameters;
uses node-tag-config; uses node-tag-config;
uses metric-parameters; uses metric-parameters;
uses authentication-parameters; uses authentication-parameters;
uses address-family-parameters; uses address-family-parameters;
uses mpls-parameters; uses mpls-parameters;
uses spf-parameters; uses spf-parameters;
uses instance-fast-reroute-config; uses instance-fast-reroute-config;
container preference { container preference {
uses route-preference-global-cfg; uses route-preference-global-cfg;
description "Router preference configuration for IS-IS description
protocol instance route installation"; "Router preference configuration for IS-IS
protocol instance route installation.";
} }
container overload { container overload {
uses overload-global-cfg; uses overload-global-cfg;
description "Router protocol instance overload state description
configuration"; "Router protocol instance overload state configuration.";
} }
container overload-max-metric { container overload-max-metric {
if-feature overload-max-metric; if-feature overload-max-metric;
uses overload-max-metric-global-cfg; uses overload-max-metric-global-cfg;
description description
"Router protocol instance overload maximum "Router protocol instance overload maximum
metric advertisement configuration."; metric advertisement configuration.";
} }
} }
skipping to change at page 61, line 16 skipping to change at line 3087
uses lsdb; uses lsdb;
uses local-rib; uses local-rib;
uses system-counters; uses system-counters;
uses instance-fast-reroute-state; uses instance-fast-reroute-state;
leaf discontinuity-time { leaf discontinuity-time {
type yang:date-and-time; type yang:date-and-time;
description description
"The time of the most recent occasion at which any one "The time of the most recent occasion at which any one
or more of this IS-IS instance's counters suffered a or more of this IS-IS instance's counters suffered a
discontinuity. If no such discontinuities have occurred discontinuity. If no such discontinuities have occurred
since the IS-IS instance was last re-initialized, then since the IS-IS instance was last reinitialized, then
this node contains the time the IS-IS instance was this node contains the time the IS-IS instance was
re-initialized which normally occurs when it was reinitialized, which normally occurs when it was
created."; created.";
} }
} }
grouping multi-topology-config { grouping multi-topology-config {
description "Per-topology configuration"; description
"Per-topology configuration.";
container default-metric { container default-metric {
uses default-metric-global-cfg; uses default-metric-global-cfg;
container level-1 { container level-1 {
uses default-metric-global-cfg; uses default-metric-global-cfg;
description "level-1 specific configuration"; description
"Configuration specific to level 1.";
} }
container level-2 { container level-2 {
uses default-metric-global-cfg; uses default-metric-global-cfg;
description "level-2 specific configuration"; description
"Configuration specific to level 2.";
} }
description "Default metric per-topology configuration"; description
"Default metric per-topology configuration.";
} }
uses node-tag-config; uses node-tag-config;
} }
grouping interface-config { grouping interface-config {
description "Interface configuration grouping"; description
"Interface configuration grouping.";
uses admin-control; uses admin-control;
leaf level-type { leaf level-type {
type level; type level;
default "level-all"; default "level-all";
description "IS-IS level of the interface."; description
"IS-IS level of the interface.";
} }
leaf lsp-pacing-interval { leaf lsp-pacing-interval {
type rt-types:timer-value-milliseconds; type rt-types:timer-value-milliseconds;
units "milliseconds"; units "milliseconds";
default 33; default 33;
description description
"Interval (in milli-seconds) between LSP "Interval (in milliseconds) between LSP transmissions.";
transmissions.";
} }
leaf lsp-retransmit-interval { leaf lsp-retransmit-interval {
type rt-types:timer-value-seconds16; type rt-types:timer-value-seconds16;
units "seconds"; units "seconds";
description description
"Interval (in seconds) between LSP "Interval (in seconds) between LSP retransmissions.";
retransmissions.";
} }
leaf passive { leaf passive {
type boolean; type boolean;
default "false"; default "false";
description description
"Indicates whether the interface is in passive mode (IS-IS "Indicates whether the interface is in passive mode (IS-IS
not running but network is advertised)."; is not running, but the network is advertised).";
} }
leaf csnp-interval { leaf csnp-interval {
type rt-types:timer-value-seconds16; type rt-types:timer-value-seconds16;
units "seconds"; units "seconds";
default 10; default 10;
description description
"Interval (in seconds) between CSNP messages."; "Interval (in seconds) between Complete Sequence Number
Packet (CSNP) messages.";
} }
container hello-padding { container hello-padding {
leaf enable { leaf enable {
type boolean; type boolean;
default "true"; default "true";
description description
"IS-IS Hello-padding activation - enabled by default."; "IS-IS Hello padding activation. Enabled by default.";
} }
description "IS-IS hello padding configuration."; description
"IS-IS Hello padding configuration.";
} }
leaf mesh-group-enable { leaf mesh-group-enable {
type mesh-group-state; type mesh-group-state;
description "IS-IS interface mesh-group state"; description
"IS-IS interface mesh group state.";
} }
leaf mesh-group { leaf mesh-group {
when "../mesh-group-enable = 'mesh-set'" { when "../mesh-group-enable = 'mesh-set'" {
description description
"Only valid when mesh-group-enable equals mesh-set"; "Only valid when 'mesh-group-enable' equals 'mesh-set'.";
} }
type uint8; type uint8;
description "IS-IS interface mesh-group ID."; description
"IS-IS interface mesh group ID.";
} }
leaf interface-type { leaf interface-type {
type interface-type; type interface-type;
default "broadcast"; default "broadcast";
description description
"Type of adjacency to be established for the interface. This "Type of adjacency to be established for the interface.
dictates the type of hello messages that are used."; This dictates the type of Hello messages that are used.";
} }
leaf-list tag { leaf-list tag {
if-feature prefix-tag; if-feature prefix-tag;
type uint32; type uint32;
description description
"List of tags associated with the interface."; "List of tags associated with the interface.";
} }
leaf-list tag64 { leaf-list tag64 {
if-feature prefix-tag64; if-feature prefix-tag64;
type uint64; type uint64;
description description
"List of 64-bit tags associated with the interface."; "List of 64-bit tags associated with the interface.";
} }
leaf node-flag { leaf node-flag {
if-feature node-flag; if-feature node-flag;
type boolean; type boolean;
default false; default false;
description description
"Set prefix as a node representative prefix."; "Sets the prefix as a node representative prefix.";
} }
container hello-authentication { container hello-authentication {
uses hello-authentication-cfg; uses hello-authentication-cfg;
container level-1 { container level-1 {
uses hello-authentication-cfg; uses hello-authentication-cfg;
description "level-1 specific configuration"; description
"Configuration specific to level 1.";
} }
container level-2 { container level-2 {
uses hello-authentication-cfg; uses hello-authentication-cfg;
description "level-2 specific configuration"; description
"Configuration specific to level 2.";
} }
description description
"Authentication type to be used in hello messages."; "Authentication type to be used in Hello messages.";
} }
container hello-interval { container hello-interval {
uses hello-interval-cfg-with-default; uses hello-interval-cfg-with-default;
container level-1 { container level-1 {
uses hello-interval-cfg; uses hello-interval-cfg;
description "level-1 specific configuration"; description
"Configuration specific to level 1.";
} }
container level-2 { container level-2 {
uses hello-interval-cfg; uses hello-interval-cfg;
description "level-2 specific configuration"; description
"Configuration specific to level 2.";
} }
description "Interval between hello messages."; description
"Interval between Hello messages.";
} }
container hello-multiplier { container hello-multiplier {
uses hello-multiplier-cfg-with-default; uses hello-multiplier-cfg-with-default;
container level-1 { container level-1 {
uses hello-multiplier-cfg; uses hello-multiplier-cfg;
description "level-1 specific configuration"; description
"Configuration specific to level 1.";
} }
container level-2 { container level-2 {
uses hello-multiplier-cfg; uses hello-multiplier-cfg;
description "level-2 specific configuration"; description
"Configuration specific to level 2.";
} }
description "Hello multiplier configuration."; description
"Hello multiplier configuration.";
} }
container priority { container priority {
must '../interface-type = "broadcast"' { must '../interface-type = "broadcast"' {
error-message error-message
"Priority only applies to broadcast interfaces."; "Priority only applies to broadcast interfaces.";
description "Check for broadcast interface."; description
"Checks for a broadcast interface.";
} }
uses priority-cfg-with-default; uses priority-cfg-with-default;
container level-1 { container level-1 {
uses priority-cfg; uses priority-cfg;
description "level-1 specific configuration"; description
"Configuration specific to level 1.";
} }
container level-2 { container level-2 {
uses priority-cfg; uses priority-cfg;
description "level-2 specific configuration"; description
"Configuration specific to level 2.";
} }
description "Priority for DIS election."; description
"Priority for DIS election.";
} }
container metric { container metric {
uses metric-cfg-with-default; uses metric-cfg-with-default;
container level-1 { container level-1 {
uses metric-cfg; uses metric-cfg;
description "level-1 specific configuration"; description
"Configuration specific to level 1.";
} }
container level-2 { container level-2 {
uses metric-cfg; uses metric-cfg;
description "level-2 specific configuration"; description
"Configuration specific to level 2.";
} }
description "Metric configuration."; description
"Metric configuration.";
} }
container bfd { container bfd {
if-feature bfd; if-feature bfd;
description "BFD Client Configuration."; description
"BFD client configuration.";
uses bfd-types:client-cfg-parms; uses bfd-types:client-cfg-parms;
reference "RFC YYYY - YANG Data Model for Bidirectional reference
Forwarding Detection (BFD). "RFC 9127: YANG Data Model for Bidirectional Forwarding
Detection (BFD)";
-- Note to RFC Editor Please replace YYYY with published FC
number for draft-ietf-bfd-yang.";
} }
container address-families { container address-families {
if-feature nlpid-control; if-feature nlpid-control;
list address-family-list { list address-family-list {
key address-family; key address-family;
leaf address-family { leaf address-family {
type iana-rt-types:address-family; type iana-rt-types:address-family;
description "Address-family"; description
"Address family.";
} }
description "List of AFs."; description
"List of address families.";
} }
description "Interface address-families"; description
"Interface address families.";
} }
container mpls { container mpls {
container ldp { container ldp {
leaf igp-sync { leaf igp-sync {
if-feature ldp-igp-sync; if-feature ldp-igp-sync;
type boolean; type boolean;
default false; default false;
description "Enables IGP/LDP synchronization"; description
"Enables IGP/LDP synchronization.";
} }
description "LDP protocol related configuration."; description
"Configuration related to LDP.";
} }
description "MPLS configuration for IS-IS interfaces"; description
"MPLS configuration for IS-IS interfaces.";
} }
uses interface-fast-reroute-config; uses interface-fast-reroute-config;
} }
grouping multi-topology-interface-config { grouping multi-topology-interface-config {
description "IS-IS interface topology configuration."; description
"IS-IS interface topology configuration.";
container metric { container metric {
uses metric-cfg; uses metric-cfg;
container level-1 { container level-1 {
uses metric-cfg; uses metric-cfg;
description "level-1 specific configuration"; description
"Configuration specific to level 1.";
} }
container level-2 { container level-2 {
uses metric-cfg; uses metric-cfg;
description "level-2 specific configuration"; description
"Configuration specific to level 2.";
} }
description "Metric IS-IS interface configuration."; description
"Metric IS-IS interface configuration.";
} }
} }
grouping interface-state { grouping interface-state {
description description
"IS-IS interface operational state."; "IS-IS interface operational state.";
uses adjacency-state; uses adjacency-state;
uses event-counters; uses event-counters;
uses packet-counters; uses packet-counters;
leaf discontinuity-time { leaf discontinuity-time {
type yang:date-and-time; type yang:date-and-time;
description description
"The time of the most recent occasion at which any one "The time of the most recent occasion at which any one
or more of this IS-IS interface's counters suffered a or more of this IS-IS interface's counters suffered a
discontinuity. If no such discontinuities have occurred discontinuity. If no such discontinuities have occurred
since the IS-IS interface was last re-initialized, then since the IS-IS interface was last reinitialized, then
this node contains the time the IS-IS interface was this node contains the time the IS-IS interface was
re-initialized which normally occurs when it was reinitialized, which normally occurs when it was
created."; created.";
} }
} }
/* Grouping for the hostname database */ /* Grouping for the hostname database */
grouping hostname-db { grouping hostname-db {
container hostnames { container hostnames {
config false; config false;
list hostname { list hostname {
key system-id; key system-id;
leaf system-id { leaf system-id {
type system-id; type system-id;
description description
"system-id associated with the hostname."; "System ID associated with the hostname.";
} }
leaf hostname { leaf hostname {
type string { type string {
length "1..255"; length "1..255";
} }
description description
"Hostname associated with the system-id "Hostname associated with the system ID
as defined in RFC5301."; as defined in RFC 5301.";
reference
"RFC 5301: Dynamic Hostname Exchange Mechanism
for IS-IS";
} }
description description
"List of system-id/hostname associations."; "List of system ID / hostname associations.";
} }
description description
"Hostname to system-id mapping database."; "Hostname-to-system-ID mapping database.";
} }
description description
"Grouping for hostname to system-id mapping database."; "Grouping for hostname-to-system-ID mapping database.";
} }
/* Groupings for counters */ /* Groupings for counters */
grouping system-counters { grouping system-counters {
container system-counters { container system-counters {
config false; config false;
list level { list level {
key level; key level;
leaf level { leaf level {
type level-number; type level-number;
description "IS-IS level."; description
"IS-IS level.";
} }
leaf corrupted-lsps { leaf corrupted-lsps {
type uint32; type uint32;
description description
"Number of corrupted in-memory LSPs detected. "Number of corrupted in-memory LSPs detected.
LSPs received from the wire with a bad LSPs received from the wire with a bad
checksum are silently dropped and not counted. checksum are silently dropped and not counted.
LSPs received from the wire with parse errors LSPs received from the wire with parse errors
are counted by lsp-errors."; are counted by 'lsp-errors'.";
} }
leaf authentication-type-fails { leaf authentication-type-fails {
type uint32; type uint32;
description description
"Number of authentication type mismatches."; "Number of authentication type mismatches.";
} }
leaf authentication-fails { leaf authentication-fails {
type uint32; type uint32;
description description
"Number of authentication key failures."; "Number of authentication key failures.";
} }
leaf database-overload { leaf database-overload {
type uint32; type uint32;
description description
"Number of times the database has become "Number of times the database has become
skipping to change at page 68, line 36 skipping to change at line 3478
than that of the receiving system."; than that of the receiving system.";
} }
leaf partition-changes { leaf partition-changes {
type uint32; type uint32;
description description
"Number of partition changes detected."; "Number of partition changes detected.";
} }
leaf lsp-errors { leaf lsp-errors {
type uint32; type uint32;
description description
"Number of LSPs with errors we have received."; "Number of LSPs received with errors.";
} }
leaf spf-runs { leaf spf-runs {
type uint32; type uint32;
description description
"Number of times we ran SPF at this level."; "Number of times we ran SPF at this level.";
} }
description description
"List of supported levels."; "List of supported levels.";
} }
description description
"List counters for the IS-IS protocol instance"; "List of counters for the IS-IS protocol instance.";
} }
description description
"Grouping for IS-IS system counters"; "Grouping for IS-IS system counters.";
} }
grouping event-counters { grouping event-counters {
container event-counters { container event-counters {
config false; config false;
leaf adjacency-changes { leaf adjacency-changes {
type uint32; type uint32;
description description
"The number of times an adjacency state change has "The number of times an adjacency state change has
occurred on this interface."; occurred on this interface.";
} }
leaf adjacency-number { leaf adjacency-number {
skipping to change at page 69, line 21 skipping to change at line 3512
occurred on this interface."; occurred on this interface.";
} }
leaf adjacency-number { leaf adjacency-number {
type uint32; type uint32;
description description
"The number of adjacencies on this interface."; "The number of adjacencies on this interface.";
} }
leaf init-fails { leaf init-fails {
type uint32; type uint32;
description description
"The number of times initialization of this "The number of times initialization of this interface has
interface has failed. This counts events such failed. This counts events such as Point-to-Point
as PPP NCP failures. Failures to form an Protocol (PPP) Network Control Protocol (NCP) failures.
adjacency are counted by adjacency-rejects."; Failures to form an adjacency are counted by
'adjacency-rejects'.";
} }
leaf adjacency-rejects { leaf adjacency-rejects {
type uint32; type uint32;
description description
"The number of times an adjacency has been "The number of times an adjacency has been
rejected on this interface."; rejected on this interface.";
} }
leaf id-len-mismatch { leaf id-len-mismatch {
type uint32; type uint32;
description description
skipping to change at page 70, line 13 skipping to change at line 3553
} }
leaf authentication-fails { leaf authentication-fails {
type uint32; type uint32;
description description
"Number of authentication key failures."; "Number of authentication key failures.";
} }
leaf lan-dis-changes { leaf lan-dis-changes {
type uint32; type uint32;
description description
"The number of times the DIS has changed on this "The number of times the DIS has changed on this
interface at this level. If the interface type is interface at this level. If the interface type is
point-to-point, the count is zero."; 'point-to-point', the count is zero.";
} }
description "IS-IS interface event counters."; description
"IS-IS interface event counters.";
} }
description description
"Grouping for IS-IS interface event counters"; "Grouping for IS-IS interface event counters.";
} }
grouping packet-counters { grouping packet-counters {
container packet-counters { container packet-counters {
config false; config false;
list level { list level {
key level; key level;
leaf level { leaf level {
type level-number; type level-number;
description "IS-IS level."; description
"IS-IS level.";
} }
container iih { container iih {
leaf in { leaf in {
type uint32; type uint32;
description "Received IIH PDUs."; description
"Received IS-IS Hello (IIH) PDUs.";
} }
leaf out { leaf out {
type uint32; type uint32;
description "Sent IIH PDUs."; description
"Sent IIH PDUs.";
} }
description "Number of IIH PDUs received/sent."; description
"Number of IIH PDUs received/sent.";
} }
container ish { container ish {
leaf in { leaf in {
type uint32; type uint32;
description "Received ISH PDUs."; description
"Received Intermediate System Hello (ISH) PDUs.";
} }
leaf out { leaf out {
type uint32; type uint32;
description "Sent ISH PDUs."; description
"Sent ISH PDUs.";
} }
description description
"ISH PDUs received/sent."; "ISH PDUs received/sent.";
} }
container esh { container esh {
leaf in { leaf in {
type uint32; type uint32;
description "Received ESH PDUs."; description
"Received End System Hello (ESH) PDUs.";
} }
leaf out { leaf out {
type uint32; type uint32;
description "Sent ESH PDUs."; description
"Sent ESH PDUs.";
} }
description "Number of ESH PDUs received/sent."; description
"Number of ESH PDUs received/sent.";
} }
container lsp { container lsp {
leaf in { leaf in {
type uint32; type uint32;
description "Received LSP PDUs."; description
"Received LSP PDUs.";
} }
leaf out { leaf out {
type uint32; type uint32;
description "Sent LSP PDUs."; description
"Sent LSP PDUs.";
} }
description "Number of LSP PDUs received/sent."; description
"Number of LSP PDUs received/sent.";
} }
container psnp { container psnp {
leaf in { leaf in {
type uint32; type uint32;
description "Received PSNP PDUs."; description
"Received Partial Sequence Number Packet
(PSNP) PDUs.";
} }
leaf out { leaf out {
type uint32; type uint32;
description "Sent PSNP PDUs."; description
"Sent PSNP PDUs.";
} }
description "Number of PSNP PDUs received/sent."; description
"Number of PSNP PDUs received/sent.";
} }
container csnp { container csnp {
leaf in { leaf in {
type uint32; type uint32;
description "Received CSNP PDUs."; description
"Received CSNP PDUs.";
} }
leaf out { leaf out {
type uint32; type uint32;
description "Sent CSNP PDUs."; description
"Sent CSNP PDUs.";
} }
description "Number of CSNP PDUs received/sent."; description
"Number of CSNP PDUs received/sent.";
} }
container unknown { container unknown {
leaf in { leaf in {
type uint32; type uint32;
description "Received unknown PDUs."; description
"Received unknown PDUs.";
} }
description "Number of unknown PDUs received/sent."; description
"Number of unknown PDUs received.";
} }
description description
"List of packet counter for supported levels."; "List of packet counters for supported levels.";
} }
description "Packet counters per IS-IS level."; description
"Packet counters per IS-IS level.";
} }
description description
"Grouping for per IS-IS Level packet counters."; "Grouping for packet counters per IS-IS level.";
} }
/* Groupings for various log buffers */ /* Groupings for various log buffers */
grouping spf-log { grouping spf-log {
container spf-log { container spf-log {
config false; config false;
list event { list event {
key id; key id;
leaf id { leaf id {
type yang:counter32; type yang:counter32;
description description
"Event identifier - purely internal value. "Event identifier. A purely internal value.
It is expected the most recent events to have the bigger The most recent events are expected to have a bigger
id number."; ID number.";
} }
leaf spf-type { leaf spf-type {
type enumeration { type enumeration {
enum full { enum full {
description "Full SPF computation."; description
"Full SPF computation.";
} }
enum route-only { enum route-only {
description description
"Route reachability only SPF computation"; "SPF computation indicating route reachability
only.";
} }
} }
description "Type of SPF computation performed."; description
"Type of SPF computation performed.";
} }
leaf level { leaf level {
type level-number; type level-number;
description description
"IS-IS level number for SPF computation"; "IS-IS level number for the SPF computation.";
} }
leaf schedule-timestamp { leaf schedule-timestamp {
type yang:timestamp; type yang:timestamp;
description description
"Timestamp of when the SPF computation was "Timestamp of when the SPF computation was
scheduled."; scheduled.";
} }
leaf start-timestamp { leaf start-timestamp {
type yang:timestamp; type yang:timestamp;
description description
skipping to change at page 73, line 23 skipping to change at line 3733
leaf end-timestamp { leaf end-timestamp {
type yang:timestamp; type yang:timestamp;
description description
"Timestamp of when the SPF computation ended."; "Timestamp of when the SPF computation ended.";
} }
list trigger-lsp { list trigger-lsp {
key "lsp"; key "lsp";
leaf lsp { leaf lsp {
type lsp-id; type lsp-id;
description description
"LSP ID of the LSP triggering SPF computation."; "LSP ID of the LSP that triggered the SPF
computation.";
} }
leaf sequence { leaf sequence {
type uint32; type uint32;
description description
"Sequence number of the LSP triggering SPF "Sequence number of the LSP that triggered the SPF
computation"; computation.";
} }
description description
"This list includes the LSPs that triggered the "This list includes the LSPs that triggered the
SPF computation."; SPF computation.";
} }
description description
"List of computation events - implemented as a "List of computation events. Implemented as a
wrapping buffer."; wrapping buffer.";
} }
description description
"This container lists the SPF computation events."; "This container lists the SPF computation events.";
} }
description "Grouping for spf-log events."; description
"Grouping for SPF log events.";
} }
grouping lsp-log { grouping lsp-log {
container lsp-log { container lsp-log {
config false; config false;
list event { list event {
key id; key id;
leaf id { leaf id {
type yang:counter32; type yang:counter32;
description description
"Event identifier - purely internal value. "Event identifier. A purely internal value.
It is expected the most recent events to have the bigger The most recent events are expected to have a bigger
id number."; ID number.";
} }
leaf level { leaf level {
type level-number; type level-number;
description description
"IS-IS level number for LSP"; "IS-IS level number for the LSP.";
} }
container lsp { container lsp {
leaf lsp { leaf lsp {
type lsp-id; type lsp-id;
description description
"LSP ID of the LSP."; "LSP ID of the LSP.";
} }
leaf sequence { leaf sequence {
type uint32; type uint32;
description description
"Sequence number of the LSP."; "Sequence number of the LSP.";
} }
description description
"LSP identification container - either the received "LSP identification container for either the received
LSP or the locally generated LSP."; LSP or the locally generated LSP.";
} }
leaf received-timestamp { leaf received-timestamp {
type yang:timestamp; type yang:timestamp;
description description
"This is the timestamp when the LSA was received. "This is the timestamp when the LSP was received.
In case of local LSA update, the timestamp refers In the case of a local LSP update, the timestamp refers
to the LSA origination time."; to the LSP origination time.";
} }
leaf reason { leaf reason {
type identityref { type identityref {
base lsp-log-reason; base lsp-log-reason;
} }
description "Type of LSP change."; description
"Type of LSP change.";
} }
description description
"List of LSP events - implemented as a "List of LSP events. Implemented as a wrapping buffer.";
wrapping buffer.";
} }
description description
"This container lists the LSP log. "This container lists the LSP log.
Local LSP modifications are also included Local LSP modifications are also included in the list.";
in the list.";
} description "Grouping for LSP log."; } description
"Grouping for the LSP log.";
} }
/* Groupings for the LSDB description */ /* Groupings for the Link State Database (LSDB) descriptions */
/* Unknown TLV and sub-TLV description */ /* Unknown TLV and sub-TLV descriptions */
grouping tlv { grouping tlv {
description description
"Type-Length-Value (TLV)"; "Type-Length-Value (TLV).";
leaf type { leaf type {
type uint16; type uint16;
description "TLV type."; description
"TLV type.";
} }
leaf length { leaf length {
type uint16; type uint16;
description "TLV length (octets)."; description
"TLV length (octets).";
} }
leaf value { leaf value {
type yang:hex-string; type yang:hex-string;
description "TLV value."; description
"TLV value.";
} }
} }
grouping unknown-tlvs { grouping unknown-tlvs {
description description
"Unknown TLVs grouping - Used for unknown TLVs or "Unknown TLVs grouping. Used for unknown TLVs or
unknown sub-TLVs."; unknown sub-TLVs.";
container unknown-tlvs { container unknown-tlvs {
description "All unknown TLVs."; description
"All unknown TLVs.";
list unknown-tlv { list unknown-tlv {
description "Unknown TLV."; description
"Unknown TLV.";
uses tlv; uses tlv;
} }
} }
} }
/* TLVs and sub-TLVs for prefixes */ /* TLVs and sub-TLVs for prefixes */
grouping prefix-reachability-attributes { grouping prefix-reachability-attributes {
description description
"Grouping for extended reachability attributes of an "Grouping for extended reachability attributes of an
IPv4 or IPv6 prefix."; IPv4 or IPv6 prefix.";
leaf external-prefix-flag { leaf external-prefix-flag {
type boolean; type boolean;
description "External prefix flag."; description
"External prefix flag.";
} }
leaf readvertisement-flag { leaf readvertisement-flag {
type boolean; type boolean;
description "Re-advertisement flag."; description
"Re-advertisement flag.";
} }
leaf node-flag { leaf node-flag {
type boolean; type boolean;
description "Node flag."; description
"Node flag.";
} }
} }
grouping prefix-ipv4-source-router-id { grouping prefix-ipv4-source-router-id {
description description
"Grouping for the IPv4 source router ID of a prefix "Grouping for the IPv4 source router ID of a prefix
advertisement."; advertisement.";
leaf ipv4-source-router-id { leaf ipv4-source-router-id {
type inet:ipv4-address; type inet:ipv4-address;
description "IPv4 Source router ID address."; description
"IPv4 source router ID address.";
} }
} }
grouping prefix-ipv6-source-router-id { grouping prefix-ipv6-source-router-id {
description description
"Grouping for the IPv6 source router ID of a prefix "Grouping for the IPv6 source router ID of a prefix
advertisement."; advertisement.";
leaf ipv6-source-router-id { leaf ipv6-source-router-id {
type inet:ipv6-address; type inet:ipv6-address;
description "IPv6 Source router ID address."; description
"IPv6 source router ID address.";
} }
} }
grouping prefix-attributes-extension { grouping prefix-attributes-extension {
description "Prefix extended attributes description
as defined in RFC7794."; "Prefix extended attributes as defined in RFC 7794.";
reference
"RFC 7794: IS-IS Prefix Attributes for Extended IPv4 and IPv6
Reachability";
uses prefix-reachability-attributes; uses prefix-reachability-attributes;
uses prefix-ipv4-source-router-id; uses prefix-ipv4-source-router-id;
uses prefix-ipv6-source-router-id; uses prefix-ipv6-source-router-id;
} }
grouping prefix-ipv4-std { grouping prefix-ipv4-std {
description description
"Grouping for attributes of an IPv4 standard prefix "Grouping for attributes of an IPv4 standard prefix
as defined in RFC1195."; as defined in RFC 1195.";
reference
"RFC 1195: Use of OSI IS-IS for routing in TCP/IP and
dual environments";
leaf ip-prefix { leaf ip-prefix {
type inet:ipv4-address; type inet:ipv4-address;
description "IPv4 prefix address"; description
"IPv4 prefix address.";
} }
leaf prefix-len { leaf prefix-len {
type uint8; type uint8;
description "IPv4 prefix length (in bits)"; description
"IPv4 prefix length (in bits).";
} }
leaf i-e { leaf i-e {
type boolean; type boolean;
description description
"Internal or External (I/E) Metric bit value. "Internal or external (I/E) metric bit value.
Set to 'false' to indicate an internal metric."; Set to 'false' to indicate an internal metric.";
} }
container default-metric { container default-metric {
leaf metric { leaf metric {
type std-metric; type std-metric;
description "Default IS-IS metric for IPv4 prefix"; description
"Default IS-IS metric for the IPv4 prefix.";
} }
description "IS-IS default metric container."; description
"IS-IS default metric container.";
} }
container delay-metric { container delay-metric {
leaf metric { leaf metric {
type std-metric; type std-metric;
description "IS-IS delay metric for IPv4 prefix"; description
"IS-IS delay metric for the IPv4 prefix.";
} }
leaf supported { leaf supported {
type boolean; type boolean;
default "false"; default "false";
description description
"Indicates whether IS-IS delay metric is supported."; "Indicates whether the IS-IS delay metric is supported.";
} }
description "IS-IS delay metric container."; description
"IS-IS delay metric container.";
} }
container expense-metric { container expense-metric {
leaf metric { leaf metric {
type std-metric; type std-metric;
description "IS-IS expense metric for IPv4 prefix"; description
"IS-IS expense metric for the IPv4 prefix.";
} }
leaf supported { leaf supported {
type boolean; type boolean;
default "false"; default "false";
description description
"Indicates whether IS-IS expense metric is supported."; "Indicates whether the IS-IS expense metric is supported.";
} }
description "IS-IS expense metric container."; description
"IS-IS expense metric container.";
} }
container error-metric { container error-metric {
leaf metric { leaf metric {
type std-metric; type std-metric;
description description
"This leaf describes the IS-IS error metric value"; "This leaf describes the IS-IS error metric value.";
} }
leaf supported { leaf supported {
type boolean; type boolean;
default "false"; default "false";
description description
"Indicates whether IS-IS error metric is supported."; "Indicates whether the IS-IS error metric is supported.";
} }
description "IS-IS error metric container."; description
"IS-IS error metric container.";
} }
} }
grouping prefix-ipv4-extended { grouping prefix-ipv4-extended {
description description
"Grouping for attributes of an IPv4 extended prefix "Grouping for attributes of an IPv4 extended prefix
as defined in RFC5305."; as defined in RFC 5305.";
reference
"RFC 5305: IS-IS Extensions for Traffic Engineering";
leaf up-down { leaf up-down {
type boolean; type boolean;
description "Value of up/down bit. description
Set to true when the prefix has been advertised down "Value of the up/down bit.
the hierarchy."; Set to 'true' when the prefix has been advertised down
the hierarchy.";
} }
leaf ip-prefix { leaf ip-prefix {
type inet:ipv4-address; type inet:ipv4-address;
description "IPv4 prefix address"; description
"IPv4 prefix address.";
} }
leaf prefix-len { leaf prefix-len {
type uint8; type uint8;
description "IPv4 prefix length (in bits)"; description
"IPv4 prefix length (in bits).";
} }
leaf metric { leaf metric {
type wide-metric; type wide-metric;
description "IS-IS wide metric value"; description
"IS-IS wide metric value.";
} }
leaf-list tag { leaf-list tag {
type uint32; type uint32;
description description
"List of 32-bit tags associated with the IPv4 prefix."; "List of 32-bit tags associated with the IPv4 prefix.";
} }
leaf-list tag64 { leaf-list tag64 {
type uint64; type uint64;
description description
"List of 64-bit tags associated with the IPv4 prefix."; "List of 64-bit tags associated with the IPv4 prefix.";
} }
uses prefix-attributes-extension; uses prefix-attributes-extension;
} }
grouping prefix-ipv6-extended { grouping prefix-ipv6-extended {
description "Grouping for attributes of an IPv6 prefix description
as defined in RFC5308."; "Grouping for attributes of an IPv6 prefix
as defined in RFC 5308.";
reference
"RFC 5308: Routing IPv6 with IS-IS";
leaf up-down { leaf up-down {
type boolean; type boolean;
description "Value of up/down bit. description
Set to true when the prefix has been advertised down "Value of the up/down bit.
the hierarchy."; Set to 'true' when the prefix has been advertised down
the hierarchy.";
} }
leaf ip-prefix { leaf ip-prefix {
type inet:ipv6-address; type inet:ipv6-address;
description "IPv6 prefix address"; description
"IPv6 prefix address.";
} }
leaf prefix-len { leaf prefix-len {
type uint8; type uint8;
description "IPv6 prefix length (in bits)"; description
"IPv6 prefix length (in bits).";
} }
leaf metric { leaf metric {
type wide-metric; type wide-metric;
description "IS-IS wide metric value"; description
"IS-IS wide metric value.";
} }
leaf-list tag { leaf-list tag {
type uint32; type uint32;
description description
"List of 32-bit tags associated with the IPv4 prefix."; "List of 32-bit tags associated with the IPv6 prefix.";
} }
leaf-list tag64 { leaf-list tag64 {
type uint64; type uint64;
description description
"List of 64-bit tags associated with the IPv4 prefix."; "List of 64-bit tags associated with the IPv6 prefix.";
} }
uses prefix-attributes-extension; uses prefix-attributes-extension;
} }
/* TLVs and sub-TLVs for neighbors */ /* TLVs and sub-TLVs for neighbors */
grouping neighbor-link-attributes { grouping neighbor-link-attributes {
description description
"Grouping for link attributes as defined "Grouping for link attributes as defined
in RFC5029"; in RFC 5029.";
reference
"RFC 5029: Definition of an IS-IS Link Attribute Sub-TLV";
leaf link-attributes-flags { leaf link-attributes-flags {
type uint16; type uint16;
description description
"Flags for the link attributes"; "Flags for the link attributes.";
} }
} }
grouping neighbor-gmpls-extensions { grouping neighbor-gmpls-extensions {
description description
"Grouping for GMPLS attributes of a neighbor as defined "Grouping for GMPLS attributes of a neighbor as defined
in RFC5307"; in RFC 5307.";
reference
"RFC 5307: IS-IS Extensions in Support of Generalized
Multi-Protocol Label Switching (GMPLS)";
leaf link-local-id { leaf link-local-id {
type uint32; type uint32;
description description
"Local identifier of the link."; "Local identifier of the link.";
} }
leaf remote-local-id { leaf remote-local-id {
type uint32; type uint32;
description description
"Remote identifier of the link."; "Remote identifier of the link.";
} }
leaf protection-capability { leaf protection-capability {
type uint8; type uint8;
description description
"Describes the protection capabilities "Describes the protection capabilities
of the link. This is the value of the of the link. This is the value of the
first octet of the sub-TLV type 20 value."; first octet of the sub-TLV type 20 value.";
} }
container interface-switching-capability { container interface-switching-capability {
description description
"Interface switching capabilities of the link."; "Interface switching capabilities of the link.";
leaf switching-capability { leaf switching-capability {
type uint8; type uint8;
description description
"Switching capability of the link."; "Switching capability of the link.";
} }
leaf encoding { leaf encoding {
type uint8; type uint8;
description description
"Type of encoding of the LSP being used."; "Type of encoding of the LSP being used.";
} }
container max-lsp-bandwidths { container max-lsp-bandwidths {
description "Per-priority max LSP bandwidths."; description
"Per-priority maximum LSP bandwidths.";
list max-lsp-bandwidth { list max-lsp-bandwidth {
leaf priority { leaf priority {
type uint8 { type uint8 {
range "0 .. 7"; range "0 .. 7";
} }
description "Priority from 0 to 7."; description
"Priority from 0 to 7.";
} }
leaf bandwidth { leaf bandwidth {
type rt-types:bandwidth-ieee-float32; type rt-types:bandwidth-ieee-float32;
description "max LSP bandwidth."; description
"Maximum LSP bandwidth.";
} }
description description
"List of max LSP bandwidths for different "List of maximum LSP bandwidths for different
priorities."; priorities.";
} }
} }
container tdm-specific { container tdm-specific {
when "../switching-capability = 100"; when "../switching-capability = 100";
description description
"Switching Capability-specific information applicable "Switching-capability-specific information applicable
when switching type is TDM."; when the switching type is Time-Division Multiplexing
(TDM).";
leaf minimum-lsp-bandwidth { leaf minimum-lsp-bandwidth {
type rt-types:bandwidth-ieee-float32; type rt-types:bandwidth-ieee-float32;
description "minimum LSP bandwidth."; description
"Minimum LSP bandwidth.";
} }
leaf indication { leaf indication {
type uint8; type uint8;
description description
"The indication whether the interface supports Standard "Indicates whether the interface supports Standard
or Arbitrary SONET/SDH."; or Arbitrary SONET/SDH (Synchronous Optical Network /
Synchronous Digital Hierarchy).";
} }
} }
container psc-specific { container psc-specific {
when "../switching-capability >= 1 and when "../switching-capability >= 1 and
../switching-capability <= 4"; ../switching-capability <= 4";
description description
"Switching Capability-specific information applicable "Switching-capability-specific information applicable
when switching type is PSC1,PSC2,PSC3 or PSC4."; when the switching type is PSC1, PSC2, PSC3, or PSC4
('PSC' stands for 'Packet Switching Capability').";
leaf minimum-lsp-bandwidth { leaf minimum-lsp-bandwidth {
type rt-types:bandwidth-ieee-float32; type rt-types:bandwidth-ieee-float32;
description "minimum LSP bandwidth."; description
"Minimum LSP bandwidth.";
} }
leaf mtu { leaf mtu {
type uint16; type uint16;
units bytes; units bytes;
description description
"Interface MTU"; "Interface MTU.";
} }
} }
} }
} }
grouping neighbor-extended-te-extensions { grouping neighbor-extended-te-extensions {
description description
"Grouping for TE attributes of a neighbor as defined "Grouping for TE attributes of a neighbor as defined
in RFC8570"; in RFC 8570.";
reference
"RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
container unidirectional-link-delay { container unidirectional-link-delay {
description description
"Container for the average delay "Container for the average delay
from the local neighbor to the remote one."; from the local neighbor to the remote neighbor.";
container flags { container flags {
leaf-list unidirectional-link-delay-subtlv-flags { leaf-list unidirectional-link-delay-subtlv-flags {
type identityref { type identityref {
base unidirectional-link-delay-subtlv-flag; base unidirectional-link-delay-subtlv-flag;
} }
description description
"This list contains identities for the bits "This list contains identities for the bits that
which are set."; are set.";
} }
description description
"unidirectional-link-delay subTLV flags."; "Unidirectional Link Delay sub-TLV flags.";
} }
leaf value { leaf value {
type uint32; type uint32;
units usec; units usec;
description description
"Delay value expressed in microseconds."; "Delay value expressed in microseconds.";
} }
} }
container min-max-unidirectional-link-delay { container min-max-unidirectional-link-delay {
description description
"Container for the min and max delay "Container for the minimum and maximum delay
from the local neighbor to the remote one."; from the local neighbor to the remote neighbor.";
container flags { container flags {
leaf-list min-max-unidirectional-link-delay-subtlv-flags { leaf-list min-max-unidirectional-link-delay-subtlv-flags {
type identityref { type identityref {
base min-max-unidirectional-link-delay-subtlv-flag; base min-max-unidirectional-link-delay-subtlv-flag;
} }
description description
"This list contains identities for the bits which are "This list contains identities for the bits that
set."; are set.";
} }
description description
"min-max-unidirectional-link-delay subTLV flags."; "Min/Max Unidirectional Link Delay sub-TLV flags.";
} }
leaf min-value { leaf min-value {
type uint32; type uint32;
units usec; units usec;
description description
"Minimum delay value expressed in microseconds."; "Minimum delay value expressed in microseconds.";
} }
leaf max-value { leaf max-value {
type uint32; type uint32;
units usec; units usec;
description description
"Maximum delay value expressed in microseconds."; "Maximum delay value expressed in microseconds.";
} }
} }
container unidirectional-link-delay-variation { container unidirectional-link-delay-variation {
description description
"Container for the average delay variation "Container for the average delay variation
from the local neighbor to the remote one."; from the local neighbor to the remote neighbor.";
leaf value { leaf value {
type uint32; type uint32;
units usec; units usec;
description description
"Delay variation value expressed in microseconds."; "Delay variation value expressed in microseconds.";
} }
} }
container unidirectional-link-loss { container unidirectional-link-loss {
description description
"Container for the packet loss "Container for packet loss from the local neighbor to the
from the local neighbor to the remote one."; remote neighbor.";
container flags { container flags {
leaf-list unidirectional-link-loss-subtlv-flags { leaf-list unidirectional-link-loss-subtlv-flags {
type identityref { type identityref {
base unidirectional-link-loss-subtlv-flag; base unidirectional-link-loss-subtlv-flag;
} }
description description
"This list contains identities for the bits which are "This list contains identities for the bits that
set."; are set.";
} }
description description
"unidirectional-link-loss subTLV flags."; "Unidirectional Link Loss sub-TLV flags.";
} }
leaf value { leaf value {
type uint32; type uint32;
units percent; units percent;
description description
"Link packet loss expressed as a percentage "Link packet loss expressed as a percentage of
of the total traffic sent over a configurable interval."; the total traffic sent over a configurable interval.";
} }
} }
container unidirectional-link-residual-bandwidth { container unidirectional-link-residual-bandwidth {
description description
"Container for the residual bandwidth "Container for the residual bandwidth
from the local neighbor to the remote one."; from the local neighbor to the remote neighbor.";
leaf value { leaf value {
type rt-types:bandwidth-ieee-float32; type rt-types:bandwidth-ieee-float32;
units Bps; units Bps;
description description
"Residual bandwidth."; "Residual bandwidth.";
} }
} }
container unidirectional-link-available-bandwidth { container unidirectional-link-available-bandwidth {
description description
"Container for the available bandwidth "Container for the available bandwidth
from the local neighbor to the remote one."; from the local neighbor to the remote neighbor.";
leaf value { leaf value {
type rt-types:bandwidth-ieee-float32; type rt-types:bandwidth-ieee-float32;
units Bps; units Bps;
description description
"Available bandwidth."; "Available bandwidth.";
} }
} }
container unidirectional-link-utilized-bandwidth { container unidirectional-link-utilized-bandwidth {
description description
"Container for the utilized bandwidth "Container for the utilized bandwidth
from the local neighbor to the remote one."; from the local neighbor to the remote neighbor.";
leaf value { leaf value {
type rt-types:bandwidth-ieee-float32; type rt-types:bandwidth-ieee-float32;
units Bps; units Bps;
description description
"Utilized bandwidth."; "Utilized bandwidth.";
} }
} }
} }
grouping neighbor-te-extensions { grouping neighbor-te-extensions {
description description
"Grouping for TE attributes of a neighbor as defined "Grouping for TE attributes of a neighbor as defined
in RFC5305"; in RFC 5305.";
reference
"RFC 5305: IS-IS Extensions for Traffic Engineering";
leaf admin-group { leaf admin-group {
type uint32; type uint32;
description description
"Administrative group/Resource Class/Color."; "Administrative Group / Resource Class/Color.";
} }
container local-if-ipv4-addrs { container local-if-ipv4-addrs {
description "All local interface IPv4 addresses."; description
"All local interface IPv4 addresses.";
leaf-list local-if-ipv4-addr { leaf-list local-if-ipv4-addr {
type inet:ipv4-address; type inet:ipv4-address;
description description
"List of local interface IPv4 addresses."; "List of local interface IPv4 addresses.";
} }
} }
container remote-if-ipv4-addrs { container remote-if-ipv4-addrs {
description "All remote interface IPv4 addresses."; description
"All remote interface IPv4 addresses.";
leaf-list remote-if-ipv4-addr { leaf-list remote-if-ipv4-addr {
type inet:ipv4-address; type inet:ipv4-address;
description description
"List of remote interface IPv4 addresses."; "List of remote interface IPv4 addresses.";
} }
} }
leaf te-metric { leaf te-metric {
type uint32; type uint32;
description "TE metric."; description
"TE metric.";
} }
leaf max-bandwidth { leaf max-bandwidth {
type rt-types:bandwidth-ieee-float32; type rt-types:bandwidth-ieee-float32;
description "Maximum bandwidth."; description
"Maximum bandwidth.";
} }
leaf max-reservable-bandwidth { leaf max-reservable-bandwidth {
type rt-types:bandwidth-ieee-float32; type rt-types:bandwidth-ieee-float32;
description "Maximum reservable bandwidth."; description
"Maximum reservable bandwidth.";
} }
container unreserved-bandwidths { container unreserved-bandwidths {
description "All unreserved bandwidths."; description
"All unreserved bandwidths.";
list unreserved-bandwidth { list unreserved-bandwidth {
leaf priority { leaf priority {
type uint8 { type uint8 {
range "0 .. 7"; range "0 .. 7";
} }
description "Priority from 0 to 7."; description
"Priority from 0 to 7.";
} }
leaf unreserved-bandwidth { leaf unreserved-bandwidth {
type rt-types:bandwidth-ieee-float32; type rt-types:bandwidth-ieee-float32;
description "Unreserved bandwidth."; description
"Unreserved bandwidth.";
} }
description description
"List of unreserved bandwidths for different "List of unreserved bandwidths for different
priorities."; priorities.";
} }
} }
} }
grouping neighbor-extended { grouping neighbor-extended {
description description
"Grouping for attributes of an IS-IS extended neighbor."; "Grouping for attributes of an IS-IS extended neighbor.";
leaf neighbor-id { leaf neighbor-id {
type extended-system-id; type extended-system-id;
description "system-id of the extended neighbor."; description
"System ID of the extended neighbor.";
} }
container instances { container instances {
description "List of all adjacencies between the local description
system and the neighbor system-id."; "List of all adjacencies between the local
system and the neighbor system ID.";
list instance { list instance {
key id; key id;
leaf id { leaf id {
type uint32; type uint32;
description "Unique identifier of an instance of a description
particular neighbor."; "Unique identifier of an instance of a
particular neighbor.";
} }
leaf metric { leaf metric {
type wide-metric; type wide-metric;
description "IS-IS wide metric for extended neighbor"; description
"IS-IS wide metric for the extended neighbor.";
} }
uses neighbor-gmpls-extensions; uses neighbor-gmpls-extensions;
uses neighbor-te-extensions; uses neighbor-te-extensions;
uses neighbor-extended-te-extensions; uses neighbor-extended-te-extensions;
uses neighbor-link-attributes; uses neighbor-link-attributes;
uses unknown-tlvs; uses unknown-tlvs;
description "Instance of a particular adjacency."; description
"Instance of a particular adjacency.";
} }
} }
} }
grouping neighbor { grouping neighbor {
description "IS-IS standard neighbor grouping."; description
"IS-IS standard neighbor grouping.";
leaf neighbor-id { leaf neighbor-id {
type extended-system-id; type extended-system-id;
description "IS-IS neighbor system-id"; description
"IS-IS neighbor system ID.";
} }
container instances { container instances {
description "List of all adjacencies between the local description
system and the neighbor system-id."; "List of all adjacencies between the local
system and the neighbor system ID.";
list instance { list instance {
key id; key id;
leaf id { leaf id {
type uint32; type uint32;
description "Unique identifier of an instance of a description
particular neighbor."; "Unique identifier of an instance of a
particular neighbor.";
} }
leaf i-e { leaf i-e {
type boolean; type boolean;
description description
"Internal or External (I/E) Metric bit value. "Internal or external (I/E) metric bit value.
Set to 'false' to indicate an internal metric."; Set to 'false' to indicate an internal metric.";
} }
container default-metric { container default-metric {
leaf metric { leaf metric {
type std-metric; type std-metric;
description "IS-IS default metric value"; description
"IS-IS default metric value.";
} }
description "IS-IS default metric container"; description
"IS-IS default metric container.";
} }
container delay-metric { container delay-metric {
leaf metric { leaf metric {
type std-metric; type std-metric;
description "IS-IS delay metric value"; description
"IS-IS delay metric value.";
} }
leaf supported { leaf supported {
type boolean; type boolean;
default "false"; default "false";
description "IS-IS delay metric supported"; description
"IS-IS delay metric supported.";
} }
description "IS-IS delay metric container"; description
"IS-IS delay metric container.";
} }
container expense-metric { container expense-metric {
leaf metric { leaf metric {
type std-metric; type std-metric;
description "IS-IS expense metric value"; description
"IS-IS expense metric value.";
} }
leaf supported { leaf supported {
type boolean; type boolean;
default "false"; default "false";
description "IS-IS expense metric supported"; description
"IS-IS expense metric supported.";
} }
description "IS-IS expense metric container"; description
"IS-IS expense metric container.";
} }
container error-metric { container error-metric {
leaf metric { leaf metric {
type std-metric; type std-metric;
description "IS-IS error metric value"; description
"IS-IS error metric value.";
} }
leaf supported { leaf supported {
type boolean; type boolean;
default "false"; default "false";
description "IS-IS error metric supported"; description
"IS-IS error metric supported.";
} }
description "IS-IS error metric container"; description
"IS-IS error metric container.";
} }
description "Instance of a particular adjacency description
as defined in ISO10589."; "Instance of a particular adjacency as defined in
ISO 10589.";
reference
"ISO 10589: Intermediate System to Intermediate System
intra-domain routeing information exchange protocol
for use in conjunction with the protocol for providing
the connectionless-mode network service (ISO 8473)";
} }
} }
} }
/* Top-level TLVs */ /* Top-level TLVs */
grouping tlv132-ipv4-addresses { grouping tlv132-ipv4-addresses {
leaf-list ipv4-addresses { leaf-list ipv4-addresses {
type inet:ipv4-address; type inet:ipv4-address;
description description
"List of IPv4 addresses of the IS-IS node - IS-IS "List of IPv4 addresses of the IS-IS node. The IS-IS
reference is TLV 132."; reference is TLV 132.";
} }
description "Grouping for TLV132."; description
"Grouping for TLV 132.";
} }
grouping tlv232-ipv6-addresses { grouping tlv232-ipv6-addresses {
leaf-list ipv6-addresses { leaf-list ipv6-addresses {
type inet:ipv6-address; type inet:ipv6-address;
description description
"List of IPv6 addresses of the IS-IS node - IS-IS "List of IPv6 addresses of the IS-IS node. The IS-IS
reference is TLV 232."; reference is TLV 232.";
} }
description "Grouping for TLV232."; description
"Grouping for TLV 232.";
} }
grouping tlv134-ipv4-te-rid { grouping tlv134-ipv4-te-rid {
leaf ipv4-te-routerid { leaf ipv4-te-routerid {
type inet:ipv4-address; type inet:ipv4-address;
description description
"IPv4 Traffic Engineering router ID of the IS-IS node - "IPv4 Traffic Engineering router ID of the IS-IS node.
IS-IS reference is TLV 134."; The IS-IS reference is TLV 134.";
} }
description "Grouping for TLV134."; description
"Grouping for TLV 134.";
} }
grouping tlv140-ipv6-te-rid { grouping tlv140-ipv6-te-rid {
leaf ipv6-te-routerid { leaf ipv6-te-routerid {
type inet:ipv6-address; type inet:ipv6-address;
description description
"IPv6 Traffic Engineering router ID of the IS-IS node - "IPv6 Traffic Engineering router ID of the IS-IS node.
IS-IS reference is TLV 140."; The IS-IS reference is TLV 140.";
} }
description "Grouping for TLV140."; description
"Grouping for TLV 140.";
} }
grouping tlv129-protocols { grouping tlv129-protocols {
leaf-list protocol-supported { leaf-list protocol-supported {
type uint8; type uint8;
description description
"List of supported protocols of the IS-IS node - "List of supported protocols of the IS-IS node.
IS-IS reference is TLV 129."; The IS-IS reference is TLV 129.";
} }
description "Grouping for TLV129."; description
"Grouping for TLV 129.";
} }
grouping tlv137-hostname { grouping tlv137-hostname {
leaf dynamic-hostname { leaf dynamic-hostname {
type string; type string;
description description
"Host Name of the IS-IS node - IS-IS reference "Hostname of the IS-IS node. The IS-IS reference
is TLV 137."; is TLV 137.";
} }
description "Grouping for TLV137."; description
"Grouping for TLV 137.";
} }
grouping tlv10-authentication { grouping tlv10-authentication {
container authentication { container authentication {
leaf authentication-type { leaf authentication-type {
type identityref { type identityref {
base key-chain:crypto-algorithm; base key-chain:crypto-algorithm;
} }
description description
"Authentication type to be used with IS-IS node."; "Authentication type to be used with an IS-IS node.";
} }
leaf authentication-key { leaf authentication-key {
type string; type string;
description description
"Authentication key to be used. For security reasons, "Authentication key to be used. For security reasons,
the authentication key MUST NOT be presented in the authentication key MUST NOT be presented in
a clear text format in response to any request a cleartext format in response to any request
(e.g., via get, get-config)."; (e.g., via get or get-config).";
} }
description description
"IS-IS node authentication information container - "IS-IS node authentication information container. The
IS-IS reference is TLV 10."; IS-IS reference is TLV 10.";
} }
description "Grouping for TLV10."; description
"Grouping for TLV 10.";
} }
grouping tlv229-mt { grouping tlv229-mt {
container mt-entries { container mt-entries {
list topology { list topology {
description description
"List of topologies supported"; "List of topologies supported.";
leaf mt-id { leaf mt-id {
type uint16 { type uint16 {
range "0 .. 4095"; range "0 .. 4095";
} }
description description
"Multi-Topology identifier of topology."; "Multi-Topology (MT) identifier of the topology.";
} }
container attributes { container attributes {
leaf-list flags { leaf-list flags {
type identityref { type identityref {
base tlv229-flag; base tlv229-flag;
} }
description description
"This list contains identities for the bits which are "This list contains identities for the bits that
set."; are set.";
} }
description description
"TLV 229 flags."; "TLV 229 flags.";
} }
} }
description description
"IS-IS node topology information container - "IS-IS node topology information container. The
IS-IS reference is TLV 229."; IS-IS reference is TLV 229.";
} }
description "Grouping for TLV229."; description
"Grouping for TLV 229.";
} }
grouping tlv242-router-capabilities { grouping tlv242-router-capabilities {
container router-capabilities { container router-capabilities {
list router-capability { list router-capability {
container flags { container flags {
leaf-list router-capability-flags { leaf-list router-capability-flags {
type identityref { type identityref {
base router-capability-flag; base router-capability-flag;
} }
description description
"This list contains identities for the bits which are "This list contains identities for the bits that
set."; are set.";
} }
description description
"Router capability flags."; "Router Capability flags.";
} }
container node-tags { container node-tags {
if-feature node-tag; if-feature node-tag;
list node-tag { list node-tag {
leaf tag { leaf tag {
type uint32; type uint32;
description "Node tag value."; description
"Node tag value.";
} }
description "List of tags."; description
"List of tags.";
} }
description "Container for node admin tags"; description
"Container for node administrative tags.";
} }
uses unknown-tlvs; uses unknown-tlvs;
description description
"IS-IS node capabilities. This list element may "IS-IS node capabilities. This list element may
be extended with detailed information - IS-IS be extended with detailed information. The IS-IS
reference is TLV 242."; reference is TLV 242.";
} }
description "List of router capability TLVs."; description
"List of Router Capability TLVs.";
} }
description "Grouping for TLV242."; description
"Grouping for TLV 242.";
} }
grouping tlv138-srlg { grouping tlv138-srlg {
description description
"Grouping for TLV138."; "Grouping for TLV 138.";
container links-srlgs { container links-srlgs {
list links { list links {
leaf neighbor-id { leaf neighbor-id {
type extended-system-id; type extended-system-id;
description "system-id of the extended neighbor."; description
"System ID of the extended neighbor.";
} }
leaf flags { leaf flags {
type uint8; type uint8;
description description
"Flags associated with the link."; "Flags associated with the link.";
} }
leaf link-local-id { leaf link-local-id {
type union { type union {
type inet:ip-address; type inet:ip-address;
type uint32; type uint32;
} }
description description
"Local identifier of the link. "Local identifier of the link.
It could be an IPv4 address or a local identifier."; It could be an IPv4 address or a local identifier.";
} }
leaf link-remote-id { leaf link-remote-id {
type union { type union {
type inet:ip-address; type inet:ip-address;
type uint32; type uint32;
} }
description description
"Remote identifier of the link. "Remote identifier of the link.
It could be an IPv4 address or a remotely learned It could be an IPv4 address or a remotely learned
identifier."; identifier.";
} }
container srlgs { container srlgs {
description "List of SRLGs."; description
"List of SRLGs.";
leaf-list srlg { leaf-list srlg {
type uint32; type uint32;
description description
"SRLG value of the link."; "SRLG value of the link.";
} }
} }
description description
"SRLG attribute of a link."; "SRLG attribute of a link.";
} }
description description
"List of links with SRLGs"; "List of links with SRLGs.";
} }
} }
/* Grouping for LSDB description */ /* Grouping for LSDB descriptions */
grouping lsp-entry { grouping lsp-entry {
description "IS-IS LSP database entry grouping"; description
"IS-IS LSP database entry grouping.";
leaf decoded-completed { leaf decoded-completed {
type boolean; type boolean;
description "IS-IS LSP body fully decoded."; description
"The IS-IS LSP body has been fully decoded.";
} }
leaf raw-data { leaf raw-data {
type yang:hex-string; type yang:hex-string;
description description
"The hexadecimal representation of the complete LSP in "The hexadecimal representation of the complete LSP
network-byte order (NBO) as received or originated."; as received or originated, in network byte order.";
} }
leaf lsp-id { leaf lsp-id {
type lsp-id; type lsp-id;
description "LSP ID of the LSP"; description
"LSP ID of the LSP.";
} }
leaf checksum { leaf checksum {
type uint16; type uint16;
description "LSP checksum"; description
"LSP checksum.";
} }
leaf remaining-lifetime { leaf remaining-lifetime {
type uint16; type uint16;
units "seconds"; units "seconds";
description description
"Remaining lifetime (in seconds) until LSP expiration."; "Remaining lifetime (in seconds) until LSP expiration.";
} }
leaf sequence { leaf sequence {
type uint32; type uint32;
description description
"This leaf describes the sequence number of the LSP."; "This leaf describes the sequence number of the LSP.";
} }
container attributes { container attributes {
leaf-list lsp-flags { leaf-list lsp-flags {
type identityref { type identityref {
base lsp-flag; base lsp-flag;
} }
description description
"This list contains identities for the bits which are "This list contains identities for the bits that
set."; are set.";
} }
description "LSP attributes."; description
"LSP attributes.";
} }
uses tlv132-ipv4-addresses; uses tlv132-ipv4-addresses;
uses tlv232-ipv6-addresses; uses tlv232-ipv6-addresses;
uses tlv134-ipv4-te-rid; uses tlv134-ipv4-te-rid;
uses tlv140-ipv6-te-rid; uses tlv140-ipv6-te-rid;
uses tlv129-protocols; uses tlv129-protocols;
uses tlv137-hostname; uses tlv137-hostname;
uses tlv10-authentication; uses tlv10-authentication;
uses tlv229-mt; uses tlv229-mt;
uses tlv242-router-capabilities; uses tlv242-router-capabilities;
uses tlv138-srlg; uses tlv138-srlg;
uses unknown-tlvs; uses unknown-tlvs;
container is-neighbor { container is-neighbor {
list neighbor { list neighbor {
key neighbor-id; key neighbor-id;
uses neighbor; uses neighbor;
description "List of neighbors."; description
"List of neighbors.";
} }
description description
"Standard IS neighbors container - IS-IS reference is "Standard IS neighbors container. The IS-IS reference is
TLV 2."; TLV 2.";
} }
container extended-is-neighbor { container extended-is-neighbor {
list neighbor { list neighbor {
key neighbor-id; key neighbor-id;
uses neighbor-extended; uses neighbor-extended;
description description
"List of extended IS neighbors"; "List of extended IS neighbors.";
} }
description description
"Standard IS extended neighbors container - IS-IS "Standard IS extended neighbors container. The IS-IS
reference is TLV 22"; reference is TLV 22.";
} }
container ipv4-internal-reachability { container ipv4-internal-reachability {
list prefixes { list prefixes {
uses prefix-ipv4-std; uses prefix-ipv4-std;
description "List of prefixes."; description
"List of prefixes.";
} }
description description
"IPv4 internal reachability information container - IS-IS "IPv4 internal reachability information container.
reference is TLV 128."; The IS-IS reference is TLV 128.";
} }
container ipv4-external-reachability { container ipv4-external-reachability {
list prefixes { list prefixes {
uses prefix-ipv4-std; uses prefix-ipv4-std;
description "List of prefixes."; description
"List of prefixes.";
} }
description description
"IPv4 external reachability information container - "IPv4 external reachability information container. The
IS-IS reference is TLV 130."; IS-IS reference is TLV 130.";
} }
container extended-ipv4-reachability { container extended-ipv4-reachability {
list prefixes { list prefixes {
uses prefix-ipv4-extended; uses prefix-ipv4-extended;
uses unknown-tlvs; uses unknown-tlvs;
description "List of prefixes."; description
"List of prefixes.";
} }
description description
"IPv4 extended reachability information container - "IPv4 extended reachability information container. The
IS-IS reference is TLV 135."; IS-IS reference is TLV 135.";
} }
container mt-is-neighbor { container mt-is-neighbor {
list neighbor { list neighbor {
leaf mt-id { leaf mt-id {
type uint16 { type uint16 {
range "0 .. 4095"; range "0 .. 4095";
} }
description "Multi-topology (MT) identifier"; description
"Multi-Topology (MT) identifier.";
} }
uses neighbor-extended; uses neighbor-extended;
description "List of neighbors."; description
"List of neighbors.";
} }
description description
"IS-IS multi-topology neighbor container - IS-IS "IS-IS MT neighbor container. The IS-IS reference is
reference is TLV 223."; TLV 223.";
} }
container mt-extended-ipv4-reachability { container mt-extended-ipv4-reachability {
list prefixes { list prefixes {
leaf mt-id { leaf mt-id {
type uint16 { type uint16 {
range "0 .. 4095"; range "0 .. 4095";
} }
description "Multi-topology (MT) identifier"; description
"MT identifier.";
} }
uses prefix-ipv4-extended; uses prefix-ipv4-extended;
uses unknown-tlvs; uses unknown-tlvs;
description "List of extended prefixes."; description
"List of extended prefixes.";
} }
description description
"IPv4 multi-topology (MT) extended reachability "IPv4 MT extended reachability information container.
information container - IS-IS reference is TLV 235."; The IS-IS reference is TLV 235.";
reference
"RFC 5120: M-ISIS: Multi Topology (MT) Routing in
Intermediate System to Intermediate Systems (IS-ISs)";
} }
container mt-ipv6-reachability { container mt-ipv6-reachability {
list prefixes { list prefixes {
leaf MT-ID { leaf MT-ID {
type uint16 { type uint16 {
range "0 .. 4095"; range "0 .. 4095";
} }
description "Multi-topology (MT) identifier"; description
"MT identifier.";
} }
uses prefix-ipv6-extended; uses prefix-ipv6-extended;
uses unknown-tlvs; uses unknown-tlvs;
description "List of IPv6 extended prefixes."; description
"List of IPv6 extended prefixes.";
} }
description description
"IPv6 multi-topology (MT) extended reachability "IPv6 MT extended reachability information container.
information container - IS-IS reference is TLV 237."; The IS-IS reference is TLV 237.";
reference
"RFC 5120: M-ISIS: Multi Topology (MT) Routing in
Intermediate System to Intermediate Systems (IS-ISs)";
} }
container ipv6-reachability { container ipv6-reachability {
list prefixes { list prefixes {
uses prefix-ipv6-extended; uses prefix-ipv6-extended;
uses unknown-tlvs; uses unknown-tlvs;
description "List of IPv6 prefixes."; description
"List of IPv6 prefixes.";
} }
description description
"IPv6 reachability information container - IS-IS "IPv6 reachability information container. The IS-IS
reference is TLV 236."; reference is TLV 236.";
} }
} }
grouping lsdb { grouping lsdb {
description "Link State Database (LSDB) grouping"; description
"Link State Database (LSDB) grouping.";
container database { container database {
config false; config false;
list levels { list levels {
key level; key level;
leaf level { leaf level {
type level-number; type level-number;
description "LSDB level number (1 or 2)"; description
"LSDB level number (1 or 2).";
} }
list lsp { list lsp {
key lsp-id; key lsp-id;
uses lsp-entry; uses lsp-entry;
description "List of LSPs in LSDB"; description
"List of LSPs in the LSDB.";
} }
description "List of LSPs for the LSDB level container"; description
"List of LSPs for the LSDB-level container.";
} }
description "IS-IS Link State database container"; description
"IS-IS LSDB container.";
} }
} }
/* Augmentations */ /* Augmentations */
augment "/rt:routing/" augment "/rt:routing/"
+"rt:ribs/rt:rib/rt:routes/rt:route" { +"rt:ribs/rt:rib/rt:routes/rt:route" {
when "rt:source-protocol = 'isis:isis'" { when "derived-from-or-self(rt:source-protocol, 'isis:isis')" {
description "IS-IS-specific route attributes."; description
"IS-IS-specific route attributes.";
} }
uses route-content; uses route-content;
description description
"This augments route object in RIB with IS-IS-specific "This augments the route object in the Routing Information
attributes."; Base (RIB) with IS-IS-specific attributes.";
} }
augment "/if:interfaces/if:interface" { augment "/if:interfaces/if:interface" {
leaf clns-mtu { leaf clns-mtu {
if-feature osi-interface; if-feature osi-interface;
type uint16; type uint16;
description "CLNS MTU of the interface"; description
"Connectionless-mode Network Service (CLNS) MTU of the
interface.";
} }
description "ISO specific interface parameters."; description
"ISO-specific interface parameters.";
} }
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+"rt:control-plane-protocol" { +"rt:control-plane-protocol" {
when "rt:type = 'isis:isis'" { when "derived-from-or-self(rt:type, 'isis:isis')" {
description description
"This augment is only valid when routing protocol "This augmentation is only valid when the routing protocol
instance type is 'isis'"; instance type is 'isis'.";
} }
description description
"This augments a routing protocol instance with IS-IS "This augments a routing protocol instance with IS-IS-specific
specific parameters."; parameters.";
container isis { container isis {
must "count(area-address) > 0" { must "count(area-address) > 0" {
error-message error-message
"At least one area-address must be configured."; "At least one area address must be configured.";
description description
"Enforce configuration of at least one area."; "Enforces the configuration of at least one area.";
} }
uses instance-config; uses instance-config;
uses instance-state; uses instance-state;
container topologies { container topologies {
if-feature multi-topology; if-feature multi-topology;
list topology { list topology {
key "name"; key "name";
leaf enable { leaf enable {
type boolean; type boolean;
description "Topology enable configuration"; description
"Enables the topology configuration.";
} }
leaf name { leaf name {
type leafref { type leafref {
path "../../../../../../rt:ribs/rt:rib/rt:name"; path "../../../../../../rt:ribs/rt:rib/rt:name";
} }
description description
"Routing Information Base (RIB) corresponding "RIB corresponding to the topology.";
to topology.";
} }
uses multi-topology-config; uses multi-topology-config;
description "List of topologies"; description
"List of topologies.";
} }
description "Multi-topology container"; description
"MT container.";
} }
container interfaces { container interfaces {
list interface { list interface {
key "name"; key "name";
leaf name { leaf name {
type if:interface-ref; type if:interface-ref;
description description
"Reference to the interface within "Reference to the interface within
the routing-instance."; the routing instance.";
} }
uses interface-config; uses interface-config;
uses interface-state; uses interface-state;
container topologies { container topologies {
if-feature multi-topology; if-feature multi-topology;
list topology { list topology {
key name; key name;
leaf name { leaf name {
type leafref { type leafref {
path "../../../../../../../../"+ path "../../../../../../../../"+
"rt:ribs/rt:rib/rt:name"; "rt:ribs/rt:rib/rt:name";
} }
description description
"Routing Information Base (RIB) corresponding "RIB corresponding to the topology.";
to topology.";
} }
uses multi-topology-interface-config; uses multi-topology-interface-config;
description "List of interface topologies"; description
"List of interface topologies.";
} }
description "Multi-topology container"; description
"MT container.";
} }
description "List of IS-IS interfaces."; description
"List of IS-IS interfaces.";
} }
description description
"IS-IS interface specific configuration container"; "Configuration container specific to IS-IS interfaces.";
} }
description description
"IS-IS configuration/state top-level container"; "IS-IS configuration/state top-level container.";
} }
} }
/* RPC methods */ /* RPC methods */
rpc clear-adjacency { rpc clear-adjacency {
description description
"This RPC request clears a particular set of IS-IS "This RPC request clears a particular set of IS-IS
adjacencies. If the operation fails due to an internal adjacencies. If the operation fails for an internal
reason, then the error-tag and error-app-tag should be reason, then the 'error-tag' and 'error-app-tag' should be
set indicating the reason for the failure."; set indicating the reason for the failure.";
reference
"RFC 6241: Network Configuration Protocol (NETCONF)";
input { input {
leaf routing-protocol-instance-name { leaf routing-protocol-instance-name {
type leafref { type leafref {
path "/rt:routing/rt:control-plane-protocols/" path "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:name"; + "rt:control-plane-protocol/rt:name";
} }
mandatory "true"; mandatory "true";
description description
"Name of the IS-IS protocol instance whose IS-IS "Name of the IS-IS protocol instance whose IS-IS
adjacency is being cleared. adjacency is being cleared.
If the corresponding IS-IS instance doesn't exist, If the corresponding IS-IS instance doesn't exist,
then the operation will fail with an error-tag of then the operation will fail with an 'error-tag' of
'data-missing' and an error-app-tag of 'data-missing' and an 'error-app-tag' of
'routing-protocol-instance-not-found'."; 'routing-protocol-instance-not-found'.";
} }
leaf level { leaf level {
type level; type level;
description description
"IS-IS level of the adjacency to be cleared. If the "IS-IS level of the adjacency to be cleared. If the
IS-IS level is level-1-2, both level 1 and level 2 IS-IS level is 'level-all', level-1 and level-2
adjacencies would be cleared. adjacencies would both be cleared.
If the value provided is different from the one If the value provided is different from the value
authorized in the enum type, then the operation authorized in the enum type, then the operation
SHALL fail with an error-tag of 'data-missing' and SHALL fail with an 'error-tag' of 'data-missing' and
an error-app-tag of 'bad-isis-level'."; an 'error-app-tag' of 'bad-isis-level'.";
} }
leaf interface { leaf interface {
type if:interface-ref; type if:interface-ref;
description description
"IS-IS interface name. "IS-IS interface name.
If the corresponding IS-IS interface doesn't exist, If the corresponding IS-IS interface doesn't exist,
then the operation SHALL fail with an error-tag of then the operation SHALL fail with an 'error-tag' of
'data-missing' and an error-app-tag of 'data-missing' and an 'error-app-tag' of
'isis-interface-not-found'."; 'isis-interface-not-found'.";
} }
} }
} }
rpc clear-database { rpc clear-database {
description description
"This RPC request clears a particular IS-IS database. If "This RPC request clears a particular IS-IS database. If
the operation fails for an IS-IS internal reason, then the operation fails for an IS-IS internal reason, then
the error-tag and error-app-tag should be set the 'error-tag' and 'error-app-tag' should be set
indicating the reason for the failure."; indicating the reason for the failure.";
input { input {
leaf routing-protocol-instance-name { leaf routing-protocol-instance-name {
type leafref { type leafref {
path "/rt:routing/rt:control-plane-protocols/" path "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:name"; + "rt:control-plane-protocol/rt:name";
} }
mandatory "true"; mandatory "true";
description description
"Name of the IS-IS protocol instance whose IS-IS "Name of the IS-IS protocol instance whose IS-IS
database(s) is/are being cleared. database or databases are being cleared.
If the corresponding IS-IS instance doesn't exist, If the corresponding IS-IS instance doesn't exist,
then the operation will fail with an error-tag of then the operation will fail with an 'error-tag' of
'data-missing' and an error-app-tag of 'data-missing' and an 'error-app-tag' of
'routing-protocol-instance-not-found'."; 'routing-protocol-instance-not-found'.";
} }
leaf level { leaf level {
type level; type level;
description description
"IS-IS level of the adjacency to be cleared. If the "IS-IS level of the adjacency to be cleared. If the
IS-IS level is level-1-2, both level 1 and level 2 IS-IS level is 'level-all', the databases for both
databases would be cleared. level 1 and level 2 would be cleared.
If the value provided is different from the one If the value provided is different from the value
authorized in the enum type, then the operation authorized in the enum type, then the operation
SHALL fail with an error-tag of 'data-missing' and SHALL fail with an 'error-tag' of 'data-missing' and
an error-app-tag of 'bad-isis-level'."; an 'error-app-tag' of 'bad-isis-level'.";
} }
} }
} }
/* Notifications */ /* Notifications */
notification database-overload { notification database-overload {
uses notification-instance-hdr; uses notification-instance-hdr;
leaf overload { leaf overload {
type enumeration { type enumeration {
enum off { enum off {
description description
"Indicates IS-IS instance has left overload state"; "Indicates that the IS-IS instance has left the
overload state.";
} }
enum on { enum on {
description description
"Indicates IS-IS instance has entered overload state"; "Indicates that the IS-IS instance has entered the
overload state.";
} }
} }
description "New overload state of the IS-IS instance"; description
"New overload state of the IS-IS instance.";
} }
description description
"This notification is sent when an IS-IS instance "This notification is sent when an IS-IS instance
overload state changes."; overload state changes.";
} }
notification lsp-too-large { notification lsp-too-large {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf pdu-size { leaf pdu-size {
type uint32; type uint32;
description "Size of the LSP PDU"; description
"Size of the LSP PDU.";
} }
leaf lsp-id { leaf lsp-id {
type lsp-id; type lsp-id;
description "LSP ID"; description
"LSP ID.";
} }
description description
"This notification is sent when we attempt to propagate "This notification is sent when we attempt to propagate
an LSP that is larger than the dataLinkBlockSize (ISO10589) an LSP that is larger than the dataLinkBlockSize (ISO 10589)
for the circuit. The notification generation must be for the circuit. The generation of the notification must be
throttled with at least 5 seconds between successive throttled with at least 5 seconds between successive
notifications."; notifications.";
reference
"ISO 10589: Intermediate System to Intermediate System
intra-domain routeing information exchange protocol
for use in conjunction with the protocol for providing
the connectionless-mode network service (ISO 8473)";
} }
notification if-state-change { notification if-state-change {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf state { leaf state {
type if-state-type; type if-state-type;
description "Interface state."; description
"Interface state.";
} }
description description
"This notification is sent when an interface "This notification is sent when an interface
state change is detected."; state change is detected.";
} }
notification corrupted-lsp-detected { notification corrupted-lsp-detected {
uses notification-instance-hdr; uses notification-instance-hdr;
leaf lsp-id { leaf lsp-id {
type lsp-id; type lsp-id;
description "LSP ID"; description
"LSP ID.";
} }
description description
"This notification is sent when we find that "This notification is sent when we find that
an LSP that was stored in memory has become an LSP that was stored in memory has become
corrupted."; corrupted.";
} }
notification attempt-to-exceed-max-sequence { notification attempt-to-exceed-max-sequence {
uses notification-instance-hdr; uses notification-instance-hdr;
leaf lsp-id { leaf lsp-id {
type lsp-id; type lsp-id;
description "LSP ID"; description
"LSP ID.";
} }
description description
"This notification is sent when the system "This notification is sent when the system
wraps the 32-bit sequence counter of an LSP."; wraps the 32-bit sequence counter of an LSP.";
} }
notification id-len-mismatch { notification id-len-mismatch {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf pdu-field-len { leaf pdu-field-len {
type uint8; type uint8;
description "Size of the ID length in the received PDU"; description
"Value for the system ID length in the received PDU.";
} }
leaf raw-pdu { leaf raw-pdu {
type binary; type binary;
description "Received raw PDU."; description
"Received raw PDU.";
} }
description description
"This notification is sent when we receive a PDU "This notification is sent when we receive a PDU
with a different value for the system-id length. with a different value for the system ID length.
The notification generation must be throttled The generation of the notification must be throttled
with at least 5 seconds between successive with at least 5 seconds between successive
notifications."; notifications.";
} }
notification max-area-addresses-mismatch { notification max-area-addresses-mismatch {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf max-area-addresses { leaf max-area-addresses {
type uint8; type uint8;
description "Received number of supported areas"; description
"Received number of supported areas.";
} }
leaf raw-pdu { leaf raw-pdu {
type binary; type binary;
description "Received raw PDU."; description
"Received raw PDU.";
} }
description description
"This notification is sent when we receive a PDU "This notification is sent when we receive a PDU
with a different value for the Maximum Area Addresses. with a different value for the Maximum Area Addresses.
The notification generation must be throttled The generation of the notification must be throttled
with at least 5 seconds between successive with at least 5 seconds between successive
notifications."; notifications.";
} }
notification own-lsp-purge { notification own-lsp-purge {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf lsp-id { leaf lsp-id {
type lsp-id; type lsp-id;
description "LSP ID"; description
"LSP ID.";
} }
description description
"This notification is sent when the system receives "This notification is sent when the system receives
a PDU with its own system-id and zero age."; a PDU with its own system ID and zero age.";
} }
notification sequence-number-skipped { notification sequence-number-skipped {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf lsp-id { leaf lsp-id {
type lsp-id; type lsp-id;
description "LSP ID"; description
"LSP ID.";
} }
description description
"This notification is sent when the system receives a "This notification is sent when the system receives a
PDU with its own system-id and different contents. The PDU with its own system ID and different contents. The
system has to originate the LSP with a higher sequence system has to originate the LSP with a higher sequence
number."; number.";
} }
notification authentication-type-failure { notification authentication-type-failure {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf raw-pdu { leaf raw-pdu {
type binary; type binary;
description "Received raw PDU."; description
"Received raw PDU.";
} }
description description
"This notification is sent when the system receives a "This notification is sent when the system receives a
PDU with the wrong authentication type field. PDU with the wrong authentication type field.
The notification generation must be throttled The generation of the notification must be throttled
with at least 5 seconds between successive with at least 5 seconds between successive
notifications."; notifications.";
} }
notification authentication-failure { notification authentication-failure {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf raw-pdu { leaf raw-pdu {
type binary; type binary;
description "Received raw PDU."; description
"Received raw PDU.";
} }
description description
"This notification is sent when the system receives "This notification is sent when the system receives
a PDU with the wrong authentication information. a PDU with the wrong authentication information.
The notification generation must be throttled The generation of the notification must be throttled
with at least 5 seconds between successive with at least 5 seconds between successive
notifications."; notifications.";
} }
notification version-skew { notification version-skew {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf protocol-version { leaf protocol-version {
type uint8; type uint8;
description "Protocol version received in the PDU."; description
"Protocol version received in the PDU.";
} }
leaf raw-pdu { leaf raw-pdu {
type binary; type binary;
description "Received raw PDU."; description
"Received raw PDU.";
} }
description description
"This notification is sent when the system receives a "This notification is sent when the system receives a
PDU with a different protocol version number. PDU with a different protocol version number.
The notification generation must be throttled The generation of the notification must be throttled
with at least 5 seconds between successive with at least 5 seconds between successive
notifications."; notifications.";
} }
notification area-mismatch { notification area-mismatch {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf raw-pdu { leaf raw-pdu {
type binary; type binary;
description "Received raw PDU."; description
"Received raw PDU.";
} }
description description
"This notification is sent when the system receives a "This notification is sent when the system receives a
Hello PDU from an IS that does not share any area Hello PDU from an IS that does not share any area
address. The notification generation must be throttled address. The generation of the notification must be
with at least 5 seconds between successive throttled with at least 5 seconds between successive
notifications."; notifications.";
} }
notification rejected-adjacency { notification rejected-adjacency {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf raw-pdu { leaf raw-pdu {
type binary; type binary;
description description
"Received raw PDU."; "Received raw PDU.";
} }
leaf reason { leaf reason {
type string { type string {
length "0..255"; length "0..255";
} }
description description
"The system may provide a reason to reject the "The system may provide a reason to reject the
adjacency. If the reason is not available, adjacency. If the reason is not available,
the reason string will not be returned. the reason string will not be returned.
The expected format is a single line text."; The expected format is a single line of text.";
} }
description description
"This notification is sent when the system receives a "This notification is sent when the system receives a
Hello PDU from an IS but does not establish an adjacency Hello PDU from an IS but does not establish an adjacency
for some reason. The notification generation must be for some reason. The generation of the notification
throttled with at least 5 seconds between successive must be throttled with at least 5 seconds between
notifications."; successive notifications.";
} }
notification protocols-supported-mismatch { notification protocols-supported-mismatch {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf raw-pdu { leaf raw-pdu {
type binary; type binary;
description "Received raw PDU."; description
"Received raw PDU.";
} }
leaf-list protocols { leaf-list protocols {
type uint8; type uint8;
description description
"List of protocols supported by the remote system."; "List of protocols supported by the remote system.";
} }
description description
"This notification is sent when the system receives a "This notification is sent when the system receives a
non-pseudonode LSP that has no matching protocols non-pseudonode LSP that has no matching protocols
supported. The notification generation must be throttled supported. The generation of the notification must be
with at least 5 seconds between successive throttled with at least 5 seconds between successive
notifications."; notifications.";
} }
notification lsp-error-detected { notification lsp-error-detected {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf lsp-id { leaf lsp-id {
type lsp-id; type lsp-id;
description "LSP ID."; description
"LSP ID.";
} }
leaf raw-pdu { leaf raw-pdu {
type binary; type binary;
description "Received raw PDU."; description
"Received raw PDU.";
} }
leaf error-offset { leaf error-offset {
type uint32; type uint32;
description description
"If the problem is a malformed TLV, the error-offset "If the problem is a malformed TLV, the error offset
points to the start of the TLV. If the problem is with points to the start of the TLV. If the problem is with
the LSP header, the error-offset points to the errant the LSP header, the error offset points to the errant
byte"; byte.";
} }
leaf tlv-type { leaf tlv-type {
type uint8; type uint8;
description description
"If the problem is a malformed TLV, the tlv-type is set "If the problem is a malformed TLV, the TLV type is set
to the type value of the suspicious TLV. Otherwise, to the type value of the suspicious TLV. Otherwise,
this leaf is not present."; this leaf is not present.";
} }
description description
"This notification is sent when the system receives an "This notification is sent when the system receives an
LSP with a parse error. The notification generation must LSP with a parse error. The generation of the notification
be throttled with at least 5 seconds between successive must be throttled with at least 5 seconds between
notifications."; successive notifications.";
} }
notification adjacency-state-change { notification adjacency-state-change {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf neighbor { leaf neighbor {
type string { type string {
length "1..255"; length "1..255";
} }
description description
"Name of the neighbor. "Name of the neighbor. It corresponds to the hostname
It corresponds to the hostname associated associated with the system ID of the neighbor in the
with the system-id of the neighbor in the mapping database (RFC 5301). If the name of the neighbor
mapping database (RFC5301). is not available, it is not returned.";
If the name of the neighbor is reference
not available, it is not returned."; "RFC 5301: Dynamic Hostname Exchange Mechanism for IS-IS";
} }
leaf neighbor-system-id { leaf neighbor-system-id {
type system-id; type system-id;
description "Neighbor system-id"; description
"Neighbor system ID.";
} }
leaf state { leaf state {
type adj-state-type; type adj-state-type;
description "New state of the IS-IS adjacency."; description
"New state of the IS-IS adjacency.";
} }
leaf reason { leaf reason {
type string { type string {
length "1..255"; length "1..255";
} }
description description
"If the adjacency is going to DOWN, this leaf provides "If the adjacency is going to the 'down' state, this leaf
a reason for the adjacency going down. The reason is provides a reason for the adjacency going down. The reason
provided as a text. If the adjacency is going to UP, no is provided as text. If the adjacency is going to the 'up'
reason is provided. The expected format is a single line state, no reason is provided. The expected format is a
text."; single line of text.";
} }
description description
"This notification is sent when an IS-IS adjacency "This notification is sent when an IS-IS adjacency
moves to Up state or to Down state."; moves to the 'up' state or the 'down' state.";
} }
notification lsp-received { notification lsp-received {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf lsp-id { leaf lsp-id {
type lsp-id; type lsp-id;
description "LSP ID"; description
"LSP ID.";
} }
leaf sequence { leaf sequence {
type uint32; type uint32;
description "Sequence number of the received LSP."; description
"Sequence number of the received LSP.";
} }
leaf received-timestamp { leaf received-timestamp {
type yang:timestamp; type yang:timestamp;
description "Timestamp when the LSP was received."; description
"Timestamp when the LSP was received.";
} }
leaf neighbor-system-id { leaf neighbor-system-id {
type system-id; type system-id;
description "Neighbor system-id of LSP sender"; description
"Neighbor system ID of the LSP sender.";
} }
description description
"This notification is sent when an LSP is received. "This notification is sent when an LSP is received.
The notification generation must be throttled with at The generation of the notification must be throttled with
least 5 seconds between successive notifications."; at least 5 seconds between successive notifications.";
} }
notification lsp-generation { notification lsp-generation {
uses notification-instance-hdr; uses notification-instance-hdr;
leaf lsp-id { leaf lsp-id {
type lsp-id; type lsp-id;
description "LSP ID"; description
"LSP ID.";
} }
leaf sequence { leaf sequence {
type uint32; type uint32;
description "Sequence number of the received LSP."; description
"Sequence number of the received LSP.";
} }
leaf send-timestamp { leaf send-timestamp {
type yang:timestamp; type yang:timestamp;
description "Timestamp when our LSP was regenerated."; description
"Timestamp when the LSP was regenerated.";
} }
description description
"This notification is sent when an LSP is regenerated. "This notification is sent when an LSP is regenerated.
The notification generation must be throttled with at The generation of the notification must be throttled with
least 5 seconds between successive notifications."; at least 5 seconds between successive notifications.";
} }
} }
<CODE ENDS> <CODE ENDS>
7. Security Considerations 7. Security Considerations
The YANG modules specified in this document define a schema for data The YANG module specified in this document defines a schema for data
that is designed to be accessed via network management protocols such that is designed to be accessed via network management protocols such
as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer
is the secure transport layer, and the mandatory-to-implement secure is the secure transport layer, and the mandatory-to-implement secure
transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer
is HTTPS, and the mandatory-to-implement secure transport is TLS is HTTPS, and the mandatory-to-implement secure transport is TLS
[RFC8446]. [RFC8446].
The NETCONF Access Control Model (NACM) [RFC8341] provides the means The Network Configuration Access Control Model (NACM) [RFC8341]
to restrict access for particular NETCONF or RESTCONF users to a pre- provides the means to restrict access for particular NETCONF or
configured subset of all available NETCONF or RESTCONF protocol RESTCONF users to a preconfigured subset of all available NETCONF or
operations and content. RESTCONF protocol operations and content.
There are a number of data nodes defined in ietf-isis.yang module There are a number of data nodes defined in this YANG module that are
that are writable/creatable/deletable (i.e., config true, which is writable/creatable/deletable (i.e., config true, which is the
the default). These data nodes may be considered sensitive or default). These data nodes may be considered sensitive or vulnerable
vulnerable in some network environments. Write operations (e.g., in some network environments. Write operations (e.g., edit-config)
edit-config) to these data nodes without proper protection can have a to these data nodes without proper protection can have a negative
negative effect on network operations. Writable data node represent effect on network operations. These are the subtrees and data nodes
configuration of each instance and interface. These correspond to and their sensitivity/vulnerability:
the following schema nodes:
/isis /isis
/isis/interfaces/interface[name] /isis/interfaces/interface[name]
For IS-IS, the ability to modify IS-IS configuration will allow the For IS-IS, the ability to modify IS-IS configuration will allow the
entire IS-IS domain to be compromised including forming adjacencies entire IS-IS domain to be compromised, including forming adjacencies
with unauthorized routers to misroute traffic or mount a massive with unauthorized routers to misroute traffic or mount a massive
Denial-of-Service (DoS) attack. For example, adding IS-IS on any Denial-of-Service (DoS) attack. For example, adding IS-IS on any
unprotected interface could allow an IS-IS adjacency to be formed unprotected interface could allow an IS-IS adjacency to be formed
with an unauthorized and malicious neighbor. Once an adjacency is with an unauthorized and malicious neighbor. Once an adjacency is
formed, traffic could be hijacked. As a simpler example, a Denial- formed, traffic could be hijacked. As a simpler example, a DoS
Of-Service attack could be mounted by changing the cost of an IS-IS attack could be mounted by changing the cost of an IS-IS interface to
interface to be asymmetric such that a hard routing loop ensues. In be asymmetric, such that a hard routing loop ensues. In general,
general, unauthorized modification of most IS-IS features will pose unauthorized modification of most IS-IS features will pose its own
their own set of security risks and the "Security Considerations" in set of security risks; therefore, the Security Considerations
the respective reference RFCs should be consulted. sections in the respective reference RFCs should be consulted.
Some of the readable data nodes in the ietf-isis.yang module may be Some of the readable data nodes in this YANG module may be considered
considered sensitive or vulnerable in some network environments. It sensitive or vulnerable in some network environments. It is thus
is thus important to control read access (e.g., via get, get-config, important to control read access (e.g., via get, get-config, or
or notification) to these data nodes. The exposure of the Link State notification) to these data nodes. These are the subtrees and data
Database (LSDB) will expose the detailed topology of the network. nodes and their sensitivity/vulnerability:
Similarly, the IS-IS local RIB exposes the reachable prefixes in the
IS-IS routing domain. The Link State Database (LSDB) and local RIB
are represented by the following schema nodes:
/isis/database /isis/database
/isis/local-rib /isis/local-rib
Exposure of the Link State Database and local RIB include information Exposure of the Link State Database (LSDB) will reveal the detailed
beyond the scope of the IS-IS router and this may be undesirable topology of the network. Similarly, the IS-IS local RIB exposes the
since exposure may facilitate other attacks. Additionally, the reachable prefixes in the IS-IS routing domain. Exposure of the LSDB
complete IP network topology and, if deployed, the traffic and local RIB may also reveal information beyond the scope of the IS-
engineering topology of the IS-IS domain can be reconstructed from IS router; this may be undesirable, since such exposure may
the Link State Database. Though not as straightforward, the IS-IS facilitate other attacks. Additionally, the complete IP network
local RIB can also be discover topological information. Network topology -- and, if deployed, the TE topology of the IS-IS domain --
operators may consider their topologies to be sensitive confidential can be reconstructed from the LSDB. Though not as straightforward,
data. the IS-IS local RIB can also be exploited to discover topological
information. Network operators may consider their topologies to be
sensitive confidential data.
For IS-IS authentication, configuration is supported via the For IS-IS authentication, configuration is supported via the
specification of key-chain [RFC8177] or the direct specification of specification of a key chain [RFC8177] or the direct specification of
key and authentication algorithm. Hence, authentication a key and authentication algorithm. Hence, authentication
configuration using the "auth-table-trailer" case in the configuration using the "key-chain" case in the "authentication-type"
"authentication" container inherits the security considerations of container inherits the security considerations of [RFC8177]. This
[RFC8177]. This includes the considerations with respect to the includes considerations with respect to the local storage and
local storage and handling of authentication keys. handling of authentication keys.
Some of the RPC operations in this YANG module may be considered Some of the RPC operations in this YANG module may be considered
sensitive or vulnerable in some network environments. It is thus sensitive or vulnerable in some network environments. It is thus
important to control access to these operations. The IS-IS YANG important to control access to these operations. These are the
module support the "clear-adjacency" and "clear-database" RPCs. If operations and their sensitivity/vulnerability:
access to either of these is compromised, they can result in
temporary network outages be employed to mount DoS attacks. The IS-IS YANG module supports the "clear-adjacency" and "clear-
database" RPCs. If access to either of these is compromised, they
can be exploited to mount DoS attacks due to the resultant network
outages.
The actual authentication key data (whether locally specified or part The actual authentication key data (whether locally specified or part
of a key-chain) is sensitive and needs to be kept secret from of a key chain) is sensitive and needs to be kept secret from
unauthorized parties; compromise of the key data would allow an unauthorized parties; compromise of the key data would allow an
attacker to forge IS-IS traffic that would be accepted as authentic, attacker to forge IS-IS traffic that would be accepted as authentic,
potentially compromising the entirety IS-IS domain. potentially compromising the entire IS-IS domain.
The model describes several notifications, implementations must rate- The model describes several notifications. Implementations must
limit the generation of these notifications to avoid creating rate-limit the generation of these notifications to avoid creating
significant notification load. Otherwise, this notification load may significant notification load. Otherwise, this notification load may
have some side effects on the system stability and may be exploited negatively affect system stability and may be exploited as an attack
as an attack vector. vector.
8. Contributors
The authors would like to thank Kiran Agrahara Sreenivasa, Dean
Bogdanovic, Yingzhen Qu, Yi Yang, Jeff Tanstura for their major
contributions to the draft.
9. Acknowledgements
The authors would like to thank Tom Petch, Alvaro Retana, Stewart
Bryant, Barry Leiba, Benjamin Kaduk and Adam Roach, and Roman Danyliw
for their review and comments.
10. IANA Considerations
The IANA is requested to assign two new URIs from the IETF XML 8. IANA Considerations
registry [RFC3688]. Authors are suggesting the following URI:
URI: urn:ietf:params:xml:ns:yang:ietf-isis The IANA has assigned the following URI in the "IETF XML Registry"
Registrant Contact: The IESG [RFC3688].
XML: N/A, the requested URI is an XML namespace
This document also requests one new YANG module name in the YANG URI: urn:ietf:params:xml:ns:yang:ietf-isis
Module Names registry [RFC6020] with the following suggestion: Registrant Contact: The IESG
XML: N/A; the requested URI is an XML namespace.
name: ietf-isis This document also adds the following YANG module name in the "YANG
namespace: urn:ietf:params:xml:ns:yang:ietf-isis Module Names" registry [RFC6020]:
prefix: isis
reference: RFC XXXX
11. References Name: ietf-isis
Maintained by IANA? N
Namespace: urn:ietf:params:xml:ns:yang:ietf-isis
Prefix: isis
Reference: RFC 9130
11.1. Normative References 9. References
[I-D.ietf-bfd-yang] 9.1. Normative References
Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and
G. Mirsky, "YANG Data Model for Bidirectional Forwarding
Detection (BFD)", draft-ietf-bfd-yang-17 (work in
progress), August 2018.
[ISO-10589] [ISO-10589]
"Intermediate System to Intermediate System intra- domain ISO, "Intermediate System to Intermediate System intra-
routeing information exchange protocol for use in domain routeing information exchange protocol for use in
conjunction with the protocol for providing the conjunction with the protocol for providing the
connectionless-mode network service (ISO 8473)", connectionless-mode network service (ISO 8473)",
International Standard 10589: 2002, Second Edition, 2002. International Standard 10589: 2002, Second Edition, 2002,
<https://www.iso.org/standard/30932.html>.
[RFC1195] Callon, R., "Use of OSI IS-IS for routing in TCP/IP and [RFC1195] Callon, R., "Use of OSI IS-IS for routing in TCP/IP and
dual environments", RFC 1195, DOI 10.17487/RFC1195, dual environments", RFC 1195, DOI 10.17487/RFC1195,
December 1990, <https://www.rfc-editor.org/info/rfc1195>. December 1990, <https://www.rfc-editor.org/info/rfc1195>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
skipping to change at page 112, line 23 skipping to change at line 5755
[RFC5302] Li, T., Smit, H., and T. Przygienda, "Domain-Wide Prefix [RFC5302] Li, T., Smit, H., and T. Przygienda, "Domain-Wide Prefix
Distribution with Two-Level IS-IS", RFC 5302, Distribution with Two-Level IS-IS", RFC 5302,
DOI 10.17487/RFC5302, October 2008, DOI 10.17487/RFC5302, October 2008,
<https://www.rfc-editor.org/info/rfc5302>. <https://www.rfc-editor.org/info/rfc5302>.
[RFC5305] Li, T. and H. Smit, "IS-IS Extensions for Traffic [RFC5305] Li, T. and H. Smit, "IS-IS Extensions for Traffic
Engineering", RFC 5305, DOI 10.17487/RFC5305, October Engineering", RFC 5305, DOI 10.17487/RFC5305, October
2008, <https://www.rfc-editor.org/info/rfc5305>. 2008, <https://www.rfc-editor.org/info/rfc5305>.
[RFC5306] Shand, M. and L. Ginsberg, "Restart Signaling for IS-IS",
RFC 5306, DOI 10.17487/RFC5306, October 2008,
<https://www.rfc-editor.org/info/rfc5306>.
[RFC5307] Kompella, K., Ed. and Y. Rekhter, Ed., "IS-IS Extensions [RFC5307] Kompella, K., Ed. and Y. Rekhter, Ed., "IS-IS Extensions
in Support of Generalized Multi-Protocol Label Switching in Support of Generalized Multi-Protocol Label Switching
(GMPLS)", RFC 5307, DOI 10.17487/RFC5307, October 2008, (GMPLS)", RFC 5307, DOI 10.17487/RFC5307, October 2008,
<https://www.rfc-editor.org/info/rfc5307>. <https://www.rfc-editor.org/info/rfc5307>.
[RFC5308] Hopps, C., "Routing IPv6 with IS-IS", RFC 5308, [RFC5308] Hopps, C., "Routing IPv6 with IS-IS", RFC 5308,
DOI 10.17487/RFC5308, October 2008, DOI 10.17487/RFC5308, October 2008,
<https://www.rfc-editor.org/info/rfc5308>. <https://www.rfc-editor.org/info/rfc5308>.
[RFC5443] Jork, M., Atlas, A., and L. Fang, "LDP IGP [RFC5443] Jork, M., Atlas, A., and L. Fang, "LDP IGP
skipping to change at page 115, line 10 skipping to change at line 5880
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
<https://www.rfc-editor.org/info/rfc8446>. <https://www.rfc-editor.org/info/rfc8446>.
[RFC8570] Ginsberg, L., Ed., Previdi, S., Ed., Giacalone, S., Ward, [RFC8570] Ginsberg, L., Ed., Previdi, S., Ed., Giacalone, S., Ward,
D., Drake, J., and Q. Wu, "IS-IS Traffic Engineering (TE) D., Drake, J., and Q. Wu, "IS-IS Traffic Engineering (TE)
Metric Extensions", RFC 8570, DOI 10.17487/RFC8570, March Metric Extensions", RFC 8570, DOI 10.17487/RFC8570, March
2019, <https://www.rfc-editor.org/info/rfc8570>. 2019, <https://www.rfc-editor.org/info/rfc8570>.
11.2. Informative References [RFC8706] Ginsberg, L. and P. Wells, "Restart Signaling for IS-IS",
RFC 8706, DOI 10.17487/RFC8706, February 2020,
<https://www.rfc-editor.org/info/rfc8706>.
[I-D.ietf-rtgwg-segment-routing-ti-lfa] [RFC9127] Raham, R., Ed., Zheng, L., Ed., Jethanandani, M., Ed.,
Litkowski, S., Bashandy, A., Filsfils, C., Decraene, B., Pallagatti, S., and G. Mirsky, "YANG Data Model for
Francois, P., daniel.voyer@bell.ca, d., Clad, F., and P. Bidirectional Forwarding Detection (BFD)", RFC 9127,
Camarillo, "Topology Independent Fast Reroute using DOI 10.17487/RFC9127, September 2021,
Segment Routing", draft-ietf-rtgwg-segment-routing-ti- <https://www.rfc-editor.org/info/rfc9127>.
lfa-01 (work in progress), March 2019.
[W3C.REC-xml-20081126]
Bray, T., Paoli, J., Sperberg-McQueen, M., Maler, E., and
F. Yergeau, "Extensible Markup Language (XML) 1.0 (Fifth
Edition)", World Wide Web Consortium Recommendation REC-
xml-20081126, November 2008,
<https://www.w3.org/TR/2008/REC-xml-20081126>.
9.2. Informative References
[RFC7812] Atlas, A., Bowers, C., and G. Enyedi, "An Architecture for [RFC7812] Atlas, A., Bowers, C., and G. Enyedi, "An Architecture for
IP/LDP Fast Reroute Using Maximally Redundant Trees (MRT- IP/LDP Fast Reroute Using Maximally Redundant Trees (MRT-
FRR)", RFC 7812, DOI 10.17487/RFC7812, June 2016, FRR)", RFC 7812, DOI 10.17487/RFC7812, June 2016,
<https://www.rfc-editor.org/info/rfc7812>. <https://www.rfc-editor.org/info/rfc7812>.
[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams",
BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018,
<https://www.rfc-editor.org/info/rfc8340>. <https://www.rfc-editor.org/info/rfc8340>.
Appendix A. Example of IS-IS configuration in XML [SR-TI-LFA]
Litkowski, S., Bashandy, A., Filsfils, C., Francois, P.,
Decraene, B., and D. Voyer, "Topology Independent Fast
Reroute using Segment Routing", Work in Progress,
Internet-Draft, draft-ietf-rtgwg-segment-routing-ti-lfa-
07, 29 June 2021, <https://datatracker.ietf.org/doc/html/
draft-ietf-rtgwg-segment-routing-ti-lfa-07>.
This section gives an example of configuration of an IS-IS instance Appendix A. Example of IS-IS Configuration in XML
on a device. The example is written in XML.
This appendix gives an example of the configuration of an IS-IS
instance on a device. The example is written in XML
[W3C.REC-xml-20081126].
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"> <routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing">
<name>SLI</name> <name>SLI</name>
<router-id>192.0.2.1</router-id> <router-id>192.0.2.1</router-id>
<control-plane-protocols> <control-plane-protocols>
<control-plane-protocol> <control-plane-protocol>
<name>ISIS-example</name> <name>IS-IS-example</name>
<description/> <description/>
<type> <type>
<type xmlns:isis="urn:ietf:params:xml:ns:yang:ietf-isis"> <type xmlns:isis="urn:ietf:params:xml:ns:yang:ietf-isis">
isis:isis isis:isis
</type> </type>
</type> </type>
<isis xmlns="urn:ietf:params:xml:ns:yang:ietf-isis"> <isis xmlns="urn:ietf:params:xml:ns:yang:ietf-isis">
<enable>true</enable> <enable>true</enable>
<level-type>level-2</level-type> <level-type>level-2</level-type>
<system-id>87FC.FCDF.4432</system-id> <system-id>87FC.FCDF.4432</system-id>
skipping to change at page 117, line 16 skipping to change at line 6002
</type> </type>
<link-up-down-trap-enable>enabled</link-up-down-trap-enable> <link-up-down-trap-enable>enabled</link-up-down-trap-enable>
<ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> <ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip">
<address> <address>
<ip>192.0.2.1</ip> <ip>192.0.2.1</ip>
<prefix-length>32</prefix-length> <prefix-length>32</prefix-length>
</address> </address>
</ipv4> </ipv4>
<ipv6 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> <ipv6 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip">
<address> <address>
<ip>2001:DB8::1</ip> <ip>2001:db8::1</ip>
<prefix-length>128</prefix-length> <prefix-length>128</prefix-length>
</address> </address>
</ipv6> </ipv6>
</interface> </interface>
<interface> <interface>
<name>Eth1</name> <name>Eth1</name>
<description/> <description/>
<type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type"> <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">
ianaift:ethernetCsmacd ianaift:ethernetCsmacd
</type> </type>
<link-up-down-trap-enable>enabled</link-up-down-trap-enable> <link-up-down-trap-enable>enabled</link-up-down-trap-enable>
<ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> <ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip">
<address> <address>
<ip>198.51.100.1</ip> <ip>198.51.100.1</ip>
<prefix-length>30</prefix-length> <prefix-length>30</prefix-length>
</address> </address>
</ipv4> </ipv4>
<ipv6 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> <ipv6 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip">
<address> <address>
<ip>2001:DB8:0:0:FF::1</ip> <ip>2001:db8:0:0:ff::1</ip>
<prefix-length>64</prefix-length> <prefix-length>64</prefix-length>
</address> </address>
</ipv6> </ipv6>
</interface> </interface>
</interfaces> </interfaces>
</data> </data>
Acknowledgments
The authors would like to thank Tom Petch, Alvaro Retana, Stewart
Bryant, Barry Leiba, Benjamin Kaduk, Adam Roach, and Roman Danyliw
for their review and comments.
Contributors
The authors would like to thank Kiran Agrahara Sreenivasa, Dean
Bogdanovic, Yingzhen Qu, Yi Yang, and Jeff Tantsura for their major
contributions to this document.
Authors' Addresses Authors' Addresses
Stephane Litkowski Stephane Litkowski
Cisco Systems Cisco Systems
Email: slitkows.ietf@gmail.com Email: slitkows.ietf@gmail.com
Derek Yeung Derek Yeung
Arrcus, Inc Arrcus, Inc.
Email: derek@arrcus.com Email: derek@arrcus.com
Acee Lindem Acee Lindem
Cisco Systems Cisco Systems
Email: acee@cisco.com Email: acee@cisco.com
Jeffrey Zhang Jeffrey Zhang
Juniper Networks Juniper Networks
Email: zzhang@juniper.net Email: zzhang@juniper.net
Ladislav Lhotka Ladislav Lhotka
CZ.NIC CZ.NIC
Email: lhotka@nic.cz Email: ladislav.lhotka@nic.cz
 End of changes. 792 change blocks. 
1920 lines changed or deleted 2370 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/

mirror server hosted at Truenetwork, Russian Federation.