draft-ietf-isis-yang-isis-cfg-20.txt   draft-ietf-isis-yang-isis-cfg-21.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: November 26, 2018 Arrcus, Inc Expires: January 3, 2019 Arrcus, Inc
A. Lindem A. Lindem
Cisco Systems Cisco Systems
J. Zhang J. Zhang
Juniper Networks Juniper Networks
L. Lhotka L. Lhotka
CZ.NIC CZ.NIC
May 25, 2018 July 2, 2018
YANG Data Model for IS-IS protocol YANG Data Model for IS-IS protocol
draft-ietf-isis-yang-isis-cfg-20 draft-ietf-isis-yang-isis-cfg-21
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. and manage IS-IS protocol on network elements.
Requirements Language Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
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 November 26, 2018. This Internet-Draft will expire on January 3, 2019.
Copyright Notice Copyright Notice
Copyright (c) 2018 IETF Trust and the persons identified as the Copyright (c) 2018 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 31 skipping to change at page 2, line 31
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 . . . . . . . . . . . . . . . . . . . 9 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. Authentication Parameters . . . . . . . . . . . . . . . . 23 2.5. Authentication Parameters . . . . . . . . . . . . . . . . 23
2.6. IGP/LDP synchronization . . . . . . . . . . . . . . . . . 23 2.6. IGP/LDP synchronization . . . . . . . . . . . . . . . . . 23
2.7. ISO parameters . . . . . . . . . . . . . . . . . . . . . 23 2.7. ISO parameters . . . . . . . . . . . . . . . . . . . . . 24
2.8. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.8. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.9. Operational States . . . . . . . . . . . . . . . . . . . 24 2.9. Operational States . . . . . . . . . . . . . . . . . . . 24
3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 24 3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 25
4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 25 4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 25
5. Interaction with Other YANG Modules . . . . . . . . . . . . . 26 5. Interaction with Other YANG Modules . . . . . . . . . . . . . 26
6. IS-IS YANG Module . . . . . . . . . . . . . . . . . . . . . . 26 6. IS-IS YANG Module . . . . . . . . . . . . . . . . . . . . . . 27
7. Security Considerations . . . . . . . . . . . . . . . . . . . 101 7. Security Considerations . . . . . . . . . . . . . . . . . . . 94
8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 102 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 95
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 102 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 95
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 103 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 95
11. Change log for ietf-isis YANG module . . . . . . . . . . . . 103 11. Change log for ietf-isis YANG module . . . . . . . . . . . . 96
11.1. From version -19 to version -20 . . . . . . . . . . . . 103 11.1. From version -19 to version -20 . . . . . . . . . . . . 96
11.2. From version -18 to version -19 . . . . . . . . . . . . 103 11.2. From version -18 to version -19 . . . . . . . . . . . . 96
11.3. From version -17 to version -18 . . . . . . . . . . . . 103 11.3. From version -17 to version -18 . . . . . . . . . . . . 96
11.4. From version -16 to version -17 . . . . . . . . . . . . 104 11.4. From version -16 to version -17 . . . . . . . . . . . . 96
11.5. From version -15 to version -16 . . . . . . . . . . . . 104 11.5. From version -15 to version -16 . . . . . . . . . . . . 96
11.6. From version -14 to version -15 . . . . . . . . . . . . 104 11.6. From version -14 to version -15 . . . . . . . . . . . . 97
11.7. From version -13 to version -14 . . . . . . . . . . . . 104 11.7. From version -13 to version -14 . . . . . . . . . . . . 97
11.8. From version -12 to version -13 . . . . . . . . . . . . 105 11.8. From version -12 to version -13 . . . . . . . . . . . . 97
11.9. From version -09 to version -12 . . . . . . . . . . . . 105 11.9. From version -09 to version -12 . . . . . . . . . . . . 97
11.10. From version -08 to version -09 . . . . . . . . . . . . 105 11.10. From version -08 to version -09 . . . . . . . . . . . . 98
11.11. From version -07 to version -08 . . . . . . . . . . . . 105 11.11. From version -07 to version -08 . . . . . . . . . . . . 98
11.12. From version -05 to version -07 . . . . . . . . . . . . 105 11.12. From version -05 to version -07 . . . . . . . . . . . . 98
11.13. From version -03 to version -05 . . . . . . . . . . . . 106 11.13. From version -03 to version -05 . . . . . . . . . . . . 98
11.14. From version -02 to version -03 . . . . . . . . . . . . 106 11.14. From version -02 to version -03 . . . . . . . . . . . . 99
11.15. From version -01 to version -02 . . . . . . . . . . . . 106 11.15. From version -01 to version -02 . . . . . . . . . . . . 99
11.16. From version -00 to version -01 . . . . . . . . . . . . 107 11.16. From version -00 to version -01 . . . . . . . . . . . . 99
12. Normative References . . . . . . . . . . . . . . . . . . . . 107 12. Normative References . . . . . . . . . . . . . . . . . . . . 100
Appendix A. Example of IS-IS configuration in XML . . . . . . . 108 Appendix A. Example of IS-IS configuration in XML . . . . . . . 101
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 111 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 103
1. Introduction 1. Introduction
This document defines a YANG data model for IS-IS routing protocol. This document defines a YANG data model for IS-IS routing protocol.
The data model covers configuration of an IS-IS routing protocol The data model covers configuration of an IS-IS routing protocol
instance as well as operational states. instance as well as operational states.
1.1. Tree diagram 1.1. Tree diagram
skipping to change at page 4, line 8 skipping to change at page 4, line 8
The IS-IS YANG module augments the "control-plane-protocol" list in The IS-IS YANG module augments the "control-plane-protocol" list in
ietf-routing module with specific IS-IS parameters. ietf-routing module with specific IS-IS parameters.
The module is designed as per NMDA (Network Management Datastore The module is designed as per NMDA (Network Management Datastore
Architecture). Architecture).
The figure below describes the overall structure of the isis YANG The figure below describes the overall structure of the isis YANG
module: module:
module: ietf-isis module: ietf-isis
augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route: augment /rt:routing/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 /if:interfaces/if:interface: augment /if:interfaces/if:interface:
+--rw clns-mtu? uint16 +--rw clns-mtu? uint16
augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protoc augment /rt:routing/rt:control-plane-protocols/
ol: | rt:control-plane-protocol:
+--rw isis +--rw isis
+--rw enable? boolean {admin-control}? +--rw enable? boolean {admin-control}?
+--rw level-type? level +--rw level-type? level
+--rw system-id? system-id +--rw system-id? system-id
+--rw maximum-area-addresses? uint8 {maximum-area-addresses}? +--rw maximum-area-addresses?
+--rw area-address* area-address | uint8 {maximum-area-addresses}?
+--rw mpls +--rw area-address* area-address
| +--rw ipv4-router-id? inet:ipv4-address {ipv4-router-id}? +--rw mpls
| +--rw ipv6-router-id? inet:ipv6-address {ipv6-router-id}? | +--rw ipv4-router-id? inet:ipv4-address {ipv4-router-id}?
| +--rw ldp | +--rw ipv6-router-id? inet:ipv6-address {ipv6-router-id}?
| ... | +--rw ldp
+--rw auto-cost {auto-cost}? | ...
| +--rw reference-bandwidth? uint32 +--rw auto-cost {auto-cost}?
| +--rw enable? boolean | +--rw reference-bandwidth? uint32
+--rw lsp-mtu? uint16 | +--rw enable? boolean
+--rw lsp-lifetime? uint16 +--rw lsp-mtu? uint16
+--rw lsp-refresh? rt-types:timer-value-seconds16 {l +--rw lsp-lifetime? uint16
sp-refresh}? +--rw lsp-refresh?
+--rw graceful-restart {graceful-restart}? | rt-types:timer-value-seconds16 {lsp-refresh}?
| +--rw enable? boolean +--rw graceful-restart {graceful-restart}?
| +--rw restart-interval? rt-types:timer-value-seconds16 | +--rw enable? boolean
| +--rw helper-enable? boolean | +--rw restart-interval? rt-types:timer-value-seconds16
+--rw nsr {nsr}? | +--rw helper-enable? boolean
| +--rw enable? boolean +--rw nsr {nsr}?
+--rw node-tags {node-tag}? | +--rw enable? boolean
| +--rw node-tag* [tag] +--rw node-tags {node-tag}?
| ... | +--rw node-tag* [tag]
+--rw authentication | ...
| +--rw (authentication-type)? +--rw authentication
| | ... | +--rw (authentication-type)?
| +--rw level-1 | | ...
| | ... | +--rw level-1
| +--rw level-2 | | ...
| ... | +--rw level-2
+--rw metric-type | ...
| +--rw value? enumeration
| +--rw level-1
| | ...
| +--rw level-2
| ...
+--rw default-metric
| +--rw value? wide-metric
| +--rw level-1
| | ...
| +--rw level-2
| ...
+--rw afs {nlpid-control}?
| +--rw af* [af]
| ...
+--rw preference
| +--rw (granularity)?
| ...
+--rw overload
| +--rw status? boolean
+--rw overload-max-metric {overload-max-metric}?
| +--rw timeout? rt-types:timer-value-seconds16
+--rw fast-reroute {fast-reroute}?
| +--rw lfa {lfa}?
| +--ro protected-routes
| | ...
| +--ro nonprotected-routes
| | ...
| +--ro protection-statistics* [frr-protection-method]
| ...
+--rw spf-control
| +--rw ietf-spf-delay {ietf-spf-delay}?
| ...
+--rw topologies {multi-topology}?
| +--rw topology* [name]
| ...
+--rw interfaces
| +--rw interface* [name]
| ...
+--ro spf-log
| +--ro event* [id]
| ...
+--ro lsp-log
| +--ro event* [id]
| ...
+--ro hostnames
| +--ro hostname* [system-id]
| ...
+--ro database
| +--ro level-db* [level]
| ...
+--ro local-rib +--rw metric-type
| +--ro route* [prefix] | +--rw value? enumeration
| ... | +--rw level-1
+--ro system-counters | | ...
+--ro level* [level] | +--rw level-2
... | ...
+--rw default-metric
| +--rw value? wide-metric
| +--rw level-1
| | ...
| +--rw level-2
| ...
+--rw afs {nlpid-control}?
| +--rw af* [af]
| ...
+--rw preference
| +--rw (granularity)?
| ...
+--rw overload
| +--rw status? boolean
+--rw overload-max-metric {overload-max-metric}?
| +--rw timeout? rt-types:timer-value-seconds16
+--rw fast-reroute {fast-reroute}?
| +--rw lfa {lfa}?
| +--ro protected-routes
| | ...
| +--ro nonprotected-routes
| | ...
| +--ro protection-statistics* [frr-protection-method]
| ...
+--rw spf-control
| +--rw ietf-spf-delay {ietf-spf-delay}?
| ...
+--rw topologies {multi-topology}?
| +--rw topology* [name]
| ...
+--rw interfaces
| +--rw interface* [name]
| ...
+--ro spf-log
| +--ro event* [id]
| ...
+--ro lsp-log
| +--ro event* [id]
| ...
+--ro hostnames
| +--ro hostname* [system-id]
| ...
rpcs: +--ro database
+---x clear-adjacency | +--ro level-db* [level]
| +---w input | ...
| +---w routing-protocol-instance-name instance-state-ref +--ro local-rib
| +---w level? level | +--ro route* [prefix]
| +---w interface? string | ...
+---x clear-database +--ro system-counters
+---w input +--ro level* [level]
+---w routing-protocol-instance-name instance-state-ref ...
+---w level? level
notifications: rpcs:
+---n database-overload +---x clear-adjacency
| +--ro routing-instance? string | +---w input
| +--ro routing-protocol-name? string | +---w routing-protocol-instance-name instance-state-ref
| +--ro isis-level? level | +---w level? level
| +--ro overload? enumeration | +---w interface? string
+---n lsp-too-large +---x clear-database
| +--ro routing-instance? string +---w input
| +--ro routing-protocol-name? string +---w routing-protocol-instance-name instance-state-ref
| +--ro isis-level? level +---w level? level
| +--ro interface-name? string
| +--ro interface-level? level notifications:
| +--ro extended-circuit-id? extended-circuit-id +---n database-overload
| +--ro pdu-size? uint32 | +--ro routing-instance? string
| +--ro lsp-id? lsp-id | +--ro routing-protocol-name? string
+---n if-state-change | +--ro isis-level? level
| +--ro routing-instance? string | +--ro overload? enumeration
| +--ro routing-protocol-name? string +---n lsp-too-large
| +--ro isis-level? level | +--ro routing-instance? string
| +--ro interface-name? string | +--ro routing-protocol-name? string
| +--ro interface-level? level | +--ro isis-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro interface-name? string
| +--ro state? if-state-type | +--ro interface-level? level
+---n corrupted-lsp-detected | +--ro extended-circuit-id? extended-circuit-id
| +--ro routing-instance? string | +--ro pdu-size? uint32
| +--ro routing-protocol-name? string | +--ro lsp-id? lsp-id
| +--ro isis-level? level +---n if-state-change
| +--ro lsp-id? lsp-id | +--ro routing-instance? string
+---n attempt-to-exceed-max-sequence | +--ro routing-protocol-name? string
| +--ro routing-instance? string | +--ro isis-level? level
| +--ro routing-protocol-name? string | +--ro interface-name? string
| +--ro isis-level? level | +--ro interface-level? level
| +--ro lsp-id? lsp-id | +--ro extended-circuit-id? extended-circuit-id
+---n id-len-mismatch | +--ro state? if-state-type
| +--ro routing-instance? string +---n corrupted-lsp-detected
| +--ro routing-protocol-name? string | +--ro routing-instance? string
| +--ro isis-level? level | +--ro routing-protocol-name? string
| +--ro interface-name? string | +--ro isis-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 routing-instance? string
| +--ro raw-pdu? binary | +--ro routing-protocol-name? string
+---n max-area-addresses-mismatch | +--ro isis-level? level
| +--ro routing-instance? string | +--ro lsp-id? lsp-id
| +--ro routing-protocol-name? string +---n id-len-mismatch
| +--ro isis-level? level | +--ro routing-instance? string
| +--ro interface-name? string | +--ro routing-protocol-name? string
| +--ro interface-level? level | +--ro isis-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro interface-name? string
| +--ro max-area-addresses? uint8 | +--ro interface-level? level
| +--ro raw-pdu? binary | +--ro extended-circuit-id? extended-circuit-id
+---n own-lsp-purge | +--ro pdu-field-len? uint8
| +--ro routing-instance? string | +--ro raw-pdu? binary
| +--ro routing-protocol-name? string +---n max-area-addresses-mismatch
| +--ro isis-level? level | +--ro routing-instance? string
| +--ro interface-name? string | +--ro routing-protocol-name? string
| +--ro interface-level? level | +--ro isis-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro interface-name? string
| +--ro lsp-id? lsp-id | +--ro interface-level? level
+---n sequence-number-skipped | +--ro extended-circuit-id? extended-circuit-id
| +--ro routing-instance? string | +--ro max-area-addresses? uint8
| +--ro routing-protocol-name? string | +--ro raw-pdu? binary
| +--ro isis-level? level +---n own-lsp-purge
| +--ro interface-name? string | +--ro routing-instance? string
| +--ro interface-level? level | +--ro routing-protocol-name? string
| +--ro extended-circuit-id? extended-circuit-id | +--ro isis-level? level
| +--ro lsp-id? lsp-id | +--ro interface-name? string
+---n authentication-type-failure | +--ro interface-level? level
| +--ro routing-instance? string | +--ro extended-circuit-id? extended-circuit-id
| +--ro routing-protocol-name? string | +--ro lsp-id? lsp-id
| +--ro isis-level? level +---n sequence-number-skipped
| +--ro interface-name? string | +--ro routing-instance? string
| +--ro interface-level? level | +--ro routing-protocol-name? string
| +--ro extended-circuit-id? extended-circuit-id | +--ro isis-level? level
| +--ro raw-pdu? binary | +--ro interface-name? string
+---n authentication-failure | +--ro interface-level? level
| +--ro routing-instance? string | +--ro extended-circuit-id? extended-circuit-id
| +--ro routing-protocol-name? string | +--ro lsp-id? lsp-id
| +--ro isis-level? level +---n authentication-type-failure
| +--ro interface-name? string | +--ro routing-instance? string
| +--ro interface-level? level | +--ro routing-protocol-name? string
| +--ro extended-circuit-id? extended-circuit-id | +--ro isis-level? level
| +--ro raw-pdu? binary | +--ro interface-name? string
+---n version-skew | +--ro interface-level? level
| +--ro routing-instance? string | +--ro extended-circuit-id? extended-circuit-id
| +--ro routing-protocol-name? string | +--ro raw-pdu? binary
| +--ro isis-level? level +---n authentication-failure
| +--ro interface-name? string | +--ro routing-instance? string
| +--ro interface-level? level | +--ro routing-protocol-name? string
| +--ro extended-circuit-id? extended-circuit-id | +--ro isis-level? level
| +--ro protocol-version? uint8 | +--ro interface-name? string
| +--ro raw-pdu? binary | +--ro interface-level? level
+---n area-mismatch | +--ro extended-circuit-id? extended-circuit-id
| +--ro routing-instance? string | +--ro raw-pdu? binary
| +--ro routing-protocol-name? string +---n version-skew
| +--ro isis-level? level | +--ro routing-instance? string
| +--ro interface-name? string | +--ro routing-protocol-name? string
| +--ro interface-level? level | +--ro isis-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro interface-name? string
| +--ro raw-pdu? binary | +--ro interface-level? level
+---n rejected-adjacency | +--ro extended-circuit-id? extended-circuit-id
| +--ro routing-instance? string | +--ro protocol-version? uint8
| +--ro routing-protocol-name? string | +--ro raw-pdu? binary
| +--ro isis-level? level +---n area-mismatch
| +--ro interface-name? string | +--ro routing-instance? string
| +--ro interface-level? level | +--ro routing-protocol-name? string
| +--ro extended-circuit-id? extended-circuit-id | +--ro isis-level? level
| +--ro raw-pdu? binary | +--ro interface-name? string
| +--ro reason? string | +--ro interface-level? level
+---n protocols-supported-mismatch | +--ro extended-circuit-id? extended-circuit-id
| +--ro routing-instance? string | +--ro raw-pdu? binary
| +--ro routing-protocol-name? string +---n rejected-adjacency
| +--ro isis-level? level | +--ro routing-instance? string
| +--ro interface-name? string | +--ro routing-protocol-name? string
| +--ro interface-level? level | +--ro isis-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro interface-name? string
| +--ro raw-pdu? binary | +--ro interface-level? level
| +--ro protocols* uint8 | +--ro extended-circuit-id? extended-circuit-id
+---n lsp-error-detected | +--ro raw-pdu? binary
| +--ro routing-instance? string | +--ro reason? string
| +--ro routing-protocol-name? string +---n protocols-supported-mismatch
| +--ro isis-level? level | +--ro routing-instance? string
| +--ro interface-name? string | +--ro routing-protocol-name? string
| +--ro interface-level? level | +--ro isis-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro interface-name? string
| +--ro lsp-id? lsp-id | +--ro interface-level? level
| +--ro raw-pdu? binary | +--ro extended-circuit-id? extended-circuit-id
| +--ro error-offset? uint32 | +--ro raw-pdu? binary
| +--ro tlv-type? uint8 | +--ro protocols* uint8
+---n adjacency-state-change +---n lsp-error-detected
| +--ro routing-instance? string | +--ro routing-instance? string
| +--ro routing-protocol-name? string | +--ro routing-protocol-name? string
| +--ro isis-level? level | +--ro isis-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 neighbor? string | +--ro lsp-id? lsp-id
| +--ro neighbor-system-id? system-id | +--ro raw-pdu? binary
| +--ro state? adj-state-type | +--ro error-offset? uint32
| +--ro reason? string | +--ro tlv-type? uint8
+---n lsp-received +---n adjacency-state-change
| +--ro routing-instance? string | +--ro routing-instance? string
| +--ro routing-protocol-name? string | +--ro routing-protocol-name? string
| +--ro isis-level? level | +--ro isis-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 sequence? uint32 | +--ro neighbor-system-id? system-id
| +--ro received-timestamp? yang:timestamp | +--ro state? adj-state-type
| +--ro neighbor-system-id? system-id | +--ro reason? string
+---n lsp-generation +---n lsp-received
+--ro routing-instance? string | +--ro routing-instance? string
+--ro routing-protocol-name? string | +--ro routing-protocol-name? string
+--ro isis-level? level | +--ro isis-level? level
+--ro lsp-id? lsp-id | +--ro interface-name? string
+--ro sequence? uint32 | +--ro interface-level? level
+--ro send-timestamp? yang:timestamp | +--ro extended-circuit-id? extended-circuit-id
| +--ro lsp-id? lsp-id
| +--ro sequence? uint32
| +--ro received-timestamp? yang:timestamp
| +--ro neighbor-system-id? system-id
+---n lsp-generation
+--ro routing-instance? string
+--ro routing-protocol-name? string
+--ro isis-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).
Additional modules may be created this to support any additional Additional modules may be created this to support any additional
skipping to change at page 11, line 7 skipping to change at page 11, line 9
| +--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 a An implementation SHOULD prefer a level specific parameter over a
level-all parameter. As example, if the priority is 100 for the level-all parameter. As example, if the priority is 100 for the
level-1, 200 for the level-2 and 250 for the top level configuration, level-1, 200 for the level-2 and 250 for the top level configuration,
the implementation should use 100 for the level-1 and 200 for the the implementation should use 100 for the level-1 and 200 for the
level-2. level-2.
Some parameters like "overload bit" and "route preference" are not Some parameters like "overload bit" and "route preference" are not
modeled to support a per level configuration. If an implementation modeled to support a per level configuration. If an implementation
supports per level configuration for such parameter, this supports per level configuration for such parameter, this
implementation SHOULD augment the current model by adding both implementation SHOULD augment the current model by adding both
level-1 and level-2 containers and SHOULD reuse existing level-1 and level-2 containers and SHOULD reuse existing
configuration groupings. configuration groupings.
Example of augmentation: Example of augmentation:
augment "/rt:routing/" + augment "/rt:routing/" +
"rt:control-plane-protocols/rt:control-plane-protocol"+ "rt:control-plane-protocols/rt:control-plane-protocol"+
"/isis:isis/isis:overload" { "/isis:isis/isis:overload" {
when "rt:type = 'isis:isis'" { when "rt:type = 'isis:isis'" {
description description
"This augment IS-IS routing protocol when used"; "This 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.";
} }
} }
If an implementation does not support per level configuration for a If an implementation does not support per level configuration for a
parameter modeled with per level configuration, the implementation parameter modeled with per level configuration, the implementation
SHOULD advertise a deviation to announce the non support of the SHOULD advertise a deviation to announce the non support of the
level-1 and level-2 containers. 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 12, line 33 skipping to change at page 13, line 9
interface-specific parameter always override an IS-IS global interface-specific parameter always override an IS-IS global
parameter. parameter.
Some parameters like hello-padding are defined as containers to allow Some parameters like hello-padding are defined as containers to allow
easy extension by vendor specific modules. easy extension by vendor specific modules.
+--rw interfaces +--rw interfaces
| +--rw interface* [name] | +--rw interface* [name]
| +--rw name if:interface-ref | +--rw name if:interface-ref
| +--rw level-type? level | +--rw level-type? level
| +--rw lsp-pacing-interval? rt-types:timer-value-milli | +--rw lsp-pacing-interval?
seconds | | rt-types:timer-value-milliseconds
| +--rw lsp-retransmit-interval? rt-types:timer-value-secon | +--rw lsp-retransmit-interval?
ds16 | | rt-types:timer-value-seconds16
| +--rw passive? boolean | +--rw passive? boolean
| +--rw csnp-interval? rt-types:timer-value-secon | +--rw csnp-interval?
ds16 | | rt-types:timer-value-seconds16
| +--rw hello-padding | +--rw hello-padding
| | +--rw enable? boolean | | +--rw enable? boolean
| +--rw mesh-group-enable? mesh-group-state | +--rw mesh-group-enable? mesh-group-state
| +--rw mesh-group? uint8 | +--rw mesh-group? uint8
| +--rw interface-type? interface-type | +--rw interface-type? interface-type
| +--rw enable? boolean {admin-control}? | +--rw enable? boolean {admin-control}?
| +--rw tag* uint32 {prefix-tag}? | +--rw tag* uint32 {prefix-tag}?
| +--rw tag64* uint64 {prefix-tag64}? | +--rw tag64* uint64 {prefix-tag64}?
| +--rw node-flag? boolean {node-flag}? | +--rw node-flag? boolean {node-flag}?
| +--rw hello-authentication | +--rw hello-authentication
| | +--rw (authentication-type)? | | +--rw (authentication-type)?
| | | +--:(key-chain) {key-chain}? | | | +--:(key-chain) {key-chain}?
| | | | +--rw key-chain? key-chain:key-chain-ref | | | | +--rw key-chain? key-chain:key-chain-ref
| | | +--:(password) | | | +--:(password)
| | | +--rw key? string | | | +--rw key? string
| | | +--rw crypto-algorithm? identityref | | | +--rw crypto-algorithm? identityref
| | +--rw level-1 | | +--rw level-1
| | | +--rw (authentication-type)? | | | +--rw (authentication-type)?
| | | +--:(key-chain) {key-chain}? | | | +--:(key-chain) {key-chain}?
| | | | +--rw key-chain? key-chain:key-chain-r | | | | +--rw key-chain? key-chain:key-chain-ref
ef
| | | +--:(password) | | | +--:(password)
| | | +--rw key? string | | | +--rw key? string
| | | +--rw crypto-algorithm? identityref | | | +--rw crypto-algorithm? identityref
| | +--rw level-2 | | +--rw level-2
| | +--rw (authentication-type)? | | +--rw (authentication-type)?
| | +--:(key-chain) {key-chain}? | | +--:(key-chain) {key-chain}?
| | | +--rw key-chain? key-chain:key-chain-r | | | +--rw key-chain? key-chain:key-chain-ref
ef
| | +--:(password) | | +--:(password)
| | +--rw key? string | | +--rw key? string
| | +--rw crypto-algorithm? identityref | | +--rw crypto-algorithm? identityref
| +--rw hello-interval | +--rw hello-interval
| | +--rw value? rt-types:timer-value-seconds16 | | +--rw value? rt-types:timer-value-seconds16
| | +--rw level-1 | | +--rw level-1
| | | +--rw value? rt-types:timer-value-seconds16 | | | +--rw value? rt-types:timer-value-seconds16
| | +--rw level-2 | | +--rw level-2
| | +--rw value? rt-types:timer-value-seconds16 | | +--rw value? rt-types:timer-value-seconds16
| +--rw hello-multiplier | +--rw hello-multiplier
skipping to change at page 14, line 28 skipping to change at page 15, line 6
| | | +--rw enable? boolean | | | +--rw enable? boolean
| | | +--rw remote-lfa {remote-lfa}? | | | +--rw remote-lfa {remote-lfa}?
| | | +--rw enable? boolean | | | +--rw enable? boolean
| | +--rw level-2 | | +--rw level-2
| | +--rw candidate-disabled? boolean | | +--rw candidate-disabled? boolean
| | +--rw enable? boolean | | +--rw enable? boolean
| | +--rw remote-lfa {remote-lfa}? | | +--rw remote-lfa {remote-lfa}?
| | +--rw enable? boolean | | +--rw enable? boolean
| +--rw topologies {multi-topology}? | +--rw topologies {multi-topology}?
| | +--rw topology* [name] | | +--rw topology* [name]
| | +--rw name -> ../../../../../../../../rt:ribs/ri | | +--rw name
b/name | | | -> ../../../../../../../../rt:ribs/rib/name
| | +--rw metric | | +--rw metric
| | +--rw value? wide-metric | | +--rw value? wide-metric
| | +--rw level-1 | | +--rw level-1
| | | +--rw value? wide-metric | | | +--rw value? wide-metric
| | +--rw level-2 | | +--rw level-2
| | +--rw value? wide-metric | | +--rw value? wide-metric
| +--ro adjacencies | +--ro adjacencies
| | +--ro adjacency* [] | | +--ro adjacency* []
| | +--ro neighbor-systype? level | | +--ro neighbor-systype? level
| | +--ro neighbor-sysid? system-id | | +--ro neighbor-sysid? system-id
| | +--ro neighbor-extended-circuit-id? extended-circui | | +--ro neighbor-extended-circuit-id?
t-id | | | extended-circuit-id
| | +--ro neighbor-snpa? snpa | | +--ro neighbor-snpa? snpa
| | +--ro usage? level | | +--ro usage? level
| | +--ro hold-timer? rt-types:timer- | | +--ro hold-timer?
value-seconds16 | | | rt-types:timer-value-seconds16
| | +--ro neighbor-priority? uint8 | | +--ro neighbor-priority? uint8
| | +--ro lastuptime? yang:timestamp | | +--ro lastuptime? yang:timestamp
| | +--ro state? adj-state-type | | +--ro state? adj-state-type
| +--ro event-counters | +--ro event-counters
| | +--ro adjacency-changes? uint32 | | +--ro adjacency-changes? uint32
| | +--ro adjacency-number? uint32 | | +--ro adjacency-number? uint32
| | +--ro init-fails? uint32 | | +--ro init-fails? uint32
| | +--ro adjacency-rejects? uint32 | | +--ro adjacency-rejects? uint32
| | +--ro id-len-mismatch? uint32 | | +--ro id-len-mismatch? uint32
| | +--ro max-area-addresses-mismatch? uint32 | | +--ro max-area-addresses-mismatch? uint32
skipping to change at page 19, line 29 skipping to change at page 20, line 10
+--ro database-overload? uint32 +--ro database-overload? uint32
+--ro own-lsp-purge? uint32 +--ro own-lsp-purge? uint32
+--ro manual-address-drop-from-area? uint32 +--ro manual-address-drop-from-area? uint32
+--ro max-sequence? uint32 +--ro max-sequence? uint32
+--ro sequence-number-skipped? uint32 +--ro sequence-number-skipped? uint32
+--ro id-len-mismatch? uint32 +--ro id-len-mismatch? uint32
+--ro partition-changes? uint32 +--ro partition-changes? uint32
+--ro lsp-errors? uint32 +--ro lsp-errors? uint32
+--ro spf-runs? uint32 +--ro spf-runs? uint32
rpcs: rpcs:
+---x clear-adjacency +---x clear-adjacency
| +---w input | +---w input
| +---w routing-protocol-instance-name instance-state-ref | +---w routing-protocol-instance-name instance-state-ref
| +---w level? level | +---w level? level
| +---w interface? string | +---w interface? string
+---x clear-database +---x clear-database
+---w input +---w input
+---w routing-protocol-instance-name instance-state-ref +---w routing-protocol-instance-name instance-state-ref
+---w level? level +---w level? level
notifications: notifications:
+---n database-overload +---n database-overload
| +--ro routing-instance? string | +--ro routing-instance? string
| +--ro routing-protocol-name? string | +--ro routing-protocol-name? string
| +--ro isis-level? level | +--ro isis-level? level
| +--ro overload? enumeration | +--ro overload? enumeration
+---n lsp-too-large +---n lsp-too-large
| +--ro routing-instance? string | +--ro routing-instance? string
| +--ro routing-protocol-name? string | +--ro routing-protocol-name? string
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? string | +--ro interface-name? string
skipping to change at page 26, line 44 skipping to change at page 27, line 22
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". state/rt:ribs/rt:rib/rt:routes/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]. keychain [I-D.ietf-rtgwg-yang-key-chain].
6. IS-IS YANG Module 6. IS-IS YANG Module
<CODE BEGINS> file "ietf-isis@2018-05-25.yang" <CODE BEGINS> file "ietf-yang@2018-07-02.yang"
module ietf-isis {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-isis";
module ietf-isis { prefix isis;
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-isis";
prefix isis; import ietf-routing {
import ietf-routing { prefix "rt";
prefix "rt"; reference "RFC 8349 - A YANG Data Model for Routing
reference "RFC 8349 - A YANG Data Model for Routing Management (NMDA Version)";
Management (NMDA Version)"; }
}
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
reference "RFC 6021 - Common YANG Data Types"; reference "RFC 6021 - Common YANG Data Types";
} }
import ietf-yang-types { import ietf-yang-types {
prefix yang; prefix yang;
reference "RFC 6021 - Common YANG Data Types"; reference "RFC 6021 - Common YANG Data Types";
} }
import ietf-interfaces { import ietf-interfaces {
prefix "if"; prefix "if";
reference "RFC 8343 - A YANG Data Model for Interface reference "RFC 8343 - A YANG Data Model for Interface
Management (NDMA Version)"; Management (NDMA Version)";
} }
import ietf-key-chain { import ietf-key-chain {
prefix "key-chain"; prefix "key-chain";
reference "RFC 8177 - YANG Data Model for Key Chains"; reference "RFC 8177 - YANG Data Model for Key Chains";
} }
import ietf-routing-types { import ietf-routing-types {
prefix "rt-types"; prefix "rt-types";
reference "RFC 8291 - Common YANG Data Types for the reference "RFC 8291 - Common YANG Data Types for the
Routing Area"; Routing Area";
} }
import iana-routing-types { import iana-routing-types {
prefix "iana-rt-types"; prefix "iana-rt-types";
reference "RFC 8291 - Common YANG Data Types for the reference "RFC 8291 - Common YANG Data Types for the
Routing Area"; Routing Area";
} }
import ietf-bfd-types { import ietf-bfd-types {
prefix "bfd-types"; prefix "bfd-types";
reference "RFC XXXX - YANG Data Model for Bidirectional reference "RFC XXXX - YANG Data Model for Bidirectional
Forwarding Detection (BFD)"; Forwarding Detection (BFD)";
} }
organization organization
"IETF IS-IS Working Group"; "IETF IS-IS 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:derek@arrcus.com&gt; &lt;mailto:derek@arrcus.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:jefftant.ietf@gmail.com&gt; &lt;mailto:jefftant.ietf@gmail.com&gt;
"; ";
description description
"The YANG module defines a generic configuration model for "The YANG module defines a generic configuration model for
IS-IS common across all of the vendor implementations."; IS-IS common across all of the vendor implementations.";
revision 2017-05-25 { revision 2018-07-02 {
description description
"Initial revision."; "Initial revision.";
reference "RFC XXXX"; reference "RFC XXXX";
} }
/* Identities */ /* Identities */
identity isis { identity isis {
base rt:routing-protocol; base rt:routing-protocol;
description "Identity for the IS-IS routing protocol."; description "Identity for the IS-IS routing protocol.";
} }
identity isis-adjacency-change { identity isis-adjacency-change {
description "Identity for the IS-IS routing protocol description "Identity for the IS-IS routing protocol
adjacency state."; adjacency state.";
} }
identity clear-isis-database {
description "Identity for the IS-IS routing protocol
database reset action.";
}
identity clear-isis-adjacency { identity clear-isis-database {
description "Identity for the IS-IS routing protocol description "Identity for the IS-IS routing protocol
adjacency reset action."; database reset action.";
} }
identity lsp-log-reason { identity clear-isis-adjacency {
description "Base identity for an LSP change description "Identity for the IS-IS routing protocol
log reason."; adjacency reset action.";
} }
identity refresh { identity lsp-log-reason {
base lsp-log-reason; description "Base identity for an LSP change log reason.";
description }
"Identity used when the LSP log reason is
a refresh LSP received.";
}
identity content-change { identity refresh {
base lsp-log-reason; base lsp-log-reason;
description description
"Identity used when the LSP log reason is "Identity used when the LSP log reason is
a change in the content of the LSP."; a refresh LSP received.";
} }
/* Feature definitions */ identity content-change {
base lsp-log-reason;
description
"Identity used when the LSP log reason is
a change in the content of the LSP.";
}
feature ietf-spf-delay { /* Feature definitions */
description
"Support of IETF SPF delay algorithm.";
reference "RFC XXXX - SPF Back-off algorithm for link
state IGPs";
}
feature bfd {
description
"Support for BFD detection of IS-IS neighbor reachability.";
reference "RFC 5880 - Bidirectional Forwarding Detection (BFD)
RFC 5881 - Bidirectional Forwarding Detection
(BFD) for IPv4 and IPv6 (Single Hop)";
}
feature key-chain {
description
"Support of keychain for authentication.";
} feature ietf-spf-delay {
feature node-flag { description
description "Support of IETF SPF delay algorithm.";
"Support of node-flag advertisement reference "RFC XXXX - SPF Back-off algorithm for link
as prefix attribute"; state IGPs";
reference "RFC7794 - IS-IS Prefix Attributes for }
Extended IP and IPv6 Reachability"; feature bfd {
} description
feature node-tag { "Support for BFD detection of IS-IS neighbor reachability.";
description reference "RFC 5880 - Bidirectional Forwarding Detection (BFD)
"Support of node tag."; RFC 5881 - Bidirectional Forwarding Detection
reference "RFC7917 - Advertising Node Administrative Tags (BFD) for IPv4 and IPv6 (Single Hop)";
in IS-IS"; }
} feature key-chain {
feature ldp-igp-sync { description
description "Support of keychain for authentication.";
"Support of synchronization between IS-IS and LDP."; reference "RFC8177 - YANG Data Model for Key Chains";
reference "RFC5443 - LDP IGP Synchronization"; }
} feature node-flag {
feature fast-reroute { description
description "Support of node-flag advertisement
"Support of IP Fast Reroute."; as prefix attribute";
} reference "RFC7794 - IS-IS Prefix Attributes for
feature nsr { Extended IP and IPv6 Reachability";
description }
"Support of feature node-tag {
Non Stop Routing."; description
} "Support of node tag.";
feature lfa { reference "RFC7917 - Advertising Node Administrative Tags
description in IS-IS";
"Support of Loop Free Alternates."; }
reference "RFC5286 - Basic Specification of IP Fast-Reroute: feature ldp-igp-sync {
Loop-free Alternates"; description
} "Support of synchronization between IS-IS and LDP.";
feature remote-lfa { reference "RFC5443 - LDP IGP Synchronization";
description }
"Support of remote Loop Free Alternates."; feature fast-reroute {
reference "RFC7490 - Remote Loop-Free Alternate Fast Reroute"; description
} "Support of IP Fast Reroute.";
}
feature nsr {
description
"Support of Non-Stop Routing.";
}
feature lfa {
description
"Support of Loop-Free Alternates.";
reference "RFC5286 - Basic Specification of IP Fast-Reroute:
Loop-free Alternates";
}
feature remote-lfa {
description
"Support of remote Loop Free Alternates.";
reference "RFC7490 - Remote Loop-Free Alternate Fast Reroute";
}
feature overload-max-metric { feature overload-max-metric {
description description
"Support of overload by setting "Support of overload by setting
all links to max metric."; all links to max metric.";
} }
feature prefix-tag { feature prefix-tag {
description description
"Add 32bit tag to prefixes"; "Support for 32-bit prefix tags";
reference "RFC5130 - A Policy Control Mechanism in
IS-IS Using Administrative Tags";
}
feature prefix-tag64 {
description
"Support for 64-bit prefix tags";
reference "RFC5130 - A Policy Control Mechanism in
IS-IS Using Administrative Tags";
}
feature auto-cost {
description
"Use an automated assignment of metrics.";
}
feature ipv4-router-id {
description
"Support of IPv4 router ID configuration under IS-IS.";
}
reference "RFC5130 - A Policy Control Mechanism in feature ipv6-router-id {
IS-IS Using Administrative Tags"; description
} "Support of IPv6 router ID configuration under IS-IS.";
feature prefix-tag64 { }
description
"Add 64bit tag to prefixes";
reference "RFC5130 - A Policy Control Mechanism in
IS-IS Using Administrative Tags";
}
feature auto-cost {
description
"Use an automated assignment of metrics.";
}
feature ipv4-router-id {
description
"Support of IPv4 router ID configuration under IS-IS.";
}
feature ipv6-router-id { feature multi-topology {
description description
"Support of IPv6 router ID configuration under IS-IS."; "Multitopology routing support.";
} reference "RFC5120 - M-IS-IS: Multi Topology Routing in IS-IS";
}
feature nlpid-control {
description
"This feature controls the advertisement
of support NLPID within IS-IS configuration.";
}
feature graceful-restart {
description
"Graceful restart support.";
reference "RFC5306 - Restart Signaling in IS-IS";
}
feature multi-topology { feature lsp-refresh {
description description
"Multitopology routing support."; "Configuration of LSP refresh interval.";
reference "RFC5120 - M-IS-IS: Multi Topology Routing in IS-IS"; }
}
feature nlpid-control {
description
"This feature controls the advertisement
of support NLPID within IS-IS configuration.";
}
feature graceful-restart {
description
"Graceful restart support.";
reference "RFC5306 - Restart Signaling in IS-IS";
}
feature lsp-refresh { feature maximum-area-addresses {
description description
"Configuration of LSP refresh interval."; "Support of maximum-area-addresses config.";
} }
feature maximum-area-addresses { feature admin-control {
description description
"Support of maximum-area-addresses config."; "Control administrative state of IS-IS.";
} }
feature admin-control {
description
"Control administrative state of IS-IS.";
}
/* 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:control-plane-protocols/rt:control-plane-protocol/" +"rt:control-plane-protocols/rt:control-plane-protocol/"
+"rt:name"; +"rt:name";
} }
description description
"This type is used for leaves that reference state data of "This type is used for leaves that reference state data for
an IS-IS protocol instance."; an IS-IS protocol instance.";
} }
typedef circuit-id { typedef circuit-id {
type uint8; type uint8;
description description
"This type defines the circuit ID "This type defines the circuit ID
associated with an interface."; associated with an interface.";
}
typedef extended-circuit-id { }
type uint32;
description
"This type defines the extended circuit ID
associated with an interface.";
}
typedef interface-type { typedef extended-circuit-id {
type enumeration { type uint32;
enum broadcast { description
description "This type defines the extended circuit ID
"Broadcast interface type."; associated with an interface.";
} }
enum point-to-point {
description
"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.";
} typedef interface-type {
type enumeration {
enum broadcast {
description
"Broadcast interface type.";
}
enum point-to-point {
description
"Point-to-point interface type.";
}
}
description
"This type defines the type of adjacency
to be established on the interface.
The interface-type determines the type
of hello message that is 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.";
}
}
default "level-all";
description
"This type defines IS-IS level of an object.";
} typedef level {
type enumeration {
enum "level-1" {
description
"This enum indicates L1-only capability.";
}
enum "level-2" {
description
"This enum indicates L2-only capability.";
}
enum "level-all" {
description
"This enum indicates capability for both levels.";
}
}
default "level-all";
description
"This type defines IS-IS level of an object.";
typedef adj-state-type { }
typedef adj-state-type {
type enumeration { type enumeration {
enum "up" { enum "up" {
description description
"This state describes that "State indicates the adjacency is established.";
adjacency is established."; }
} enum "down" {
enum "down" { description
description "State indicates the adjacency is NOT established.";
"This state describes that }
adjacency is NOT established."; enum "init" {
} description
enum "init" { "State indicates the adjacency is establishing.";
description }
"This state describes that enum "failed" {
adjacency is establishing."; description
} "State indicates the adjacency is failed.";
enum "failed" { }
description }
"This state describes that description
adjacency is failed."; "This type defines states of an adjacency";
} }
}
description
"This type defines states of an adjacency";
}
typedef if-state-type { typedef if-state-type {
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
description "This type defines the state of an interface";
"This type defines states of an interface"; }
}
typedef level-number { typedef level-number {
type uint8 { type uint8 {
range "1 .. 2"; range "1 .. 2";
} }
description description
"This type defines a current IS-IS level."; "This type defines the current IS-IS level.";
} }
typedef lsp-id { typedef lsp-id {
type string { type string {
pattern pattern
'[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]' '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]'
+'{4}\.[0-9][0-9]-[0-9][0-9]'; +'{4}\.[0-9][0-9]-[0-9][0-9]';
} }
description description
"This type defines IS-IS LSP ID using pattern, "This type defines the IS-IS LSP ID format using a
system id looks like : 0143.0438.AeF0.02-01"; pattern, An example LSP ID is 0143.0438.AeF0.02-01";
} }
typedef area-address { typedef area-address {
type string { type string {
pattern '[0-9A-Fa-f]{2}\.([0-9A-Fa-f]{4}\.){0,3}'; pattern '[0-9A-Fa-f]{2}\.([0-9A-Fa-f]{4}\.){0,3}';
} }
description description
"This type defines the area address format."; "This type defines the area address format.";
} }
typedef snpa { typedef snpa {
type string { type string {
length "0 .. 20"; length "0 .. 20";
} }
description description
"This type defines Subnetwork Point "This type defines the Subnetwork Point
of Attachement format."; of Attachement (SNPA) format.";
} }
typedef system-id { typedef system-id {
type string { type string {
pattern pattern
'[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}'; '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}';
} }
description description
"This type defines IS-IS system id using pattern, "This type defines IS-IS system-id using pattern,
system id looks like : 0143.0438.AeF0"; An example system-id is 0143.0438.AeF0";
} }
typedef wide-metric { typedef wide-metric {
type uint32 { type uint32 {
range "0 .. 16777215"; range "0 .. 16777215";
} }
description description
"This type defines wide style format "This type defines wide style format of IS-IS metric.";
of IS-IS metric."; }
}
typedef std-metric { typedef std-metric {
type uint8 { type uint8 {
range "0 .. 63"; range "0 .. 63";
} }
description description
"This type defines old style format "This type defines old style format of IS-IS metric.";
of IS-IS metric."; }
}
typedef mesh-group-state { typedef mesh-group-state {
type enumeration { type enumeration {
enum "meshinactive" { enum "mesh-inactive" {
description description
"Interface is not part of a mesh group."; "Interface is not part of a mesh group.";
} }
enum "meshset" { enum "mesh-set" {
description description
"Interface is part of a mesh group."; "Interface is part of a mesh group.";
} }
enum "meshblocked" { enum "mesh-blocked" {
description description
"LSPs must not be flooded over that interface."; "LSPs must not be flooded over this interface.";
} }
} }
description description
"This type describes meshgroup state of an interface"; "This type describes mesh group state of an interface";
} }
/* Grouping definitions for configuration and ops state */ /* Grouping definitions for configuration and ops state */
grouping adjacency-state { grouping adjacency-state {
container adjacencies { container adjacencies {
config false; config false;
list adjacency { list adjacency {
leaf neighbor-systype { leaf neighbor-sys-type {
type level; type level;
description description
"Type of neighboring system"; "Level capability of neighboring system";
} }
leaf neighbor-sysid { leaf neighbor-sysid {
type system-id; type system-id;
description description
"The system-id of the neighbor"; "The system-id of the neighbor";
} }
leaf neighbor-extended-circuit-id { leaf neighbor-extended-circuit-id {
type extended-circuit-id; type extended-circuit-id;
description description
"Circuit ID of the neighbor"; "Circuit ID of the neighbor";
} }
leaf neighbor-snpa { leaf neighbor-snpa {
type snpa; type snpa;
description description
"SNPA of the neighbor"; "SNPA of the neighbor";
} }
leaf usage { leaf usage {
type level; type level;
description description
"Define the level(s) activated on the adjacency. "Define the level(s) activated on the adjacency.
On a p2p link this might be level 1 and 2, On a p2p link this might be level 1 and 2,
but on a LAN, the usage will be level 1 but on a LAN, the usage will be level 1
between peers at L1 or level 2 between between peers at level 1 or level 2 between
peers at L2."; peers at level 2.";
} }
leaf hold-timer { leaf hold-timer {
type rt-types:timer-value-seconds16; type rt-types:timer-value-seconds16;
units seconds; units seconds;
description description
"The holding time in seconds for this "The holding time in seconds for this
adjacency. This value is based on adjacency. This value is based on
received hello PDUs and the elapsed received hello PDUs and the elapsed
time since receipt."; time since receipt.";
} }
leaf neighbor-priority { leaf neighbor-priority {
type uint8 { type uint8 {
range "0 .. 127"; range "0 .. 127";
} }
description description
"Priority of the neighboring IS for becoming "Priority of the neighboring IS for becoming
the DIS."; the DIS.";
} }
leaf lastuptime { leaf lastuptime {
type yang:timestamp; type yang:timestamp;
description description
"When the adjacency most recently entered "When the adjacency most recently entered
state 'up', measured in hundredths of a state 'up', measured in hundredths of a
second since the last reinitialization of second since the last reinitialization of
the network management subsystem. the network management subsystem.
The value is 0 if the adjacency has never The value is 0 if the adjacency has never
been in state 'up'."; been in state 'up'.";
} }
leaf state { leaf state {
type adj-state-type; type adj-state-type;
description description
"This leaf describes the state of the "This leaf describes the state of the interface.";
interface."; }
}
description description
"List of operational adjacencies."; "List of operational adjacencies.";
} }
description description
"This container lists the adjacencies of "This container lists the adjacencies of
the local node."; the local node.";
} }
description description
"Adjacency state"; "Adjacency state";
} }
grouping fast-reroute-global-state { grouping fast-reroute-global-state {
container protected-routes { container protected-routes {
config false; config false;
list af-stats { list af-stats {
key "af prefix alternate"; key "af prefix alternate";
leaf af { leaf af {
type iana-rt-types:address-family; type iana-rt-types:address-family;
description description
"Address-family"; "Address-family";
} }
leaf prefix { leaf prefix {
type string; type string;
description description
"Protected prefix."; "Protected prefix.";
} }
leaf alternate { leaf alternate {
type string; type string;
description description
"Alternate nexthop for the prefix."; "Alternate nexthop for the prefix.";
} }
leaf alternate-type { leaf alternate-type {
type enumeration { type enumeration {
enum equalcost { enum equal-cost {
description description
"ECMP alternate."; "ECMP alternate.";
} }
enum lfa { enum lfa {
description description
"LFA alternate."; "LFA alternate.";
} }
enum remote-lfa { enum remote-lfa {
description description
"Remote LFA alternate."; "Remote LFA alternate.";
} }
enum tunnel { enum tunnel {
description description
"Tunnel based alternate "Tunnel based alternate
(like RSVP-TE or GRE)."; (like RSVP-TE or GRE).";
} }
enum ti-lfa { enum ti-lfa {
description description
"TI LFA alternate."; "TI-LFA alternate.";
} }
enum mrt { enum mrt {
description description
"MRT alternate."; "MRT alternate.";
} }
enum other { enum other {
description description
"Unknown alternate type."; "Unknown alternate type.";
} }
} }
description description
"Type of alternate."; "Type of alternate.";
}
} leaf best {
leaf best { type boolean;
type boolean; description
description "Indicates if the alternate is the preferred.";
"describes if the alternate is the best one."; }
} leaf non-best-reason {
leaf non-best-reason { type string;
type string; description
description
"Information field to describe why the alternate "Information field to describe why the alternate
is not best."; is not best.";
} }
leaf protection-available { leaf protection-available {
type bits { type bits {
bit nodeprotect { bit node-protect {
position 0; position 0;
description description
"Node protection available."; "Node protection available.";
} }
bit linkprotect { bit link-protect {
position 1; position 1;
description description
"Link protection available."; "Link protection available.";
} }
bit srlgprotect { bit srlg-protect {
position 2; position 2;
description description
"SRLG protection available."; "SRLG protection available.";
} }
bit downstreamprotect { bit downstream-protect {
position 3; position 3;
description description
"Downstream protection available."; "Downstream protection available.";
} }
bit other { bit other {
position 4; position 4;
description description
"Other protection available."; "Other protection available.";
} }
} }
description description "Protection provided by the alternate.";
"Describes protection provided by the alternate."; }
} leaf alternate-metric1 {
leaf alternate-metric1 { type uint32;
type uint32; description
description "Metric from Point of Local Repair (PLR) to
"Metric from PLR to destination destination through the alternate path.";
through the alternate path."; }
leaf alternate-metric2 {
} type uint32;
leaf alternate-metric2 { description
type uint32;
description
"Metric from PLR to the alternate node"; "Metric from PLR to the alternate node";
} }
leaf alternate-metric3 { leaf alternate-metric3 {
type uint32; type uint32;
description description
"Metric from alternate node to the destination"; "Metric from alternate node to the destination";
} }
description description
"Per AF statistics."; "Per-AF protected prefix statistics.";
} }
description description
"List of prefixes that are protected."; "List of prefixes that are protected.";
} }
container nonprotected-routes { container unprotected-routes {
config false; config false;
list af-stats { list af-stats {
key "af prefix"; key "af prefix";
leaf af { leaf af {
type iana-rt-types:address-family; type iana-rt-types:address-family;
description description "Address-family";
"Address-family"; }
} leaf prefix {
leaf prefix { type string;
type string; description "Unprotected prefix.";
description }
"Protected prefix."; description
} "Per AF unprotected prefix statistics.";
description }
"Per AF statistics."; description
}
description
"List of prefixes that are not protected."; "List of prefixes that are not protected.";
} }
list protection-statistics {
key frr-protection-method;
config false;
leaf frr-protection-method {
type string;
description
"Protection method used.";
}
list af-stats {
key af;
leaf af { list protection-statistics {
type iana-rt-types:address-family; key frr-protection-method;
config false;
leaf frr-protection-method {
type string;
description "Protection method used.";
}
list af-stats {
key af;
description leaf af {
"Address-family"; type iana-rt-types: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
"Per AF statistics.";
}
description description "Address-family";
"Global protection statistics."; }
} leaf total-routes {
description type uint32;
"IPFRR states."; description "Total prefixes.";
}
leaf unprotected-routes {
type uint32;
description
"Total prefixes that are not protected.";
}
leaf protected-routes {
type uint32;
description
"Total prefixes that are protected.";
}
leaf linkprotected-routes {
type uint32;
description
"Total prefixes that are link protected.";
}
leaf nodeprotected-routes {
type uint32;
description
"Total prefixes that are node protected.";
}
description
"Per AF protected prefix statistics.";
}
} description "Global protection statistics.";
grouping notification-instance-hdr { }
description description "IPFRR states.";
"This group describes common instance specific }
data for notifications.";
leaf routing-instance {
type string;
description
"Describes the name of the routing-instance instance.";
}
leaf routing-protocol-name {
type string;
description
"Describes the name of the IS-IS instance.";
}
leaf isis-level {
type level;
description
"Describes the IS-IS level of the instance.";
}
}
grouping notification-interface-hdr { grouping notification-instance-hdr {
description description
"This group describes common interface specific "Instance specific IS-IS notification data grouping";
data for notifications."; leaf routing-instance {
leaf interface-name { type string;
type string; description "Name of the routing-instance instance.";
description }
"Describes the name of the IS-IS interface."; leaf routing-protocol-name {
} type string;
leaf interface-level { description "Name of the IS-IS instance.";
type level; }
description leaf isis-level {
"Describes the IS-IS level of the interface."; type level;
} description "IS-IS level of the instance.";
leaf extended-circuit-id { }
type extended-circuit-id; }
description
"Describes the extended circuit-id of the interface.";
}
}
grouping route-content { grouping notification-interface-hdr {
description description
"This group add isis-specific route properties."; "Interface specific IS-IS notification data grouping";
leaf metric { leaf interface-name {
type uint32; type string;
description description "IS-IS interface name";
"This leaf describes IS-IS metric of a route."; }
} leaf interface-level {
leaf-list tag { type level;
type uint64; description "IS-IS level of the interface.";
description }
"This leaf describes list of tags associated leaf extended-circuit-id {
with the route. The leaf describes both type extended-circuit-id;
32bits and 64bits tags."; description "Eextended circuit-id of the interface.";
} }
leaf route-type { }
type enumeration {
enum l2-up-internal {
description "Level 2 internal route
and not leaked to a lower level";
}
enum l1-up-internal {
description "Level 1 internal route
and not leaked to a lower level";
}
enum l2-up-external {
description "Level 2 external route
and not leaked to a lower level";
}
enum l1-up-external {
description "Level 1 external route
and not leaked to a lower level";
}
enum l2-down-internal {
description "Level 2 internal route
and leaked to a lower level";
}
enum l1-down-internal {
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 IS-IS route.";
} grouping route-content {
} description
"IS-IS protocol-specific route properties grouping.";
leaf metric {
type uint32;
description "IS-IS metric of a route.";
}
leaf-list tag {
type uint64;
description
"List of tags associated with the route. The leaf
describes both 32-bit and 64-bit tags.";
}
leaf route-type {
type enumeration {
enum l2-up-internal {
description "Level 2 internal route
and not leaked to a lower level";
}
enum l1-up-internal {
description "Level 1 internal route
and not leaked to a lower level";
}
enum l2-up-external {
description "Level 2 external route
and not leaked to a lower level";
}
enum l1-up-external {
description "Level 1 external route
and not leaked to a lower level";
}
enum l2-down-internal {
description "Level 2 internal route
and leaked to a lower level";
}
enum l1-down-internal {
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 "IS-IS route type.";
}
}
grouping admin-control { grouping admin-control {
leaf enable { leaf enable {
if-feature admin-control; if-feature admin-control;
type boolean; type boolean;
default true; default true;
description description
"Control the administrative "Control the administrative state.";
state."; }
} description
description "Grouping for admin control.";
"Grouping for admin control."; }
}
grouping fast-reroute-global-cfg { grouping fast-reroute-global-cfg {
description description
"This group defines global "IPFRR global configuration grouping";
configuration of IPFRR."; container lfa {
container lfa { if-feature lfa;
if-feature lfa; description
description "This container may be augmented with global
"This container may be parameters for LFA. Creating the container has no
augmented with global parameters effect on LFA activation.";
for LFA. }
Creating the container has no effect on }
LFA activation.";
}
}
grouping fast-reroute-if-cfg { grouping fast-reroute-if-cfg {
description description
"This group defines interface "IPFRR interface configuration grouping";
configuration of IPFRR."; container lfa {
container lfa { if-feature lfa;
if-feature lfa; uses lfa-if-cfg;
uses lfa-if-cfg; container level-1 {
container level-1 { uses lfa-if-cfg;
uses lfa-if-cfg; description
description "LFA level 1 config";
"LFA level 1 config"; }
} container level-2 {
container level-2 { uses lfa-if-cfg;
uses lfa-if-cfg; description
description "LFA level 2 config";
"LFA level 2 config"; }
} description
description "LFA config";
"LFA config"; }
} }
}
grouping ietf-spf-delay-cfg { grouping ietf-spf-delay-cfg {
leaf initial-delay { leaf initial-delay {
type rt-types:timer-value-milliseconds; type rt-types:timer-value-milliseconds;
units msec; units msec;
description description
"Delay used while in QUIET state."; "Delay used while in QUIET state.";
} }
leaf short-delay { leaf short-delay {
type rt-types:timer-value-milliseconds; type rt-types:timer-value-milliseconds;
units msec; units msec;
description description
"Delay used while in SHORT_WAIT state."; "Delay used while in SHORT_WAIT state.";
} }
leaf long-delay { leaf long-delay {
type rt-types:timer-value-milliseconds; type rt-types:timer-value-milliseconds;
units msec; units msec;
description description
"Delay used while in LONG_WAIT state."; "Delay used while in LONG_WAIT state.";
} }
leaf hold-down { leaf hold-down {
type rt-types:timer-value-milliseconds; type rt-types:timer-value-milliseconds;
units msec; units msec;
description description
"Timer used to consider an IGP stability period."; "Timer used to consider an IGP stability period.";
} }
leaf time-to-learn { leaf time-to-learn {
type rt-types:timer-value-milliseconds; type rt-types:timer-value-milliseconds;
units msec; units msec;
description description
"Duration used to learn all the IGP events "Duration used to learn all the IGP events
related to a single component failure."; related to a single component failure.";
} }
description
"Grouping for IETF SPF delay configuration.";
}
grouping ietf-spf-delay-state { description
leaf current-state { "Grouping for IETF SPF delay configuration.";
type enumeration { }
enum "quiet" {
description "QUIET state";
} grouping ietf-spf-delay-state {
enum "short-wait" { leaf current-state {
description "SHORT_WAIT state"; type enumeration {
} enum "quiet" {
enum "long-wait" { description "QUIET state";
description "LONG_WAIT state"; }
} enum "short-wait" {
} description "SHORT_WAIT state";
config false; }
description enum "long-wait" {
description "LONG_WAIT state";
}
}
config false;
description
"Current SPF backoff algorithm state."; "Current SPF backoff algorithm state.";
} }
leaf remaining-time-to-learn { leaf remaining-time-to-learn {
type rt-types:timer-value-milliseconds; type rt-types:timer-value-milliseconds;
units "msec"; units "msec";
config false; config false;
description description
"Remaining time until time-to-learn timer fires."; "Remaining time until time-to-learn timer fires.";
} }
leaf remaining-hold-down { leaf remaining-hold-down {
type rt-types:timer-value-milliseconds; type rt-types:timer-value-milliseconds;
units "msec"; units "msec";
config false; config false;
description description
"Remaining time until hold-down timer fires."; "Remaining time until hold-down timer fires.";
} }
leaf last-event-received { leaf last-event-received {
type yang:timestamp; type yang:timestamp;
config false; config false;
description description
"Time of last IGP event received"; "Time of last IGP event received";
} }
leaf next-spf-time { leaf next-spf-time {
type yang:timestamp; type yang:timestamp;
config false; config false;
description description
"Time when next SPF has been scheduled."; "Time when next SPF has been scheduled.";
} }
leaf last-spf-time { leaf last-spf-time {
type yang:timestamp; type yang:timestamp;
config false; config false;
description description
"Time of last SPF computation."; "Time of last SPF computation.";
} }
description description
"Grouping for IETF SPF delay operational states."; "Grouping for IETF SPF delay operational states.";
} }
grouping local-rib { grouping local-rib {
description "Local-rib grouping."; description "Local-rib grouping.";
container local-rib { container local-rib {
config false; config false;
description "Local-rib."; description "Local-rib.";
list route { list route {
key "prefix"; key "prefix";
description "Routes"; description "List of IS-IS local RIB Routes";
leaf prefix { leaf prefix {
type inet:ip-prefix; type inet:ip-prefix;
description "Destination prefix."; description "Destination prefix.";
} }
container next-hops { container next-hops {
description "All next hops for the route."; description "All next hops for the route.";
list next-hop { list next-hop {
key "next-hop"; key "next-hop";
description "List of next hop for the route"; description "List of next hop for the route";
leaf outgoing-interface { leaf outgoing-interface {
type if:interface-ref; type if:interface-ref;
description description
"Name of the outgoing interface."; "Name of the outgoing interface.";
} }
leaf next-hop { leaf next-hop {
type inet:ip-address; type inet:ip-address;
description "Nexthop address."; description "Nexthop address.";
} }
} }
} }
leaf metric { leaf metric {
type uint32; type uint32;
description "Metric for this route."; description "Metric for this route.";
} }
leaf level { leaf level {
type level-number; type level-number;
description "Level number for this route."; description "Level number for this route.";
} }
leaf route-tag { leaf route-tag {
type uint32; type uint32;
description "Route tag for this route."; description "Route tag for this route.";
} }
} }
} }
} }
grouping isis-node-tag-cfg { grouping isis-node-tag-cfg {
description description "IS-IS node tag config.";
"IS-IS node tag config."; container node-tags {
container node-tags { if-feature node-tag;
if-feature node-tag; list node-tag {
list node-tag { key tag;
key tag; leaf tag {
leaf tag { type uint32;
type uint32; description
description
"Node tag value."; "Node tag value.";
} }
description description
"List of tags."; "List of tags.";
} }
description
"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 {
leaf key {
type string;
description
"This leaf describes the
authentication key.";
}
leaf crypto-algorithm {
type identityref {
base key-chain:crypto-algorithm;
}
description
"Cryptographic algorithm associated with key.";
}
}
description
"Choice of authentication.";
}
description
"Grouping for global auth config.";
}
grouping metric-type-global-cfg {
leaf value {
type enumeration {
enum wide-only {
description
"Advertise new metric style only
(RFC5305)";
}
enum old-only {
description
"Advertise old metric style only
(RFC1195)";
}
enum both {
description "Advertise both metric
styles";
}
}
default wide-only;
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
"Grouping for global metric style config."; "Container for node tags.";
} }
}
grouping default-metric-global-cfg { grouping authentication-global-cfg {
leaf value { choice authentication-type {
type wide-metric; case key-chain {
default "10"; if-feature key-chain;
description leaf key-chain {
"Value of the metric"; type key-chain:key-chain-ref;
} description
description "Reference to a key-chain.";
"Grouping for global default metric config."; }
} }
case password {
grouping overload-global-cfg { leaf key {
leaf status { type string;
type boolean; description
default false; "This leaf specifies the authentication key.";
description }
"This leaf defines the overload status."; leaf crypto-algorithm {
} type identityref {
description base key-chain:crypto-algorithm;
"Grouping for overload bit config."; }
} description
"Cryptographic algorithm associated with key.";
}
}
description "Choice of authentication.";
}
description "Grouping for global authentication config.";
}
grouping overload-max-metric-global-cfg { grouping metric-type-global-cfg {
leaf timeout { leaf value {
type rt-types:timer-value-seconds16; type enumeration {
units "seconds"; enum wide-only {
description description
"This leaf defines the timeout in seconds "Advertise new metric style only (RFC5305)";
of the overload condition."; }
} enum old-only {
description description
"Grouping for overload-max-metric config."; "Advertise old metric style only (RFC1195)";
} }
enum both {
description "Advertise both metricstyles";
}
}
default wide-only;
description
"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,
- both means that both are advertised.
This leaf is only affecting IPv4 metrics.";
}
description
"Grouping for global metric style config.";
}
grouping route-preference-global-cfg { grouping default-metric-global-cfg {
choice granularity { leaf value {
case detail { type wide-metric;
leaf internal { default "10";
type uint8; description "Value of the metric";
description }
"This leaf defines the protocol description
preference for internal routes."; "Global default metric config grouping.";
} }
leaf external {
type uint8;
description
"This leaf defines the protocol
preference for external routes.";
}
}
case coarse {
leaf default {
type uint8;
description
"This leaf defines the protocol
preference for all IS-IS routes.";
}
}
description
"Choice for implementation of route preference.";
}
description
"This grouping defines how route preference is configured.";
}
grouping hello-authentication-cfg { grouping overload-global-cfg {
choice authentication-type { leaf status {
case key-chain { type boolean;
if-feature key-chain; default false;
leaf key-chain { description
type key-chain:key-chain-ref; "This leaf specifies the overload status.";
description }
"Reference to a key-chain."; description "Grouping for overload bit config.";
} }
}
case password {
leaf key {
type string;
description
"This leaf describes the
authentication key.";
}
leaf crypto-algorithm {
type identityref {
base key-chain:crypto-algorithm;
}
description
"Cryptographic algorithm associated with key.";
}
}
description
"Choice of authentication.";
}
description
"Grouping for hello authentication.";
}
grouping hello-interval-cfg { grouping overload-max-metric-global-cfg {
leaf value { leaf timeout {
type rt-types:timer-value-seconds16; type rt-types:timer-value-seconds16;
units "seconds"; units "seconds";
default 10; description
description "Timeout (in seconds) of the overload condition.";
"This leaf defines the interval of }
hello messages."; description
} "Overload maximum metric configuration grouping";
}
description grouping route-preference-global-cfg {
"Interval between choice granularity {
hello messages."; case detail {
leaf internal {
type uint8;
description
"Protocol preference for internal routes.";
}
leaf external {
type uint8;
description
"Protocol preference for external routes.";
}
}
case coarse {
leaf default {
type uint8;
description
"Protocol preference for all IS-IS routes.";
}
}
description
"Choice for implementation of route preference.";
}
description
"Global route preference grouping";
}
} grouping hello-authentication-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 {
leaf key {
type string;
description "Authentication key specification";
}
leaf crypto-algorithm {
type identityref {
base key-chain:crypto-algorithm;
}
description
"Cryptographic algorithm associated with key.";
}
}
description "Choice of authentication.";
}
description "Grouping for hello authentication.";
}
grouping hello-interval-cfg {
leaf value {
type rt-types:timer-value-seconds16;
units "seconds";
default 10;
description
"Interval (in seconds) between successive hello
messages.";
}
grouping hello-multiplier-cfg { description "Interval between hello messages.";
leaf value { }
type uint16;
default 3;
description
"This leaf defines the number of
hello failed to be received before
declaring the adjacency down.";
}
description
"This grouping defines the number of
hello failed to be received before
declaring the adjacency down.";
}
grouping priority-cfg { grouping hello-multiplier-cfg {
leaf value { leaf value {
type uint8 { type uint16;
range "0 .. 127"; default 3;
} description
default 64; "Number of missed hello messages prior to
description declaring the adjacency down.";
"This leaf describes the priority of }
the interface description
for DIS election."; "Number of missed hello messages prior to
} adjacency down grouping.";
}
description grouping priority-cfg {
"This grouping leaf describes the leaf value {
priority of type uint8 {
the interface range "0 .. 127";
for DIS election."; }
} default 64;
description
"Priority of interface for DIS election.";
}
grouping metric-cfg { description "Interface DIS election priority grouping";
leaf value { }
type wide-metric;
default "10";
description
"Metric value.";
}
description
"Grouping for interface metric";
}
grouping lfa-if-cfg { grouping metric-cfg {
leaf candidate-disabled { leaf value {
type boolean; type wide-metric;
default false; default "10";
description description "Metric value.";
"Prevent the interface to be used as backup."; }
} description "Interface metric grouping";
leaf enable { }
type boolean; grouping lfa-if-cfg {
default false; leaf candidate-disabled {
description type boolean;
"Activates LFA. default false;
This model assumes activation description
of per-prefix LFA."; "Prevent the interface to be used as backup.";
} }
leaf enable {
type boolean;
default false;
description
"LFA Activation - this model assumes activation
of per-prefix LFA.";
}
container remote-lfa { container remote-lfa {
if-feature remote-lfa; if-feature remote-lfa;
leaf enable { leaf enable {
type boolean; type boolean;
default false; default false;
description description
"Activates rLFA."; "Activates rLFA.";
} }
description description "Remote LFA configuration.";
"remote LFA configuration."; }
} description "Grouping for LFA interface configuration";
description }
"Grouping for LFA
interface configuration";
}
grouping isis-global-cfg { grouping isis-global-cfg {
description description "IS-IS global configuration grouping";
"Defines the IS-IS global configuration.";
uses admin-control; uses admin-control;
leaf level-type { leaf level-type {
type level; type level;
default "level-all"; default "level-all";
description description
"This leaf describes the type of IS-IS node. "Level of an IS-IS node - can be level-1-only,
A node can be level-1-only, level-2-only level-2-only or level-1-2.";
or level-1-2. }
";
}
leaf system-id { leaf system-id {
type system-id; type system-id;
description description "System-id of the node.";
"This leaf defines the system-id of the node."; }
}
leaf maximum-area-addresses { leaf maximum-area-addresses {
if-feature maximum-area-addresses; if-feature maximum-area-addresses;
type uint8; type uint8;
default 3; default 3;
description description "Maximum areas supported.";
"Defines the maximum areas supported."; }
}
leaf-list area-address { leaf-list area-address {
type area-address; type area-address;
description description
"List of areas supported by the "List of areas supported by the protocol instance.";
protocol instance."; }
}
container mpls { container mpls {
leaf ipv4-router-id { leaf ipv4-router-id {
if-feature ipv4-router-id; if-feature ipv4-router-id;
type inet:ipv4-address; type inet:ipv4-address;
description description
"Router ID value that would be used in "Router ID value that would be used in TLV 134.";
TLV 134."; }
} leaf ipv6-router-id {
leaf ipv6-router-id { if-feature ipv6-router-id;
if-feature ipv6-router-id; type inet:ipv6-address;
type inet:ipv6-address; description
description "Router ID value that would be used in TLV 140.";
"Router ID value that would be used in }
TLV 140."; container ldp {
} container igp-sync {
container ldp { if-feature ldp-igp-sync;
container igp-sync { description
if-feature ldp-igp-sync; "This container may be augmented with global
description parameters for igp-ldp-sync.";
"This container may be augmented }
with global parameters for igp-ldp-sync."; description "LDP configuration.";
} }
description description "MPLS configuration";
"LDP related configuration."; }
} container auto-cost {
description if-feature auto-cost;
"This container handles mpls config."; leaf reference-bandwidth {
} type uint32;
container auto-cost { units "bps";
if-feature auto-cost; description "Bandwidth for calculating metric.";
leaf reference-bandwidth { }
type uint32; leaf enable {
units "bps"; type boolean;
description default false;
"This leaf defines the bandwidth for calculating description "Enable/disable auto-cost.";
metric."; }
} description "Auto-cost configuration.";
leaf enable {
type boolean;
default false;
description
"Enable/disable auto-cost.";
}
description
"This container defines the auto-cost configuration.";
}
leaf lsp-mtu {
type uint16;
units "bytes";
default 1492;
description
"This leaf describes the maximum size of a
LSP PDU in bytes.";
}
leaf lsp-lifetime {
type uint16 {
range "1..65535";
}
units "seconds";
description
"This leaf describes the lifetime of the router
LSP in seconds.";
}
leaf lsp-refresh {
if-feature lsp-refresh;
type rt-types:timer-value-seconds16;
units "seconds";
description
"This leaf describes the refresh interval of the
router LSP in seconds.";
}
container graceful-restart {
if-feature graceful-restart;
leaf enable {
type boolean;
default false;
description
"Control enabling the feature.";
}
leaf restart-interval {
type rt-types:timer-value-seconds16;
units "seconds";
description
"Interval in seconds to attempt graceful restart prior
to failing";
}
leaf helper-enable {
type boolean;
default true;
description
"If enabled, the local router can act as restart helper.";
}
description
"This container activates graceful restart.";
}
container nsr { }
if-feature nsr; leaf lsp-mtu {
description type uint16;
"Non-Stop Routing (NSR) config state."; units "bytes";
leaf enable { default 1492;
type boolean; description
default false; "Maximum size of an LSP PDU in bytes.";
description }
"Enable/Disable NSR."; leaf lsp-lifetime {
} type uint16 {
} range "1..65535";
}
units "seconds";
description
"Lifetime of the router's LSPs in seconds.";
}
leaf lsp-refresh {
if-feature lsp-refresh;
type rt-types:timer-value-seconds16;
units "seconds";
description
"Refresh interval of the router's LSPs in seconds.";
}
container graceful-restart {
if-feature graceful-restart;
leaf enable {
type boolean;
default false;
description "Enable graceful restart.";
}
leaf restart-interval {
type rt-types:timer-value-seconds16;
units "seconds";
description
"Interval (in seconds) to attempt graceful restart prior
to failure.";
}
leaf helper-enable {
type boolean;
default true;
description
"Enable local IS-IS router as graceful restart helper.";
}
description "Graceful-Restart Configuration.";
}
uses isis-node-tag-cfg; container nsr {
if-feature nsr;
description "Non-Stop Routing (NSR) configuration.";
leaf enable {
type boolean;
default false;
description "Enable/Disable Non-Stop Routing (NSR).";
}
}
container authentication { uses isis-node-tag-cfg;
uses authentication-global-cfg;
container level-1 { container authentication {
uses authentication-global-cfg; uses authentication-global-cfg;
description "level-1 specific cfg";
}
container level-2 {
uses authentication-global-cfg;
description "level-2 specific cfg";
}
description "authentication global cfg.
It covers both LSPs and SNPs.";
}
container metric-type {
uses metric-type-global-cfg;
container level-1 {
uses metric-type-global-cfg;
description "level-1 specific cfg";
}
container level-2 {
uses metric-type-global-cfg;
description "level-2 specific cfg";
}
description "Metric style global cfg.";
}
container default-metric { container level-1 {
uses default-metric-global-cfg; uses authentication-global-cfg;
container level-1 { description "level-1 specific configuration";
uses default-metric-global-cfg; }
description "level-1 specific cfg"; container level-2 {
} uses authentication-global-cfg;
container level-2 { description "level-2 specific configuration";
uses default-metric-global-cfg; }
description "level-2 specific cfg"; description "Authentication global configuration for
} both LSPs and SNPs.";
description "Default metric global cfg."; }
}
container afs { container metric-type {
if-feature nlpid-control; uses metric-type-global-cfg;
list af { container level-1 {
key af; uses metric-type-global-cfg;
leaf af { description "level-1 specific configuration";
type iana-rt-types:address-family; }
container level-2 {
uses metric-type-global-cfg;
description "level-2 specific configuration";
}
description "Metric style global configuration";
}
description container default-metric {
"Address-family"; uses default-metric-global-cfg;
} container level-1 {
leaf enable { uses default-metric-global-cfg;
type boolean; description "level-1 specific configuration";
description }
"Describes the activation state of the container level-2 {
AF."; uses default-metric-global-cfg;
} description "level-2 specific configuration";
description }
"This list permits activation description "Default metric global configuration";
of new address families."; }
}
description
"Container for address-families";
} container afs {
if-feature nlpid-control;
list af {
key af;
leaf af {
type iana-rt-types:address-family;
description "Address-family";
}
leaf enable {
type boolean;
description "Activate the address family.";
}
description
"List of address families and whether or not they
are activated.";
}
description "Address Family configuration";
}
container preference { container preference {
uses route-preference-global-cfg; uses route-preference-global-cfg;
description description "Router preference configuration for IS-IS
"This container defines the protocol preference."; protocol instance route installation";
} }
container overload { container overload {
uses overload-global-cfg; uses overload-global-cfg;
description description "Router protocol instance overload state
"This container describes if the router is configuration";
set to overload state."; }
}
container overload-max-metric { container overload-max-metric {
if-feature overload-max-metric; if-feature overload-max-metric;
uses overload-max-metric-global-cfg; uses overload-max-metric-global-cfg;
description description
"This container describes if the router is "Router protocol instance overload maximum
set to overload state using max-metric metric advertisement configuration.";
advertisement."; }
} }
}
grouping isis-global-topologies-cfg { grouping isis-global-topologies-cfg {
description description "Per-topology configuration";
"Per topology config."; container default-metric {
container default-metric { uses default-metric-global-cfg;
uses default-metric-global-cfg; container level-1 {
container level-1 { uses default-metric-global-cfg;
uses default-metric-global-cfg; description "level-1 specific configuration";
description "level-1 specific cfg"; }
} container level-2 {
container level-2 { uses default-metric-global-cfg;
uses default-metric-global-cfg; description "level-2 specific configuration";
description "level-2 specific cfg"; }
} description "Default metric per-topology configuration";
description "Default metric per }
topology cfg."; uses isis-node-tag-cfg;
} }
uses isis-node-tag-cfg;
}
grouping isis-if-cfg { grouping isis-if-cfg {
description description "Interface configuration grouping";
"Grouping for interface cfg."; leaf level-type {
type level;
default "level-all";
description "IS-IS level of the interface.";
}
leaf lsp-pacing-interval {
type rt-types:timer-value-milliseconds;
units "milliseconds";
default 33;
description
"Interval (in milli-seconds) between LSP
transmissions.";
}
leaf lsp-retransmit-interval {
type rt-types:timer-value-seconds16;
units "seconds";
description
"Interval (in seconds) between LSP
retransmissions.";
}
leaf passive {
type boolean;
default "false";
description
"Indicates whetherthe interface is in passive mode (IS-IS
not running but network is advertised).";
}
leaf csnp-interval {
type rt-types:timer-value-seconds16;
units "seconds";
default 10;
description
"Interval (in seconds) between CSNP messages.";
}
container hello-padding {
leaf enable {
type boolean;
default "true";
description
"IS-IS Hello-padding activation - enabled by default.";
}
description "IS-IS hello padding configuration.";
}
leaf mesh-group-enable {
type mesh-group-state;
description "IS-IS interface mesh-group state";
}
leaf mesh-group {
when "../mesh-group-enable = 'mesh-set'" {
description
"Only valid when mesh-group-enable equals meshset";
}
type uint8;
description "IS-IS interface mesh-group ID.";
}
leaf interface-type {
type interface-type;
default "broadcast";
description
"Type of adjacency to be established on the interface. This
dictates the type of hello messages that are used.";
}
leaf level-type { uses admin-control;
type level;
default "level-all";
description
"This leaf defines the associated IS-IS
level of the interface.";
}
leaf lsp-pacing-interval {
type rt-types:timer-value-milliseconds;
units "milliseconds";
default 33;
description
"This leaf defines the interval between
LSP transmissions in milli-seconds";
}
leaf lsp-retransmit-interval {
type rt-types:timer-value-seconds16;
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 (IS-IS not running,
but network is advertised).";
}
leaf csnp-interval {
type rt-types:timer-value-seconds16;
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 IS-IS hello padding
configuration.";
}
leaf mesh-group-enable {
type mesh-group-state;
description
"Describes the mesh group state of
the interface.";
}
leaf mesh-group {
when "../mesh-group-enable = 'meshset'" {
description
"Only valid when mesh-group-enable
equals to meshset";
}
type uint8;
description
"Describes the mesh group ID of
the interface.";
}
leaf interface-type {
type interface-type;
default "broadcast";
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.";
}
uses admin-control; leaf-list tag {
if-feature prefix-tag;
type uint32;
description
"List of tags associated with the interface.";
}
leaf-list tag64 {
if-feature prefix-tag64;
type uint64;
description
"List of 64-bit tags associated with the interface.";
}
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 level-1 {
uses hello-authentication-cfg;
description "level-1 specific configuration";
}
container level-2 {
uses hello-authentication-cfg;
description "level-2 specific configuration";
}
description
"Authentication type to be used in hello messages.";
}
container hello-interval {
uses hello-interval-cfg;
container level-1 {
uses hello-interval-cfg;
description "level-1 specific configuration";
}
container level-2 {
uses hello-interval-cfg;
description "level-2 specific configuration";
}
description "Interval between hello messages.";
}
container hello-multiplier {
uses hello-multiplier-cfg;
container level-1 {
uses hello-multiplier-cfg;
description "level-1 specific configuration";
}
container level-2 {
uses hello-multiplier-cfg;
description "level-2 specific configuration";
}
description "Hello multiplier configuration.";
}
container priority {
must '../interface-type = "broadcast"' {
error-message
"Priority only applies to broadcast interfaces.";
description "Check for broadcast interface.";
}
uses priority-cfg;
container level-1 {
uses priority-cfg;
description "level-1 specific configuration";
}
container level-2 {
uses priority-cfg;
description "level-2 specific configuration";
}
description "Priority for DIS election.";
}
container metric {
uses metric-cfg;
container level-1 {
uses metric-cfg;
description "level-1 specific configuration";
}
container level-2 {
uses metric-cfg;
description "level-2 specific configuration";
}
description "Metric configuration.";
}
container bfd {
if-feature bfd;
description "BFD Client Configuration.";
uses bfd-types:client-cfg-parms;
leaf-list tag { reference "draft-ietf-bfd-yang-xx.txt:
if-feature prefix-tag; YANG Data Model for Bidirectional Forwarding
type uint32; Detection (BFD)";
description }
"This leaf defines list of tags associated container afs {
with the interface."; if-feature nlpid-control;
} list af {
leaf-list tag64 { key af;
if-feature prefix-tag64; leaf af {
type uint64; type iana-rt-types:address-family;
description description "Address-family";
"This leaf defines list of 64bits tags }
associated with the interface."; description "List of AFs.";
} }
leaf node-flag { description "Interface address-families";
if-feature node-flag; }
type boolean; container mpls {
default false; container ldp {
description leaf igp-sync {
"Set prefix as a node if-feature ldp-igp-sync;
representative prefix."; type boolean;
} default false;
container hello-authentication { description "Enables IGP/LDP synchronization";
uses hello-authentication-cfg;
container level-1 {
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 hello-interval {
uses hello-interval-cfg;
container level-1 {
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 hello-multiplier {
uses hello-multiplier-cfg;
container level-1 {
uses hello-multiplier-cfg;
description "level-1 specific cfg";
}
container level-2 {
uses hello-multiplier-cfg;
description "level-2 specific cfg";
}
description "Hello multiplier
configuration.";
}
container priority {
must '../interface-type = "broadcast"' {
error-message
"Priority only applies to broadcast
interfaces.";
description
"Check for broadcast interface.";
}
uses priority-cfg;
container level-1 {
uses priority-cfg;
description "level-1 specific cfg";
}
container level-2 {
uses priority-cfg;
description "level-2 specific cfg";
}
description "Priority for DIS election.";
}
container metric {
uses metric-cfg;
container level-1 {
uses metric-cfg;
description "level-1 specific cfg";
}
container level-2 {
uses metric-cfg;
description "level-2 specific cfg";
}
description "Metric configuration.";
}
container bfd {
if-feature bfd;
description "BFD Client Configuration.";
uses bfd-types:client-cfg-parms;
reference "draft-ietf-bfd-yang-xx.txt: }
YANG Data Model for Bidirectional Forwarding description "LDP protocol related configuration.";
Detection (BFD)"; }
} description "MPLS configuration for IS-IS interfaces";
container afs { }
if-feature nlpid-control; }
list af {
key af;
leaf af {
type iana-rt-types:address-family;
description grouping isis-if-topologies-cfg {
"Address-family"; description "IS-IS interface topology configuration.";
} container metric {
description uses metric-cfg;
"List of AFs."; container level-1 {
} uses metric-cfg;
description description "level-1 specific configuration";
"Container for address-families"; }
} container level-2 {
container mpls { uses metric-cfg;
container ldp { description "level-2 specific configuration";
leaf igp-sync { }
if-feature ldp-igp-sync; description "Metric IS-IS interface configuration.";
type boolean; }
default false; }
description
"Enables IGP/LDP sync.";
}
description
"LDP protocol related configurations.";
}
description
"Container for MPLS specific configuration
for IS-IS.";
}
}
grouping isis-if-topologies-cfg { grouping system-counters {
description container system-counters {
"IS-IS interface topology cfg."; config false;
container metric { list level {
uses metric-cfg; key level;
container level-1 {
uses metric-cfg;
description "level-1 specific cfg";
}
container level-2 {
uses metric-cfg;
description "level-2 specific cfg";
}
description "Metric configuration.";
}
}
grouping system-counters { leaf level {
container system-counters { type level-number;
config false; description "IS-IS level.";
list level { }
key 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 IS-IS 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
"Number of times the system has attempted
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 the ID field length
than 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 {
type uint32;
description
"Number of times we ran SPF at this level.";
}
description
"List of supported levels.";
}
description
"List counters for the IS-IS protocol instance";
}
description "System counters grouping.";
}
leaf level { grouping event-counters {
type level-number; container event-counters {
description config false;
"This leaf describes the IS-IS level."; leaf adjacency-changes {
} type uint32;
leaf corrupted-lsps { description
type uint32; "The number of times an adjacency state change has
description occured on this interface.";
"Number of corrupted in-memory LSPs detected. }
LSPs received from the wire with a bad leaf adjacency-number {
checksum are silently dropped and not counted. type uint32;
LSPs received from the wire with parse errors description
are counted by lsp-errors."; "The number of adjacencies on this interface.";
} }
leaf authentication-type-fails { leaf init-fails {
type uint32; type uint32;
description description
"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.";
}
leaf adjacency-rejects {
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 has been
received on this interface with the
max area address field differing from that of
this system.";
}
leaf authentication-type-fails {
type uint32;
description
"Number of authentication type mismatches."; "Number of authentication type mismatches.";
} }
leaf authentication-fails { leaf authentication-fails {
type uint32; type uint32;
description description
"Number of authentication key failures."; "Number of authentication key failures.";
} }
leaf database-overload { leaf lan-dis-changes {
type uint32; type uint32;
description description
"Number of times the database has become "The number of times the DIS has changed on this
overloaded."; interface at this level. If the interface type is
} point-to-point,the count is zero.";
leaf own-lsp-purge { }
type uint32; description "IS-IS interface event counters.";
description }
"Number of times a zero-aged copy of the description
system's own LSP is received from some "Grouping for IS-IS interface event counters";
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
"Number of times the system has attempted
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 {
type uint32;
description
"Number of times we ran SPF at this level.";
}
description
"List of supported levels.";
}
description
"The container defines a list of counters
for the IS.";
}
description
"Grouping for system counters.";
}
grouping event-counters {
container event-counters {
config false;
leaf adjacency-changes {
type uint32;
description
"The number of times an adjacency state
change has occured on this interface.";
}
leaf adjacency-number {
type uint32;
description
"The number of adjacencies on this
interface.";
}
leaf init-fails {
type uint32;
description
"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.";
}
leaf adjacency-rejects {
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.";
}
description
"Grouping for event counters";
}
grouping packet-counters {
container packet-counters {
config false;
list level {
key level;
leaf level {
type level-number;
description
"This leaf describes the IS-IS level.";
}
container iih {
leaf in {
type uint32;
description
"Received PDUs.";
}
leaf out {
type uint32;
description
"Sent PDUs.";
}
description
"The number of IIH PDUs received/sent.";
}
container ish {
leaf in {
type uint32;
description
"Received PDUs.";
}
leaf out {
type uint32;
description
"Sent PDUs.";
}
description
"The number of ISH PDUs received/sent.";
}
container esh {
leaf in {
type uint32;
description
"Received PDUs.";
}
leaf out {
type uint32;
description
"Sent PDUs.";
}
description
"The number of ESH PDUs received/sent.";
}
container lsp {
leaf in {
type uint32;
description
"Received PDUs.";
}
leaf out {
type uint32;
description
"Sent PDUs.";
}
description
"The number of LSP PDUs received/sent.";
}
container psnp {
leaf in {
type uint32;
description
"Received PDUs.";
}
leaf out {
type uint32;
description
"Sent PDUs.";
}
description
"The number of PSNP PDUs received/sent.";
}
container csnp {
leaf in {
type uint32;
description
"Received PDUs.";
}
leaf out {
type uint32;
description
"Sent PDUs.";
}
description
"The number of CSNP PDUs received/sent.";
}
container unknown {
leaf in {
type uint32;
description
"Received PDUs.";
}
leaf out {
type uint32;
description
"Sent PDUs.";
}
description
"The number of unknown PDUs received/sent.";
}
description
"List of supported levels.";
}
description
"Provides packet counters per level.";
}
description
"Grouping for packet counters.";
}
grouping spf-log {
container spf-log {
config false;
list event {
key id;
leaf id {
type uint32;
description
"This leaf defines the event identifier.
This is a purely internal value.";
}
leaf spf-type {
type enumeration {
enum full {
description
"Computation done is a Full SPF.";
}
enum route-only {
description
"Computation done is a
reachability computation
only.";
}
}
description
"This leaf describes the type of computation
used.";
}
leaf level {
type level-number;
description
"This leaf describes the level affected by the
the computation.";
}
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
"List of computation events.
It is used as a wrapping buffer.";
}
description
"This container lists the SPF computation events.";
}
description
"Grouping for spf-log events.";
}
grouping lsp-log { grouping packet-counters {
container lsp-log { container packet-counters {
config false; config false;
list event { list level {
key id; key level;
leaf id { leaf level {
type uint32; type level-number;
description description "IS-IS level.";
"This leaf defines the event identifier. }
This is a purely internal value."; container iih {
} leaf in {
leaf level { type uint32;
type level-number; description "Received IIH PDUs.";
description }
"This leaf describes the level affected by the leaf out {
the computation."; type uint32;
} description "Sent IIH PDUs.";
container lsp { }
leaf lsp { description "Number of IIH PDUs received/sent.";
}
container ish {
leaf in {
type uint32;
description "Received ISH PDUs.";
}
leaf out {
type uint32;
description "Sent ISH PDUs.";
}
description
"ISH PDUs received/sent.";
}
container esh {
leaf in {
type uint32;
description "Received ESH PDUs.";
}
leaf out {
type uint32;
description "Sent ESH PDUs.";
}
description "Number of ESH PDUs received/sent.";
}
container lsp {
leaf in {
type uint32;
description "Received LSP PDUs.";
}
leaf out {
type uint32;
description "Sent LSP PDUs.";
}
description "Number of LSP PDUs received/sent.";
}
container psnp {
leaf in {
type uint32;
description "Received PSNP PDUs.";
}
leaf out {
type uint32;
description "Sent PSNP PDUs.";
}
description "Number of PSNP PDUs received/sent.";
}
container csnp {
leaf in {
type uint32;
description "Received CSNP PDUs.";
}
leaf out {
type uint32;
description "Sent CSNP PDUs.";
}
description "Number of CSNP PDUs received/sent.";
}
container unknown {
leaf in {
type uint32;
description "Received unknown PDUs.";
}
leaf out {
type uint32;
description "Sent unknown PDUs.";
}
description "Number of unknown PDUs received/sent.";
}
description
"List of packet counter for supported llevels.";
}
description "Packet counters per IS-IS level.";
}
description
"Grouping for per IS-IS Level packet counters.";
}
type lsp-id; grouping spf-log {
description container spf-log {
"This leaf describes the LSPID config false;
of the LSP."; list event {
} key id;
leaf sequence {
type uint32;
description
"This leaf describes the sequence
number of the LSP.";
}
description
"This container describes the received LSP
, in case of local LSP update the local
LSP ID is referenced.";
}
leaf received-timestamp { leaf id {
type yang:timestamp; type uint32;
description
"Event identifier - purely internal value.";
}
leaf spf-type {
type enumeration {
enum full {
description "Full SPF computation.";
}
enum route-only {
description
"Route reachability only SPF computation";
}
}
description "Type of SPF computation performed.";
}
leaf level {
type level-number;
description
"IS-IS level number for SPF computation";
}
leaf schedule-timestamp {
type yang:timestamp;
description
"Timestamp of when the SPF computation was
scheduled.";
}
leaf start-timestamp {
type yang:timestamp;
description
"Timestamp of when the SPF computation started.";
}
leaf end-timestamp {
type yang:timestamp;
description
"Timestamp of when the SPF computation ended.";
}
list trigger-lsp {
key "lsp";
leaf lsp {
type lsp-id;
description
"LSPID of the LSP triggering SPF computation.";
}
leaf sequence {
type uint32;
description
"Sequence number of the LSP triggering SPF
computation";
}
description
"This list includes the LSPs that triggered the
SPF computation.";
description }
"This leaf describes the timestamp description
when the LSP was received. In case of "List of computation events - implemented as a
local LSP update, the timestamp refers wrapping buffer.";
to the local LSP update time."; }
}
leaf change { description
type identityref { "This container lists the SPF computation events.";
base lsp-log-reason; }
} description "Grouping for spf-log events.";
description }
"This leaf describes the type of change
in the LSP.";
}
description grouping lsp-log {
"List of LSP events. container lsp-log {
It is used as a wrapping buffer."; config false;
} list event {
key id;
description leaf id {
"This container lists the LSP reception events. type uint32;
Local LSP modification are also contained in the description
list."; "Event identifier - purely internal value.";
} }
description leaf level {
"Grouping for LSP log."; type level-number;
} description
"IS-IS level number for LSP";
}
container lsp {
leaf lsp {
grouping hostname-db { type lsp-id;
container hostnames { description
config false; "LSPID of the LSP.";
list hostname { }
key system-id; leaf sequence {
leaf system-id { type uint32;
type system-id; description
description "Sequence number of the LSP.";
"This leaf describes the system-id }
associated with the hostname."; description
} "LSP identification container - either the received
leaf hostname { LSP or the locally generated LSP.";
type string; }
description
"This leaf describes the hostname
associated with the system ID.";
}
description
"List of system-id/hostname associations";
}
description
"This container describes the list
of binding between system-id and
hostnames.";
}
description
"Grouping for hostname to systemid mapping database.";
}
/* Groupings for the LSDB description */ leaf received-timestamp {
type yang:timestamp;
description
"Timestamp of when the LSP was received. In case
of local LSP update, the timestamp refers to the
local LSP update time.";
}
grouping prefix-reachability-attributes { leaf change {
description type identityref {
"This group defines extended reachability attributes of an base lsp-log-reason;
IPv4 or IPv6 prefix."; }
description "Type of LSP change.";
}
leaf external-prefix-flag { description
type boolean; "List of LSP events - implemented as a
description wrapping buffer.";
"External prefix flag."; }
}
leaf readvertisement-flag {
type boolean;
description
"Readvertisement flag.";
}
leaf node-flag {
type boolean;
description
"Node flag.";
}
}
grouping prefix-ipv4-source-router-id { description
description "LSP reception and local LSP origination events
"This group defines the IPv4 source router ID of container.";
a prefix advertisement.";
leaf ipv4-source-router-id { } description "Grouping for LSP log.";
type inet:ipv4-address; }
description
"IPv4 Source router ID address.";
}
}
grouping prefix-ipv6-source-router-id { grouping hostname-db {
description container hostnames {
"This group defines the IPv6 source router ID of config false;
a prefix advertisement."; list hostname {
key system-id;
leaf system-id {
type system-id;
description
"System-id associated with the hostname.";
}
leaf hostname {
type string;
description
"Hostname associated with the system ID.";
}
description
"List of system-id/hostname associations.";
}
description
"Hostname to system-id mapping database.";
}
description
"Grouping for hostname to system-id mapping database.";
leaf ipv6-source-router-id { }
type inet:ipv6-address;
description
"IPv6 Source router ID address.";
}
}
grouping prefix-attributes-extension { /* Groupings for the LSDB description */
description
"Prefix extended attributes.";
uses prefix-reachability-attributes; grouping prefix-reachability-attributes {
uses prefix-ipv4-source-router-id; description
uses prefix-ipv6-source-router-id; "Grouping for extended reachability attributes of an
} IPv4 or IPv6 prefix.";
grouping prefix-ipv4-std { leaf external-prefix-flag {
description type boolean;
"This group defines attributes of an description "External prefix flag.";
IPv4 standard prefix."; }
leaf up-down { leaf readvertisement-flag {
type boolean; type boolean;
description description "Readvertisement flag.";
"This leaf expresses the value of up/down bit."; }
} leaf node-flag {
leaf i-e { type boolean;
type boolean; description "Node flag.";
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 IS-IS default metric value";
}
container delay-metric {
leaf metric {
type std-metric;
description
"This leaf describes the IS-IS delay metric value";
}
leaf supported {
type boolean;
default "false";
description
"This leaf describes if the metric is supported.";
}
description grouping prefix-ipv4-source-router-id {
"This container defines the IS-IS delay metric."; description
} "Grouping for the IPv4 source router ID of a prefix
container expense-metric { advertisement.";
leaf metric {
type std-metric;
description
"This leaf describes the IS-IS expense metric value";
}
leaf supported {
type boolean;
default "false";
description
"This leaf describes if the metric is supported.";
}
description
"This container defines the IS-IS expense metric.";
} leaf ipv4-source-router-id {
container error-metric { type inet:ipv4-address;
leaf metric { description "IPv4 Source router ID address.";
type std-metric; }
description }
"This leaf describes the IS-IS error metric value";
}
leaf supported {
type boolean;
default "false";
description
"This leaf describes if the metric is supported.";
}
description grouping prefix-ipv6-source-router-id {
"This container defines the IS-IS error metric."; description
} "Grouping for the IPv6 source router ID of a prefix
} advertisement.";
grouping prefix-ipv4-extended { leaf ipv6-source-router-id {
description type inet:ipv6-address;
"This group defines attributes of an description "IPv6 Source router ID address.";
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 { grouping prefix-attributes-extension {
type wide-metric; description "Prefix extended attributes.";
description uses prefix-reachability-attributes;
"This leaf describes the IS-IS metric value"; uses prefix-ipv4-source-router-id;
} uses prefix-ipv6-source-router-id;
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-ipv4-std {
description description
"This group defines attributes of an "Grouping for attributes of an IPv4 standard prefix.";
IPv6 prefix."; leaf up-down {
leaf up-down { type boolean;
type boolean; description "Value of up/down bit.";
description }
"This leaf expresses the value of up/down bit."; leaf i-e {
} type boolean;
leaf ip-prefix { description "Value of I/E bit.";
type inet:ipv6-address; }
description leaf ip-prefix {
"This leaf describes the IPv6 prefix"; type inet:ipv4-address;
} description "IPv4 prefix address";
leaf prefix-len { }
type uint8; leaf prefix-len {
description type uint8;
"This leaf describes the IPv4 prefix len in bits"; description "IPv4 prefix length (in bits)";
} }
leaf metric { leaf default-metric {
type wide-metric; type std-metric;
description description "Default IS-IS metric for IPv4 prefix";
"This leaf describes the IS-IS metric value"; }
} container delay-metric {
leaf-list tag { leaf metric {
type uint32; type std-metric;
description description "IS-IS delay metric for IPv4 prefix";
"This leaf describes a list of tags associated with }
the prefix."; leaf supported {
} type boolean;
leaf-list tag64 { default "false";
type uint64; description
description "Indicates whether IS-IS delay metric is supported.";
"This leaf describes a list of 64-bit tags associated with }
the prefix."; description "IS-IS delay metric container.";
} }
uses prefix-attributes-extension; container expense-metric {
leaf metric {
type std-metric;
description "IS-IS expense metric for IPv4 prefix";
}
leaf supported {
type boolean;
default "false";
description
"Indicates whether IS-IS delay metric is supported.";
}
description "IS-IS expense metric container.";
}
container error-metric {
leaf metric {
type std-metric;
description
"This leaf describes the IS-IS error metric value";
}
leaf supported {
type boolean;
default "false";
description "IS-IS error metric for IPv4 prefix";
}
description "IS-IS error metric container.";
}
}
} grouping prefix-ipv4-extended {
description
"Grouping for attributes of an IPv4 extended prefix.";
leaf up-down {
type boolean;
description "Value of up/down bit.";
}
leaf ip-prefix {
type inet:ipv4-address;
description "IPv4 prefix address";
}
leaf prefix-len {
type uint8;
description "IPv4 prefix length (in bits)";
}
grouping neighbor-extended { leaf metric {
description type wide-metric;
"This group defines attributes of an description "IS-IS wide metric value";
IS-IS extended neighbor."; }
leaf neighbor-id { leaf-list tag {
type system-id; type uint32;
description description
"This leaf describes the system-id of the neighbor."; "List of 32-bit tags associated with the IPv4 prefix.";
} }
leaf metric { leaf-list tag64 {
type wide-metric; type uint64;
description description
"This leaf describes the IS-IS metric value"; "List of 32-bit tags associated with the IPv4 prefix.";
} }
} uses prefix-attributes-extension;
}
grouping neighbor { grouping prefix-ipv6-extended {
description description "Grouping for attributes of an IPv6 prefix.";
"This group defines attributes of an leaf up-down {
IS-IS standard neighbor."; type boolean;
leaf neighbor-id { description "Value of up/down bit.";
type system-id; }
description leaf ip-prefix {
"This leaf describes the system-id of the neighbor."; type inet:ipv6-address;
} description "IPv6 prefix address";
leaf i-e { }
type boolean; leaf prefix-len {
description type uint8;
"This leaf expresses the value of I/E bit."; description "IPv4 prefix length (in bits)";
} }
leaf default-metric { leaf metric {
type std-metric; type wide-metric;
description description "IS-IS wide metric value";
"This leaf describes the IS-IS default metric value"; }
} leaf-list tag {
container delay-metric { type uint32;
leaf metric { description
type std-metric; "List of 32-bit tags associated with the IPv4 prefix.";
description }
"This leaf describes the IS-IS delay metric value"; leaf-list tag64 {
} type uint64;
leaf supported { description
type boolean; "List of 32-bit tags associated with the IPv4 prefix.";
default "false"; }
description uses prefix-attributes-extension;
"This leaf describes if the metric is supported."; }
} grouping neighbor-extended {
description description
"This container defines the IS-IS delay metric."; "Grouping for attributes of an IS-IS extended neighbor.";
} leaf neighbor-id {
container expense-metric { type system-id;
leaf metric { description "System-id of the extended neighbor.";
type std-metric; }
description leaf metric {
"This leaf describes the IS-IS delay expense value"; type wide-metric;
} description "IS-IS wide metric for extended neighbor";
leaf supported { }
type boolean;
default "false";
description
"This leaf describes if the metric is supported.";
}
description
"This container defines the IS-IS expense metric.";
}
container error-metric {
leaf metric {
type std-metric;
description
"This leaf describes the IS-IS error metric value";
}
leaf supported {
type boolean;
default "false";
description
"This leaf describes if the metric is supported.";
}
description
"This container defines the IS-IS error metric.";
}
}
grouping lsp-entry { }
description
"This group defines attributes of an
IS-IS LSP database entry.";
leaf decoded-completed { grouping neighbor {
type boolean; description "IS-IS standard neighbor grouping.";
description leaf neighbor-id {
"The IS-IS body is fully decoded."; type system-id;
} description "IS-IS neighbor system-id";
leaf raw-data { }
type yang:hex-string; leaf i-e {
description type boolean;
"The complete LSP in network byte description
order hexadecimal as received or originated."; "Internal or External (I/E) Metric bit value";
} }
leaf lsp-id { leaf default-metric {
type lsp-id; type std-metric;
description description "IS-IS default metric value";
"This leaf describes the LSP ID of the LSP."; }
} container delay-metric {
leaf checksum { leaf metric {
type uint16; type std-metric;
description description "IS-IS delay metric value";
"This leaf describes the checksum of the LSP."; }
} leaf supported {
leaf remaining-lifetime { type boolean;
type uint16; default "false";
units "seconds"; description "IS-IS delay metric supported";
description }
"This leaf describes the remaining lifetime description "IS-IS delay metric container";
in seconds before the LSP expiration."; }
} container expense-metric {
leaf sequence { leaf metric {
type uint32; type std-metric;
description description "IS-IS delay expense metric value";
"This leaf describes the sequence number of the LSP."; }
} leaf supported {
leaf attributes { type boolean;
type bits { default "false";
bit PARTITIONNED { description "IS-IS delay expense metric supported";
description }
"If set, the originator supports partition description "IS-IS delay expense metric container";
repair."; }
} container error-metric {
bit ATTACHED-ERROR { leaf metric {
description type std-metric;
"If set, the originator is attached to description "IS-IS error metric value";
another area using the referred metric."; }
} leaf supported {
bit ATTACHED-EXPENSE { type boolean;
description default "false";
"If set, the originator is attached to description "IS-IS error metric supported";
another area using the referred metric."; }
} description "IS-IS error metric container";
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.";
}
}
description
"This leaf describes attributes of the LSP.";
}
leaf-list ipv4-addresses { grouping lsp-entry {
type inet:ipv4-address; description "IS-IS LSP database entry groupting";
description
"This leaf describes the IPv4 addresses of the node.
IS-IS reference is TLV 132.";
}
leaf-list ipv6-addresses { leaf decoded-completed {
type inet:ipv6-address; type boolean;
description description "IS-IS LSP body fully decoded.";
"This leaf describes the IPv6 interface }
addresses of the node. leaf raw-data {
IS-IS reference is TLV 232."; type yang:hex-string;
} description
"The hexadecial representation of the complete LSP in
network-byte order (NBO) as received or originated.";
}
leaf lsp-id {
type lsp-id;
description "LSP ID of the LSP";
}
leaf checksum {
type uint16;
description "LSP checksum";
}
leaf remaining-lifetime {
type uint16;
units "seconds";
description
"Remaining lifetime (in seconds) until LSP expiration.";
}
leaf sequence {
type uint32;
description
"This leaf describes the sequence number of the LSP.";
}
leaf attributes {
type bits {
bit partitioned {
description "Originator partition repair supported";
}
bit attached-error {
description
"If set, the originator is attached to
another area using the referred metric.";
leaf ipv4-te-routerid { }
type inet:ipv4-address; bit attached-expense {
description description
"This leaf describes the IPv4 Traffic Engineering "If set, the originator is attached to
router ID of the node. another area using the referred metric.";
IS-IS reference is TLV 134."; }
} 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.";
}
}
description "LSP attributes";
}
leaf ipv6-te-routerid { leaf-list ipv4-addresses {
type inet:ipv6-address; type inet:ipv4-address;
description description
"This leaf describes the IPv6 Traffic Engineering "List of IPv4 addresses of the IS-IS node - IS-IS
router ID of the node. reference is TLV 132.";
IS-IS reference is TLV 140."; }
}
leaf-list protocol-supported { leaf-list ipv6-addresses {
type uint8; type inet:ipv6-address;
description description
"This leaf describes the list of "List of IPv6 addresses of the IS-IS node - IS-IS
supported protocols. reference is TLV 232.";
IS-IS reference is TLV 129."; }
}
leaf dynamic-hostname { leaf ipv4-te-routerid {
type string; type inet:ipv4-address;
description description
"This leaf describes the name of the node. "IPv4 Traffic Engineering router ID of the IS-IS node -
IS-IS reference is TLV 137."; IS-IS reference is TLV 134.";
} }
container authentication { leaf ipv6-te-routerid {
leaf authentication-type { type inet:ipv6-address;
type string; description
description "IPv6 Traffic Engineering router ID of the IS-IS node -
"This leaf describes the authentication type IS-IS reference is TLV 140.";
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. IS-IS reference is TLV 10.";
}
container mt-entries { leaf-list protocol-supported {
list topology { type uint8;
description
"List of supported protocols of the IS-IS node -
IS-IS reference is TLV 129.";
}
leaf MT-ID { leaf dynamic-hostname {
type uint16 { type string;
range "0 .. 4095"; description
} "Host Name of the IS-IS node - IS-IS reference
description is TLV 137.";
"This leaf defines the identifier }
of a topology.";
}
leaf attributes { container authentication {
type bits { leaf authentication-type {
bit OVERLOAD { type string;
description description
"If set, the originator is overloaded, "Authentication type to be used with IS-IS node.";
and must be avoided in path }
calculation."; leaf authentication-key {
} type string;
bit ATTACHED { description
description "Authentication keyto be used. For security reasons,
"If set, the originator is attached to the authentication key MUST NOT be presented in
another area using the referred metric."; plaintext format. It is recommended to use an MD5
} hash to present the authentication-key.";
} }
description description
"This leaf describes attributes of the LSP "IS-IS node authentication information container -
for the associated topology."; IS-IS reference is TLV 10.";
} }
description
"List of topologies supported.";
}
description
"This container describes the topology supported.
IS-IS reference is TLV 229.";
}
list router-capabilities { container mt-entries {
leaf flags { list topology {
type bits { description
bit flooding { "List of topologies supported";
position 0;
description
"If the S bit is set(1),
the IS-IS Router CAPABILITY TLV
MUST be flooded across the entire routing domain.
If the S bit is
not set(0), the TLV MUST NOT be leaked between levels.
This bit MUST NOT be altered during the TLV leaking.";
}
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.
";
}
} leaf MT-ID {
description type uint16 {
"Flags associated with router capability."; range "0 .. 4095";
} }
container node-tags { description
if-feature node-tag; "Multi-Topolgoy identifier of topology.";
list node-tag { }
leaf tag {
type uint32;
description
"Node tag value.";
}
description
"List of tags.";
}
description
"Container for node tags.";
}
leaf binary { leaf attributes {
type binary; type bits {
description bit overload {
"This leaf describes the capability of the node. description
Format is binary according to the protocol encoding."; "If set, the originator is overloaded,
} and must be avoided in path calculation.";
description }
"This container describes the capabilities of the node. bit attached {
This container may be extended with detailed description
information. "If set, the originator is attached to
IS-IS reference is TLV 242."; another area using the referred metric.";
} }
}
description
"Attributes of the LSP for the associated
topology.";
}
}
description
"IS-IS node topology information container -
IS-IS reference is TLV 229.";
}
container is-neighbor { list router-capabilities {
list neighbor { leaf flags {
uses neighbor; type bits {
description bit flooding {
"List of neighbors."; position 0;
} description
description "If the S bit is set, the IS-IS Router CAPABILITY
"This leaf describes list of IS-IS neighbors. TLV MUST be flooded across the entire routing
IS-IS reference is TLV 2."; domain. If the S bit is clear, 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 in to prevent
TLV looping.";
}
container extended-is-neighbor { }
list neighbor { description "Router Capability Flags";
uses neighbor-extended; }
description container node-tags {
"List of neighbors."; if-feature node-tag;
list node-tag {
leaf tag {
type uint32;
description "Node tag value.";
}
description "List of tags.";
}
description "Node Tag container";
}
} leaf binary {
description type binary;
"This container describes list of IS-IS extended description
neighbors. "Binary encoding of the IS-IS node capabilities";
IS-IS reference is TLV 22."; }
} description
"IS-IS node capabilities container. This container may
be extended with detailed information - IS-IS
reference is TLV 242.";
}
container ipv4-internal-reachability { container is-neighbor {
list prefixes { list neighbor {
uses prefix-ipv4-std; uses neighbor;
description description "List of neighbors.";
"List of prefixes."; }
} description
description "Standard IS neighbors container - IS-IS reference is
"This container describes list of IPv4 internal TLV 2.";
reachability information. }
IS-IS reference is TLV 128.";
}
container ipv4-external-reachability { container extended-is-neighbor {
list prefixes { list neighbor {
uses prefix-ipv4-std; uses neighbor-extended;
description description
"List of prefixes."; "List of extended IS neighbors";
} }
description description
"This container describes list of IPv4 external "Standard IS extended neighbors container - IS-IS
reachability information. reference is TLV 22";
IS-IS reference is TLV 130."; }
}
container extended-ipv4-reachability { container ipv4-internal-reachability {
list prefixes { list prefixes {
uses prefix-ipv4-extended; uses prefix-ipv4-std;
description description "List of prefixes.";
"List of prefixes."; }
} description
description "IPv4 internal reachability information container - IS-IS
"This container describes list of IPv4 extended reference is TLV 128.";
reachability information. }
IS-IS reference is TLV 135.";
}
container mt-is-neighbor { container ipv4-external-reachability {
list neighbor { list prefixes {
leaf MT-ID { uses prefix-ipv4-std;
type uint16 { description "List of prefixes.";
range "0 .. 4095"; }
description
"IPv4 external reachability information container -
IS-IS reference is TLV 130.";
}
} container extended-ipv4-reachability {
description list prefixes {
"This leaf defines the identifier uses prefix-ipv4-extended;
of a topology."; description "List of prefixes.";
} }
uses neighbor-extended; description
description "IPv4 extended reachability information container -
"List of neighbors."; IS-IS reference is TLV 135.";
} }
description
"This container describes list of IS-IS multi-topology
neighbors.
IS-IS reference is TLV 223.";
}
container mt-extended-ipv4-reachability { container mt-is-neighbor {
list prefixes { list neighbor {
leaf MT-ID { leaf mt-id {
type uint16 { type uint16 {
range "0 .. 4095"; range "0 .. 4095";
} }
description description "Multi-topology (MT) identifier";
"This leaf defines the identifier }
of a topology."; uses neighbor-extended;
} description "List of neighbors.";
uses prefix-ipv4-extended; }
description description
"List of prefixes."; "IS-IS multi-topology neighbor container - IS-IS
reference is TLV 223.";
}
} container mt-extended-ipv4-reachability {
description list prefixes {
"This container describes list of IPv4 leaf mt-id {
reachability information in multi-topology type uint16 {
environment. range "0 .. 4095";
IS-IS reference is TLV 235."; }
} description "Multi-topology (MT) identifier";
}
uses prefix-ipv4-extended;
description "List of extended prefixes.";
}
description
"IPv4 multi-topolgy (MT) extended reachability
information container - IS-IS 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 description "Multi-topology (MT) identifier";
"This leaf defines the identifier }
of a topology."; uses prefix-ipv6-extended;
} description "List of IPv6 extended prefixes.";
uses prefix-ipv6-extended; }
description description
"List of prefixes."; "IPv6 multi-topolgy (MT) extended reachability
} information container - IS-IS reference is TLV 237.";
description }
"This container describes list of IPv6
reachability information in multi-topology
environment.
IS-IS reference is TLV 237.";
}
container ipv6-reachability { container ipv6-reachability {
list prefixes { list prefixes {
uses prefix-ipv6-extended; uses prefix-ipv6-extended;
description description "List of IPv6 prefixes.";
"List of prefixes."; }
} description
description "IPv6 reachability information container - IS-IS
"This container describes list of IPv6 reference is TLV 236.";
reachability information. }
IS-IS reference is TLV 236."; }
}
}
grouping lsdb { grouping lsdb {
container database { description "Link State Database (LSDB) grouping";
config false; container database {
list level-db { config false;
key level; list level-db {
key level;
leaf level { leaf level {
type level-number; type level-number;
description description "LSDB level number (1 or 2)";
"Current level number"; }
} list lsp {
list lsp { key lsp-id;
key lsp-id; uses lsp-entry;
uses lsp-entry; description "List of LSPs in LSDB";
description }
"List of LSPs in LSDB."; description "LSP list for LSDB level container";
} }
description description "IS-IS Link State database container";
"This container describes the list of LSPs }
in the level x database."; }
}
description
"This container describes IS-IS Link State
databases.";
}
description
"Grouping for LSDB description.";
}
/* Augmentations */ /* Augmentations */
augment "/rt:routing/" augment "/rt:routing/"
+"rt:ribs/rt:rib/rt:routes/rt:route" { +"rt:ribs/rt:rib/rt:routes/rt:route" {
when "rt:source-protocol = 'isis:isis'" { when "rt:source-protocol = 'isis:isis'" {
description "IS-IS-specific route attributes."; description "IS-IS-specific route attributes.";
} }
uses route-content; uses route-content;
description description
"This augments route object in RIB with IS-IS-specific "This augments route object in RIB with IS-IS-specific
attributes."; attributes.";
} }
augment "/if:interfaces/if:interface" { augment "/if:interfaces/if:interface" {
leaf clns-mtu { leaf clns-mtu {
type uint16; type uint16;
description description "CLNS MTU of the interface";
"Defines CLNS MTU of the interface."; }
} description "ISO interface config.";
description "ISO interface config."; }
}
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+"rt:control-plane-protocol" { +"rt:control-plane-protocol" {
when "rt:type = 'isis:isis'" { when "rt:type = 'isis:isis'" {
description description
"This augment is only valid when routing protocol "This augment is only valid when routing protocol
instance type is isis."; instance type is 'isis'";
} }
description description
"This augments a routing protocol instance with IS-IS "This augments a routing protocol instance with IS-IS
specific parameters."; specific parameters.";
container isis { container isis {
must "count(area-address) > 0" { must "count(area-address) > 0" {
error-message "At least one area-address error-message
must be configured."; "At least one area-address must be configured.";
description description
"Enforce configuration of at least one area."; "Enforce configuration of at least one area.";
} }
uses isis-global-cfg;
container fast-reroute { uses isis-global-cfg;
container fast-reroute {
if-feature fast-reroute; if-feature fast-reroute;
uses fast-reroute-global-cfg; uses fast-reroute-global-cfg;
uses fast-reroute-global-state; uses fast-reroute-global-state;
description description
"IPFRR."; "IP Fast ReRoute (IPFRR) global container";
} }
container spf-control { container spf-control {
container ietf-spf-delay { container ietf-spf-delay {
if-feature ietf-spf-delay; if-feature ietf-spf-delay;
uses ietf-spf-delay-cfg; uses ietf-spf-delay-cfg;
uses ietf-spf-delay-state; uses ietf-spf-delay-state;
description description "IETF SPF delay algorithm container";
"IETF spf delay algorithm configuration."; }
} description
description "SPF computation-related information container";
"Container for all SPF computation related }
operations."; container topologies {
} if-feature multi-topology;
container topologies { list topology {
if-feature multi-topology; key "name";
list topology { leaf enable {
key "name"; type boolean;
leaf enable { description "Topology enable configuration";
type boolean; }
description leaf name {
"Control enabling of topologies"; type leafref {
} path "../../../../../../rt:ribs/rt:rib/rt:name";
leaf name { }
type leafref { description
path "../../../../../../rt:ribs/rt:rib/rt:name"; "Routing Information Base (RIB) corresponding
} to topology.";
}
description "RIB";
}
uses isis-global-topologies-cfg; uses isis-global-topologies-cfg;
description description "List of topologies";
"List of topologies"; }
} description "Multi-topology container";
description }
"Container for multi-topology"; container interfaces {
} list interface {
container interfaces { key "name";
list interface { leaf name {
key "name"; type if:interface-ref;
leaf name {
type if:interface-ref;
description description
"Reference to the interface within "Reference to the interface within
the routing-instance."; the routing-instance.";
} }
uses isis-if-cfg; uses isis-if-cfg;
container fast-reroute { container fast-reroute {
if-feature fast-reroute; if-feature fast-reroute;
uses fast-reroute-if-cfg; uses fast-reroute-if-cfg;
description description
"IPFRR."; "IP Fast ReRoute (IPFRR) interface container";
} }
container topologies { container topologies {
if-feature multi-topology; if-feature multi-topology;
list topology { list topology {
key name; key name;
leaf name { leaf name {
type leafref { type leafref {
path "../../../../../../../../"+ path "../../../../../../../../"+
"rt:ribs/rt:rib/rt:name"; "rt:ribs/rt:rib/rt:name";
} }
description description
"Name of RIB."; "Routing Information Base (RIB) corresponding
} to topology.";
uses isis-if-topologies-cfg; }
description uses isis-if-topologies-cfg;
"List of topologies."; description "List of interface topologies";
} }
description description "Multi-topology container";
"Container for multi-topology"; }
} uses adjacency-state;
uses adjacency-state; uses event-counters;
uses event-counters; uses packet-counters;
uses packet-counters; description "List of IS-IS interfaces.";
description }
"List of IS-IS interfaces."; description
} "IS-IS interface specific configuration container";
description
"This container defines IS-IS interface specific
configuration objects.";
} }
uses spf-log; uses spf-log;
uses lsp-log; uses lsp-log;
uses hostname-db; uses hostname-db;
uses lsdb; uses lsdb;
uses local-rib; uses local-rib;
uses system-counters; uses system-counters;
description description
"This container defines IS-IS specific configuration "IS-IS configuration/state top-level container";
objects."; }
} }
}
/* RPC methods */
rpc clear-adjacency {
description
"This RPC request clears a particular
set of IS-IS adjacencies. If the operation
fails for IS-IS internal reason, then
error-tag and error-app-tag should be set
to a meaningful value.";
input {
leaf routing-protocol-instance-name {
type instance-state-ref;
mandatory "true";
description
"Name of the IS-IS protocol instance whose IS-IS
information is being queried.
If the IS-IS instance with name equal to the /* RPC methods */
value of this parameter doesn't exist, then this
operation SHALL fail with error-tag 'data-missing'
and error-app-tag
'routing-protocol-instance-not-found'.";
}
leaf level {
type level;
description
"IS-IS level of the adjacency to be cleared.
If IS-IS level is level-1-2, both level 1 and level 2
adjacencies would be cleared.
If the value provided is different from the one rpc clear-adjacency {
authorized in the enum type, then this description
operation SHALL fail with error-tag 'data-missing' "This RPC request clears a particular set of IS-IS
and error-app-tag adjacencies. If the operation fails due to an internal
'bad-isis-level'. reason, then the error-tag and error-app-tag should be
"; set indicating the reason for the failure.";
input {
} leaf routing-protocol-instance-name {
leaf interface { type instance-state-ref;
type string; mandatory "true";
description description
"Name of the IS-IS interface. "Name of the IS-IS protocol instance whose IS-IS
information is being queried.
If the IS-IS interface with name equal to the If the corresponding IS-IS instance doesn't exist,
value of this parameter doesn't exist, then this then the operation will fail with an error-tag of
operation SHALL fail with error-tag 'data-missing' 'data-missing' and an error-app-tag of
and error-app-tag 'routing-protocol-instance-not-found'.";
'isis-interface-not-found'."; }
} leaf level {
} type level;
} description
"IS-IS level of the adjacency to be cleared. If the
IS-IS level is level-1-2, both level 1 and level 2
adjacencies would be cleared.
rpc clear-database { If the value provided is different from the one
description authorized in the enum type, then the operation
"This RPC request clears a particular SHALL fail with an error-tag of 'data-missing' and
IS-IS database. If the operation an error-app-tag of 'bad-isis-level'.";
fails for IS-IS internal reason, then }
error-tag and error-app-tag should be set leaf interface {
to a meaningful value."; type string;
input { description
leaf routing-protocol-instance-name { "IS-IS interface name.
type instance-state-ref;
mandatory "true";
description
"Name of the IS-IS protocol instance whose IS-IS
information is being queried.
If the IS-IS instance with name equal to the If the corresponding IS-IS interface doesn't exist,
value of this parameter doesn't exist, then this then the operation SHALL fail with an error-tag of
operation SHALL fail with error-tag 'data-missing' 'data-missing' and an error-app-tag of
and error-app-tag 'isis-interface-not-found'.";
'routing-protocol-instance-not-found'."; }
} }
leaf level { }
type level;
description
"IS-IS level of the adjacency to be cleared.
If IS-IS level is level-1-2, both level 1 and level 2
adjacencies would be cleared.
If the value provided is different from the one rpc clear-database {
authorized in the enum type, then this description
operation SHALL fail with error-tag 'data-missing' "This RPC request clears a particular IS-IS database. If
and error-app-tag the operation fails for an IS-IS internal reason, then
'bad-isis-level'. the error-tag and error-app-tag should be set
indicating the reason for the failure.";
input {
leaf routing-protocol-instance-name {
type instance-state-ref;
mandatory "true";
description
"Name of the IS-IS protocol instance whose IS-IS
database(s) is/are being cleard.
"; If the corresponding IS-IS instance doesn't exist,
} then the operation will fail with an error-tag of
} 'data-missing' and an error-app-tag of
} 'routing-protocol-instance-not-found'.";
}
leaf level {
type level;
description
"IS-IS level of the adjacency to be cleared. If the
IS-IS level is level-1-2, both level 1 and level 2
databases would be cleared.
/* Notifications */ If the value provided is different from the one
authorized in the enum type, then the operation
SHALL fail with an error-tag of 'data-missing' and
an error-app-tag of 'bad-isis-level'.";
}
}
}
notification database-overload { /* Notifications */
uses notification-instance-hdr; notification database-overload {
uses notification-instance-hdr;
leaf overload { leaf overload {
type enumeration { type enumeration {
enum "off" { enum off {
description description
"The system has left overload condition."; "Indicates IS-IS instance has left overload state";
} }
enum "on" { enum on {
description description
"The system is in overload condition."; "Indicates IS-IS instance has entered overload state";
} }
} }
description description "New overload state of the IS-IS instance";
"Describes the new overload state of the instance."; }
} description
description "This notification is sent when an IS-IS instance
"This notification is sent when an IS-IS instance overload state changes.";
overload 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 LSP PDU";
"Size of the PDU"; }
} leaf lsp-id {
leaf lsp-id { type lsp-id;
type lsp-id; description "LSP ID";
description }
"LSP ID."; description
} "This notification is sent when we attempt to propagate
description an LSP that is larger than the dataLinkBlockSize for the
"This notification is sent when we attempt circuit. The notification generation must be throttled
to propagate an LSP that is larger than the with at least 5 seconds betweeen successive
dataLinkBlockSize for the circuit. notifications.";
The notification generation must be throttled }
with at least a 5 second gap.
";
}
notification if-state-change { notification if-state-change {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf state { leaf state {
type if-state-type; type if-state-type;
description "Interface state."; description "Interface state.";
} }
description description
"This notification is sent when an interface "This notification is sent when an interface
state change is detected."; state change is detected.";
} }
notification corrupted-lsp-detected { notification corrupted-lsp-detected {
uses notification-instance-hdr; uses notification-instance-hdr;
leaf lsp-id { leaf lsp-id {
type lsp-id; type lsp-id;
description description "LSP ID";
"LSP ID."; }
} description
description "This notification is sent when we find that
"This notification is sent when we find an LSP that was stored in memory has become
that an LSP that was stored in memory has corrupted.";
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 description "LSP ID";
"LSP ID."; }
} description
description "This notification is sent when the system
"This notification is sent when the system wraps the 32-bit sequence counter of an LSP.";
wraps the 32-bit sequence counter of an LSP. }
";
}
notification id-len-mismatch { notification id-len-mismatch {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf pdu-field-len { leaf pdu-field-len {
type uint8; type uint8;
description 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 PDU.";
description }
"Received raw PDU."; description
} "This notification is sent when we receive a PDU
description with a different value for the System ID length.
"This notification is sent when we receive a PDU The notification generation must be throttled
with a different value for the System ID length. with at least 5 seconds betweeen successive
The notification generation must be throttled notifications.";
with at least a 5 second gap.
";
}
notification max-area-addresses-mismatch { }
uses notification-instance-hdr;
uses notification-interface-hdr;
leaf max-area-addresses { notification max-area-addresses-mismatch {
type uint8; uses notification-instance-hdr;
description uses notification-interface-hdr;
"Received number of supported areas";
}
leaf raw-pdu {
type binary;
description
"Received raw PDU.";
}
description
"This notification is sent when we receive a PDU
with a different value for the Maximum Area Addresses.
The notification generation must be throttled
with at least a 5 second gap.
";
}
notification own-lsp-purge { leaf max-area-addresses {
uses notification-instance-hdr; type uint8;
uses notification-interface-hdr; description "Received number of supported areas";
leaf lsp-id { }
type lsp-id; leaf raw-pdu {
description type binary;
"LSP ID."; description "Received raw PDU.";
} }
description description
"This notification is sent when the system "This notification is sent when we receive a PDU
receives a PDU with its own system ID and zero age. with a different value for the Maximum Area Addresses.
"; The notification generation must be throttled
} with at least 5 seconds betweeen successive
notifications.";
}
notification sequence-number-skipped { notification own-lsp-purge {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf lsp-id { leaf lsp-id {
type lsp-id; type lsp-id;
description description "LSP ID";
"LSP ID."; }
} description
description "This notification is sent when the system receives
"This notification is sent when the system a PDU with its own system ID and zero age.";
receives a PDU with its own system ID and }
different contents. The system has to reissue
the LSP with a higher sequence number.
";
}
notification authentication-type-failure { notification sequence-number-skipped {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf raw-pdu { leaf lsp-id {
type binary; type lsp-id;
description description "LSP ID";
"Received raw PDU."; }
} description
description "This notification is sent when the system receives a
"This notification is sent when the system PDU with its own system ID and different contents. The
receives a PDU with the wrong authentication type system has to reoriginate the LSP with a higher sequence
field. number.";
The notification generation must be throttled with }
at least a 5 second gap. notification authentication-type-failure {
"; uses notification-instance-hdr;
} uses notification-interface-hdr;
leaf raw-pdu {
type binary;
description "Received raw PDU.";
}
description
"This notification is sent when the system receives a
PDU with the wrong authentication type field.
The notification generation must be throttled
with at least 5 seconds betweeen successive
notifications.";
}
notification authentication-failure { notification authentication-failure {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf raw-pdu { leaf raw-pdu {
type binary; type binary;
description description "Received raw PDU.";
"Received raw PDU."; }
description
"This notification is sent when the system receives
a PDU with the wrong authentication information.
The notification generation must be throttled with
with at least 5 seconds betweeen successive
notifications.";
}
} notification version-skew {
description uses notification-instance-hdr;
"This notification is sent when the system uses notification-interface-hdr;
receives a PDU with the wrong authentication leaf protocol-version {
information. type uint8;
The notification generation must be throttled with description "Protocol version received in the PDU.";
at least a 5 second gap. }
"; leaf raw-pdu {
} type binary;
description "Received raw PDU.";
}
description
"This notification is sent when the system receives a
PDU with a different protocol version number.
The notification generation must be throttled
with at least 5 seconds betweeen successive
notifications.";
}
notification area-mismatch {
uses notification-instance-hdr;
uses notification-interface-hdr;
leaf raw-pdu {
type binary;
description "Received raw PDU.";
}
description
"This notification is sent when the system receives a
Hello PDU from an IS that does not share any area
address. The notification generation must be throttled
with at least 5 seconds betweeen successive
notifications.";
}
notification version-skew { notification rejected-adjacency {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf protocol-version { leaf raw-pdu {
type uint8; type binary;
description description
"Protocol version received in the PDU."; "Received raw PDU.";
} }
leaf raw-pdu { leaf reason {
type binary; type string;
description description
"Received raw PDU."; "The system may provide a reason to reject the
} adjacency. If the reason is not available,
description an empty string will be returned.";
"This notification is sent when the system }
receives a PDU with a different protocol version description
number. "This notification is sent when the system receives a
The notification generation must be throttled with at least Hello PDU from an IS but does not establish an adjacency
a 5 second gap. for some reason. The notification generation must be
"; throttled with at least 5 seconds betweeen successive
} notifications.";
}
notification area-mismatch { notification protocols-supported-mismatch {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf raw-pdu { leaf raw-pdu {
type binary; type binary;
description description "Received raw PDU.";
"Received raw PDU."; }
} leaf-list protocols {
description type uint8;
"This notification is sent when the system description
receives a Hello PDU from an IS that does "List of protocols supported by the remote system.";
not share any area address. }
The notification generation must be throttled with at least description
a 5 second gap. "This notification is sent when the system receives a
"; non-pseudonode LSP that has no matching protocols
} supported. The notification generation must be throttled
notification rejected-adjacency { with at least 5 seconds betweeen successive
uses notification-instance-hdr; notifications.";
uses notification-interface-hdr; }
leaf raw-pdu {
type binary;
description
"Received raw PDU.";
}
leaf reason {
type string;
description
"The system may provide a reason to reject the
adjacency. If the reason is not available,
the system use an empty string.";
}
description
"This notification is sent when the system
receives a Hello PDU from an IS but does not
establish an adjacency for some reason.
The notification generation must be throttled with at least
a 5 second gap.
";
}
notification protocols-supported-mismatch { notification lsp-error-detected {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf raw-pdu { leaf lsp-id {
type binary; type lsp-id;
description description "LSP ID.";
"Received raw PDU."; }
} leaf raw-pdu {
leaf-list protocols { type binary;
type uint8; description "Received raw PDU.";
description }
"The list of protocols supported by the leaf error-offset {
remote system."; type uint32;
} description
description "If the problem is a malformed TLV, the error-offset
"This notification is sent when the system points to the start of the TLV. If the problem is with
receives a non pseudonode LSP that has no matching the LSP header, the error-offset points to the errant
protocol supported. byte";
The notification generation must be throttled with at least }
a 5 second gap. leaf tlv-type {
"; type uint8;
} description
notification lsp-error-detected { "If the problem is a malformed TLV, the tlv-type is set
uses notification-instance-hdr; to the type value of the suspicious TLV. Otherwise,
uses notification-interface-hdr; this leaf is not present.";
leaf lsp-id { }
type lsp-id; description
description "This notification is sent when the system receives an
"LSP ID."; ' LSP with a parse error. The notification generation must
} be throttled with at least 5 seconds betweeen successive
leaf raw-pdu { notifications.";
type binary; }
description
"Received raw PDU.";
}
leaf error-offset {
type uint32;
description
"If the problem is a malformed TLV,
the error-offset points to the start of the TLV.
If the problem is with the LSP header,
the error-offset points to the suspicious byte";
}
leaf tlv-type {
type uint8;
description
"if the problem is a malformed TLV, the tlv-type is set
to the type value of the suspicious TLV.
Otherwise this leaf is not present.";
}
description
"This notification is sent when the system
receives a LSP with a parse error.
The notification generation must be throttled with at least
a 5 second gap.
";
}
notification adjacency-state-change { notification adjacency-state-change {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf neighbor { leaf neighbor {
type string; type string;
description description
"Describes the name of the neighbor. If the "Name of the neighbor. If the name of the neighbor is
name of the neighbor is not available, the not available, it is not returned.";
field would be empty."; }
} leaf neighbor-system-id {
leaf neighbor-system-id { type system-id;
type system-id; description "Neighbor system-id";
description }
"Describes the system-id of the neighbor."; leaf state {
} type adj-state-type;
leaf state {
type adj-state-type;
description description "New state of the IS-IS adjacency.";
"This leaf describes the new state of the }
IS-IS adjacency."; leaf reason {
} type string;
leaf reason { description
type string; "If the adjacency is going to DOWN, this leaf provides
description a reason for the adjacency going down. The reason is
"If the adjacency is going to DOWN, provided as a text. If the adjacency is going to UP, no
this leaf provides a reason for the adjacency reason is provided.";
going down. The reason is provided as a text. }
If the adjacency is going to UP, no reason is description
provided."; "This notification is sent when an IS-IS adjacency
} moves to Up state or to Down state.";
description }
"This notification is sent when an IS-IS adjacency
moves to Up state or to Down state.";
}
notification lsp-received { notification lsp-received {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf lsp-id { leaf lsp-id {
type lsp-id; type lsp-id;
description description "LSP ID";
"LSP ID."; }
} leaf sequence {
leaf sequence { type uint32;
type uint32; description "Sequence number of the received LSP.";
description }
"Sequence number of the received LSP."; leaf received-timestamp {
} type yang:timestamp;
leaf received-timestamp {
type yang:timestamp;
description description "Timestamp when the LSP was received.";
"This leaf describes the timestamp }
when the LSP was received. "; leaf neighbor-system-id {
} type system-id;
leaf neighbor-system-id { description "Neighbor system-id of LSP sender";
type system-id; }
description description
"Describes the system-id of the neighbor "This notification is sent when an LSP is received.
that sent the LSP."; The notification generation must be throttled with at
least 5 seconds betweeen successive notifications.";
} }
description
"This notification is sent when a LSP
is received.
The notification generation must be throttled with at least
a 5 second gap. ";
}
notification lsp-generation { notification lsp-generation {
uses notification-instance-hdr; uses notification-instance-hdr;
leaf lsp-id {
type lsp-id;
description
"LSP ID.";
}
leaf sequence {
type uint32;
description
"Sequence number of the received LSP.";
}
leaf send-timestamp {
type yang:timestamp;
description leaf lsp-id {
"This leaf describes the timestamp type lsp-id;
when our LSP was regenerated. "; description "LSP ID";
} }
description leaf sequence {
"This notification is sent when a LSP type uint32;
is regenerated. description "Sequence number of the received LSP.";
The notification generation must be throttled with at least }
a 5 second gap. "; leaf send-timestamp {
} type yang:timestamp;
}
<CODE ENDS> description "Timestamp when our LSP was regenerated.";
}
description
"This notification is sent when an LSP is regenerated.
The notification generation must be throttled with at
least 5 seconds betweeen successive notifications.";
}
}
<CODE ENDS>
7. Security Considerations 7. Security Considerations
Configuration and state data defined in this document are designed to Configuration and state data defined in this document are designed to
be accessed via the NETCONF protocol [RFC6241]. be accessed via the NETCONF protocol [RFC6241].
As IS-IS is an IGP protocol (critical piece of the network), ensuring As IS-IS is an IGP protocol (critical piece of the network), ensuring
stability and security of the protocol is mandatory for the network stability and security of the protocol is mandatory for the network
service. service.
skipping to change at page 103, line 10 skipping to change at page 95, line 47
9. Acknowledgements 9. Acknowledgements
TBD. TBD.
10. IANA Considerations 10. IANA Considerations
The IANA is requested to assign two new URIs from the IETF XML The IANA is requested to assign two new URIs from the IETF XML
registry ([RFC3688]). Authors are suggesting the following URI: registry ([RFC3688]). Authors are suggesting the following URI:
URI: urn:ietf:params:xml:ns:yang:ietf-isis URI: urn:ietf:params:xml:ns:yang:ietf-isis
Registrant Contact: IS-IS WG Registrant Contact: IS-IS WG
XML: N/A, the requested URI is an XML namespace XML: N/A, the requested URI is an XML namespace
This document also requests one new YANG module name in the YANG This document also requests one new YANG module name in the YANG
Module Names registry ([RFC6020]) with the following suggestion: Module Names registry ([RFC6020]) with the following suggestion:
name: ietf-isis name: ietf-isis
namespace: urn:ietf:params:xml:ns:yang:ietf-isis namespace: urn:ietf:params:xml:ns:yang:ietf-isis
prefix: isis prefix: isis
reference: RFC XXXX reference: RFC XXXX
11. Change log for ietf-isis YANG module 11. Change log for ietf-isis YANG module
11.1. From version -19 to version -20 11.1. From version -19 to version -20
o Moved to Yang 1.1 o Moved to Yang 1.1
o Lower case enumerations o Lower case enumerations
o Add RFC references to features o Add RFC references to features
skipping to change at page 107, line 50 skipping to change at page 100, line 37
Lhotka, L. and A. Lindem, "A YANG Data Model for Routing Lhotka, L. and A. Lindem, "A YANG Data Model for Routing
Management", draft-ietf-netmod-routing-cfg-25 (work in Management", draft-ietf-netmod-routing-cfg-25 (work in
progress), November 2016. progress), November 2016.
[I-D.ietf-rtgwg-yang-key-chain] [I-D.ietf-rtgwg-yang-key-chain]
Lindem, A., Qu, Y., Yeung, D., Chen, I., and Z. Zhang, Lindem, A., Qu, Y., Yeung, D., Chen, I., and Z. Zhang,
"Routing Key Chain YANG Data Model", draft-ietf-rtgwg- "Routing Key Chain YANG Data Model", draft-ietf-rtgwg-
yang-key-chain-24 (work in progress), April 2017. yang-key-chain-24 (work in progress), April 2017.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ Requirement Levels", BCP 14, RFC 2119,
RFC2119, March 1997, <https://www.rfc-editor.org/info/ DOI 10.17487/RFC2119, March 1997, <https://www.rfc-
rfc2119>. editor.org/info/rfc2119>.
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
DOI 10.17487/RFC3688, January 2004, <https://www.rfc- DOI 10.17487/RFC3688, January 2004, <https://www.rfc-
editor.org/info/rfc3688>. editor.org/info/rfc3688>.
[RFC5120] Przygienda, T., Shen, N., and N. Sheth, "M-ISIS: Multi [RFC5120] Przygienda, T., Shen, N., and N. Sheth, "M-ISIS: Multi
Topology (MT) Routing in Intermediate System to Topology (MT) Routing in Intermediate System to
Intermediate Systems (IS-ISs)", RFC 5120, DOI 10.17487/ Intermediate Systems (IS-ISs)", RFC 5120,
RFC5120, February 2008, <https://www.rfc-editor.org/info/ DOI 10.17487/RFC5120, February 2008, <https://www.rfc-
rfc5120>. editor.org/info/rfc5120>.
[RFC5286] Atlas, A., Ed. and A. Zinin, Ed., "Basic Specification for [RFC5286] Atlas, A., Ed. and A. Zinin, Ed., "Basic Specification for
IP Fast Reroute: Loop-Free Alternates", RFC 5286, DOI IP Fast Reroute: Loop-Free Alternates", RFC 5286,
10.17487/RFC5286, September 2008, <https://www.rfc- DOI 10.17487/RFC5286, September 2008, <https://www.rfc-
editor.org/info/rfc5286>. editor.org/info/rfc5286>.
[RFC5443] Jork, M., Atlas, A., and L. Fang, "LDP IGP [RFC5443] Jork, M., Atlas, A., and L. Fang, "LDP IGP
Synchronization", RFC 5443, DOI 10.17487/RFC5443, March Synchronization", RFC 5443, DOI 10.17487/RFC5443, March
2009, <https://www.rfc-editor.org/info/rfc5443>. 2009, <https://www.rfc-editor.org/info/rfc5443>.
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
the Network Configuration Protocol (NETCONF)", RFC 6020, the Network Configuration Protocol (NETCONF)", RFC 6020,
DOI 10.17487/RFC6020, October 2010, <https://www.rfc- DOI 10.17487/RFC6020, October 2010, <https://www.rfc-
editor.org/info/rfc6020>. editor.org/info/rfc6020>.
skipping to change at page 108, line 39 skipping to change at page 101, line 29
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
and A. Bierman, Ed., "Network Configuration Protocol and A. Bierman, Ed., "Network Configuration Protocol
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
<https://www.rfc-editor.org/info/rfc6241>. <https://www.rfc-editor.org/info/rfc6241>.
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure
Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011,
<https://www.rfc-editor.org/info/rfc6242>. <https://www.rfc-editor.org/info/rfc6242>.
[RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration
Protocol (NETCONF) Access Control Model", RFC 6536, DOI Protocol (NETCONF) Access Control Model", RFC 6536,
10.17487/RFC6536, March 2012, <https://www.rfc- DOI 10.17487/RFC6536, March 2012, <https://www.rfc-
editor.org/info/rfc6536>. editor.org/info/rfc6536>.
[RFC7490] Bryant, S., Filsfils, C., Previdi, S., Shand, M., and N. [RFC7490] Bryant, S., Filsfils, C., Previdi, S., Shand, M., and N.
So, "Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)", So, "Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)",
RFC 7490, DOI 10.17487/RFC7490, April 2015, RFC 7490, DOI 10.17487/RFC7490, April 2015,
<https://www.rfc-editor.org/info/rfc7490>. <https://www.rfc-editor.org/info/rfc7490>.
Appendix A. Example of IS-IS configuration in XML Appendix A. Example of IS-IS configuration in XML
This section gives an example of configuration of an IS-IS instance This section gives an example of configuration of an IS-IS instance
skipping to change at page 109, line 15 skipping to change at page 102, line 4
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"> <routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing">
<name>SLI</name> <name>SLI</name>
<router-id>1.1.1.1</router-id> <router-id>1.1.1.1</router-id>
<description/> <description/>
<interfaces> <interfaces>
<interface> <interface>
<name>Loopback0</name> <name>Loopback0</name>
</interface> </interface>
<interface> <interface>
<name>Eth1</name> <name>Eth1</name>
</interface> </interface>
</interfaces> </interfaces>
<control-plane-protocols> <control-plane-protocols>
<control-plane-protocol> <control-plane-protocol>
<name>ISIS</name> <name>ISIS</name>
<description/> <description/>
<type>isis:isis</type> <type>isis:isis</type>
<isis xmlns="urn:ietf:params:xml:ns:yang:ietf-isis"> <isis xmlns="urn:ietf:params:xml:ns:yang:ietf-isis">
<enable>true</enable> <enable>true</enable>
<level-type>level-2</level-type> <level-type>level-2</level-type>
<system-id>87FC.FCDF.4432</system-id> <system-id>87FC.FCDF.4432</system-id>
<area-address>49.0001</area-address> <area-address>49.0001</area-address>
<mpls-te> <mpls-te>
<ipv4-router-id>1.1.1.1</ipv4-router-id> <ipv4-router-id>1.1.1.1</ipv4-router-id>
</mpls-te> </mpls-te>
<lsp-lifetime>65535</lsp-lifetime> <lsp-lifetime>65535</lsp-lifetime>
<lsp-refresh>65000</lsp-refresh> <lsp-refresh>65000</lsp-refresh>
<metric-type> <metric-type>
<value>wide</value> <value>wide</value>
</metric-type> </metric-type>
<default-metric> <default-metric>
<value>111111</value> <value>111111</value>
</default-metric> </default-metric>
<afs> <afs>
<af> <af>
<af>ipv4-unicast</af> <af>ipv4-unicast</af>
<enabled>true</enabled> <enabled>true</enabled>
</af> </af>
</afs> </afs>
<interfaces> <interfaces>
<interface> <interface>
<name>Loopback0</name> <name>Loopback0</name>
<tag>200</tag> <tag>200</tag>
<metric> <metric>
<value>0</value> <value>0</value>
</metric> </metric>
<passive>true</passive> <passive>true</passive>
</interface> </interface>
<interface> <interface>
<name>Eth1</name> <name>Eth1</name>
<level-type>level-2</level-type> <level-type>level-2</level-type>
<interface-type>point-to-point</interface-type> <interface-type>point-to-point
</interface-type>
<metric> <metric>
<value>167890</value> <value>167890</value>
</metric> </metric>
</interface> </interface>
</interfaces> </interfaces>
</isis> </isis>
</control-plane-protocol> </control-plane-protocol>
</control-plane-protocols> </control-plane-protocols>
</routing> </routing>
<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
<interface> <interface>
<name>Loopback0</name> <name>Loopback0</name>
<description/> <description/>
skipping to change at page 110, line 34 skipping to change at page 103, line 26
<link-up-down-trap-enable/> <link-up-down-trap-enable/>
<ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> <ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip">
<mtu/> <mtu/>
<address> <address>
<ip>1.1.1.1</ip> <ip>1.1.1.1</ip>
<prefix-length>32</prefix-length> <prefix-length>32</prefix-length>
</address> </address>
</ipv4> </ipv4>
</interface> </interface>
<interface> <interface>
<name>Eth1</name> <name>Eth1</name>
<description/> <description/>
<type/> <type/>
<link-up-down-trap-enable/> <link-up-down-trap-enable/>
<ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> <ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip">
<mtu/> <mtu/>
<address> <address>
<ip>10.0.0.1</ip> <ip>10.0.0.1</ip>
<prefix-length>30</prefix-length> <prefix-length>30</prefix-length>
</address> </address>