draft-ietf-isis-yang-isis-cfg-08.txt   draft-ietf-isis-yang-isis-cfg-09.txt 
IS-IS Working Group S. Litkowski IS-IS Working Group S. Litkowski
Internet-Draft Orange Internet-Draft Orange
Intended status: Standards Track D. Yeung Intended status: Standards Track D. Yeung
Expires: September 22, 2016 A. Lindem Expires: March 24, 2017 A. Lindem
Cisco Systems Cisco Systems
J. Zhang J. Zhang
Juniper Networks Juniper Networks
L. Lhotka L. Lhotka
CZ.NIC CZ.NIC
March 21, 2016 September 20, 2016
YANG Data Model for IS-IS protocol YANG Data Model for IS-IS protocol
draft-ietf-isis-yang-isis-cfg-08 draft-ietf-isis-yang-isis-cfg-09
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 IS-IS protocol on network elements. It also defined an and manage IS-IS protocol on network elements. It also defined an
extension module for segment routing configuration and operation. extension module for segment routing configuration and operation.
Requirements Language Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
skipping to change at page 1, line 44 skipping to change at page 1, line 44
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on September 22, 2016. This Internet-Draft will expire on March 24, 2017.
Copyright Notice Copyright Notice
Copyright (c) 2016 IETF Trust and the persons identified as the Copyright (c) 2016 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
(http://trustee.ietf.org/license-info) in effect on the date of (http://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
skipping to change at page 2, line 25 skipping to change at page 2, line 25
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 . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Tree diagram . . . . . . . . . . . . . . . . . . . . . . 3 1.1. Tree diagram . . . . . . . . . . . . . . . . . . . . . . 3
2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3
2.1. IS-IS Configuration . . . . . . . . . . . . . . . . . . . 10 2.1. IS-IS Configuration . . . . . . . . . . . . . . . . . . . 9
2.2. Multitopology Parameters . . . . . . . . . . . . . . . . 10 2.2. Multitopology Parameters . . . . . . . . . . . . . . . . 10
2.3. Per-Level Parameters . . . . . . . . . . . . . . . . . . 10 2.3. Per-Level Parameters . . . . . . . . . . . . . . . . . . 10
2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 12 2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 12
2.5. ISO parameters . . . . . . . . . . . . . . . . . . . . . 12 2.5. ISO parameters . . . . . . . . . . . . . . . . . . . . . 12
2.6. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.6. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.7. Operational State . . . . . . . . . . . . . . . . . . . . 13 2.7. Operational State . . . . . . . . . . . . . . . . . . . . 13
3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 13 3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 13
4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 14 4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 14
5. Segment Routing . . . . . . . . . . . . . . . . . . . . . . . 18 5. Segment Routing . . . . . . . . . . . . . . . . . . . . . . . 18
5.1. Segment Routing activation . . . . . . . . . . . . . . . 21 5.1. Segment Routing activation . . . . . . . . . . . . . . . 20
5.2. Advertising mapping server policy . . . . . . . . . . . . 21 5.2. Advertising mapping server policy . . . . . . . . . . . . 20
5.3. IP Fast reroute . . . . . . . . . . . . . . . . . . . . . 21 5.3. IP Fast reroute . . . . . . . . . . . . . . . . . . . . . 20
6. Interaction with Other YANG Modules . . . . . . . . . . . . . 21 6. Interaction with Other YANG Modules . . . . . . . . . . . . . 21
7. IS-IS YANG Module . . . . . . . . . . . . . . . . . . . . . . 22 7. IS-IS YANG Module . . . . . . . . . . . . . . . . . . . . . . 21
8. IS-IS Segment Routing YANG Module . . . . . . . . . . . . . . 100 8. IS-IS Segment Routing YANG Module . . . . . . . . . . . . . . 100
9. Security Considerations . . . . . . . . . . . . . . . . . . . 114 9. Security Considerations . . . . . . . . . . . . . . . . . . . 114
10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 115 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 115
11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 115 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 115
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 115 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 115
13. Normative References . . . . . . . . . . . . . . . . . . . . 116 13. Normative References . . . . . . . . . . . . . . . . . . . . 116
Appendix A. Example: NETCONF <get> Reply . . . . . . . . . . . . 117 Appendix A. Example: NETCONF <get> Reply . . . . . . . . . . . . 117
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 120 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 120
1. Introduction 1. Introduction
skipping to change at page 3, line 48 skipping to change at page 3, line 48
The IS-IS YANG module is divided in two main "isis" containers that The IS-IS YANG module is divided in two main "isis" containers that
are augmenting the "routing-protocol" lists in ietf-routing module are augmenting the "routing-protocol" lists in ietf-routing module
with specific IS-IS parameters. with specific IS-IS parameters.
One container contains the writable parameters, while the other One container contains the writable parameters, while the other
contains the operational states. contains the operational states.
The figure below describe the overall structure of the isis YANG The figure below describe the overall structure of the isis YANG
module: module:
module: ietf-isis module: ietf-isis
augment /rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route: augment /rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route:
+--ro metric? uint32 +--ro metric? uint32
+--ro tag* uint64 +--ro tag* uint64
+--ro route-type? enumeration +--ro route-type? enumeration
augment /rt:fib-route/rt:output/rt:route: augment /if:interfaces/if:interface:
+--ro metric? uint32 +--rw clns-mtu? uint16
+--ro tag* uint64 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol:
+--ro route-type? enumeration +--rw isis
augment /if:interfaces/if:interface: +--rw enable? boolean {admin-control}?
+--rw clns-mtu? uint16 +--rw level-type? level
augment /rt:routing/rt:routing-protocols/rt:routing-protocol: +--rw system-id? system-id
+--rw isis +--rw maximum-area-addresses? uint8 {maximum-area-addresses}?
+--rw enable? boolean {admin-control}? +--rw area-address* area-address
+--rw level-type? level +--rw mpls
+--rw system-id? system-id | +--rw ipv4-router-id? inet:ipv4-address {ipv4-router-id}?
+--rw maximum-area-addresses? uint8 {maximum-area-addresses}? | +--rw ipv6-router-id? inet:ipv6-address {ipv6-router-id}?
+--rw area-address* area-address | +--rw igp-ldp-sync {igp-ldp-sync}?
+--rw mpls +--rw reference-bandwidth? uint32 {reference-bandwidth}?
| +--rw ipv4-router-id? inet:ipv4-address {ipv4-router-id}? +--rw lsp-mtu? uint16
| +--rw ipv6-router-id? inet:ipv6-address {ipv6-router-id}? +--rw lsp-lifetime? uint16
| +--rw igp-ldp-sync {igp-ldp-sync}? +--rw lsp-refresh? uint16 {lsp-refresh}?
+--rw reference-bandwidth? uint32 {reference-bandwidth}? +--rw graceful-restart {graceful-restart}?
+--rw lsp-mtu? uint16 | +--rw enable? boolean
+--rw lsp-lifetime? uint16 +--rw node-tag {node-tag}?
+--rw lsp-refresh? uint16 {lsp-refresh}? | +--rw node-tag* [tag]
+--rw graceful-restart {graceful-restart}? | ...
| +--rw enable? boolean +--rw authentication
+--rw node-tag {node-tag}? | +--rw (authentication-type)?
| +--rw node-tag* [tag] | | ...
| ... | +--rw level-1
+--rw authentication | | ...
| +--rw (authentication-type)? | +--rw level-2
| | ... | ...
| +--rw level-1 +--rw metric-type
| | ... | +--rw value? enumeration
| +--rw level-2 | +--rw level-1
| ... | | ...
+--rw metric-type | +--rw level-2
| +--rw value? enumeration | ...
| +--rw level-1 +--rw default-metric
| | ... | +--rw value? wide-metric
| +--rw level-2 | +--rw level-1
| ... | | ...
+--rw default-metric | +--rw level-2
| +--rw value? wide-metric | ...
| +--rw level-1 +--rw afs
| | ... | +--rw af* [af] {nlpid-control}?
| +--rw level-2 | ...
| ... +--rw preference
+--rw af* [af] {nlpid-control}? | +--rw (granularity)?
| +--rw af identityref | ...
| +--rw enable? boolean +--rw overload
+--rw preference | +--rw status? boolean
| +--rw (granularity)? +--rw overload-max-metric {overload-max-metric}?
| ... | +--rw timeout? uint16
+--rw overload +--rw fast-reroute {fast-reroute}?
| +--rw status? boolean | +--rw lfa {lfa}?
+--rw overload-max-metric {overload-max-metric}? +--rw multi-topology {multi-topology}?
| +--rw timeout? uint16 | +--rw topology* [name]
+--rw fast-reroute {fast-reroute}? | ...
| +--rw lfa {lfa}? +--rw interfaces
+--rw topologies* [name] {multi-topology}? +--rw interface* [name]
| +--rw enable? boolean ...
| +--rw name leafref augment /rt:routing-state/rt:control-plane-protocols/rt:control-plane-protocol:
| +--rw default-metric +--ro isis
| | ... +--ro enable? boolean {admin-control}?
| +--rw node-tag {node-tag}? +--ro level-type? level
| | ... +--ro system-id? system-id
| +--rw fast-reroute {fast-reroute}? +--ro maximum-area-addresses? uint8 {maximum-area-addresses}?
| ... +--ro area-address* area-address
+--rw interfaces +--ro mpls
+--rw interface* [name] | +--ro ipv4-router-id? inet:ipv4-address {ipv4-router-id}?
... | +--ro ipv6-router-id? inet:ipv6-address {ipv6-router-id}?
augment /rt:routing-state/rt:routing-protocols/rt:routing-protocol: | +--ro igp-ldp-sync {igp-ldp-sync}?
+--ro isis +--ro reference-bandwidth? uint32 {reference-bandwidth}?
+--ro enable? boolean {admin-control}? +--ro lsp-mtu? uint16
+--ro level-type? level +--ro lsp-lifetime? uint16
+--ro system-id? system-id +--ro lsp-refresh? uint16 {lsp-refresh}?
+--ro maximum-area-addresses? uint8 {maximum-area-addresses}? +--ro graceful-restart {graceful-restart}?
+--ro area-address* area-address | +--ro enable? boolean
+--ro mpls +--ro node-tag {node-tag}?
| +--ro ipv4-router-id? inet:ipv4-address {ipv4-router-id}? | +--ro node-tag* [tag]
| +--ro ipv6-router-id? inet:ipv6-address {ipv6-router-id}? | ...
| +--ro igp-ldp-sync {igp-ldp-sync}? +--ro authentication
+--ro reference-bandwidth? uint32 {reference-bandwidth}? | +--ro (authentication-type)?
+--ro lsp-mtu? uint16 | | ...
+--ro lsp-lifetime? uint16 | +--ro level-1
+--ro lsp-refresh? uint16 {lsp-refresh}? | | ...
+--ro graceful-restart {graceful-restart}? | +--ro level-2
| +--ro enable? boolean | ...
+--ro node-tag {node-tag}? +--ro metric-type
| +--ro node-tag* [tag] | +--ro value? enumeration
| ... | +--ro level-1
+--ro authentication | | ...
| +--ro (authentication-type)? | +--ro level-2
| | ... | ...
| +--ro level-1 +--ro default-metric
| | ... | +--ro value? wide-metric
| +--ro level-2 | +--ro level-1
| ... | | ...
+--ro metric-type | +--ro level-2
| +--ro value? enumeration | ...
| +--ro level-1 +--ro afs
| | ... | +--ro af* [af] {nlpid-control}?
| +--ro level-2 | ...
| ... +--ro preference
+--ro default-metric | +--ro (granularity)?
| +--ro value? wide-metric | ...
| +--ro level-1 +--ro overload
| | ... | +--ro status? boolean
| +--ro level-2 +--ro overload-max-metric {overload-max-metric}?
| ... | +--ro timeout? uint16
+--ro af* [af] {nlpid-control}? +--ro fast-reroute {fast-reroute}?
| +--ro af identityref | +--ro lfa {lfa}?
| +--ro enable? boolean | +--ro protected-routes
+--ro preference | | ...
| +--ro (granularity)? | +--ro nonprotected-routes
| ... | | ...
+--ro overload | +--ro protection-statistics* [frr-protection-method]
| +--ro status? boolean | ...
+--ro overload-max-metric {overload-max-metric}? +--ro topologies* [name]
| +--ro timeout? uint16 | +--ro name leafref
+--ro fast-reroute {fast-reroute}? | +--ro fast-route {fast-reroute}?
| +--ro lfa {lfa}? | ...
| +--ro protected-routes +--ro system-counters
| | ... | +--ro level* [level]
| +--ro nonprotected-routes | ...
| | ... +--ro interfaces
| +--ro protection-statistics* [frr-protection-method] | +--ro interface* [interface]
| ... | ...
+--ro topologies* [name] +--ro spf-log
| +--ro name leafref | +--ro event* [id]
| +--ro fast-route {fast-reroute}? | ...
| ... +--ro lsp-log
+--ro system-counters | +--ro event* [id]
| +--ro level* [level] | ...
| ... +--ro database
+--ro interfaces | +--ro level-db* [level]
| +--ro interface* [interface] | ...
| ... +--ro hostnames
+--ro spf-log +--ro hostname* [system-id]
| +--ro event* [id] ...
| ... rpcs:
+--ro lsp-log +---x clear-adjacency
| +--ro event* [id] | +--ro input
| ... | +--ro routing-protocol-instance-name instance-state-ref
+--ro database | +--ro level? level
| +--ro level-db* [level] | +--ro interface? string
| ... +---x clear-database
+--ro hostnames +--ro input
+--ro hostname* [system-id] +--ro routing-protocol-instance-name instance-state-ref
... +--ro level? level
rpcs: notifications:
+---x clear-adjacency +---n database-overload
| +--ro input | +--ro instance-name? string
| +--ro routing-protocol-instance-name instance-state-ref | +--ro instance-level? level
| +--ro level? level | +--ro overload? enumeration
| +--ro interface? string +---n lsp-too-large
+---x clear-database | +--ro instance-name? string
+--ro input | +--ro instance-level? level
+--ro routing-protocol-instance-name instance-state-ref | +--ro interface-name? string
+--ro level? level | +--ro interface-level? level
notifications: | +--ro extended-circuit-id? extended-circuit-id
+---n database-overload | +--ro pdu-size? uint32
| +--ro instance-name? string | +--ro lsp-id? lsp-id
| +--ro instance-level? level +---n corrupted-lsp-detected
| +--ro overload? enumeration | +--ro instance-name? string
+---n lsp-too-large | +--ro instance-level? level
| +--ro instance-name? string | +--ro lsp-id? lsp-id
| +--ro instance-level? level +---n attempt-to-exceed-max-sequence
| +--ro interface-name? string | +--ro instance-name? string
| +--ro interface-level? level | +--ro instance-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro lsp-id? lsp-id
| +--ro pdu-size? uint32 +---n id-len-mismatch
| +--ro lsp-id? lsp-id | +--ro instance-name? string
+---n corrupted-lsp-detected | +--ro instance-level? level
| +--ro instance-name? string | +--ro interface-name? string
| +--ro instance-level? level | +--ro interface-level? level
| +--ro lsp-id? lsp-id | +--ro extended-circuit-id? extended-circuit-id
+---n attempt-to-exceed-max-sequence | +--ro pdu-field-len? uint8
| +--ro instance-name? string | +--ro raw-pdu? binary
| +--ro instance-level? level +---n max-area-addresses-mismatch
| +--ro lsp-id? lsp-id | +--ro instance-name? string
+---n id-len-mismatch | +--ro instance-level? level
| +--ro instance-name? string | +--ro interface-name? string
| +--ro instance-level? level | +--ro interface-level? level
| +--ro interface-name? string | +--ro extended-circuit-id? extended-circuit-id
| +--ro interface-level? level | +--ro max-area-addresses? uint8
| +--ro extended-circuit-id? extended-circuit-id | +--ro raw-pdu? binary
| +--ro pdu-field-len? uint8 +---n own-lsp-purge
| +--ro raw-pdu? binary | +--ro instance-name? string
+---n max-area-addresses-mismatch | +--ro instance-level? level
| +--ro instance-name? string | +--ro interface-name? string
| +--ro instance-level? level | +--ro interface-level? level
| +--ro interface-name? string | +--ro extended-circuit-id? extended-circuit-id
| +--ro interface-level? level | +--ro lsp-id? lsp-id
| +--ro extended-circuit-id? extended-circuit-id +---n sequence-number-skipped
| +--ro max-area-addresses? uint8 | +--ro instance-name? string
| +--ro raw-pdu? binary | +--ro instance-level? level
+---n own-lsp-purge | +--ro interface-name? string
| +--ro instance-name? string | +--ro interface-level? level
| +--ro instance-level? level | +--ro extended-circuit-id? extended-circuit-id
| +--ro interface-name? string | +--ro lsp-id? lsp-id
| +--ro interface-level? level +---n authentication-type-failure
| +--ro extended-circuit-id? extended-circuit-id | +--ro instance-name? string
| +--ro lsp-id? lsp-id | +--ro instance-level? level
+---n sequence-number-skipped | +--ro interface-name? string
| +--ro instance-name? string | +--ro interface-level? level
| +--ro instance-level? level | +--ro extended-circuit-id? extended-circuit-id
| +--ro interface-name? string | +--ro raw-pdu? binary
| +--ro interface-level? level +---n authentication-failure
| +--ro extended-circuit-id? extended-circuit-id | +--ro instance-name? string
| +--ro lsp-id? lsp-id | +--ro instance-level? level
+---n authentication-type-failure | +--ro interface-name? string
| +--ro instance-name? string | +--ro interface-level? level
| +--ro instance-level? level | +--ro extended-circuit-id? extended-circuit-id
| +--ro interface-name? string | +--ro raw-pdu? binary
| +--ro interface-level? level +---n version-skew
| +--ro extended-circuit-id? extended-circuit-id | +--ro instance-name? string
| +--ro raw-pdu? binary | +--ro instance-level? level
+---n authentication-failure | +--ro interface-name? string
| +--ro instance-name? string | +--ro interface-level? level
| +--ro instance-level? level | +--ro extended-circuit-id? extended-circuit-id
| +--ro interface-name? string | +--ro protocol-version? uint8
| +--ro interface-level? level | +--ro raw-pdu? binary
| +--ro extended-circuit-id? extended-circuit-id +---n area-mismatch
| +--ro raw-pdu? binary | +--ro instance-name? string
+---n version-skew | +--ro instance-level? level
| +--ro instance-name? string | +--ro interface-name? string
| +--ro instance-level? level | +--ro interface-level? level
| +--ro interface-name? string | +--ro extended-circuit-id? extended-circuit-id
| +--ro interface-level? level | +--ro raw-pdu? binary
| +--ro extended-circuit-id? extended-circuit-id +---n rejected-adjacency
| +--ro protocol-version? uint8 | +--ro instance-name? string
| +--ro raw-pdu? binary | +--ro instance-level? level
+---n area-mismatch | +--ro interface-name? string
| +--ro instance-name? string | +--ro interface-level? level
| +--ro instance-level? level | +--ro extended-circuit-id? extended-circuit-id
| +--ro interface-name? string | +--ro raw-pdu? binary
| +--ro interface-level? level | +--ro reason? string
| +--ro extended-circuit-id? extended-circuit-id +---n protocols-supported-mismatch
| +--ro raw-pdu? binary | +--ro instance-name? string
+---n rejected-adjacency | +--ro instance-level? level
| +--ro instance-name? string | +--ro interface-name? string
| +--ro instance-level? level | +--ro interface-level? level
| +--ro interface-name? string | +--ro extended-circuit-id? extended-circuit-id
| +--ro interface-level? level | +--ro raw-pdu? binary
| +--ro extended-circuit-id? extended-circuit-id | +--ro protocols* uint8
| +--ro raw-pdu? binary +---n lsp-error-detected
| +--ro reason? string | +--ro instance-name? string
+---n protocols-supported-mismatch | +--ro instance-level? level
| +--ro instance-name? string | +--ro interface-name? string
| +--ro instance-level? level | +--ro interface-level? level
| +--ro interface-name? string | +--ro extended-circuit-id? extended-circuit-id
| +--ro interface-level? level | +--ro lsp-id? lsp-id
| +--ro extended-circuit-id? extended-circuit-id | +--ro raw-pdu? binary
| +--ro raw-pdu? binary | +--ro error-offset? uint32
| +--ro protocols* uint8 | +--ro tlv-type? uint8
+---n lsp-error-detected +---n adjacency-change
| +--ro instance-name? string | +--ro instance-name? string
| +--ro instance-level? level | +--ro instance-level? level
| +--ro interface-name? string | +--ro interface-name? string
| +--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 neighbor? string
| +--ro raw-pdu? binary | +--ro neighbor-system-id? system-id
| +--ro error-offset? uint32 | +--ro level? level
| +--ro tlv-type? uint8 | +--ro state? enumeration
+---n adjacency-change | +--ro reason? string
| +--ro instance-name? string +---n lsp-received
| +--ro instance-level? level | +--ro instance-name? string
| +--ro interface-name? string | +--ro instance-level? level
| +--ro interface-level? level | +--ro interface-name? string
| +--ro extended-circuit-id? extended-circuit-id | +--ro interface-level? level
| +--ro neighbor? string | +--ro extended-circuit-id? extended-circuit-id
| +--ro neighbor-system-id? system-id | +--ro lsp-id? lsp-id
| +--ro level? level | +--ro sequence? uint32
| +--ro state? enumeration | +--ro received-timestamp? yang:timestamp
| +--ro reason? string | +--ro neighbor-system-id? system-id
+---n lsp-received +---n lsp-generation
| +--ro instance-name? string +--ro instance-name? string
| +--ro instance-level? level +--ro instance-level? level
| +--ro interface-name? string +--ro lsp-id? lsp-id
| +--ro interface-level? level +--ro sequence? uint32
| +--ro extended-circuit-id? extended-circuit-id +--ro send-timestamp? yang:timestamp
| +--ro lsp-id? lsp-id
| +--ro sequence? uint32
| +--ro received-timestamp? yang:timestamp
| +--ro neighbor-system-id? system-id
+---n lsp-generation
+--ro instance-name? string
+--ro instance-level? level
+--ro lsp-id? lsp-id
+--ro sequence? uint32
+--ro send-timestamp? yang:timestamp
2.1. IS-IS Configuration 2.1. IS-IS Configuration
The IS-IS configuration container is divided in: The IS-IS configuration container is divided in:
o Global parameters. o Global parameters.
o Per interface configuration (see Section 2.4). o Per interface configuration (see Section 2.4).
It would to up to extension modules to augment this model to support It would to up to extension modules to augment this model to support
skipping to change at page 11, line 7 skipping to change at page 10, line 44
| +--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>
<level-2> <level-2>
<value>200</value> <value>200</value>
</level-2> </level-2>
</priority> </priority>
An implementation SHOULD prefer a level specific parameter over An implementation SHOULD prefer a level specific parameter over
level-all parameter. As example, if priority is 100 for level-1, 200 level-all parameter. As example, if priority is 100 for level-1, 200
for level-2 and 250 for top level configuration, the implementation for level-2 and 250 for top level configuration, the implementation
should use 100 for level-1 and 200 for level-2. should use 100 for level-1 and 200 for level-2.
Some parameters like overload bit and route preference are not Some parameters like overload bit and route preference are not
modelled for per level configuration. If an implementation supports modelled for per level configuration. If an implementation supports
per level configuration for such parameter, the implementation SHOULD per level configuration for such parameter, the implementation SHOULD
augment the current model by adding level-1 and level-2 containers augment the current model by adding level-1 and level-2 containers
and reusing existing configuration groupings. and reusing existing configuration groupings.
Example of augmentation : Example of augmentation :
augment "/rt:routing/" + augment "/rt:routing/" +
"rt:routing-protocols/rt:routing-protocol"+ "rt:routing-protocols/rt:routing-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 augment IS-IS routing protocol when used";
} }
description description
"This augments IS-IS overload configuration "This augments 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.";
} }
} }
Moreover, if an implementation does not support per level Moreover, if an implementation does not support per level
configuration for a parameter, like priority, which has per level configuration for a parameter, like priority, which has per level
configuration, the implementation SHOULD advertise a deviation to configuration, the implementation SHOULD advertise a deviation to
announce the non support of the level-1 and level-2 containers. announce the non support of the 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-1-2 configuration, it SHOULD also
advertise a deviation. advertise a deviation.
2.4. Per-Interface Parameters 2.4. Per-Interface Parameters
skipping to change at page 18, line 32 skipping to change at page 18, line 22
configuration and operational states. configuration and operational states.
The IS-IS SR YANG module requires the base segment routing module The IS-IS SR YANG module requires the base segment routing module
([I-D.ietf-spring-sr-yang]) to be supported as there is a strong ([I-D.ietf-spring-sr-yang]) to be supported as there is a strong
relationship between those modules. relationship between those modules.
The figure below describe the overall structure of the isis-sr YANG The figure below describe the overall structure of the isis-sr YANG
module: module:
module: ietf-isis-sr module: ietf-isis-sr
augment /rt:routing/rt:routing-protocols/rt:routing-protocol/isis:isis: augment /rt:routing/rt:control-plane-protocols/
rt:control-plane-protocol/isis:isis:
+--rw segment-routing +--rw segment-routing
| +--rw enabled? boolean | +--rw enabled? boolean
| +--rw bindings | +--rw bindings
| +--rw advertise | +--rw advertise
| | +--rw policies* string | | +--rw policies* string
| +--rw receive? boolean | +--rw receive? boolean
+--rw protocol-srgb {sr:protocol-srgb}? +--rw protocol-srgb {sr:protocol-srgb}?
+--rw srgb* [lower-bound upper-bound] +--rw srgb* [lower-bound upper-bound]
+--rw lower-bound uint32 +--rw lower-bound uint32
+--rw upper-bound uint32 +--rw upper-bound uint32
augment /rt:routing/rt:routing-protocols/rt:routing-protocol augment /rt:routing/rt:control-plane-protocols/
/isis:isis/isis:interfaces/isis:interface: rt:control-plane-protocol/isis:isis/
isis:interfaces/isis:interface:
+--rw segment-routing +--rw segment-routing
+--rw adjacency-sid +--rw adjacency-sid
+--rw advertise-adj-group-sid* [group-id] +--rw advertise-adj-group-sid* [group-id]
| +--rw group-id uint32 | +--rw group-id uint32
+--rw advertise-protection? enumeration +--rw advertise-protection? enumeration
augment /rt:routing/rt:routing-protocols/rt:routing-protocol augment /rt:routing/rt:control-plane-protocols/
/isis:isis/isis:interfaces/isis:interface/isis:fast-reroute: rt:control-plane-protocol/isis:isis/
isis:interfaces/isis:interface/isis:fast-reroute:
+--rw ti-lfa {ti-lfa}? +--rw ti-lfa {ti-lfa}?
+--rw enable? boolean +--rw enable? boolean
augment /rt:routing/rt:routing-protocols/rt:routing-protocol augment /rt:routing/rt:control-plane-protocols/
/isis:isis/isis:interfaces/isis:interface/isis:fast-reroute rt:control-plane-protocol/isis:isis/
/isis:lfa/isis:remote-lfa: isis:interfaces/isis:interface/isis:fast-reroute/isis:lfa/isis:remote-lfa:
+--rw use-segment-routing-path? boolean {remote-lfa-sr}? +--rw use-segment-routing-path? boolean {remote-lfa-sr}?
augment /rt:routing-state/rt:routing-protocols/rt:routing-protocol augment /rt:routing-state/rt:control-plane-protocols/
/isis:isis: rt:control-plane-protocol/isis:isis:
+--ro segment-routing +--ro segment-routing
| +--ro enabled? boolean | +--ro enabled? boolean
| +--ro bindings | +--ro bindings
| +--ro advertise | +--ro advertise
| | +--ro policies* string | | +--ro policies* string
| +--ro receive? boolean | +--ro receive? boolean
+--ro protocol-srgb {sr:protocol-srgb}? +--ro protocol-srgb {sr:protocol-srgb}?
+--ro srgb* [lower-bound upper-bound] +--ro srgb* [lower-bound upper-bound]
+--ro lower-bound uint32 +--ro lower-bound uint32
+--ro upper-bound uint32 +--ro upper-bound uint32
augment /rt:routing-state/rt:routing-protocols/rt:routing-protocol augment /rt:routing-state/rt:control-plane-protocols/
/isis:isis/isis:interfaces/isis:interface: rt:control-plane-protocol/isis:isis/
isis:interfaces/isis:interface:
+--ro segment-routing +--ro segment-routing
+--ro adjacency-sid +--ro adjacency-sid
+--ro advertise-adj-group-sid* [group-id] +--ro advertise-adj-group-sid* [group-id]
| +--ro group-id uint32 | +--ro group-id uint32
+--ro advertise-protection? enumeration +--ro advertise-protection? enumeration
augment /rt:routing-state/rt:routing-protocols/rt:routing-protocol augment /rt:routing-state/rt:control-plane-protocols/
/isis:isis/isis:interfaces/isis:interface/isis:adjacencies rt:control-plane-protocol/isis:isis/
/isis:adjacency: isis:interfaces/isis:interface/isis:adjacencies/isis:adjacency:
+--ro adjacency-sid* [value] +--ro adjacency-sid* [value]
+--ro af? identityref +--ro af? identityref
+--ro value uint32 +--ro value uint32
+--ro weight? uint8 +--ro weight? uint8
+--ro protection-requested? boolean +--ro protection-requested? boolean
augment /rt:routing-state/rt:routing-protocols/rt:routing-protocol augment /rt:routing-state/rt:control-plane-protocols/
/isis:isis/isis:database/isis:level-db/isis:lsp rt:control-plane-protocol/isis:isis/
/isis:extended-is-neighbor/isis:neighbor: isis:database/isis:level-db/isis:lsp/isis:extended-is-neighbor/
isis:neighbor:
+--ro sid-list* [value] +--ro sid-list* [value]
+--ro flags? bits +--ro flags? bits
+--ro weight? uint8 +--ro weight? uint8
+--ro neighbor-id? isis:system-id +--ro neighbor-id? isis:system-id
+--ro value uint32 +--ro value uint32
augment /rt:routing-state/rt:routing-protocols/rt:routing-protocol augment /rt:routing-state/rt:control-plane-protocols/
/isis:isis/isis:database/isis:level-db/isis:lsp rt:control-plane-protocol/isis:isis/
/isis:mt-is-neighbor/isis:neighbor: isis:database/isis:level-db/isis:lsp/isis:mt-is-neighbor/
isis:neighbor:
+--ro sid-list* [value] +--ro sid-list* [value]
+--ro flags? bits +--ro flags? bits
+--ro weight? uint8 +--ro weight? uint8
+--ro neighbor-id? isis:system-id +--ro neighbor-id? isis:system-id
+--ro value uint32 +--ro value uint32
augment /rt:routing-state/rt:routing-protocols/rt:routing-protocol augment /rt:routing-state/rt:control-plane-protocols/
/isis:isis/isis:database/isis:level-db/isis:lsp rt:control-plane-protocol/isis:isis/isis:database/
/isis:extended-ipv4-reachability/isis:prefixes: isis:level-db/isis:lsp/isis:extended-ipv4-reachability/
isis:prefixes:
+--ro sid-list* [value] +--ro sid-list* [value]
+--ro flags? bits +--ro flags? bits
+--ro algorithm? uint8 +--ro algorithm? uint8
+--ro value uint32 +--ro value uint32
augment /rt:routing-state/rt:routing-protocols/rt:routing-protocol augment /rt:routing-state/rt:control-plane-protocols/
/isis:isis/isis:database/isis:level-db/isis:lsp rt:control-plane-protocol/isis:isis/
/isis:mt-extended-ipv4-reachability/isis:prefixes: isis:database/isis:level-db/isis:lsp/
isis:mt-extended-ipv4-reachability/isis:prefixes:
+--ro sid-list* [value] +--ro sid-list* [value]
+--ro flags? bits +--ro flags? bits
+--ro algorithm? uint8 +--ro algorithm? uint8
+--ro value uint32 +--ro value uint32
augment /rt:routing-state/rt:routing-protocols/rt:routing-protocol augment /rt:routing-state/rt:control-plane-protocols/
/isis:isis/isis:database/isis:level-db/isis:lsp rt:control-plane-protocol/isis:isis/
/isis:ipv6-reachability/isis:prefixes: isis:database/isis:level-db/isis:lsp/
isis:ipv6-reachability/isis:prefixes:
+--ro sid-list* [value] +--ro sid-list* [value]
+--ro flags? bits +--ro flags? bits
+--ro algorithm? uint8 +--ro algorithm? uint8
+--ro value uint32 +--ro value uint32
augment /rt:routing-state/rt:routing-protocols/rt:routing-protocol augment /rt:routing-state/rt:control-plane-protocols/
/isis:isis/isis:database/isis:level-db/isis:lsp rt:control-plane-protocol/isis:isis/
/isis:mt-ipv6-reachability/isis:prefixes: isis:database/isis:level-db/isis:lsp/isis:mt-ipv6-reachability/
isis:prefixes:
+--ro sid-list* [value] +--ro sid-list* [value]
+--ro flags? bits +--ro flags? bits
+--ro algorithm? uint8 +--ro algorithm? uint8
+--ro value uint32 +--ro value uint32
augment /rt:routing-state/rt:routing-protocols/rt:routing-protocol augment /rt:routing-state/rt:control-plane-protocols/
/isis:isis/isis:database/isis:level-db/isis:lsp: rt:control-plane-protocol/isis:isis/
isis:database/isis:level-db/isis:lsp:
+--ro segment-routing-bindings* [fec range] +--ro segment-routing-bindings* [fec range]
+--ro fec string +--ro fec string
+--ro range uint16 +--ro range uint16
+--ro flags? bits +--ro flags? bits
+--ro weight? uint8 +--ro weight? uint8
+--ro binding* +--ro binding
+--ro prefix-sid +--ro prefix-sid
| +--ro sid-list* [value] | +--ro sid-list* [value]
| +--ro flags? bits | +--ro flags? bits
| +--ro algorithm? uint8 | +--ro algorithm? uint8
| +--ro value uint32 | +--ro value uint32
+--ro ero-metric? uint32 +--ro ero-metric? uint32
+--ro ero +--ro ero
| +--ro address-family? identityref | +--ro address-family? identityref
| +--ro loose? boolean | +--ro loose? boolean
| +--ro address? string | +--ro address? string
skipping to change at page 21, line 40 skipping to change at page 21, line 10
5.3. IP Fast reroute 5.3. IP Fast reroute
IS-IS SR model augments the fast-reroute container under interface. IS-IS SR model augments the fast-reroute container under interface.
It brings the ability to activate TI-LFA (topology independent LFA) It brings the ability to activate TI-LFA (topology independent LFA)
and also enhances remote LFA to use segment-routing tunneling instead and also enhances remote LFA to use segment-routing tunneling instead
of LDP. of LDP.
6. Interaction with Other YANG Modules 6. Interaction with Other YANG Modules
The "isis" configuration container augments the "/rt:routing/ The "isis" configuration container augments the "/rt:routing/
rt:routing-protocols/routing-protocol" container of the ietf-routing rt:control-plane-protocols/control-plane-protocol" container of the
[I-D.ietf-netmod-routing-cfg] module by defining IS-IS specific ietf-routing [I-D.ietf-netmod-routing-cfg] module by defining IS-IS
parameters. specific parameters.
The "isis" module augments "/if:interfaces/if:interface" with ISO The "isis" module augments "/if:interfaces/if:interface" with ISO
specific parameters. specific parameters.
The "isis" operational state container augments the "/rt:routing- The "isis" operational state container augments the "/rt:routing-
state/rt:routing-protocols/routing-protocol" container of the ietf- state/rt:control-plane-protocols/control-plane-protocol" container of
routing module by defining IS-IS specific operational states. the ietf-routing module by defining IS-IS specific operational
states.
Some IS-IS specific routes attributes are added to route objects of Some IS-IS specific routes attributes are added to route objects of
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" and "/rt:fib- state/rt:ribs/rt:rib/rt:routes/rt:route".
route/rt:output/rt:route".
The modules defined in this document use some groupings from ietf- The modules defined in this document use some groupings from ietf-
keychain [I-D.ietf-rtgwg-yang-key-chain] and ietf-segment routing keychain [I-D.ietf-rtgwg-yang-key-chain] and ietf-segment routing
[I-D.ietf-spring-sr-yang]. [I-D.ietf-spring-sr-yang].
7. IS-IS YANG Module 7. IS-IS YANG Module
<CODE BEGINS> file "ietf-isis@2016-03-21.yang" <CODE BEGINS> file "ietf-isis@2016-09-20.yang"
module ietf-isis { module ietf-isis {
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";
} }
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
} }
import ietf-yang-types { import ietf-yang-types {
prefix yang; prefix yang;
} }
import ietf-interfaces { import ietf-interfaces {
prefix "if"; prefix "if";
} }
import ietf-routing-key-chain { import ietf-key-chain {
prefix "key-chain"; prefix "key-chain";
} }
organization organization
"IETF ISIS Working Group"; "IETF ISIS Working Group";
contact contact
"WG List: &lt;mailto:isis-wg@ietf.org&gt; "WG List: &lt;mailto:isis-wg@ietf.org&gt;
Editor: Stephane Litkowski Editor: Stephane Litkowski
&lt;mailto:stephane.litkowski@orange.com&gt; &lt;mailto:stephane.litkowski@orange.com&gt;
Derek Yeung Derek Yeung
&lt;mailto:myeung@cisco.com&gt; &lt;mailto:myeung@cisco.com&gt;
Acee Lindem Acee Lindem
&lt;mailto:acee@cisco.com&gt; &lt;mailto:acee@cisco.com&gt;
Jeffrey Zhang Jeffrey Zhang
&lt;mailto:zzhang@juniper.net&gt; &lt;mailto:zzhang@juniper.net&gt;
Ladislav Lhotka Ladislav Lhotka
&lt;mailto:llhotka@nic.cz&gt; &lt;mailto:llhotka@nic.cz&gt;
Yi Yang Yi Yang
&lt;mailto:yiya@cisco.com&gt; &lt;mailto:yiya@cisco.com&gt;
Dean Bogdanovic Dean Bogdanovic
&lt;mailto:deanb@juniper.net&gt; &lt;mailto:deanb@juniper.net&gt;
Kiran Agrahara Sreenivasa Kiran Agrahara Sreenivasa
&lt;mailto:kkoushik@brocade.com&gt; &lt;mailto:kkoushik@brocade.com&gt;
Yingzhen Qu Yingzhen Qu
&lt;mailto:yiqu@cisco.com&gt; &lt;mailto:yiqu@cisco.com&gt;
Jeff Tantsura Jeff Tantsura
&lt;mailto:jeff.tantsura@ericsson.com&gt; &lt;mailto:jeff.tantsura@ericsson.com&gt;
"; ";
description description
"The YANG module defines a generic configuration model for "The YANG module defines a generic configuration model for
ISIS common across all of the vendor implementations."; ISIS common across all of the vendor implementations.";
revision 2016-03-21 { revision 2016-09-20 {
description description
" "
- remove routing-instance as per core routing model v21 Align to draft-ietf-netmod-routing-cfg-23.
- added BFD leaf (no more BFD protocol model) ";
- changed keychain module reference reference "draft-ietf-isis-yang-isis-cfg-09";
"; }
reference "draft-ietf-isis-yang-isis-cfg-09"; revision 2016-05-30 {
} description
"
Added container before af list
Added container before topology list
Aligned LFA if per level cfg
";
reference "";
}
revision 2016-03-21 {
description
"
- remove routing-instance as per core routing model v21
- added BFD leaf (no more BFD protocol model)
- changed keychain module reference
";
reference "draft-ietf-isis-yang-isis-cfg-08";
}
revision 2015-12-17 { revision 2015-12-17 {
description description
"Moved lists to containers+groupings for per level "Moved lists to containers+groupings for per level
configuration."; configuration.";
reference "draft-ietf-isis-yang-isis-cfg-08"; reference "";
} }
revision 2015-11-25 { revision 2015-11-25 {
description description
" "
* Remove selector from system-id type * Remove selector from system-id type
* Added some defaults * Added some defaults
"; ";
reference ""; reference "";
} }
revision 2015-11-18 { revision 2015-11-18 {
description description
" "
* Move Overload config from list to container * Move Overload config from list to container
* Move Overload-max-metric config from list to container * Move Overload-max-metric config from list to container
* Move preference config from list to container * Move preference config from list to container
* Add Node flag in config * Add Node flag in config
* Removed BFD config => moved to isis-bfd module * Removed BFD config => moved to isis-bfd module
* Remove call to routing policy model * Remove call to routing policy model
(waiting stabilization to add it) (waiting stabilization to add it)
"; ";
reference "draft-ietf-isis-yang-isis-cfg-07"; reference "draft-ietf-isis-yang-isis-cfg-07";
} }
revision 2015-09-10 { revision 2015-09-10 {
description description
" * Correct invalid references to previous " * Correct invalid references to previous
versions core routing model. versions core routing model.
* Moved BFD config to usage of ietf-bfd yang grouping * Moved BFD config to usage of ietf-bfd yang grouping
* Adding routing-policy support through routing-policy model * Adding routing-policy support through routing-policy model
"; ";
reference "draft-ietf-isis-yang-isis-05"; reference "draft-ietf-isis-yang-isis-05";
} }
revision 2015-06-22 { revision 2015-06-22 {
description description
" * Segment routing is part os a separate module."; " * Segment routing is part os a separate module.";
reference "draft-ietf-isis-yang-isis-03"; reference "draft-ietf-isis-yang-isis-03";
} }
revision 2015-03-03 { revision 2015-03-03 {
description description
" * Reviewed config and op state groupings. " * Reviewed config and op state groupings.
* Add default value to lfa candidate-disabled * Add default value to lfa candidate-disabled
* Add enable leaf to isis container to reflect admin state * Add enable leaf to isis container to reflect admin state
* Move to VRF centric only * Move to VRF centric only
"; ";
reference ""; reference "";
} }
revision 2015-03-03 { revision 2015-03-03 {
description description
" "
* Defining hierarchy for operational states * Defining hierarchy for operational states
* Adding CLNS MTU * Adding CLNS MTU
* Adding Keychain * Adding Keychain
"; ";
reference "draft-ietf-isis-yang-isis-02"; reference "draft-ietf-isis-yang-isis-02";
} }
revision 2015-02-20 { revision 2015-02-20 {
description description
" "
* Removing igp-ldp-sync timer in IS-IS * Removing igp-ldp-sync timer in IS-IS
"; ";
reference ""; reference "";
} }
revision 2014-12-15 { revision 2014-12-15 {
description description
" "
* Adding IPFRR * Adding IPFRR
* Adding igp-ldp sync * Adding igp-ldp sync
* Adding segment routing * Adding segment routing
* Adding instance reference to operational states. * Adding instance reference to operational states.
* Move AF type from string to identity * Move AF type from string to identity
* Updated router-capability in LSDB description. * Updated router-capability in LSDB description.
* packet counters moved to interface-packet-counters. * packet counters moved to interface-packet-counters.
* Added modification information in lsp-log
"; * Added modification information in lsp-log
reference ""; ";
} reference "";
revision 2014-10-24 { }
description revision 2014-10-24 {
" description
* Change hello-padding to container "
* Change bfd to container * Change hello-padding to container
* Make BFD a feature * Change bfd to container
* Creates mpls-te container and put router-id * Make BFD a feature
inside * Creates mpls-te container and put router-id
* Remove GR helper disable and timers inside
"; * Remove GR helper disable and timers
reference "draft-ietf-isis-yang-isis-cfg-01"; ";
} reference "draft-ietf-isis-yang-isis-cfg-01";
revision 2014-10-21 { }
description revision 2014-10-21 {
" description
* Interface metric move from af container to interface "
container * Interface metric move from af container to interface
* Hello-padding on interface moved to hello-padding-disable container
with empty type * Hello-padding on interface moved to hello-padding-disable
* three-way-handshake removed with empty type
* route preference changed to a choice * three-way-handshake removed
* csnp-authentication/psnp-authentication merged * route preference changed to a choice
to authentication container * csnp-authentication/psnp-authentication merged
* lsp-gen-interval-exp-delay removed to authentication container
* Added overload-max-metric feature * lsp-gen-interval-exp-delay removed
* overload-max-metric is in a separate container * Added overload-max-metric feature
"; * overload-max-metric is in a separate container
reference ""; ";
} reference "";
revision 2014-10-07 { }
description
" revision 2014-10-07 {
* Removed spf parameters (should be part of description
vendor specific extensions. "
* Removed hello parameters at global level. * Removed spf parameters (should be part of
* Interface configuration uses a string rather vendor specific extensions.
than a reference. This permits to map to some * Removed hello parameters at global level.
vendor specific configuration. * Interface configuration uses a string rather
"; than a reference. This permits to map to some
reference "draft-ietf-isis-yang-isis-00"; vendor specific configuration.
} ";
revision 2014-09-26 { reference "draft-ietf-isis-yang-isis-00";
description }
" revision 2014-09-26 {
* Add BFD support description
* remove max-elements to max-area-addresses "
"; * Add BFD support
reference ""; * remove max-elements to max-area-addresses
} ";
revision 2014-09-11 { reference "";
description }
revision 2014-09-11 {
description
"
* Add level parameter to ispf and spf delay
* Add LSP generation as a feature
* Make lsp-refresh a feature
* Change parameter container to list
";
reference "";
}
revision 2014-09-05 {
description
" Rewrite of the global hierarchy.";
reference "";
}
revision 2014-08-06 {
description
" "
* Add level parameter to ispf and spf delay * isis-state renamed to isis.
* Add LSP generation as a feature * Add GR support
* Make lsp-refresh a feature * Add meshgroup support
* Change parameter container to list * Add CLNS support
* Add 64bits tags
* Add notifications to be aligned with MIB4444
* Add packet-counters, interface-counters, system-counters
states
* Add 3-way handshake support
* Rename isis-adjacency-updown to adjacency-change
* Add notification for LSP reception
* Use feature for reference BW
* Add lsp-retransmit-interval on interfaces
* Rename lsp-interval to lsp-pacing-interval
* Add ispf support as feature
* Add spf delay support as feature (2step & exp backoff)
* Add maximum-area-addresses
* Add default-metric
"; ";
reference ""; reference "RFC XXXX: YANG Data Model for ISIS Protocol";
} }
revision 2014-09-05 { revision 2014-06-25 {
description description "
" Rewrite of the global hierarchy."; * isis-cfg renamed to isis.
reference "";
}
revision 2014-08-06 {
description
"
* isis-state renamed to isis.
* Add GR support
* Add meshgroup support
* Add CLNS support
* Add 64bits tags
* Add notifications to be aligned with MIB4444
* Add packet-counters, interface-counters, system-counters
states
* Add 3-way handshake support
* Rename isis-adjacency-updown to adjacency-change
* Add notification for LSP reception
* Use feature for reference BW
* Add lsp-retransmit-interval on interfaces
* Rename lsp-interval to lsp-pacing-interval
* Add ispf support as feature
* Add spf delay support as feature (2step & exp backoff)
* Add maximum-area-addresses
* Add default-metric
";
reference "RFC XXXX: YANG Data Model for ISIS Protocol";
}
revision 2014-06-25 {
description "
* isis-cfg renamed to isis.
* Add precisions on authentication-keys in description
";
reference "draft-litkowski-isis-yang-isis-01";
}
revision 2014-06-20 { * Add precisions on authentication-keys in description
description " ";
* isis-op renamed to isis-state. reference "draft-litkowski-isis-yang-isis-01";
* Multiple instances under ISIS are removed. }
* interface-cfg grouping removed and content
is directly included in container isis.
* TLVxx renamed with human-readable name in isis-database.
TLV reference are putted in description.
* Reference to core routing module were fixed.
* Namespace fixed.
* Add simple-iso-address type.
* area-id and system-id in ISIS container are merged to
nsap-address.
* Add isis-system-id type.
* Add isis-lsp-id type.
* Add remaining-lifetime leaf in isis-database.
* Add TLV2 (is-neighbor) in isis-database.
* Renamed some container name for consistency
reason ('isis-' prefixed).
* Add new identities isis-cfg and isis-state.
* Add descriptions.
* Add notification isis-adjacency-updown.
* Add RPC clear-isis-adjacency and clear-isis-database.
";
reference "draft-litkowski-isis-yang-isis-00";
}
revision 2014-06-11 { revision 2014-06-20 {
description "Initial revision."; description "
reference "draft-litkowski-netmod-isis-cfg-00"; * isis-op renamed to isis-state.
} * Multiple instances under ISIS are removed.
identity isis { * interface-cfg grouping removed and content
base rt:routing-protocol; is directly included in container isis.
description "Identity for the ISIS routing protocol."; * TLVxx renamed with human-readable name in isis-database.
} TLV reference are putted in description.
* Reference to core routing module were fixed.
* Namespace fixed.
* Add simple-iso-address type.
* area-id and system-id in ISIS container are merged to
nsap-address.
* Add isis-system-id type.
* Add isis-lsp-id type.
* Add remaining-lifetime leaf in isis-database.
* Add TLV2 (is-neighbor) in isis-database.
* Renamed some container name for consistency
reason ('isis-' prefixed).
* Add new identities isis-cfg and isis-state.
* Add descriptions.
* Add notification isis-adjacency-updown.
* Add RPC clear-isis-adjacency and clear-isis-database.
";
reference "draft-litkowski-isis-yang-isis-00";
}
identity isis-adjacency-change { revision 2014-06-11 {
description "Identity for the ISIS routing protocol description "Initial revision.";
adjacency state."; reference "draft-litkowski-netmod-isis-cfg-00";
} }
identity isis {
base rt:routing-protocol;
description "Identity for the ISIS routing protocol.";
}
identity clear-isis-database { identity isis-adjacency-change {
description "Identity for the ISIS routing protocol description "Identity for the ISIS routing protocol
database reset action."; adjacency state.";
} }
identity clear-isis-adjacency { identity clear-isis-database {
description "Identity for the ISIS routing protocol description "Identity for the ISIS routing protocol
adjacency reset action."; database reset action.";
} }
/* Feature definitions */ identity clear-isis-adjacency {
description "Identity for the ISIS routing protocol
adjacency reset action.";
}
feature bfd { /* Feature definitions */
description
"Support of BFD for IS-IS links.";
}
feature key-chain {
description
"Support of keychain for authentication.";
}
feature segment-routing {
description
"Support of segment-routing.";
}
feature node-flag {
description
"Support of node-flag advertisement
as prefix attribute";
}
feature node-tag {
description
"Support of node tag.";
}
feature igp-ldp-sync {
description
"Support of RFC5443.";
}
feature fast-reroute {
description
"Support of IPFRR.";
}
feature lfa {
description
"Support of Loop Free Alternates.";
}
feature remote-lfa {
description
"Support of remote Loop Free Alternates.";
}
feature overload-max-metric { feature bfd {
description description
"Support of overload by setting "Support of BFD for IS-IS links.";
all links to max metric."; }
} feature key-chain {
feature prefix-tag {
description
"Add 32bit tag to prefixes";
}
feature prefix-tag64 {
description
"Add 64bit tag to prefixes";
}
feature reference-bandwidth {
description
"Use a reference bandwidth to compute metric.";
}
feature ipv4-router-id {
description description
"Support of IPv4 router ID configuration under ISIS."; "Support of keychain for authentication.";
} }
feature segment-routing {
description
"Support of segment-routing.";
}
feature node-flag {
description
"Support of node-flag advertisement
as prefix attribute";
}
feature node-tag {
description
"Support of node tag.";
}
feature igp-ldp-sync {
description
"Support of RFC5443.";
}
feature fast-reroute {
description
"Support of IPFRR.";
}
feature lfa {
description
"Support of Loop Free Alternates.";
}
feature remote-lfa {
description
"Support of remote Loop Free Alternates.";
}
feature overload-max-metric {
description
"Support of overload by setting
all links to max metric.";
}
feature prefix-tag {
description
"Add 32bit tag to prefixes";
}
feature prefix-tag64 {
description
"Add 64bit tag to prefixes";
}
feature reference-bandwidth {
description
"Use a reference bandwidth to compute metric.";
}
feature ipv4-router-id {
description
"Support of IPv4 router ID configuration under ISIS.";
}
feature ipv6-router-id { feature ipv6-router-id {
description description
"Support of IPv6 router ID configuration under ISIS."; "Support of IPv6 router ID configuration under ISIS.";
} }
feature multi-topology { feature multi-topology {
description description
"Multitopology routing support."; "Multitopology routing support.";
} }
feature nlpid-control { feature nlpid-control {
description description
"This feature controls the advertisement "This feature controls the advertisement
of support NLPID within ISIS configuration."; of support NLPID within ISIS configuration.";
} }
feature graceful-restart { feature graceful-restart {
description description
"Graceful restart support as per RFC5306."; "Graceful restart support as per RFC5306.";
} }
feature lsp-refresh { feature lsp-refresh {
description description
"Configuration of LSP refresh interval."; "Configuration of LSP refresh interval.";
} }
feature maximum-area-addresses { feature maximum-area-addresses {
description description
"Support of maximum-area-addresses config."; "Support of maximum-area-addresses config.";
} }
feature admin-control { feature admin-control {
description description
"Control administrative state of ISIS."; "Control administrative state of ISIS.";
} }
/* Type definitions */ /* Type definitions */
typedef instance-state-ref { typedef instance-state-ref {
type leafref { type leafref {
path "/rt:routing-state/" path "/rt:routing-state/"
+"rt:routing-protocols/rt:routing-protocol/rt:name"; +"rt:control-plane-protocols/rt:control-plane-protocol/rt:name";
}
description
"This type is used for leaves that reference state data of
an ISIS protocol instance.";
} }
description
"This type is used for leaves that reference state data of
an ISIS protocol instance.";
}
typedef admin-state { typedef admin-state {
type enumeration { type enumeration {
enum "up" { enum "up" {
description description
"Up state"; "Up state";
} }
enum "down" { enum "down" {
description description
"Down state"; "Down state";
}
} }
description
"Administrative state of a component.";
} }
description typedef oper-state {
"Administrative state of a component."; type enumeration {
} enum "up" {
typedef oper-state { description
type enumeration { "Up state";
enum "up" { }
description enum "down" {
"Up state"; description
} "Down state";
enum "down" { }
description
"Down state";
} }
description
"Operational state of a component.";
}
typedef circuit-id {
type uint8;
description
"This type defines the circuit ID
associated with an interface.";
} }
description
"Operational state of a component.";
}
typedef circuit-id {
type uint8;
description
"This type defines the circuit ID
associated with an interface.";
}
typedef extended-circuit-id { typedef extended-circuit-id {
type uint32; type uint32;
description description
"This type defines the extended circuit ID "This type defines the extended circuit ID
associated with an interface."; associated with an interface.";
} }
typedef interface-type { typedef interface-type {
type enumeration { type enumeration {
enum broadcast { enum broadcast {
description "Broadcast interface type. description "Broadcast interface type.
Would result in DIS election."; Would result in DIS election.";
} }
enum point-to-point { enum point-to-point {
description description
"Point to point interface type."; "Point to point interface type.";
}
} }
description
"This type defines the type of adjacency
to be established on the interface.
This is affecting the type of hello
message that would be used.";
} }
description
"This type defines the type of adjacency
to be established on the interface.
This is affecting the type of hello
message that would be used.";
} typedef level {
type enumeration {
enum "level-1" {
description
"This enum describes L1 only capability.";
}
enum "level-2" {
description
"This enum describes L2 only capability.";
}
enum "level-all" {
description
"This enum describes both levels capability.";
typedef level { }
type enumeration {
enum "level-1" {
description
"This enum describes L1 only capability.";
}
enum "level-2" {
description
"This enum describes L2 only capability.";
}
enum "level-all" {
description
"This enum describes both levels capability.";
} }
} default "level-all";
default "level-all"; description
description "This type defines ISIS level of an object.";
"This type defines ISIS level of an object.";
}
typedef level-number {
type uint8 {
range "1 .. 2";
} }
description
"This type defines a current ISIS level.";
}
typedef lsp-id { typedef level-number {
type string { type uint8 {
pattern range "1 .. 2";
'[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]' }
+'{4}\.[0-9][0-9]-[0-9][0-9]'; description
"This type defines a current ISIS level.";
} }
description
"This type defines ISIS LSP ID using pattern,
system id looks like : 0143.0438.AeF0.02-01";
}
typedef area-address { typedef lsp-id {
type string { type string {
pattern '[0-9A-Fa-f]{2}\.([0-9A-Fa-f]{4}\.){0,3}'; pattern
'[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]'
+'{4}\.[0-9][0-9]-[0-9][0-9]';
}
description
"This type defines ISIS LSP ID using pattern,
system id looks like : 0143.0438.AeF0.02-01";
} }
description
"This type defines the area address.";
}
typedef snpa { typedef area-address {
type string { type string {
length "0 .. 20"; pattern '[0-9A-Fa-f]{2}\.([0-9A-Fa-f]{4}\.){0,3}';
}
description
"This type defines the area address.";
} }
description
"This type defines Subnetwork Point of Attachement format.";
} typedef snpa {
type string {
length "0 .. 20";
}
description
"This type defines Subnetwork Point of Attachement format.";
typedef system-id {
type string {
pattern
'[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}';
} }
description
"This type defines ISIS system id using pattern,
system id looks like : 0143.0438.AeF0";
}
typedef wide-metric { typedef system-id {
type uint32 { type string {
range "0 .. 16777215"; pattern
'[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}';
}
description
"This type defines ISIS system id using pattern,
system id looks like : 0143.0438.AeF0";
} }
description
"This type defines wide style format
of ISIS metric.";
}
typedef std-metric { typedef wide-metric {
type uint8 { type uint32 {
range "0 .. 63"; range "0 .. 16777215";
}
description
"This type defines wide style format
of ISIS metric.";
} }
description
"This type defines old style format
of ISIS metric.";
}
typedef mesh-group-state { typedef std-metric {
type enumeration { type uint8 {
enum "meshInactive" { range "0 .. 63";
description
"Interface is not part of a mesh group.";
}
enum "meshSet" {
description
"Interface is part of a mesh group.";
}
enum "meshBlocked" {
description
"LSPs must not be flooded over that interface.";
} }
description
"This type defines old style format
of ISIS metric.";
} }
description
"This type describes meshgroup state of an interface";
}
/* Grouping definitions */
grouping admin-control { typedef mesh-group-state {
type enumeration {
leaf enable { enum "meshInactive" {
if-feature admin-control; description
type boolean; "Interface is not part of a mesh group.";
default true;
description
"Control the administrative
state.";
} }
enum "meshSet" {
description
"Interface is part of a mesh group.";
}
enum "meshBlocked" {
description
"LSPs must not be flooded over that interface.";
}
}
description
"This type describes meshgroup state of an interface";
}
description /* Grouping definitions */
"Grouping for admin control.";
}
grouping adjacency-state {
container adjacencies {
list adjacency {
leaf neighbor-systype {
type level;
description
"Type of neighboring system";
} grouping admin-control {
leaf neighbor-sysid {
type system-id;
description
"The system-id of the neighbor";
} leaf enable {
leaf neighbor-extended-circuit-id { if-feature admin-control;
type extended-circuit-id; type boolean;
description default true;
"Circuit ID of the neighbor"; description
} "Control the administrative
leaf neighbor-snpa { state.";
type snpa; }
description
"SNPA of the neighbor";
}
leaf usage {
type level;
description
"How is the adjacency used ?
On a p2p link this might be level 1 and 2,
but on a LAN, the usage will be level 1
between peers at L1 or level 2 between
peers at L2.";
}
leaf hold-timer {
type uint16;
description
"The holding time in seconds for this
adjacency. This value is based on
received hello PDUs and the elapsed
time since receipt.";
}
leaf neighbor-priority {
type uint8 {
range "0 .. 127";
}
description
"Priority of the neighboring IS for becoming
the DIS.";
}
leaf lastuptime {
type yang:timestamp;
description
"When the adjacency most recently entered
state 'up', measured in hundredths of a
second since the last reinitialization of
the network management subsystem.
The value is 0 if the adjacency has never
been in state 'up'.";
} description
leaf state { "Grouping for admin control.";
type enumeration { }
enum "Up" {
description
"This state describes that
adjacency is established.";
}
enum "Down" {
description
"This state describes that
adjacency is NOT established.";
}
enum "Init" {
description
"This state describes that
adjacency is establishing.";
}
enum "Failed" {
description
"This state describes that
adjacency is failed.";
}
}
description
"This leaf describes the state of the
interface.";
}
description grouping adjacency-state {
"List of operational adjacencies."; container adjacencies {
} list adjacency {
description leaf neighbor-systype {
"This container lists the adjacencies of type level;
the local node."; description
} "Type of neighboring system";
description
"Adjacency state";
}
grouping fast-reroute-global-state { }
container protected-routes { leaf neighbor-sysid {
list af-stats { type system-id;
key "af prefix alternate"; description
"The system-id of the neighbor";
leaf af { }
type identityref { leaf neighbor-extended-circuit-id {
base rt:address-family; type extended-circuit-id;
}
description
"Address-family";
}
leaf prefix {
type string;
description
"Protected prefix.";
}
leaf alternate {
type string;
description
"Alternate nexthop for the prefix.";
}
leaf alternate-type {
type enumeration {
enum equalcost {
description description
"ECMP alternate."; "Circuit ID of the neighbor";
} }
enum lfa { leaf neighbor-snpa {
type snpa;
description description
"LFA alternate."; "SNPA of the neighbor";
} }
enum remote-lfa { leaf usage {
type level;
description description
"Remote LFA alternate."; "How is the adjacency used ?
On a p2p link this might be level 1 and 2,
but on a LAN, the usage will be level 1
between peers at L1 or level 2 between
peers at L2.";
} }
enum tunnel { leaf hold-timer {
type uint16;
description description
"Tunnel based alternate "The holding time in seconds for this
(like RSVP-TE or GRE)."; adjacency. This value is based on
received hello PDUs and the elapsed
time since receipt.";
} }
enum ti-lfa { leaf neighbor-priority {
type uint8 {
range "0 .. 127";
}
description description
"TI LFA alternate."; "Priority of the neighboring IS for becoming
the DIS.";
} }
enum mrt { leaf lastuptime {
type yang:timestamp;
description description
"MRT alternate."; "When the adjacency most recently entered
state 'up', measured in hundredths of a
second since the last reinitialization of
the network management subsystem.
The value is 0 if the adjacency has never
been in state 'up'.";
} }
enum other { leaf state {
type enumeration {
enum "Up" {
description
"This state describes that
adjacency is established.";
}
enum "Down" {
description
"This state describes that
adjacency is NOT established.";
}
enum "Init" {
description
"This state describes that
adjacency is establishing.";
}
enum "Failed" {
description
"This state describes that
adjacency is failed.";
}
}
description description
"Unknown alternate type."; "This leaf describes the state of the
interface.";
} }
description
"List of operational adjacencies.";
} }
description description
"Type of alternate."; "This container lists the adjacencies of
} the local node.";
leaf best {
type boolean;
description
"describes if the alternate is the best one.";
}
leaf non-best-reason {
type string;
description
"Information field to describe why the alternate
is not best.";
} }
leaf protection-available { description
type bits { "Adjacency state";
bit nodeprotect { }
position 0;
description grouping fast-reroute-global-state {
"Node protection available."; container protected-routes {
} list af-stats {
bit linkprotect { key "af prefix alternate";
position 1;
description leaf af {
"Link protection available."; type identityref {
} base rt:address-family;
bit srlgprotect {
position 2;
description
"SRLG protection available.";
} }
bit downstreamprotect { description
position 3; "Address-family";
description }
"Downstream protection available."; leaf prefix {
type string;
description
"Protected prefix.";
}
leaf alternate {
type string;
description
"Alternate nexthop for the prefix.";
}
leaf alternate-type {
type enumeration {
enum equalcost {
description
"ECMP alternate.";
}
enum lfa {
description
"LFA alternate.";
}
enum remote-lfa {
description
"Remote LFA alternate.";
}
enum tunnel {
description
"Tunnel based alternate
(like RSVP-TE or GRE).";
}
enum ti-lfa {
description
"TI LFA alternate.";
}
enum mrt {
description
"MRT alternate.";
}
enum other {
description
"Unknown alternate type.";
}
} }
bit other { description
position 4; "Type of alternate.";
description }
"Other protection available."; leaf best {
type boolean;
description
"describes if the alternate is the best one.";
}
leaf non-best-reason {
type string;
description
"Information field to describe why the alternate
is not best.";
}
leaf protection-available {
type bits {
bit nodeprotect {
position 0;
description
"Node protection available.";
}
bit linkprotect {
position 1;
description
"Link protection available.";
}
bit srlgprotect {
position 2;
description
"SRLG protection available.";
}
bit downstreamprotect {
position 3;
description
"Downstream protection available.";
}
bit other {
position 4;
description
"Other protection available.";
}
} }
description
"Describes protection provided by the alternate.";
} }
leaf alternate-metric1 {
type uint32;
description
"Metric from PLR to destination
through the alternate path.";
}
leaf alternate-metric2 {
type uint32;
description
"Metric from PLR to the alternate node";
}
leaf alternate-metric3 {
type uint32;
description
"Metric from alternate node to the destination";
}
description description
"Describes protection provided by the alternate."; "Per AF statistics.";
}
leaf alternate-metric1 {
type uint32;
description
"Metric from PLR to destination
through the alternate path.";
}
leaf alternate-metric2 {
type uint32;
description
"Metric from PLR to the alternate node";
}
leaf alternate-metric3 {
type uint32;
description
"Metric from alternate node to the destination";
} }
description description
"Per AF statistics."; "List of prefixes that are protected.";
} }
description container nonprotected-routes {
"List of prefixes that are protected."; list af-stats {
} key "af prefix";
container nonprotected-routes {
list af-stats {
key "af prefix";
leaf af { leaf af {
type identityref { type identityref {
base rt:address-family; base rt:address-family;
}
description
"Address-family";
}
leaf prefix {
type string;
description
"Protected prefix.";
} }
description description
"Address-family"; "Per AF statistics.";
}
leaf prefix {
type string;
description
"Protected prefix.";
} }
description description
"Per AF statistics."; "List of prefixes that are not protected.";
} }
description
"List of prefixes that are not protected.";
}
list protection-statistics {
key frr-protection-method;
leaf frr-protection-method { list protection-statistics {
type string; key frr-protection-method;
description
"Protection method used.";
}
list af-stats {
key af;
leaf af { leaf frr-protection-method {
type identityref { type string;
base rt:address-family;
}
description
"Address-family";
}
leaf total-routes {
type uint32;
description
"Total prefixes.";
}
leaf unprotected-routes {
type uint32;
description
"Total of prefixes who are
not protected.";
}
leaf protected-routes {
type uint32;
description
"Total of prefixes who are
protected.";
}
leaf linkprotected-routes {
type uint32;
description description
"Total of prefixes who are "Protection method used.";
link protected.";
} }
leaf nodeprotected-routes { list af-stats {
type uint32; key af;
leaf af {
type identityref {
base rt:address-family;
}
description
"Address-family";
}
leaf total-routes {
type uint32;
description
"Total prefixes.";
}
leaf unprotected-routes {
type uint32;
description
"Total of prefixes who are
not protected.";
}
leaf protected-routes {
type uint32;
description
"Total of prefixes who are
protected.";
}
leaf linkprotected-routes {
type uint32;
description
"Total of prefixes who are
link protected.";
}
leaf nodeprotected-routes {
type uint32;
description
"Total of prefixes who are
node protected.";
}
description description
"Total of prefixes who are "Per AF statistics.";
node protected.";
} }
description description
"Per AF statistics."; "Global protection statistics.";
} }
description description
"Global protection statistics."; "IPFRR states.";
}
description
"IPFRR states.";
}
grouping notification-instance-hdr {
description
"This group describes common instance specific
data for notifications.";
leaf instance-name {
type string;
description
"Describes the name of the ISIS instance.";
}
leaf instance-level {
type level;
description
"Describes the ISIS level of the instance.";
} }
}
grouping notification-interface-hdr { grouping notification-instance-hdr {
description
"This group describes common interface specific
data for notifications.";
leaf interface-name {
type string;
description
"Describes the name of the ISIS interface.";
}
leaf interface-level {
type level;
description description
"Describes the ISIS level of the interface."; "This group describes common instance specific
data for notifications.";
leaf instance-name {
type string;
description
"Describes the name of the ISIS instance.";
}
leaf instance-level {
type level;
description
"Describes the ISIS level of the instance.";
}
} }
leaf extended-circuit-id { grouping notification-interface-hdr {
type extended-circuit-id;
description description
"Describes the extended circuit-id of the interface."; "This group describes common interface specific
data for notifications.";
leaf interface-name {
type string;
description
"Describes the name of the ISIS interface.";
}
leaf interface-level {
type level;
description
"Describes the ISIS level of the interface.";
}
leaf extended-circuit-id {
type extended-circuit-id;
description
"Describes the extended circuit-id of the interface.";
}
} }
}
grouping route-content { grouping route-content {
description
"This group add isis-specific route properties.";
leaf metric {
type uint32;
description
"This leaf describes ISIS metric of a route.";
}
leaf-list tag {
type uint64;
description description
"This leaf describes list of tags associated "This group add isis-specific route properties.";
with the route. The leaf describes both leaf metric {
32bits and 64bits tags."; type uint32;
} description
leaf route-type { "This leaf describes ISIS metric of a route.";
type enumeration { }
enum l2-up-internal { leaf-list tag {
description "Level 2 internal route type uint64;
and not leaked to a lower level"; description
} "This leaf describes list of tags associated
enum l1-up-internal { with the route. The leaf describes both
description "Level 1 internal route 32bits and 64bits tags.";
and not leaked to a lower level"; }
} leaf route-type {
enum l2-up-external { type enumeration {
description "Level 2 external route enum l2-up-internal {
and not leaked to a lower level"; description "Level 2 internal route
} and not leaked to a lower level";
enum l1-up-external { }
description "Level 1 external route enum l1-up-internal {
and not leaked to a lower level"; description "Level 1 internal route
} and not leaked to a lower level";
enum l2-down-internal { }
description "Level 2 internal route enum l2-up-external {
and leaked to a lower level"; description "Level 2 external route
} and not leaked to a lower level";
enum l1-down-internal { }
description "Level 1 internal route enum l1-up-external {
and leaked to a lower level"; description "Level 1 external route
} and not leaked to a lower level";
enum l2-down-external { }
description "Level 2 external route enum l2-down-internal {
and leaked to a lower level"; description "Level 2 internal route
} and leaked to a lower level";
enum l1-down-external { }
description "Level 1 external route enum l1-down-internal {
and leaked to a lower level"; description "Level 1 internal route
and leaked to a lower level";
}
enum l2-down-external {
description "Level 2 external route
and leaked to a lower level";
}
enum l1-down-external {
description "Level 1 external route
and leaked to a lower level";
}
} }
description
"This leaf describes the type of ISIS route.";
} }
}
grouping fast-reroute-global-cfg {
description description
"This leaf describes the type of ISIS route."; "This group defines global
configuration of IPFRR.";
container lfa {
if-feature lfa;
description
"This container may be
augmented with global parameters
for LFA.
Creating the container has no effect on
LFA activation.";
}
} }
}
grouping fast-reroute-global-cfg { grouping fast-reroute-if-cfg {
description description
"This group defines global "This group defines interface
configuration of IPFRR."; configuration of IPFRR.";
container lfa { container lfa {
if-feature lfa; if-feature lfa;
uses lfa-if-cfg;
container level-1 {
uses lfa-if-cfg;
description
"LFA level 21 config";
}
container level-2 {
uses lfa-if-cfg;
description
"LFA level 2 config";
}
description description
"This container may be "LFA config";
augmented with global parameters
for LFA.
Creating the container has no effect on
LFA activation.";
} }
} }
grouping fast-reroute-if-cfg {
description
"This group defines interface
configuration of IPFRR.";
list lfa {
if-feature lfa;
key level; grouping prefix-reachability-attributes {
description
"This group defines extended reachability attributes of an
IPv4 or IPv6 prefix.";
leaf candidate-disabled { leaf external-prefix-flag {
type boolean; type boolean;
default false;
description description
"Prevent the interface to be used as backup."; "External prefix flag.";
} }
leaf enable { leaf readvertisement-flag {
type boolean; type boolean;
description description
"Activates LFA. "Readvertisement flag.";
This model assumes activation }
of per-prefix LFA."; leaf node-flag {
} type boolean;
description
"Node flag.";
}
}
container remote-lfa { grouping prefix-ipv4-source-router-id {
if-feature remote-lfa; description
leaf enable { "This group defines the IPv4 source router ID of
type boolean; a prefix advertisement.";
description
"Activates rLFA."; leaf ipv4-source-router-id {
} type inet:ipv4-address;
description description
"remote LFA configuration."; "IPv4 Source router ID address.";
} }
leaf level {
type level; }
grouping prefix-ipv6-source-router-id {
description
"This group defines the IPv6 source router ID of
a prefix advertisement.";
leaf ipv6-source-router-id {
type inet:ipv6-address;
description description
"Level applicability."; "IPv6 Source router ID address.";
}
description
"LFA configuration.";
} }
} }
grouping prefix-reachability-attributes { grouping prefix-attributes-extension {
description description
"This group defines extended reachability attributes of an "Prefix extended attributes.";
IPv4 or IPv6 prefix.";
leaf external-prefix-flag { uses prefix-reachability-attributes;
type boolean; uses prefix-ipv4-source-router-id;
description uses prefix-ipv6-source-router-id;
"External prefix flag."; }
}
leaf readvertisement-flag { grouping prefix-ipv4-std {
type boolean; description
description "This group defines attributes of an
"Readvertisement flag."; IPv4 standard prefix.";
leaf up-down {
type boolean;
description
"This leaf expresses the value of up/down bit.";
}
leaf i-e {
type boolean;
description
"This leaf expresses the value of I/E bit.";
}
leaf ip-prefix {
type inet:ipv4-address;
description
"This leaf describes the IPv4 prefix";
}
leaf prefix-len {
type uint8;
description
"This leaf describes the IPv4 prefix len in bits";
}
leaf default-metric {
type std-metric;
description
"This leaf describes the ISIS default metric value";
}
container delay-metric {
leaf metric {
type std-metric;
description
"This leaf describes the ISIS delay metric value";
} }
leaf node-flag { leaf supported {
type boolean; type boolean;
description default "false";
"Node flag."; description
"This leaf describes if the metric is supported.";
} }
}
grouping prefix-ipv4-source-router-id {
description description
"This group defines the IPv4 source router ID of "This container defines the ISIS delay metric.";
a prefix advertisement."; }
container expense-metric {
leaf ipv4-source-router-id { leaf metric {
type inet:ipv4-address; type std-metric;
description description
"IPv4 Source router ID address."; "This leaf describes the ISIS expense metric value";
}
leaf supported {
type boolean;
default "false";
description
"This leaf describes if the metric is supported.";
} }
}
grouping prefix-ipv6-source-router-id {
description description
"This group defines the IPv6 source router ID of "This container defines the ISIS expense metric.";
a prefix advertisement."; }
container error-metric {
leaf ipv6-source-router-id { leaf metric {
type inet:ipv6-address; type std-metric;
description description
"IPv6 Source router ID address."; "This leaf describes the ISIS error metric value";
}
leaf supported {
type boolean;
default "false";
description
"This leaf describes if the metric is supported.";
} }
}
grouping prefix-attributes-extension {
description description
"Prefix extended attributes."; "This container defines the ISIS error metric.";
}
uses prefix-reachability-attributes;
uses prefix-ipv4-source-router-id;
uses prefix-ipv6-source-router-id;
}
grouping prefix-ipv4-std {
description
"This group defines attributes of an
IPv4 standard prefix.";
leaf up-down {
type boolean;
description
"This leaf expresses the value of up/down bit.";
}
leaf i-e {
type boolean;
description
"This leaf expresses the value of I/E bit.";
}
leaf ip-prefix {
type inet:ipv4-address;
description
"This leaf describes the IPv4 prefix";
}
leaf prefix-len {
type uint8;
description
"This leaf describes the IPv4 prefix len in bits";
} }
leaf default-metric {
type std-metric; grouping prefix-ipv4-extended {
description description
"This leaf describes the ISIS default metric value"; "This group defines attributes of an
} IPv4 extended prefix.";
container delay-metric { leaf up-down {
leaf metric {
type std-metric;
description
"This leaf describes the ISIS delay metric value";
}
leaf supported {
type boolean; type boolean;
default "false";
description description
"This leaf describes if the metric is supported."; "This leaf expresses the value of up/down bit.";
} }
leaf ip-prefix {
description type inet:ipv4-address;
"This container defines the ISIS delay metric.";
}
container expense-metric {
leaf metric {
type std-metric;
description description
"This leaf describes the ISIS expense metric value"; "This leaf describes the IPv4 prefix";
} }
leaf supported { leaf prefix-len {
type boolean; type uint8;
default "false";
description description
"This leaf describes if the metric is supported."; "This leaf describes the IPv4 prefix len in bits";
} }
description
"This container defines the ISIS expense metric.";
}
container error-metric {
leaf metric { leaf metric {
type std-metric; type wide-metric;
description description
"This leaf describes the ISIS error metric value"; "This leaf describes the ISIS metric value";
} }
leaf supported { leaf-list tag {
type boolean; type uint32;
default "false";
description description
"This leaf describes if the metric is supported."; "This leaf describes a list of tags associated with
the prefix.";
}
leaf-list tag64 {
type uint64;
description
"This leaf describes a list of 64-bit tags associated with
the prefix.";
} }
description
"This container defines the ISIS error metric.";
}
}
grouping prefix-ipv4-extended { uses prefix-attributes-extension;
description
"This group defines attributes of an
IPv4 extended prefix.";
leaf up-down {
type boolean;
description
"This leaf expresses the value of up/down bit.";
}
leaf ip-prefix {
type inet:ipv4-address;
description
"This leaf describes the IPv4 prefix";
}
leaf prefix-len {
type uint8;
description
"This leaf describes the IPv4 prefix len in bits";
}
leaf metric {
type wide-metric;
description
"This leaf describes the ISIS metric value";
}
leaf-list tag {
type uint32;
description
"This leaf describes a list of tags associated with
the prefix.";
} }
leaf-list tag64 {
type uint64;
description
"This leaf describes a list of 64-bit tags associated with
the prefix.";
}
uses prefix-attributes-extension;
} grouping prefix-ipv6-extended {
grouping prefix-ipv6-extended {
description
"This group defines attributes of an
IPv6 prefix.";
leaf up-down {
type boolean;
description
"This leaf expresses the value of up/down bit.";
}
leaf ip-prefix {
type inet:ipv6-address;
description
"This leaf describes the IPv6 prefix";
}
leaf prefix-len {
type uint8;
description description
"This leaf describes the IPv4 prefix len in bits"; "This group defines attributes of an
} IPv6 prefix.";
leaf up-down {
type boolean;
description
"This leaf expresses the value of up/down bit.";
}
leaf ip-prefix {
type inet:ipv6-address;
description
"This leaf describes the IPv6 prefix";
}
leaf prefix-len {
type uint8;
description
"This leaf describes the IPv4 prefix len in bits";
}
leaf metric { leaf metric {
type wide-metric; type wide-metric;
description description
"This leaf describes the ISIS metric value"; "This leaf describes the ISIS metric value";
} }
leaf-list tag { leaf-list tag {
type uint32; type uint32;
description description
"This leaf describes a list of tags associated with "This leaf describes a list of tags associated with
the prefix."; the prefix.";
} }
leaf-list tag64 { leaf-list tag64 {
type uint64; type uint64;
description description
"This leaf describes a list of 64-bit tags associated with "This leaf describes a list of 64-bit tags associated with
the prefix."; the prefix.";
} }
uses prefix-attributes-extension; uses prefix-attributes-extension;
}
grouping neighbor-extended {
description
"This group defines attributes of an
ISIS extended neighbor.";
leaf neighbor-id {
type system-id;
description
"This leaf describes the system-id of the neighbor.";
}
leaf metric {
type wide-metric;
description
"This leaf describes the ISIS metric value";
} }
} grouping neighbor-extended {
grouping neighbor {
description
"This group defines attributes of an
ISIS standard neighbor.";
leaf neighbor-id {
type system-id;
description
"This leaf describes the system-id of the neighbor.";
}
leaf i-e {
type boolean;
description
"This leaf expresses the value of I/E bit.";
}
leaf default-metric {
type std-metric;
description description
"This leaf describes the ISIS default metric value"; "This group defines attributes of an
} ISIS extended neighbor.";
container delay-metric { leaf neighbor-id {
leaf metric { type system-id;
type std-metric;
description description
"This leaf describes the ISIS delay metric value"; "This leaf describes the system-id of the neighbor.";
} }
leaf supported { leaf metric {
type boolean; type wide-metric;
default "false";
description description
"This leaf describes if the metric is supported."; "This leaf describes the ISIS metric value";
} }
description
"This container defines the ISIS delay metric.";
} }
container expense-metric {
leaf metric { grouping neighbor {
type std-metric; description
"This group defines attributes of an
ISIS standard neighbor.";
leaf neighbor-id {
type system-id;
description description
"This leaf describes the ISIS delay expense value"; "This leaf describes the system-id of the neighbor.";
} }
leaf supported { leaf i-e {
type boolean; type boolean;
default "false";
description description
"This leaf describes if the metric is supported."; "This leaf expresses the value of I/E bit.";
} }
description leaf default-metric {
"This container defines the ISIS expense metric.";
}
container error-metric {
leaf metric {
type std-metric; type std-metric;
description description
"This leaf describes the ISIS error metric value"; "This leaf describes the ISIS default metric value";
}
leaf supported {
type boolean;
default "false";
description
"This leaf describes if the metric is supported.";
} }
description container delay-metric {
"This container defines the ISIS error metric."; leaf metric {
} type std-metric;
}
grouping database {
description
"This group defines attributes of an
ISIS database (Link State DB).";
leaf lsp-id {
type lsp-id;
description
"This leaf describes the LSP ID of the LSP.";
}
leaf checksum {
type uint16;
description
"This leaf describes the checksum of the LSP.";
}
leaf remaining-lifetime {
type uint16;
units "seconds";
description
"This leaf describes the remaining lifetime
in seconds before the LSP expiration.";
}
leaf sequence {
type uint32;
description
"This leaf describes the sequence number of the LSP.";
}
leaf attributes {
type bits {
bit PARTITIONNED {
description description
"If set, the originator supports partition "This leaf describes the ISIS delay metric value";
repair.";
} }
bit ATTACHED-ERROR { leaf supported {
type boolean;
default "false";
description description
"If set, the originator is attached to "This leaf describes if the metric is supported.";
another area using the referred metric.";
} }
bit ATTACHED-EXPENSE { description
"This container defines the ISIS delay metric.";
}
container expense-metric {
leaf metric {
type std-metric;
description description
"If set, the originator is attached to "This leaf describes the ISIS delay expense value";
another area using the referred metric.";
} }
bit ATTACHED-DELAY { leaf supported {
type boolean;
default "false";
description description
"If set, the originator is attached to "This leaf describes if the metric is supported.";
another area using the referred metric.";
} }
bit ATTACHED-DEFAULT { description
"This container defines the ISIS expense metric.";
}
container error-metric {
leaf metric {
type std-metric;
description description
"If set, the originator is attached to "This leaf describes the ISIS error metric value";
another area using the referred metric.";
} }
bit OVERLOAD { leaf supported {
type boolean;
default "false";
description description
"If set, the originator is overloaded, "This leaf describes if the metric is supported.";
and must be avoided in path calculation.";
} }
description
"This container defines the ISIS error metric.";
} }
description
"This leaf describes attributes of the LSP.";
} }
container is-neighbor { grouping database {
list neighbor { description
uses neighbor; "This group defines attributes of an
ISIS database (Link State DB).";
leaf lsp-id {
type lsp-id;
description description
"List of neighbors."; "This leaf describes the LSP ID of the LSP.";
} }
description leaf checksum {
"This leaf describes list of ISIS neighbors. type uint16;
ISIS reference is TLV 2.";
}
container authentication {
leaf authentication-type {
type string;
description description
"This leaf describes the authentication type "This leaf describes the checksum of the LSP.";
to be used.";
} }
leaf authentication-key { leaf remaining-lifetime {
type string; type uint16;
units "seconds";
description description
"This leaf describes the authentication key "This leaf describes the remaining lifetime
to be used. For security reason, the in seconds before the LSP expiration.";
authentication key MUST NOT be presented
in plaintext format. Authors recommends
to use MD5 hash to present the authentication-key.";
} }
description "This container describes authentication leaf sequence {
information of the node. ISIS reference is TLV 10."; type uint32;
} description
"This leaf describes the sequence number of the LSP.";
}
leaf attributes {
type bits {
bit PARTITIONNED {
description
"If set, the originator supports partition
repair.";
}
bit ATTACHED-ERROR {
description
"If set, the originator is attached to
another area using the referred metric.";
}
bit ATTACHED-EXPENSE {
description
"If set, the originator is attached to
another area using the referred metric.";
}
bit ATTACHED-DELAY {
description
"If set, the originator is attached to
another area using the referred metric.";
}
bit ATTACHED-DEFAULT {
description
"If set, the originator is attached to
another area using the referred metric.";
}
bit OVERLOAD {
description
"If set, the originator is overloaded,
and must be avoided in path calculation.";
container extended-is-neighbor { }
list neighbor { }
uses neighbor-extended;
description description
"List of neighbors."; "This leaf describes attributes of the LSP.";
} }
description
"This container describes list of ISIS extended
neighbors.
ISIS reference is TLV 22.";
}
container ipv4-internal-reachability { container is-neighbor {
list prefixes { list neighbor {
uses prefix-ipv4-std; uses neighbor;
description
"List of neighbors.";
}
description description
"List of prefixes."; "This leaf describes list of ISIS neighbors.
ISIS reference is TLV 2.";
} }
description
"This container describes list of IPv4 internal
reachability information.
ISIS reference is TLV 128.";
}
leaf-list protocol-supported { container authentication {
type uint8; leaf authentication-type {
description type string;
"This leaf describes the list of description
supported protocols. "This leaf describes the authentication type
ISIS reference is TLV 129."; to be used.";
} }
leaf authentication-key {
type string;
description
"This leaf describes the authentication key
to be used. For security reason, the
authentication key MUST NOT be presented
in plaintext format. Authors recommends
to use MD5 hash to present the authentication-key.";
}
description "This container describes authentication
information of the node. ISIS reference is TLV 10.";
}
container ipv4-external-reachability { container extended-is-neighbor {
list prefixes { list neighbor {
uses prefix-ipv4-std; uses neighbor-extended;
description
"List of neighbors.";
}
description description
"List of prefixes."; "This container describes list of ISIS extended
} neighbors.
description ISIS reference is TLV 22.";
"This container describes list of IPv4 external
reachability information.
ISIS reference is TLV 130.";
}
leaf-list ipv4-addresses { }
type inet:ipv4-address;
description
"This leaf describes the IPv4 addresses of the node.
ISIS reference is TLV 132.";
}
leaf ipv4-te-routerid { container ipv4-internal-reachability {
list prefixes {
uses prefix-ipv4-std;
description
"List of prefixes.";
}
description
"This container describes list of IPv4 internal
reachability information.
ISIS reference is TLV 128.";
}
type inet:ipv4-address; leaf-list protocol-supported {
description type uint8;
"This leaf describes the IPv4 Traffic Engineering description
router ID of the node. "This leaf describes the list of
ISIS reference is TLV 134."; supported protocols.
} ISIS reference is TLV 129.";
}
container extended-ipv4-reachability { container ipv4-external-reachability {
list prefixes {
uses prefix-ipv4-std;
description
"List of prefixes.";
}
description
"This container describes list of IPv4 external
reachability information.
ISIS reference is TLV 130.";
}
list prefixes { leaf-list ipv4-addresses {
uses prefix-ipv4-extended; type inet:ipv4-address;
description description
"List of prefixes."; "This leaf describes the IPv4 addresses of the node.
ISIS reference is TLV 132.";
} }
description
"This container describes list of IPv4 extended
reachability information.
ISIS reference is TLV 135.";
}
leaf dynamic-hostname { leaf ipv4-te-routerid {
type string;
description type inet:ipv4-address;
"This leaf describes the name of the node. description
ISIS reference is TLV 137."; "This leaf describes the IPv4 Traffic Engineering
} router ID of the node.
ISIS reference is TLV 134.";
leaf ipv6-te-routerid { }
type inet:ipv6-address;
description
"This leaf describes the IPv6 Traffic Engineering
router ID of the node.
ISIS reference is TLV 140.";
}
container mt-is-neighbor { container extended-ipv4-reachability {
list neighbor {
leaf MT-ID { list prefixes {
type uint16 { uses prefix-ipv4-extended;
range "0 .. 4095";
}
description description
"This leaf defines the identifier "List of prefixes.";
of a topology.";
} }
uses neighbor-extended;
description description
"List of neighbors."; "This container describes list of IPv4 extended
reachability information.
ISIS reference is TLV 135.";
} }
description
"This container describes list of ISIS multi-topology
neighbors.
ISIS reference is TLV 223.";
}
container mt-entries { leaf dynamic-hostname {
list topology { type string;
leaf MT-ID { description
type uint16 { "This leaf describes the name of the node.
range "0 .. 4095"; ISIS reference is TLV 137.";
}
leaf ipv6-te-routerid {
type inet:ipv6-address;
description
"This leaf describes the IPv6 Traffic Engineering
router ID of the node.
ISIS reference is TLV 140.";
}
container mt-is-neighbor {
list neighbor {
leaf MT-ID {
type uint16 {
range "0 .. 4095";
}
description
"This leaf defines the identifier
of a topology.";
} }
uses neighbor-extended;
description description
"This leaf defines the identifier "List of neighbors.";
of a topology.";
} }
description
"This container describes list of ISIS multi-topology
neighbors.
ISIS reference is TLV 223.";
}
leaf attributes { container mt-entries {
type bits { list topology {
bit OVERLOAD {
description leaf MT-ID {
"If set, the originator is overloaded, type uint16 {
and must be avoided in path range "0 .. 4095";
calculation.";
} }
bit ATTACHED { description
description "This leaf defines the identifier
"If set, the originator is attached to of a topology.";
another area using the referred metric."; }
leaf attributes {
type bits {
bit OVERLOAD {
description
"If set, the originator is overloaded,
and must be avoided in path
calculation.";
}
bit ATTACHED {
description
"If set, the originator is attached to
another area using the referred metric.";
}
} }
description
"This leaf describes attributes of the LSP
for the associated topology.";
} }
description description
"This leaf describes attributes of the LSP "List of topologies supported.";
for the associated topology.";
} }
description description
"List of topologies supported."; "This container describes the topology supported.
ISIS reference is TLV 229.";
} }
description
"This container describes the topology supported.
ISIS reference is TLV 229.";
}
leaf-list ipv6-addresses { leaf-list ipv6-addresses {
type inet:ipv6-address; type inet:ipv6-address;
description description
"This leaf describes the IPv6 interface "This leaf describes the IPv6 interface
addresses of the node. addresses of the node.
ISIS reference is TLV 232."; ISIS reference is TLV 232.";
}
container mt-extended-ipv4-reachability { }
list prefixes {
leaf MT-ID {
type uint16 {
range "0 .. 4095";
container mt-extended-ipv4-reachability {
list prefixes {
leaf MT-ID {
type uint16 {
range "0 .. 4095";
}
description
"This leaf defines the identifier
of a topology.";
} }
uses prefix-ipv4-extended;
description description
"This leaf defines the identifier "List of prefixes.";
of a topology.";
} }
uses prefix-ipv4-extended;
description description
"List of prefixes."; "This container describes list of IPv4
reachability information in multi-topology
environment.
ISIS reference is TLV 235.";
} }
description
"This container describes list of IPv4
reachability information in multi-topology
environment.
ISIS reference is TLV 235.";
}
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
"This leaf defines the identifier
of a topology.";
} }
uses prefix-ipv6-extended;
description description
"This leaf defines the identifier "List of prefixes.";
of a topology.";
} }
uses prefix-ipv6-extended;
description description
"List of prefixes."; "This container describes list of IPv6
reachability information in multi-topology
environment.
ISIS reference is TLV 237.";
} }
description container ipv6-reachability {
"This container describes list of IPv6 list prefixes {
reachability information in multi-topology uses prefix-ipv6-extended;
environment. description
ISIS reference is TLV 237."; "List of prefixes.";
} }
container ipv6-reachability {
list prefixes {
uses prefix-ipv6-extended;
description description
"List of prefixes."; "This container describes list of IPv6
reachability information.
ISIS reference is TLV 236.";
} }
description
"This container describes list of IPv6
reachability information.
ISIS reference is TLV 236.";
} list router-capabilities {
leaf flags {
list router-capabilities { type bits {
leaf flags { bit flooding {
type bits { position 0;
bit flooding { description
position 0; "If the S bit is set(1),
description the IS-IS Router CAPABILITY TLV
"If the S bit is set(1), MUST be flooded across the entire routing domain.
the IS-IS Router CAPABILITY TLV If the S bit is
MUST be flooded across the entire routing domain. not set(0), the TLV MUST NOT be leaked between levels.
If the S bit is This bit MUST NOT be altered during the TLV leaking.";
not set(0), the TLV MUST NOT be leaked between levels. }
This bit MUST NOT be altered during the TLV leaking."; bit down {
position 1;
description
"When the IS-IS Router CAPABILITY TLV is
leaked from level-2 to level-1, the D bit
MUST be set. Otherwise, this bit MUST
be clear. IS-IS Router capability TLVs
with the D bit set MUST NOT
be leaked from level-1 to level-2.
This is to prevent TLV looping.
";
}
} }
bit down { description
position 1; "Flags associated with router capability.";
}
container node-tags {
if-feature node-tag;
list node-tag {
leaf tag {
type uint32;
description
"Node tag value.";
}
description description
"When the IS-IS Router CAPABILITY TLV is "List of tags.";
leaked from level-2 to level-1, the D bit
MUST be set. Otherwise, this bit MUST
be clear. IS-IS Router capability TLVs
with the D bit set MUST NOT
be leaked from level-1 to level-2.
This is to prevent TLV looping.
";
} }
description
"Container for node tags.";
}
leaf binary {
type binary;
description
"This leaf describes the capability of the node.
Format is binary according to the protocol encoding.";
} }
description description
"Flags associated with router capability."; "This container describes the capabilities of the node.
This container may be extended with detailed
information.
ISIS reference is TLV 242.";
} }
}
grouping isis-node-tag-cfg {
description
"ISIS node tag config.";
container node-tag { container node-tag {
if-feature node-tag; if-feature node-tag;
list node-tag { list node-tag {
leaf tag { key tag;
type uint32; leaf tag {
type uint32;
description
"Node tag value.";
}
description description
"Node tag value."; "List of tags.";
} }
description description
"List of tags."; "Container for node tags.";
} }
description
"Container for node tags.";
}
leaf binary {
type binary;
description
"This leaf describes the capability of the node.
Format is binary according to the protocol encoding.";
}
description
"This container describes the capabilities of the node.
This container may be extended with detailed
information.
ISIS reference is TLV 242.";
} }
}
grouping isis-node-tag-cfg { grouping authentication-global-cfg {
description choice authentication-type {
"ISIS node tag config."; case key-chain {
container node-tag { if-feature key-chain;
if-feature node-tag; leaf key-chain {
list node-tag { type key-chain:key-chain-ref;
key tag;
leaf tag {
type uint32;
description
"Node tag value.";
}
description description
"List of tags."; "Reference to a key-chain.";
} }
description
"Container for node tags.";
}
}
grouping authentication-global-cfg {
choice authentication-type {
case key-chain {
if-feature key-chain;
leaf key-chain {
type key-chain:key-chain-ref;
description
"Reference to a key-chain.";
} }
} case password {
case password { leaf key {
leaf key { type string;
type string; description
description "This leaf describes the
"This leaf describes the authentication key.";
authentication key."; }
uses key-chain:crypto-algorithm-types;
} }
uses key-chain:crypto-algorithm-types; description
"Choice of authentication.";
} }
description description
"Choice of authentication."; "Grouping for global auth config.";
} }
description
"Grouping for global auth config.";
}
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 "Advertise new metric style only
(RFC5305)"; (RFC5305)";
} }
enum old-only { enum old-only {
description description
"Advertise old metric style only "Advertise old metric style only
(RFC1195)"; (RFC1195)";
} }
enum both { enum both {
description "Advertise both metric description "Advertise both metric
styles"; styles";
}
} }
description
"This leaf describes the type of metric
to be generated.
Wide-only means only new metric style
is generated,
old-only means that only old style metric
is generated,
and both means that both are advertised.
This leaf is only affecting IPv4 metrics.";
} }
description description
"This leaf describes the type of metric "Grouping for global metric style config.";
to be generated. }
Wide-only means only new metric style
is generated,
old-only means that only old style metric
is generated,
and both means that both are advertised.
This leaf is only affecting IPv4 metrics.";
}
description
"Grouping for global metric style config.";
}
grouping default-metric-global-cfg { grouping default-metric-global-cfg {
leaf value { leaf value {
type wide-metric; type wide-metric;
default "10"; default "10";
description
"Value of the metric";
}
description
"Grouping for global default metric config.";
}
grouping overload-global-cfg {
leaf status {
type boolean;
description
"This leaf defines the overload status.";
}
description description
"Value of the metric"; "Grouping for overload bit config.";
} }
grouping overload-max-metric-global-cfg {
leaf timeout {
type uint16;
units "seconds";
description
"This leaf defines the timeout in seconds
of the overload condition.";
}
description description
"Grouping for global default metric config."; "Grouping for overload-max-metric config.";
} }
grouping overload-global-cfg { grouping route-preference-global-cfg {
leaf status { choice granularity {
type boolean; case detail {
description leaf internal {
"This leaf defines the overload status."; type uint8;
}
description description
"Grouping for overload bit config."; "This leaf defines the protocol
} preference for internal routes.";
grouping overload-max-metric-global-cfg { }
leaf timeout { leaf external {
type uint16; type uint8;
units "seconds"; description
description "This leaf defines the protocol
"This leaf defines the timeout in seconds preference for external routes.";
of the overload condition."; }
}
description
"Grouping for overload-max-metric config.";
}
grouping route-preference-global-cfg {
choice granularity {
case detail {
leaf internal {
type uint8;
description
"This leaf defines the protocol
preference for internal routes.";
}
leaf external {
type uint8;
description
"This leaf defines the protocol
preference for external routes.";
} }
} case coarse {
case coarse { leaf default {
leaf default { type uint8;
type uint8; description
description "This leaf defines the protocol
"This leaf defines the protocol preference for all ISIS routes.";
preference for all ISIS routes."; }
} }
description
"Choice for implementation of route preference.";
} }
description description
"Choice for implementation of route preference."; "This grouping defines how route preference is configured.";
} }
description
"This grouping defines how route preference is configured.";
}
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 description
"Reference to a key-chain."; "Reference to a key-chain.";
} }
}
case password {
leaf key {
type string;
description
"This leaf describes the
authentication key.";
}
uses key-chain:crypto-algorithm-types;
}
description
"Choice of authentication.";
} }
description case password {
"Grouping for hello authentication."; leaf key {
} type string;
description
grouping hello-interval-cfg { "This leaf describes the
leaf value { authentication key.";
type uint16 { }
range "1..65535"; uses key-chain:crypto-algorithm-types;
}
units "seconds";
default 10;
description
"This leaf defines the interval of
hello messages.";
} }
description description
"Interval between "Choice of authentication.";
hello messages.";
} }
description
grouping hello-multiplier-cfg { "Grouping for hello authentication.";
leaf value { }
type uint16; grouping hello-interval-cfg {
description leaf value {
"This leaf defines the number of type uint16 {
hello failed to be received before range "1..65535";
declaring the adjacency down."; }
} units "seconds";
default 10;
description description
"This grouping defines the number of "This leaf defines the interval of
hello failed to be received before hello messages.";
declaring the adjacency down.";
} }
grouping priority-cfg { description
"Interval between
leaf value { hello messages.";
type uint8 { }
range "0 .. 127";
}
default 64;
description
"This leaf describes the priority of
the interface
for DIS election.";
}
grouping hello-multiplier-cfg {
leaf value {
type uint16;
description description
"This grouping leaf describes the "This leaf defines the number of
priority of hello failed to be received before
the interface declaring the adjacency down.";
for DIS election.";
} }
description
"This grouping defines the number of
hello failed to be received before
declaring the adjacency down.";
}
grouping metric-cfg { grouping priority-cfg {
leaf value {
type wide-metric; leaf value {
description type uint8 {
"Metric value."; range "0 .. 127";
} }
default 64;
description description
"Grouping for interface metric"; "This leaf describes the priority of
the interface
for DIS election.";
} }
grouping isis-global-cfg {
description description
"Defines the ISIS global configuration."; "This grouping leaf describes the
priority of
uses admin-control; the interface
for DIS election.";
}
leaf level-type { grouping metric-cfg {
type level; leaf value {
default "level-all"; type wide-metric;
description description
"This leaf describes the type of ISIS node. "Metric value.";
A node can be level-1-only, level-2-only
or level-1-2.
";
} }
description
"Grouping for interface metric";
}
grouping lfa-if-cfg {
leaf candidate-disabled {
type boolean;
default false;
description
"Prevent the interface to be used as backup.";
}
leaf enable {
type boolean;
description
"Activates LFA.
This model assumes activation
of per-prefix LFA.";
}
leaf system-id { container remote-lfa {
type system-id; if-feature remote-lfa;
leaf enable {
type boolean;
description
"Activates rLFA.";
}
description
"remote LFA configuration.";
}
description description
"This leaf defines the system-id of the node."; "Grouping for LFA
} interface configuration";
}
grouping isis-global-cfg {
description
"Defines the ISIS global configuration.";
leaf maximum-area-addresses { uses admin-control;
if-feature maximum-area-addresses; leaf level-type {
type uint8; type level;
default 3; default "level-all";
description description
"Defines the maximum areas supported."; "This leaf describes the type of ISIS node.
} A node can be level-1-only, level-2-only
or level-1-2.
";
}
leaf-list area-address { leaf system-id {
type area-address; type system-id;
description description
"List of areas supported by the "This leaf defines the system-id of the node.";
protocol instance."; }
}
container mpls { leaf maximum-area-addresses {
leaf ipv4-router-id { if-feature maximum-area-addresses;
if-feature ipv4-router-id; type uint8;
type inet:ipv4-address; default 3;
description description
"Router ID value that would be used in "Defines the maximum areas supported.";
TLV 134.";
} }
leaf ipv6-router-id {
if-feature ipv6-router-id; leaf-list area-address {
type inet:ipv6-address; type area-address;
description description
"Router ID value that would be used in "List of areas supported by the
TLV 140."; protocol instance.";
} }
container igp-ldp-sync {
if-feature igp-ldp-sync; container mpls {
leaf ipv4-router-id {
if-feature ipv4-router-id;
type inet:ipv4-address;
description
"Router ID value that would be used in
TLV 134.";
}
leaf ipv6-router-id {
if-feature ipv6-router-id;
type inet:ipv6-address;
description
"Router ID value that would be used in
TLV 140.";
}
container igp-ldp-sync {
if-feature igp-ldp-sync;
description
"This container may be augmented
with global parameters for igp-ldp-sync.";
}
description description
"This container may be augmented "This container handles mpls config.";
with global parameters for igp-ldp-sync."; }
leaf reference-bandwidth {
if-feature reference-bandwidth;
type uint32;
units "bps";
description
"This leaf defines the bandwidth for calculating
metric.";
} }
description
"This container handles mpls config.";
}
leaf reference-bandwidth {
if-feature reference-bandwidth;
type uint32;
units "bps";
description
"This leaf defines the bandwidth for calculating
metric.";
}
leaf lsp-mtu { leaf lsp-mtu {
type uint16; type uint16;
units "bytes"; units "bytes";
default 1492; default 1492;
description description
"This leaf describes the maximum size of a "This leaf describes the maximum size of a
LSP PDU in bytes."; LSP PDU in bytes.";
} }
leaf lsp-lifetime { leaf lsp-lifetime {
type uint16 { type uint16 {
range "1..65535"; range "1..65535";
} }
units "seconds"; units "seconds";
description description
"This leaf describes the lifetime of the router "This leaf describes the lifetime of the router
LSP in seconds."; LSP in seconds.";
} }
leaf lsp-refresh { leaf lsp-refresh {
if-feature lsp-refresh; if-feature lsp-refresh;
type uint16 { type uint16 {
range "1..65535"; range "1..65535";
} }
units "seconds"; units "seconds";
description description
"This leaf describes the refresh interval of the "This leaf describes the refresh interval of the
router LSP in seconds."; router LSP in seconds.";
} }
container graceful-restart { container graceful-restart {
if-feature graceful-restart; if-feature graceful-restart;
leaf enable { leaf enable {
type boolean; type boolean;
description
"Control enabling the feature.";
}
description description
"Control enabling the feature."; "This container activates graceful restart.";
} }
description
"This container activates graceful restart.";
}
uses isis-node-tag-cfg; uses isis-node-tag-cfg;
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 cfg"; description "level-1 specific cfg";
} }
container level-2 { container level-2 {
uses authentication-global-cfg; uses authentication-global-cfg;
description "level-2 specific cfg"; description "level-2 specific cfg";
} }
description "authentication global cfg. description "authentication global cfg.
It covers both LSPs and SNPs."; It covers both LSPs and SNPs.";
} }
container metric-type { container metric-type {
uses metric-type-global-cfg; uses metric-type-global-cfg;
container level-1 { container level-1 {
uses metric-type-global-cfg; uses metric-type-global-cfg;
description "level-1 specific cfg"; description "level-1 specific cfg";
} }
container level-2 { container level-2 {
uses metric-type-global-cfg; uses metric-type-global-cfg;
description "level-2 specific cfg"; description "level-2 specific cfg";
} }
description "Metric style global cfg."; description "Metric style global cfg.";
} }
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 cfg"; description "level-1 specific cfg";
} }
container level-2 { container level-2 {
uses default-metric-global-cfg; uses default-metric-global-cfg;
description "level-2 specific cfg"; description "level-2 specific cfg";
} }
description "Default metric global cfg."; description "Default metric global cfg.";
}
container afs {
list af {
if-feature nlpid-control;
key af;
leaf af {
type identityref {
base rt:address-family;
}
description
"Address-family";
} }
list af { leaf enable {
if-feature nlpid-control; type boolean;
key af; description
leaf af { "Describes the activation state of the
type identityref { AF.";
base rt:address-family; }
} description
description "This list permits activation
"Address-family"; of new address families.";
}
description
"Container for address-families";
} }
leaf enable { container preference {
type boolean; uses route-preference-global-cfg;
description description
"Describes the activation state of the "This container defines the protocol preference.";
AF.";
} }
description
"This list permits activation
of new address families.";
} container overload {
container preference { uses overload-global-cfg;
uses route-preference-global-cfg; description
description "This container describes if the router is
"This container defines the protocol preference."; set to overload state.";
} }
container overload {
uses overload-global-cfg; container overload-max-metric {
description if-feature overload-max-metric;
"This container describes if the router is uses overload-max-metric-global-cfg;
set to overload state.";
}
container overload-max-metric { description
if-feature overload-max-metric; "This container describes if the router is
uses overload-max-metric-global-cfg; set to overload state using max-metric
advertisement.";
}
description }
"This container describes if the router is
set to overload state using max-metric
advertisement.";
}
} grouping isis-global-topologies-cfg {
description
"Per topology config.";
grouping isis-global-topologies-cfg { container default-metric {
description uses default-metric-global-cfg;
"Per topology config.";
container default-metric { container level-1 {
uses default-metric-global-cfg; uses default-metric-global-cfg;
description "level-1 specific cfg";
}
container level-2 {
uses default-metric-global-cfg;
description "level-2 specific cfg";
}
description "Default metric per
topology cfg.";
}
container level-1 { uses isis-node-tag-cfg;
uses default-metric-global-cfg; }
description "level-1 specific cfg";
}
container level-2 {
uses default-metric-global-cfg;
description "level-2 specific cfg";
}
description "Default metric per
topology cfg.";
}
uses isis-node-tag-cfg; grouping isis-if-cfg {
} description
"Grouping for interface cfg.";
grouping isis-if-cfg { leaf level-type {
type level;
default "level-all";
description description
"Grouping for interface cfg."; "This leaf defines the associated ISIS
level of the interface.";
}
leaf lsp-pacing-interval {
type uint16;
units "milliseconds";
default 33;
description
"This leaf defines the interval between
LSP transmissions in milli-seconds";
}
leaf lsp-retransmit-interval {
type uint16;
units "seconds";
description
"This leaf defines the interval between
retransmission of LSP";
}
leaf passive {
type boolean;
default "false";
description
"This leaf defines if interface is in
passive mode (ISIS not running,
but network is advertised).";
}
leaf csnp-interval {
type uint16 {
range "1..65535";
}
units "seconds";
default 10;
description
"This leaf defines the interval of CSNP
messages.";
}
leaf level-type { container hello-padding {
type level; leaf enable {
default "level-all";
description
"This leaf defines the associated ISIS
level of the interface.";
}
leaf lsp-pacing-interval {
type uint16;
units "milliseconds";
default 33;
description
"This leaf defines the interval between
LSP transmissions in milli-seconds";
}
leaf lsp-retransmit-interval {
type uint16;
units "seconds";
description
"This leaf defines the interval between
retransmission of LSP";
}
leaf passive {
type boolean; type boolean;
default "false"; default "true";
description
"This leaf defines if interface is in
passive mode (ISIS not running,
but network is advertised).";
}
leaf csnp-interval {
type uint16 {
range "1..65535";
}
units "seconds";
default 10;
description
"This leaf defines the interval of CSNP
messages.";
}
container hello-padding {
leaf enable {
type boolean;
default "true";
description
"Status of Hello-padding activation.
By default, the implementation shall
pad HELLOs.";
}
description
"This container handles ISIS hello padding
configuration.";
}
leaf mesh-group-enable {
type mesh-group-state;
description description
"Describes the mesh group state of "Status of Hello-padding activation.
the interface."; By default, the implementation shall
pad HELLOs.";
} }
leaf mesh-group { description
when "../mesh-group-enable = meshSet" { "This container handles ISIS hello padding
description configuration.";
"Only valid when mesh-group-enable }
equals meshSet"; leaf mesh-group-enable {
} type mesh-group-state;
type uint8; description
description "Describes the mesh group state of
"Describes the mesh group ID of the interface.";
the interface."; }
}
leaf interface-type { leaf mesh-group {
type interface-type; when "../mesh-group-enable = 'meshSet'" {
description description
"This leaf defines the type of adjacency "Only valid when mesh-group-enable
to be established on the interface. equals meshSet";
This is affecting the type of hello
message that would be used.";
} }
type uint8;
description
"Describes the mesh group ID of
the interface.";
}
uses admin-control; leaf interface-type {
type interface-type;
description
"This leaf defines the type of adjacency
to be established on the interface.
This is affecting the type of hello
message that would be used.";
}
leaf-list tag { uses admin-control;
if-feature prefix-tag;
type uint32; leaf-list tag {
description if-feature prefix-tag;
"This leaf defines list of tags associated
with the interface.";
} type uint32;
description
"This leaf defines 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
"This leaf defines list of 64bits tags
associated with the interface.";
}
leaf node-flag {
if-feature node-flag;
type boolean;
default false;
description description
"This leaf defines list of 64bits tags "Set prefix as a node
associated with the interface."; representative prefix.";
}
leaf node-flag { }
if-feature node-flag;
type boolean;
default false;
description
"Set prefix as a node
representative prefix.";
} container hello-authentication {
uses hello-authentication-cfg;
container hello-authentication { container level-1 {
uses hello-authentication-cfg; uses hello-authentication-cfg;
description "level-1 specific cfg";
}
container level-2 {
uses hello-authentication-cfg;
description "level-2 specific cfg";
}
description "Authentication type
to be used in hello messages.";
}
container level-1 { container hello-interval {
uses hello-authentication-cfg; uses hello-interval-cfg;
description "level-1 specific cfg";
}
container level-2 {
uses hello-authentication-cfg;
description "level-2 specific cfg";
}
description "Authentication type
to be used in hello messages.";
}
container hello-interval { container level-1 {
uses hello-interval-cfg; uses hello-interval-cfg;
description "level-1 specific cfg";
}
container level-2 {
uses hello-interval-cfg;
description "level-2 specific cfg";
}
description "Interval between
hello messages.";
}
container level-1 { container hello-multiplier {
uses hello-interval-cfg; uses hello-multiplier-cfg;
description "level-1 specific cfg";
}
container level-2 {
uses hello-interval-cfg;
description "level-2 specific cfg";
} container level-1 {
description "Interval between uses hello-multiplier-cfg;
hello messages."; description "level-1 specific cfg";
}
container hello-multiplier { }
uses hello-multiplier-cfg; container level-2 {
uses hello-multiplier-cfg;
description "level-2 specific cfg";
}
description "Hello multiplier
configuration.";
}
container level-1 { container priority {
uses hello-multiplier-cfg; must '../interface-type = "broadcast"' {
description "level-1 specific cfg"; error-message
} "Priority only applies to broadcast
container level-2 { interfaces.";
uses hello-multiplier-cfg; description
description "level-2 specific cfg"; "Check for broadcast interface.";
}
description "Hello multiplier
configuration.";
} }
uses priority-cfg;
container priority { container level-1 {
must '../interface-type = "broadcast"' { uses priority-cfg;
error-message description "level-1 specific cfg";
"Priority only applies to broadcast
interfaces.";
description
"Check for broadcast interface.";
} }
uses priority-cfg; container level-2 {
uses priority-cfg;
description "level-2 specific cfg";
}
description "Priority for DIS election.";
}
container level-1 { container metric {
uses priority-cfg; uses metric-cfg;
description "level-1 specific cfg";
}
container level-2 {
uses priority-cfg;
description "level-2 specific cfg";
}
description "Priority for DIS election.";
}
container metric { container level-1 {
uses metric-cfg; uses metric-cfg;
description "level-1 specific cfg";
}
container level-2 {
uses metric-cfg;
description "level-2 specific cfg";
}
description "Metric configuration.";
}
container level-1 { container bfd {
uses metric-cfg; if-feature bfd;
description "level-1 specific cfg"; leaf enabled {
} type boolean;
container level-2 { default false;
uses metric-cfg; description "
description "level-2 specific cfg"; Enables BFD on the interface
} ";
description "Metric configuration."; }
} description
"BFD configuration.";
}
container bfd { container afs {
if-feature bfd; list af {
leaf enabled { key af;
type boolean;
default false;
description "
Enables BFD on the interface
";
}
description
"BFD configuration.";
}
list af { leaf af {
key af; type identityref {
base rt:address-family;
}
description
"Address-family";
}
leaf af { description
type identityref { "List of AFs.";
base rt:address-family;
}
description
"Address-family";
} }
description
"Container for address-families";
}
container mpls {
container igp-ldp-sync {
if-feature igp-ldp-sync;
leaf enable {
type boolean;
description
"Enable/disable IGP LDP sync.";
}
description description
"List of AFs."; "IGP-LDP sync configuration.";
} }
description
"Container for MPLS specific configuration
for ISIS.";
}
container mpls { }
container igp-ldp-sync { grouping isis-if-topologies-cfg {
if-feature igp-ldp-sync; description
leaf enable { "ISIS interface topology cfg.";
type boolean; container metric {
description uses metric-cfg;
"Enable/disable IGP LDP sync.";
}
description
"IGP-LDP sync configuration.";
container level-1 {
uses metric-cfg;
description "level-1 specific cfg";
} }
description container level-2 {
"Container for MPLS specific configuration uses metric-cfg;
for ISIS."; description "level-2 specific cfg";
} }
description "Metric configuration.";
}
}
} /* */
grouping isis-if-topologies-cfg { augment "/rt:routing-state/"
+"rt:ribs/rt:rib/rt:routes/rt:route" {
when "rt:source-protocol = 'isis:isis'" {
description "ISIS-specific route attributes.";
}
uses route-content;
description
"This augments route object in RIB with ISIS-specific
attributes.";
}
augment "/if:interfaces/if:interface"
{
leaf clns-mtu {
type uint16;
description description
"ISIS interface topology cfg."; "Defines CLNS MTU of the interface.";
container metric { }
uses metric-cfg; description "ISO interface config.";
}
container level-1 { augment "/rt:routing/rt:control-plane-protocols/"
uses metric-cfg; +"rt:control-plane-protocol" {
description "level-1 specific cfg"; when "rt:type = 'isis:isis'" {
} description
container level-2 { "This augment is only valid when routing protocol
uses metric-cfg; instance type is isis.";
description "level-2 specific cfg"; }
} description
description "Metric configuration."; "This augments a routing protocol instance with ISIS
} specific parameters.";
} container isis {
/* */ must "count(area-address) > 0" {
error-message "At least one area-address
must be configured.";
description
"Enforce configuration of at least one area.";
}
augment "/rt:routing-state/" uses isis-global-cfg;
+"rt:ribs/rt:rib/rt:routes/rt:route" {
when "rt:source-protocol = 'isis:isis'" {
description "ISIS-specific route attributes.";
}
uses route-content;
description
"This augments route object in RIB with ISIS-specific
attributes.";
}
augment "/rt:fib-route/rt:output/rt:route" container fast-reroute {
{ if-feature fast-reroute;
uses route-content; uses fast-reroute-global-cfg;
description "ISIS-specific route attributes."; description
} "IPFRR.";
}
container multi-topology {
if-feature multi-topology;
list topology {
augment "/if:interfaces/if:interface" key "name";
{
leaf clns-mtu {
type uint16;
description
"Defines CLNS MTU of the interface.";
}
description "ISO interface config.";
}
augment "/rt:routing/rt:routing-protocols/" leaf enable {
+"rt:routing-protocol" { type boolean;
when "rt:type = 'isis:isis'" { description
description "Control enabling of topologies";
"This augment is only valid when routing protocol }
instance type is isis.";
}
description
"This augments a routing protocol instance with ISIS
specific parameters.";
container isis {
must "count(area-address) > 0" { leaf name {
error-message "At least one area-address type leafref {
must be configured."; path "../../../../../../rt:ribs/rt:rib/rt:name";
description }
"Enforce configuration of at least one area.";
}
uses isis-global-cfg; description "RIB";
}
uses isis-global-topologies-cfg;
container fast-reroute { container fast-reroute {
if-feature fast-reroute; if-feature fast-reroute;
uses fast-reroute-global-cfg; uses fast-reroute-global-cfg;
description description
"IPFRR."; "IPFRR.";
} }
list topologies {
if-feature multi-topology;
key "name"; description
"List of topologies";
leaf enable { }
type boolean; description
description "Container for multi-topology";
"Control enabling of topologies";
}
leaf name {
type leafref {
path "../../../../../rt:ribs/rt:rib/rt:name";
}
description "RIB";
} }
uses isis-global-topologies-cfg; container interfaces {
container fast-reroute { list interface {
if-feature fast-reroute; key "name";
uses fast-reroute-global-cfg; leaf name {
description type if:interface-ref;
"IPFRR.";
}
description
"List of topologies";
}
container interfaces { description
list interface { "Reference to the interface within
key "name"; the routing-instance.";
leaf name { }
type if:interface-ref;
uses isis-if-cfg;
container fast-reroute {
if-feature fast-reroute;
uses fast-reroute-if-cfg;
description description
"Reference to the interface within "IPFRR.";
the routing-instance.";
} }
container multi-topology {
if-feature multi-topology;
list topology {
key name;
uses isis-if-cfg; leaf name {
container fast-reroute { type leafref {
if-feature fast-reroute; path "../../../../../../../../"+
uses fast-reroute-if-cfg; "rt:ribs/rt:rib/rt:name";
description }
"IPFRR.";
}
list topologies {
key name;
leaf name { description
type leafref { "Name of RIB.";
path "../../../../../../../"+ }
"rt:ribs/rt:rib/rt:name"; container fast-reroute {
} if-feature fast-reroute;
uses fast-reroute-if-cfg;
description
"IPFRR.";
}
uses isis-if-topologies-cfg;
description
"List of topologies.";
}
description
"Container for multi-topology";
}
description description
"Name of RIB."; "List of ISIS interfaces.";
} }
container fast-reroute { description
if-feature fast-reroute; "This container defines ISIS interface specific
uses fast-reroute-if-cfg; configuration objects.";
description
"IPFRR.";
}
uses isis-if-topologies-cfg;
description
"List of topologies.";
}
description
"List of ISIS interfaces.";
} }
description
"This container defines ISIS interface specific
configuration objects.";
}
description description
"This container defines ISIS specific configuration "This container defines ISIS specific configuration
objects."; objects.";
}
} }
}
augment "/rt:routing-state/" augment "/rt:routing-state/"
+"rt:routing-protocols/rt:routing-protocol" { +"rt:control-plane-protocols/rt:control-plane-protocol" {
when "rt:type = 'isis:isis'" { when "rt:type = 'isis:isis'" {
description
"This augment is only valid when routing protocol
instance type is isis.";
}
description description
"This augment is only valid when routing protocol "This augments routing protocol instance states with ISIS
instance type is isis."; specific parameters.";
}
description
"This augments routing protocol instance states with ISIS
specific parameters.";
container isis {
config false;
uses isis-global-cfg;
container fast-reroute {
if-feature fast-reroute;
uses fast-reroute-global-cfg;
uses fast-reroute-global-state;
description
"IPFRR states.";
}
list topologies {
key name;
leaf name {
type leafref {
path "../../../../../"
+"rt:ribs/rt:rib/rt:name";
}
container isis {
config false;
uses isis-global-cfg;
container fast-reroute {
if-feature fast-reroute;
uses fast-reroute-global-cfg;
uses fast-reroute-global-state;
description description
"Name of RIB."; "IPFRR states.";
} }
container fast-route {
if-feature fast-reroute;
uses fast-reroute-global-cfg;
uses fast-reroute-global-state;
description
"IPFRR states.";
}
description
"List of topologies.";
}
container system-counters { list topologies {
list level { key name;
key level; leaf name {
type leafref {
path "../../../../../"
+"rt:ribs/rt:rib/rt:name";
}
leaf level {
type level-number;
description
"This leaf describes the ISIS level.";
}
leaf corrupted-lsps {
type uint32;
description
"Number of corrupted in-memory LSPs detected.
LSPs received from the wire with a bad
checksum are silently dropped and not counted.
LSPs received from the wire with parse errors
are counted by lsp-errors.";
}
leaf authentication-type-fails {
type uint32;
description
"Number of authentication type mismatches.";
}
leaf authentication-fails {
type uint32;
description
"Number of authentication key failures.";
}
leaf database-overload {
type uint32;
description
"Number of times the database has become
overloaded.";
}
leaf own-lsp-purge {
type uint32;
description
"Number of times a zero-aged copy of the
system's own LSP is received from some
other node.";
}
leaf manual-address-drop-from-area {
type uint32;
description
"Number of times a manual address
has been dropped from the area.";
}
leaf max-sequence {
type uint32;
description description
"Number of times the system has attempted "Name of RIB.";
to exceed the maximum sequence number.";
}
leaf sequence-number-skipped {
type uint32;
description
"Number of times a sequence number skip has
occured.";
}
leaf id-len-mismatch {
type uint32;
description
"Number of times a PDU is received with
a different value for ID field length
from that of the receiving system.";
}
leaf partition-changes {
type uint32;
description
"Number of partition changes detected.";
}
leaf lsp-errors {
type uint32;
description
"Number of LSPs with errors we have
received.";
} }
leaf spf-runs { container fast-route {
type uint32; if-feature fast-reroute;
uses fast-reroute-global-cfg;
uses fast-reroute-global-state;
description description
"Number of times we ran SPF at this level."; "IPFRR states.";
} }
description description
"List of supported levels."; "List of topologies.";
} }
description
"The container defines a list of counters
for the IS.";
}
container interfaces {
list interface {
key interface;
leaf interface { container system-counters {
type string; list level {
description key level;
"This leaf describes the name
of the interface.";
}
uses isis-if-cfg;
container fast-reroute {
if-feature fast-reroute;
uses fast-reroute-if-cfg;
description
"IPFRR.";
}
uses adjacency-state;
list topologies {
key name;
leaf name {
type leafref {
path "../../../../../"
+"../../rt:ribs/rt:rib/rt:name";
}
description
"Name of RIB.";
}
uses isis-if-topologies-cfg;
container fast-reroute {
if-feature fast-reroute;
uses fast-reroute-if-cfg;
description
"IPFRR.";
}
uses adjacency-state;
description
"List of topologies.";
}
container event-counters { leaf level {
leaf adjacency-changes { type level-number;
description
"This leaf describes the ISIS level.";
}
leaf corrupted-lsps {
type uint32; type uint32;
description description
"The number of times an adjacency state "Number of corrupted in-memory LSPs detected.
change has occured on this interface."; LSPs received from the wire with a bad
checksum are silently dropped and not counted.
LSPs received from the wire with parse errors
are counted by lsp-errors.";
} }
leaf adjacency-number { leaf authentication-type-fails {
type uint32; type uint32;
description description
"The number of adjacencies on this "Number of authentication type mismatches.";
interface.";
} }
leaf init-fails { leaf authentication-fails {
type uint32; type uint32;
description description
"The number of times initialization of "Number of authentication key failures.";
this interface has failed. This counts
events such as PPP NCP failures.
Failures to form an adjacency are counted
by adjacency-rejects.";
} }
leaf adjacency-rejects { leaf database-overload {
type uint32; type uint32;
description description
"The number of times an adjacency has been "Number of times the database has become
rejected on this interface."; overloaded.";
} }
leaf id-len-mismatch { leaf own-lsp-purge {
type uint32; type uint32;
description description
"The number of times an IS-IS PDU with an ID "Number of times a zero-aged copy of the
field length different from that for this system's own LSP is received from some
system has been received on this interface."; other node.";
} }
leaf max-area-addresses-mismatch { leaf manual-address-drop-from-area {
type uint32; type uint32;
description description
"The number of times an IS-IS PDU with "Number of times a manual address
according max area address field has been dropped from the area.";
differs from that for
this system has been received on this
interface.";
} }
leaf authentication-type-fails { leaf max-sequence {
type uint32; type uint32;
description description
"Number of authentication type mismatches."; "Number of times the system has attempted
to exceed the maximum sequence number.";
} }
leaf authentication-fails { leaf sequence-number-skipped {
type uint32; type uint32;
description description
"Number of authentication key failures."; "Number of times a sequence number skip has
occured.";
} }
leaf lan-dis-changes { leaf id-len-mismatch {
type uint32; type uint32;
description description
"The number of times the DIS has changed "Number of times a PDU is received with
on this interface at this level. a different value for ID field length
If the interface type is point to point, from that of the receiving system.";
the count is zero."; }
leaf partition-changes {
type uint32;
description
"Number of partition changes detected.";
}
leaf lsp-errors {
type uint32;
description
"Number of LSPs with errors we have
received.";
}
leaf spf-runs {
type uint32;
description
"Number of times we ran SPF at this level.";
} }
description description
"Provides protocol event counters."; "List of supported levels.";
} }
container packet-counters { description
list level { "The container defines a list of counters
key level; for the IS.";
}
container interfaces {
list interface {
key interface;
leaf interface {
type string;
description
"This leaf describes the name
of the interface.";
}
uses isis-if-cfg;
container fast-reroute {
if-feature fast-reroute;
uses fast-reroute-if-cfg;
description
"IPFRR.";
}
uses adjacency-state;
list topologies {
key name;
leaf name {
type leafref {
path "../../../../../"
+"../../rt:ribs/rt:rib/rt:name";
}
leaf level {
type level-number;
description description
"This leaf describes the ISIS level."; "Name of RIB.";
} }
uses isis-if-topologies-cfg;
container fast-reroute {
if-feature fast-reroute;
uses fast-reroute-if-cfg;
description
"IPFRR.";
}
uses adjacency-state;
container iih { description
leaf in { "List of topologies.";
type uint32; }
description
"Received PDUs."; container event-counters {
} leaf adjacency-changes {
leaf out { type uint32;
type uint32;
description
"Sent PDUs.";
}
description description
"The number of IIH PDUs received/sent."; "The number of times an adjacency state
change has occured on this interface.";
} }
container ish { leaf adjacency-number {
leaf in { type uint32;
type uint32;
description
"Received PDUs.";
}
leaf out {
type uint32;
description
"Sent PDUs.";
}
description description
"The number of ISH PDUs received/sent."; "The number of adjacencies on this
interface.";
} }
container esh { leaf init-fails {
leaf in { type uint32;
type uint32;
description
"Received PDUs.";
}
leaf out {
type uint32;
description
"Sent PDUs.";
}
description description
"The number of ESH PDUs received/sent."; "The number of times initialization of
this interface has failed. This counts
events such as PPP NCP failures.
Failures to form an adjacency are counted
by adjacency-rejects.";
} }
container lsp { leaf adjacency-rejects {
leaf in { type uint32;
type uint32; description
"The number of times an adjacency has been
rejected on this interface.";
}
leaf id-len-mismatch {
type uint32;
description
"The number of times an IS-IS PDU with an ID
field length different from that for this
system has been received on this interface.";
}
leaf max-area-addresses-mismatch {
type uint32;
description
"The number of times an IS-IS PDU with
according max area address field
differs from that for
this system has been received on this
interface.";
}
leaf authentication-type-fails {
type uint32;
description
"Number of authentication type mismatches.";
}
leaf authentication-fails {
type uint32;
description
"Number of authentication key failures.";
}
leaf lan-dis-changes {
type uint32;
description
"The number of times the DIS has changed
on this interface at this level.
If the interface type is point to point,
the count is zero.";
}
description
"Provides protocol event counters.";
}
container packet-counters {
list level {
key level;
leaf level {
type level-number;
description description
"Received PDUs."; "This leaf describes the ISIS level.";
} }
leaf out {
type uint32;
description
"Sent PDUs.";
container iih {
leaf in {
type uint32;
description
"Received PDUs.";
}
leaf out {
type uint32;
description
"Sent PDUs.";
}
description
"The number of IIH PDUs received/sent.";
} }
description container ish {
"The number of LSP PDUs received/sent."; leaf in {
} type uint32;
container psnp { description
leaf in { "Received PDUs.";
type uint32; }
leaf out {
type uint32;
description
"Sent PDUs.";
}
description description
"Received PDUs."; "The number of ISH PDUs received/sent.";
} }
leaf out { container esh {
type uint32; leaf in {
type uint32;
description
"Received PDUs.";
}
leaf out {
type uint32;
description
"Sent PDUs.";
}
description description
"Sent PDUs."; "The number of ESH PDUs received/sent.";
} }
description container lsp {
"The number of PSNP PDUs received/sent."; leaf in {
} type uint32;
container csnp { description
leaf in { "Received PDUs.";
type uint32; }
leaf out {
type uint32;
description
"Sent PDUs.";
}
description description
"Received PDUs."; "The number of LSP PDUs received/sent.";
} }
leaf out { container psnp {
type uint32; leaf in {
type uint32;
description
"Received PDUs.";
}
leaf out {
type uint32;
description
"Sent PDUs.";
}
description description
"Sent PDUs."; "The number of PSNP PDUs received/sent.";
} }
description container csnp {
"The number of CSNP PDUs received/sent."; leaf in {
} type uint32;
container unknown { description
leaf in { "Received PDUs.";
type uint32; }
leaf out {
type uint32;
description
"Sent PDUs.";
}
description description
"Received PDUs."; "The number of CSNP PDUs received/sent.";
} }
leaf out { container unknown {
type uint32; leaf in {
type uint32;
description
"Received PDUs.";
}
leaf out {
type uint32;
description
"Sent PDUs.";
}
description description
"Sent PDUs."; "The number of unknown PDUs received/sent.";
} }
description description
"The number of unknown PDUs received/sent."; "List of supported levels.";
} }
description description
"List of supported levels."; "Provides packet counters per level.";
} }
description description
"Provides packet counters per level."; "List of interfaces.";
} }
description description
"List of interfaces."; "The container defines operational parameters
of interfaces.";
} }
description
"The container defines operational parameters
of interfaces.";
}
container spf-log { container spf-log {
list event { list event {
key id; key id;
leaf id { leaf id {
type uint32; type uint32;
description description
"This leaf defines the event identifier. "This leaf defines the event identifier.
This is a purely internal value."; This is a purely internal value.";
} }
leaf spf-type { leaf spf-type {
type enumeration { type enumeration {
enum full { enum full {
description description
"Computation done is a Full SPF."; "Computation done is a Full SPF.";
} }
enum incremental { enum incremental {
description description
"Computation done is an "Computation done is an
incremental SPF."; incremental SPF.";
} }
enum route-only { enum route-only {
description description
"Computation done is a "Computation done is a
reachability computation reachability computation
only."; only.";
}
} }
description
"This leaf describes the type of computation
used.";
} }
description leaf level {
"This leaf describes the type of computation type level-number;
used.";
}
leaf level {
type level-number;
description
"This leaf describes the level affected by the
the computation.";
}
leaf spf-delay {
type uint32;
units "milliseconds";
description
"This leaf describes the SPF delay that
was used for this event.";
}
leaf schedule-timestamp {
type yang:timestamp;
description
"This leaf describes the timestamp
when the computation was scheduled.";
}
leaf start-timestamp {
type yang:timestamp;
description
"This leaf describes the timestamp
when the computation was started.";
}
leaf end-timestamp {
type yang:timestamp;
description
"This leaf describes the timestamp
when the computation was ended.";
}
list trigger-lsp {
key "lsp";
leaf lsp {
type lsp-id;
description description
"This leaf describes the LSPID "This leaf describes the level affected by the
of the LSP."; the computation.";
} }
leaf sequence { leaf spf-delay {
type uint32; type uint32;
units "milliseconds";
description description
"This leaf describes the sequence "This leaf describes the SPF delay that
number of the LSP."; was used for this event.";
}
leaf schedule-timestamp {
type yang:timestamp;
description
"This leaf describes the timestamp
when the computation was scheduled.";
}
leaf start-timestamp {
type yang:timestamp;
description
"This leaf describes the timestamp
when the computation was started.";
}
leaf end-timestamp {
type yang:timestamp;
description
"This leaf describes the timestamp
when the computation was ended.";
}
list trigger-lsp {
key "lsp";
leaf lsp {
type lsp-id;
description
"This leaf describes the LSPID
of the LSP.";
}
leaf sequence {
type uint32;
description
"This leaf describes the sequence
number of the LSP.";
}
description
"This leaf describes list of LSPs
that triggered the computation.";
} }
description description
"This leaf describes list of LSPs "List of computation events.";
that triggered the computation.";
} }
description description
"List of computation events."; "This container lists the SPF computation events.";
}
description
"This container lists the SPF computation events.";
}
container lsp-log {
list event {
key id;
leaf id { }
type uint32; container lsp-log {
description list event {
"This leaf defines the event identifier. key id;
This is a purely internal value.";
}
leaf level {
type level-number;
description
"This leaf describes the level affected by the
the computation.";
}
container lsp {
leaf lsp {
type lsp-id; leaf id {
type uint32;
description description
"This leaf describes the LSPID "This leaf defines the event identifier.
of the LSP."; This is a purely internal value.";
} }
leaf sequence { leaf level {
type uint32; type level-number;
description description
"This leaf describes the sequence "This leaf describes the level affected by the
number of the LSP."; the computation.";
} }
description container lsp {
"This container describes the received LSP leaf lsp {
, in case of local LSP update the local
LSP ID is referenced.";
}
leaf received-timestamp {
type yang:timestamp;
description type lsp-id;
"This leaf describes the timestamp
when the LSP was received. In case of
local LSP update, the timestamp refers
to the local LSP update time.";
}
leaf change {
type bits {
bit refresh {
position 0;
description
"Refresh LSP, nothing has changed.";
}
bit link-down {
position 1;
description
"One or more links are down.";
}
bit link-up {
position 2;
description
"One or more links are up.";
}
bit link-metric-change {
position 3;
description
"One or more links experienced
a metric change.";
}
bit link-other-change {
position 4;
description
"One or more links experienced
a change that does not affect state
or metric.";
}
bit prefix-down {
position 5;
description
"One or more links are down.";
}
bit prefix-up {
position 6;
description
"One or more prefixes are up.";
}
bit prefix-metric-change {
position 7;
description description
"One or more prefixes experienced "This leaf describes the LSPID
a metric change."; of the LSP.";
} }
bit prefix-other-change { leaf sequence {
position 8; type uint32;
description description
"One or more prefixes experienced "This leaf describes the sequence
a change that does not affect state number of the LSP.";
or metric.";
} }
bit other-change { description
position 9; "This container describes the received LSP
description , in case of local LSP update the local
"One or more component changed that LSP ID is referenced.";
is not a prefix or link."; }
leaf received-timestamp {
type yang:timestamp;
description
"This leaf describes the timestamp
when the LSP was received. In case of
local LSP update, the timestamp refers
to the local LSP update time.";
}
leaf change {
type bits {
bit refresh {
position 0;
description
"Refresh LSP, nothing has changed.";
}
bit link-down {
position 1;
description
"One or more links are down.";
}
bit link-up {
position 2;
description
"One or more links are up.";
}
bit link-metric-change {
position 3;
description
"One or more links experienced
a metric change.";
}
bit link-other-change {
position 4;
description
"One or more links experienced
a change that does not affect state
or metric.";
}
bit prefix-down {
position 5;
description
"One or more links are down.";
}
bit prefix-up {
position 6;
description
"One or more prefixes are up.";
}
bit prefix-metric-change {
position 7;
description
"One or more prefixes experienced
a metric change.";
}
bit prefix-other-change {
position 8;
description
"One or more prefixes experienced
a change that does not affect state
or metric.";
}
bit other-change {
position 9;
description
"One or more component changed that
is not a prefix or link.";
}
} }
description
"This leaf describes the type of change
in the LSP.";
} }
description description
"This leaf describes the type of change "List of LSP events.";
in the LSP.";
} }
description description
"List of LSP events."; "This container lists the LSP reception events.
Local LSP modification are also contained in the
list.";
} }
container database {
list level-db {
key level;
description leaf level {
"This container lists the LSP reception events. type level-number;
Local LSP modification are also contained in the description
list."; "Current level number";
} }
container database { list lsp {
list level-db { key lsp-id;
key level;
leaf level { uses database;
type level-number; description
description "List of LSPs in LSDB.";
"Current level number"; }
}
list lsp {
key lsp-id;
uses database;
description description
"List of LSPs in LSDB."; "This container describes the list of LSPs
in the level x database.";
} }
description description
"This container describes the list of LSPs "This container describes ISIS Link State
in the level x database."; databases.";
} }
description container hostnames {
"This container describes ISIS Link State
databases.";
}
container hostnames {
list hostname { list hostname {
key system-id; key system-id;
leaf system-id { leaf system-id {
type system-id; type system-id;
description description
"This leaf describes the system-id "This leaf describes the system-id
associated with the hostname."; associated with the hostname.";
} }
leaf hostname { leaf hostname {
type string; type string;
description
"This leaf describes the hostname
associated with the system ID.";
}
description description
"This leaf describes the hostname "List of system-id/hostname associations";
associated with the system ID.";
} }
description description
"List of system-id/hostname associations"; "This container describes the list
of binding between system-id and
hostnames.";
} }
description description
"This container describes the list "This container defines various ISIS states objects.";
of binding between system-id and }
hostnames.";
}
description
"This container defines various ISIS states objects.";
} }
}
/* RPC methods */ /* RPC methods */
rpc clear-adjacency { rpc clear-adjacency {
description description
"This RPC request clears a particular "This RPC request clears a particular
set of ISIS adjacencies. If the operation set of ISIS adjacencies. If the operation
fails for ISIS internal reason, then fails for ISIS internal reason, then
error-tag and error-app-tag should be set error-tag and error-app-tag should be set
to a meaningful value."; to a meaningful value.";
input { input {
leaf routing-protocol-instance-name { leaf routing-protocol-instance-name {
type instance-state-ref; type instance-state-ref;
mandatory "true"; mandatory "true";
description description
"Name of the ISIS protocol instance whose ISIS "Name of the ISIS protocol instance whose ISIS
information is being queried. information is being queried.
If the ISIS instance with name equal to the If the ISIS instance with name equal to the
value of this parameter doesn't exist, then this value of this parameter doesn't exist, then this
operation SHALL fail with error-tag 'data-missing' operation SHALL fail with error-tag 'data-missing'
and error-app-tag and error-app-tag
'routing-protocol-instance-not-found'."; 'routing-protocol-instance-not-found'.";
} }
leaf level { leaf level {
type level; type level;
description description
"ISIS level of the adjacency to be cleared. "ISIS level of the adjacency to be cleared.
If ISIS level is level-1-2, both level 1 and level 2 If ISIS level is level-1-2, both level 1 and level 2
adjacencies would be cleared. adjacencies would be cleared.
If the value provided is different from the one If the value provided is different from the one
authorized in the enum type, then this authorized in the enum type, then this
operation SHALL fail with error-tag 'data-missing' operation SHALL fail with error-tag 'data-missing'
and error-app-tag and error-app-tag
'bad-isis-level'. 'bad-isis-level'.
"; ";
} }
leaf interface { leaf interface {
type string; type string;
description description
"Name of the ISIS interface. "Name of the ISIS interface.
If the ISIS interface with name equal to the If the ISIS interface with name equal to the
value of this parameter doesn't exist, then this value of this parameter doesn't exist, then this
operation SHALL fail with error-tag 'data-missing' operation SHALL fail with error-tag 'data-missing'
and error-app-tag and error-app-tag
'isis-interface-not-found'."; 'isis-interface-not-found'.";
}
} }
} }
}
rpc clear-database { rpc clear-database {
description description
"This RPC request clears a particular "This RPC request clears a particular
ISIS database. If the operation ISIS database. If the operation
fails for ISIS internal reason, then fails for ISIS internal reason, then
error-tag and error-app-tag should be set error-tag and error-app-tag should be set
to a meaningful value."; to a meaningful value.";
input { input {
leaf routing-protocol-instance-name { leaf routing-protocol-instance-name {
type instance-state-ref; type instance-state-ref;
mandatory "true"; mandatory "true";
description description
"Name of the ISIS protocol instance whose ISIS "Name of the ISIS protocol instance whose ISIS
information is being queried. information is being queried.
If the ISIS instance with name equal to the If the ISIS instance with name equal to the
value of this parameter doesn't exist, then this value of this parameter doesn't exist, then this
operation SHALL fail with error-tag 'data-missing' operation SHALL fail with error-tag 'data-missing'
and error-app-tag and error-app-tag
'routing-protocol-instance-not-found'."; 'routing-protocol-instance-not-found'.";
} }
leaf level { leaf level {
type level; type level;
description description
"ISIS level of the adjacency to be cleared. "ISIS level of the adjacency to be cleared.
If ISIS level is level-1-2, both level 1 and level 2 If ISIS level is level-1-2, both level 1 and level 2
adjacencies would be cleared. adjacencies would be cleared.
If the value provided is different from the one If the value provided is different from the one
authorized in the enum type, then this authorized in the enum type, then this
operation SHALL fail with error-tag 'data-missing' operation SHALL fail with error-tag 'data-missing'
and error-app-tag and error-app-tag
'bad-isis-level'. 'bad-isis-level'.
"; ";
}
} }
} }
} /* Notifications */
/* Notifications */ notification database-overload {
uses notification-instance-hdr;
notification database-overload { leaf overload {
uses notification-instance-hdr; type enumeration {
enum "off" {
description
"The system has left overload condition.";
}
enum "on" {
description
"The system is in overload condition.";
}
leaf overload {
type enumeration {
enum "off" {
description
"The system has left overload condition.";
}
enum "on" {
description
"The system is in overload condition.";
} }
description
"Describes the new overload state of the instance.";
} }
description description
"Describes the new overload state of the instance."; "This notification is sent when an ISIS instance
overload condition changes.";
} }
description
"This notification is sent when an ISIS instance
overload condition 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 description
"Size of the PDU"; "Size of the PDU";
} }
leaf lsp-id { leaf lsp-id {
type lsp-id; type lsp-id;
description
"LSP ID.";
}
description description
"LSP ID."; "This notification is sent when we attempt
to propagate an LSP that is larger than the
dataLinkBlockSize for the circuit.
The notification generation must be throttled
with at least a 5 second gap.
";
} }
description
"This notification is sent when we attempt
to propagate an LSP that is larger than the
dataLinkBlockSize for the circuit.
The notification generation must be throttled
with at least a 5 second gap.
";
}
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 description
"LSP ID."; "This notification is sent when we find
that an LSP that was stored in memory has
become corrupted.
";
} }
description
"This notification is sent when we find
that an LSP that was stored in memory has
become 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 description
"LSP ID."; "This notification is sent when the system
wraps the 32-bit sequence counter of an LSP.
";
} }
description
"This notification is sent when the system
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 description
"Size of the ID length in the received PDU"; "Size of the ID length in the received PDU";
} }
leaf raw-pdu { leaf raw-pdu {
type binary; type binary;
description
"Received raw PD