aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/yang/openconfig/openconfig-isis.yang
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/yang/openconfig/openconfig-isis.yang')
-rw-r--r--src/plugins/yang/openconfig/openconfig-isis.yang2059
1 files changed, 2059 insertions, 0 deletions
diff --git a/src/plugins/yang/openconfig/openconfig-isis.yang b/src/plugins/yang/openconfig/openconfig-isis.yang
new file mode 100644
index 0000000..0a0db6b
--- /dev/null
+++ b/src/plugins/yang/openconfig/openconfig-isis.yang
@@ -0,0 +1,2059 @@
+module openconfig-isis {
+
+ yang-version "1";
+
+ // namespace
+ namespace "http://openconfig.net/yang/openconfig-isis";
+
+ prefix "oc-isis";
+
+ // import some basic types
+ import ietf-inet-types { prefix "inet"; }
+ import ietf-yang-types { prefix "yang"; }
+ import openconfig-types { prefix "oc-types"; }
+ import openconfig-isis-types { prefix "oc-isis-types"; }
+ import openconfig-routing-policy { prefix "oc-rpol"; }
+ import openconfig-extensions { prefix "oc-ext"; }
+ import openconfig-interfaces { prefix "oc-if"; }
+ import openconfig-segment-routing { prefix "oc-sr"; }
+ // TODO(robjs): Import authentication and keychain following merge of these
+ // modules.
+ //import openconfig-authentication-types { prefix "oc-auth-types"; }
+ //import openconfig-keychain { prefix "oc-keychain"; }
+
+ // Include submodules:
+ // IS-IS LSP is the LSDB for IS-IS.
+ include openconfig-isis-lsp;
+ // IS-IS RT is routing-related features for IS-IS
+ include openconfig-isis-routing;
+
+ // meta
+ organization
+ "OpenConfig working group";
+
+ contact
+ "OpenConfig working group
+ www.openconfig.net ";
+
+ description
+ "This module describes a YANG model for ISIS protocol configuration.
+ It is a limited subset of all of the configuration parameters
+ available in the variety of vendor implementations, hence it is
+ expected that it would be augmented with vendor - specific configuration
+ data as needed. Additional modules or submodules to handle other
+ aspects of ISIS configuration, including policy, routing, types,
+ LSDB and additional address families are also expected. This model
+ supports the following ISIS configuration level hierarchy:
+
+ ISIS
+ +-> { global ISIS configuration}
+ +-> levels +-> { level config}
+ +-> { system-level-counters }
+ +-> { level link-state-database}
+ +-> interface +-> { interface config }
+ +-> { circuit-counters }
+ +-> { levels config }
+ +-> { level adjacencies }";
+
+ oc-ext:openconfig-version "0.4.1";
+
+ revision "2018-06-05" {
+ description
+ "Fix bugs in when statements.";
+ reference "0.4.1";
+ }
+
+ revision "2018-05-14" {
+ description
+ "Update LSDB model to correct Extended IS reach TLV
+ bug. This change is backwards incompatible due to
+ adding an additional level of hierarchy to support
+ multiple instances of the TLV.";
+ reference "0.4.0";
+ }
+
+ revision "2017-07-26" {
+ description
+ "Update LSDB and fix bugs.";
+ reference "0.3.2";
+ }
+
+ revision "2017-05-15" {
+ description
+ "Refactor LSDB.";
+ reference "0.3.0";
+ }
+
+ revision "2017-01-13" {
+ description
+ "Remove top-level /isis container";
+ reference "0.2.1";
+ }
+
+ revision "2016-12-15" {
+ description
+ "Add segment routing to IS-IS module";
+ reference "0.2.0";
+ }
+
+ revision "2016-10-18" {
+ description
+ "Initial revision of IS-IS models.";
+ reference "0.1.0";
+ }
+
+ // extension statements
+
+ // feature statements
+
+ // identity statements
+
+ // typedef statements
+
+ // grouping statements
+
+ grouping isis-global-config {
+ description
+ "This grouping defines lobal configuration options for ISIS router.";
+
+ // multi-instance
+ leaf instance {
+ type string;
+ default 0;
+ description
+ "ISIS Instance.";
+ }
+
+ leaf-list net {
+ type oc-isis-types:net;
+ description
+ "ISIS network entity title (NET). The first 8 bits are usually
+ 49 (private AFI), next 16 bits represent area, next 48 bits represent
+ system id and final 8 bits are set to 0.";
+ reference
+ "International Organization for Standardization, Information
+ technology - Open Systems Interconnection-Network service
+ Definition - ISO/ IEC 8348:2002.";
+ }
+
+ leaf maximum-area-addresses {
+ type uint8;
+ default 3;
+ description
+ "Maximum areas supported.";
+ }
+
+ leaf level-capability {
+ type oc-isis-types:level-type;
+ default "LEVEL_1_2";
+ description
+ "ISIS level capability(level-1, level-2,vlevel-1-2).";
+ }
+
+ leaf max-ecmp-paths {
+ type uint8;
+ description
+ "ISIS max-paths count.";
+ }
+
+ leaf poi-tlv {
+ type boolean;
+ default false;
+ description
+ "ISIS purge TLV. When set to true, a TLV is added to purges to record
+ the system ID of the IS generating the purge.";
+ reference "RFC6232: Purge Originator Identification TLV for IS-IS. TLV 13.";
+ }
+
+ leaf iid-tlv {
+ type boolean;
+ default false;
+ description
+ "ISIS Instance Identifier TLV. When set to trues, the IID-TLV identifies
+ the unique instance as well as the topology/topologies to which the
+ PDU applies.";
+ reference "RFC6822: IS-IS Multi-Instance. TLV 7";
+ }
+
+ leaf fast-flooding {
+ type boolean;
+ default true;
+ description
+ "When set to true, IS will always flood the LSP that triggered an SPF
+ before the router actually runs the SPF computation.";
+ }
+ }
+
+ grouping admin-config {
+ description
+ "Re-usable grouping to enable or disable a particular IS-IS feature.";
+
+ leaf enabled {
+ type boolean;
+ default false;
+ description
+ "When set to true, the functionality within which this leaf is
+ defined is enabled, when set to false it is explicitly disabled.";
+ }
+ }
+
+ grouping isis-bfd-config {
+ description
+ "This grouping defines Bidirectionl-Forwarding-Detection
+ configuration.";
+
+ //There is also BFD state under adjacency
+ leaf bfd-tlv {
+ type boolean;
+ description
+ "When set to true, BFD TLV is used. This enables support for the IS-IS
+ BFD TLV options, which specify that a BFD session must be established
+ before an IS-IS adjacency can transition to the established state.
+ This option should be enabled on all IS-IS neighbors on a shared
+ interface.";
+ reference "RFC6213. TLV 148";
+ }
+ reference "RFC5880: Bidirectional Forwarding Detection (BFD).";
+ }
+
+ grouping isis-authentication-check-config {
+ description
+ "This grouping defines ISIS authentication check.";
+
+ leaf authentication-check {
+ type boolean;
+ default true;
+ description
+ "When set to true, reject all ISIS protocol PDUs that either have a mismatch
+ in authentication-type or authentication-key.";
+ }
+ }
+
+ grouping isis-metric-style-config {
+ description
+ "This grouping defines ISIS metric style.";
+
+ leaf metric-style {
+ type oc-isis-types:metric-style;
+ description
+ "ISIS metric style types(narrow, wide).";
+ }
+ }
+
+ grouping authentication-key-config {
+ description
+ "This grouping defines authentication key configuration.";
+
+ leaf auth-password {
+ type oc-types:routing-password;
+ description
+ "Authentication key string.";
+ }
+ }
+
+ grouping keychain-base-group {
+ description
+ "This grouping defines keychain configuration.";
+
+ container keychain {
+ description
+ "This container defines keychain parameters.";
+
+ // TODO(robjs): Import keychain parameters following merge of the auth
+ // models.
+ //uses oc-keychain:keychain-common-base;
+ //uses oc-keychain:tolerance-base;
+ //uses oc-keychain:keychain-key-base;
+ }
+ }
+
+ grouping isis-authentication-config {
+ description
+ "This grouping defines ISIS authentication configuration.";
+
+ // TODO(robjs): Add authentication following merge of auth modules.
+ //leaf auth-type {
+ // type oc-auth-types:auth-type;
+ // description
+ // "ISIS authentication type (key, key-chain).";
+ //}
+
+ leaf csnp-authentication {
+ type boolean;
+ default false;
+ description
+ "Enable or disable for IS-IS CSNPs.";
+ }
+
+ leaf psnp-authentication {
+ type boolean;
+ default false;
+ description
+ "Enable or disable authentication for IS-IS PSNPs.";
+ }
+
+ leaf lsp-authentication {
+ type boolean;
+ default false;
+ description
+ "Enable or disable authentication for IS-IS LSPs.";
+ }
+ }
+
+ grouping isis-authentication-group {
+ description
+ "This grouping defines ISIS authentication.";
+
+ container config {
+ description
+ "This container defines ISIS authentication configuration.";
+
+ uses isis-authentication-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines ISIS authentication state.";
+
+ uses isis-authentication-config;
+ }
+
+ container key {
+ description
+ "This container defines ISIS authentication key";
+ container config {
+ description
+ "This container defines ISIS authentication key configuration.";
+
+ uses authentication-key-group-config {
+ // TODO(aashaikh): Add auth-type conditions after merge of
+ // auth models.
+ // when "../auth-type = 'KEY'";
+ }
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines ISIS authentication key state.";
+
+ uses authentication-key-group-config {
+ // TODO(aashaikh): Add auth-type conditions after merge of
+ // auth models.
+ // when "../auth-type = 'KEY'";
+ }
+ }
+ }
+
+ uses keychain-base-group {
+ // TODO(aashaikh): Add auth-type conditions after merge of
+ // auth models.
+ // when "../auth-type = 'KEY_CHAIN'";
+ }
+ }
+
+ grouping isis-hello-authentication-config {
+ description
+ "Configuration options for IS-IS hello authentication.";
+
+ leaf hello-authentication {
+ type boolean;
+ default false;
+ description
+ "Enabled or disable ISIS Hello authentication.";
+ }
+
+ // TODO(robjs): Add hello-auth-type following merge of auth models.
+ //leaf hello-auth-type {
+ // type oc-auth-types:auth-type;
+ // description
+ // "ISIS authentication type (key, key-chain).";
+ //}
+ }
+
+ grouping isis-hello-authentication-group {
+ description
+ "This grouping defines ISIS hello-authentication.";
+
+ container config {
+ description
+ "This container defines ISIS authentication configuration.";
+
+ uses isis-hello-authentication-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines ISIS authentication state.";
+
+ uses isis-hello-authentication-config;
+ }
+
+ container key {
+ description
+ "This container defines ISIS authentication key";
+
+ container config {
+ description
+ "This container defines ISIS authentication key configuration.";
+
+ uses authentication-key-group-config {
+ // TODO(aashaikh): Add auth-type conditions after merge of
+ // auth models.
+ // when "../auth-type = 'KEY'";
+ }
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines ISIS authentication key state.";
+
+ uses authentication-key-group-config {
+ // TODO(aashaikh): Add auth-type conditions after merge of
+ // auth models.
+ // when "../auth-type = 'KEY'";
+ }
+ }
+ }
+
+ uses keychain-base-group {
+ // TODO(aashaikh): Add auth-type conditions after merge of
+ // auth models.
+ // when "../auth-type = 'KEY_CHAIN'";
+ }
+ }
+
+ grouping isis-ldp-igp-config {
+ description
+ "This grouping defines ISIS/LDP Synchronization configuration.";
+
+ leaf enabled {
+ type boolean;
+ default true;
+ description
+ "When set to true, rely on IGP/LDP synchronization. IGP cost for
+ link is maintained at max until LDP adjacencies are established ";
+ reference "RFC5443: LDP IGP Synchronization.";
+ }
+
+ leaf post-session-up-delay {
+ type uint16;
+ units seconds;
+ description
+ "Specifies a delay, expressed in units of seconds,
+ between the LDP session to the IGP neighbor being established, and
+ it being considered synchronized by the IGP.";
+ }
+ }
+
+ grouping isis-te-config {
+ description
+ "This grouping defines ISIS Traffic Engineering configuration.";
+
+ leaf ipv4-router-id {
+ type inet:ipv4-address-no-zone;
+ description
+ "IPv4 MPLS Traffic Engineering Router-ID.";
+ }
+
+ leaf ipv6-router-id {
+ type inet:ipv6-address-no-zone;
+ description
+ "IPv6 MPLS Traffic Engineering Router-ID.";
+ }
+ }
+
+ grouping isis-reference-bandwidth-config {
+ description
+ "This grouping defines ISIS Reference Bandwidth Configuration.";
+
+ leaf reference-bandwidth {
+ type uint32;
+ description
+ "ISIS Reference Bandwidth value";
+ }
+ }
+
+ grouping isis-overload-bit-set-config {
+ description
+ "This grouping defines ISIS Overload Bit.";
+
+ leaf set-bit {
+ type boolean;
+ default false;
+ description
+ "When set to true, IS-IS overload bit is set.";
+ }
+
+ leaf set-bit-on-boot {
+ type boolean;
+ default false;
+ description
+ "When set to true, the IS-IS overload bit is set on system boot.";
+ }
+
+ leaf advertise-high-metric {
+ type boolean;
+ default false;
+ description
+ "When set to true, the local IS advertises links with the highest
+ available metric regardless of their configured metric. The metric
+ value is based on the metric style - if wide metrics are utilised
+ the metric is advertised as 16777214, otherwise they are advertised
+ with a value of 63.";
+ }
+ }
+
+ grouping isis-overload-bit-reset-config {
+ description
+ "This grouping defines ISIS Overload Bit Reset Triggers";
+
+ leaf reset-trigger {
+ type identityref {
+ base oc-isis-types:OVERLOAD_RESET_TRIGGER_TYPE;
+ }
+ description
+ "In the case that the system sets the overload bit on start, the
+ system should reset the bit (i.e., clear the overload bit) upon
+ the specified trigger.";
+ }
+
+ leaf delay {
+ type uint16;
+ units seconds;
+ description
+ "If a reset trigger is specified, the system should delay resetting
+ the overload bit for the specified number of seconds after the
+ trigger occurs.";
+ }
+ }
+
+ grouping isis-attached-bit-config {
+ description
+ "This grouping defines ISIS Attached Bit";
+
+ leaf ignore-bit {
+ type boolean;
+ default false;
+ description
+ "When set to true, if the attached bit is set on an incoming Level 1
+ IS-IS, the local system ignores it. In this case the local system
+ does not set a default route to the L1L2 router advertising the PDU
+ with the attached bit set.";
+ }
+
+ leaf suppress-bit {
+ type boolean;
+ default false;
+ description
+ "When set to true, if the local IS acts as a L1L2 router, then the
+ attached bit is not advertised in locally generated PDUs.";
+ }
+ }
+
+ grouping overload-bit-group {
+ description
+ "This grouping defines ISIS Overload Bit.";
+
+ container config {
+ description
+ "This container defines ISIS Overload Bit configuration.";
+
+ uses isis-overload-bit-set-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines state for ISIS Overload Bit.";
+
+ uses isis-overload-bit-set-config;
+ }
+
+ container reset-triggers {
+ description
+ "This container defines state for ISIS Overload Bit reset triggers";
+
+ list reset-trigger {
+ key "reset-trigger";
+
+ description
+ "This list describes ISIS Overload reset trigger reasons.";
+
+ leaf reset-trigger {
+ type leafref {
+ path "../config/reset-trigger";
+ }
+ description
+ "Reference to the reset trigger reason";
+ }
+
+ container config {
+ description
+ "This container defines ISIS Overload Bit reset trigger
+ configuration.";
+
+ uses isis-overload-bit-reset-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines state for ISIS Overload Bit reset
+ triggers.";
+
+ uses isis-overload-bit-reset-config;
+ }
+ }
+ }
+ }
+
+
+ grouping isis-base-level-config {
+ description
+ "This grouping defines ISIS Level configuration.";
+
+ leaf level-number {
+ type oc-isis-types:level-number;
+ description
+ "ISIS level number (level-1, level-2).";
+ }
+ }
+
+ grouping isis-interface-level-config {
+ description
+ "This grouping defines ISIS Interface Level configuration.";
+
+ leaf level-number {
+ type oc-isis-types:level-number;
+ description
+ "ISIS level number(level-1, level-2).";
+ }
+
+ leaf passive {
+ type boolean;
+ default false;
+ description
+ "ISIS passive interface admin enable/disable function.";
+ }
+
+ leaf priority {
+ type uint8 {
+ range "0 .. 127";
+ }
+ description
+ "ISIS neighbor priority(LAN hello PDU only).";
+ }
+ }
+
+ grouping isis-hello-timers-config {
+ description
+ "This grouping defines ISIS hello timers configuration.";
+
+ leaf hello-interval {
+ type uint32;
+ description
+ "ISIS hello-interval value.";
+ }
+
+ leaf hello-multiplier {
+ type uint8;
+ description
+ "ISIS hello-multiplier value.";
+ }
+ }
+
+ grouping isis-interface-config {
+ description
+ "This grouping defines ISIS interface configuration.";
+
+ leaf interface-id {
+ type oc-if:interface-id;
+ description
+ "Interface for which ISIS configuration is to be applied.";
+ }
+
+ leaf passive {
+ type boolean;
+ default false;
+ description
+ "When set to true, the referenced interface is a passive interface
+ such that it is not eligible to establish adjacencies with other
+ systems, but is advertised into the IS-IS topology.";
+ }
+
+ leaf hello-padding {
+ type oc-isis-types:hello-padding-type;
+ description
+ "This leaf controls padding type for IS-IS Hello PDUs.";
+ }
+
+ leaf circuit-type {
+ type oc-isis-types:circuit-type;
+ description
+ "ISIS circuit type (p2p, broadcast).";
+ }
+ }
+
+ grouping isis-adaptive-timers-state {
+ description
+ "This grouping defines ISIS adaptive timers state";
+
+ leaf adaptive-timer {
+ type oc-isis-types:adaptive-timer-type;
+ description
+ "ISIS adaptive timer types (linear, exponential).";
+ }
+ }
+
+ grouping isis-lsp-generation-timers-config {
+ description
+ "This grouping defines ISIS LSP Generation timers configuration";
+
+ leaf lsp-max-wait-interval {
+ type uint64;
+ units milliseconds;
+ description
+ "Time interval in milliseconds that specifies max interval between
+ two consecutive occurrences of an LSP being generated.";
+ }
+
+ leaf lsp-first-wait-interval {
+ type uint64;
+ units milliseconds;
+ description
+ "Time interval in milliseconds that specifies the first LSP generation
+ delay.";
+ }
+
+ leaf lsp-second-wait-interval {
+ type uint64;
+ units milliseconds;
+ description
+ "Time interval in milliseconds that specifies the millisecond LSP
+ generation delay.";
+ }
+ }
+
+ grouping isis-lsp-timers-config {
+ description
+ "This grouping defines ISIS LSP timers configuration";
+
+ leaf lsp-lifetime-interval {
+ type uint16;
+ units seconds;
+ default 1200;
+ description
+ "Time interval in seconds that specifies how long an LSP remains in
+ LSDB without being refreshed.";
+ }
+
+ leaf lsp-refresh-interval {
+ type uint16;
+ units seconds;
+ description
+ "Time interval in seconds that specifies how often route topology
+ that a device originates is transmitted in LSPs.";
+ }
+ }
+
+ grouping isis-spf-timers-config {
+ description
+ "This grouping defines ISIS SPF timers configuration.";
+
+ leaf spf-hold-interval {
+ type uint64;
+ units milliseconds;
+ default 5000;
+ description
+ "SPF Hold Down time interval in milliseconds.";
+ }
+
+ leaf spf-first-interval {
+ type uint64;
+ units milliseconds;
+ description
+ "Time interval in milliseconds between the
+ detection of topology change and when the SPF algorithm runs.";
+ }
+ leaf spf-second-interval {
+ type uint64;
+ units milliseconds;
+ description
+ "Time interval in milliseconds between the first and second
+ SPF calculation.";
+ }
+ }
+
+ grouping isis-interface-timers-config {
+ description
+ "This grouping defines ISIS interface timers configuration.";
+
+ leaf csnp-interval {
+ type uint16;
+ units seconds;
+ description
+ "The interval, specified in seconds, at which periodic CSNP packets
+ should be transmitted by the local IS.";
+ }
+
+ leaf lsp-pacing-interval {
+ type uint64;
+ units milliseconds;
+ description
+ "The interval interval in milliseconds between the
+ detection of topology change and when the SPF algorithm runs.";
+ }
+ }
+
+ grouping isis-transport-config {
+ description
+ "This grouping defines configuration parameters relating to the
+ transport protocol used by the ISIS.";
+
+ leaf lsp-mtu-size {
+ type uint16;
+ description
+ "The maximum size in bytes of an IS-IS Link state PDU.";
+ }
+ }
+
+ grouping isis-graceful-restart-config {
+ description
+ "This grouping defines ISIS graceful restart configuration.";
+
+ leaf helper-only {
+ type boolean;
+ description
+ "Enable or disable the IS-IS graceful restart helper function. When
+ this leaf is set, the local system does not utilise the IS-IS
+ graceful restart procedures during its own restart, but supports
+ retaining forwarding information during a remote speaker's restart.";
+ }
+ reference "RFC 5306: Restart Signaling for IS-IS.";
+ }
+
+ // configuration context containers
+ grouping inter-level-propagation-policies-structural {
+ description
+ "Propagate prefixes between IS-IS levels.";
+
+ container inter-level-propagation-policies {
+ description
+ "Policies to propagate prefixes between IS-IS levels.";
+
+ container level1-to-level2 {
+ description
+ "Policies relating to prefixes to be propagated from
+ Level 1 to Level 2.";
+
+ container config {
+ description
+ "Configuration parameters relating to the propagation
+ of prefixes from IS-IS Level 1 to Level 2.";
+
+ uses inter-level-propagation-policy-config;
+ }
+
+ container state {
+ config false;
+ description
+ "Operational state parameters relating to the
+ propagation of prefixes from IS-IS Level 1 to Level 2.";
+
+ uses inter-level-propagation-policy-config;
+ }
+
+ }
+
+ container level2-to-level1 {
+ description
+ "Policies relating to prefixes to be propagated from
+ Level2 to Level 1.";
+
+ container config {
+ description
+ "Configuration parameters relating to the propagation
+ of prefixes from IS-IS Level 2 to Level 1.";
+
+ uses inter-level-propagation-policy-config;
+ }
+
+ container state {
+ config false;
+ description
+ "Operational state parameters relating to the propagation
+ of prefixes from IS-IS Level 2 to Level 1.";
+
+ uses inter-level-propagation-policy-config;
+ }
+ }
+ }
+ }
+
+ grouping inter-level-propagation-policy-config {
+ description
+ "Policy governing the propagation of prefixes between levels.";
+
+ uses oc-rpol:apply-policy-import-config;
+ }
+
+ grouping authentication-key-group-config {
+ description
+ "This grouping defines ISIS authentication key configuration.";
+
+ uses authentication-key-config;
+
+ // TODO(robjs): Add crypto-algorithm after merge of authentication modules.
+ //leaf crypto-algorithm {
+ // type identityref {
+ // base oc-auth-types:CRYPTO_TYPE;
+ // }
+ // description
+ // "Authentication key cryptographic algorithm to be used for key encryption.";
+ //}
+ }
+
+ grouping isis-global-base {
+ description
+ "This grouping describes ISIS Global router.";
+
+ container config {
+ description
+ "This container defines ISIS global configuration router.";
+
+ uses isis-authentication-check-config;
+ uses isis-global-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines state for ISIS global router.";
+
+ uses isis-authentication-check-config;
+ uses isis-global-config;
+ }
+
+ container lsp-bit {
+ description
+ "This container defines ISIS LSP Operational Bits.";
+
+ container overload-bit {
+ description
+ "This container defines Overload Bit configuration.";
+ uses overload-bit-group;
+ }
+
+ container attached-bit {
+ description
+ "This container defines Attached Bit.";
+
+ container config {
+ description
+ "This container defines Attached Bit configuration.";
+
+ uses isis-attached-bit-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines state for Link State PDU Bit.";
+
+ uses isis-attached-bit-config;
+ }
+ }
+ }
+
+ container reference-bandwidth {
+ description
+ "This container defines ISIS Reference Bandwidth.";
+
+ container config {
+ description
+ "This container defines Reference Bandwidth configuration";
+ uses isis-reference-bandwidth-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines state for Reference Bandwidth.";
+
+ uses isis-reference-bandwidth-config;
+ }
+ }
+
+ container nsr {
+ description
+ "This container defines ISIS Non-Stop Routing.";
+
+ container config {
+ description
+ "This container defines Non-Stop-Routing configuration.";
+
+ uses admin-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines state for Non-Stop-Routing";
+
+ uses admin-config;
+ }
+ }
+
+ container graceful-restart {
+ description
+ "This container defines ISIS Graceful Restart.";
+
+ container config {
+ description
+ "This container defines ISIS graceful-restart configuration.";
+
+ uses admin-config;
+ uses isis-graceful-restart-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines state information for ISIS graceful-restart.";
+
+ uses admin-config;
+ uses isis-graceful-restart-config;
+ }
+ }
+
+ container timers {
+ description
+ "This container defines ISIS timers.";
+
+ container config {
+ description
+ "This container defines ISIS global timers configuration.";
+
+ uses isis-lsp-timers-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines state information for ISIS global timers.";
+
+ uses isis-lsp-timers-config;
+ }
+
+ container spf {
+ description
+ "This container defines ISIS SPF timer settings.";
+
+ container config {
+ description
+ "This container defines ISIS SPF timers configuration.";
+
+ uses isis-spf-timers-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines state information for ISIS SPF timers.";
+
+ uses isis-spf-timers-config;
+ uses isis-adaptive-timers-state;
+ }
+ }
+
+ container lsp-generation {
+ description
+ "This container defines ISIS LSP Generation.";
+
+ container config {
+ description
+ "This container defines ISIS LSP Generation timers
+ configuration.";
+
+ uses isis-lsp-generation-timers-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines state information for ISIS LSP Generation
+ timers.";
+
+ uses isis-lsp-generation-timers-config;
+ uses isis-adaptive-timers-state;
+ }
+ }
+ }
+
+ container transport {
+ description
+ "This container defines ISIS transport.";
+
+ container config {
+ description
+ "This container defines ISIS transport related configuration.";
+
+ uses isis-transport-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines state information for ISIS transport
+ parameters.";
+
+ uses isis-transport-config;
+ }
+ }
+
+ container mpls {
+ description
+ "Configuration and operational state relating to MPLS-related
+ features in IS-IS";
+
+ container igp-ldp-sync {
+ description
+ "Configuration and operational state relating to synchronisation
+ between the LDP and IS-IS";
+
+ container config {
+ description
+ "This container defines ISIS/IGP configuration.";
+
+ uses isis-ldp-igp-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines state information for ISIS/LDP Sync.";
+
+ uses isis-ldp-igp-config;
+ }
+ }
+ }
+
+ container igp-shortcuts {
+ description
+ "This container defines IGP shortcuts configuration and state
+ information.";
+
+ uses isis-shortcuts-afi-list;
+ }
+
+ container afi-safi {
+ description
+ "This container defines address-family specific configuration
+ and state information.";
+
+ uses isis-afi-safi-list;
+ }
+
+ uses oc-sr:sr-igp-top;
+ }
+
+ grouping isis-route-preference-config {
+ description
+ "This grouping defines ISIS route preference configuration";
+
+ leaf external-route-preference {
+ type uint8 {
+ range "1..max";
+ }
+ description
+ "Administrative Distance(preference) for external ISIS routes.";
+ }
+
+ leaf internal-route-preference {
+ type uint8 {
+ range "1..max";
+ }
+ description
+ "Administrative Distance(preference) for internal ISIS routes.";
+ }
+ }
+
+ grouping isis-interfaces {
+ description
+ "This grouping defines ISIS interfaces configured on local system.";
+
+ list interface {
+ key "interface-id";
+
+ description
+ "This list contains ISIS interfaces.";
+
+ leaf interface-id {
+ type leafref {
+ path "../config/interface-id";
+ }
+ description
+ "Reference to interface-id";
+ }
+
+ uses isis-interface-group;
+ uses oc-if:interface-ref;
+ }
+ }
+
+ grouping isis-interface-group {
+ description
+ "This grouping defines ISIS interfaces configured on local system.";
+
+ container config {
+ description
+ "This container defines ISIS interface configuration.";
+
+ uses admin-config;
+ uses isis-interface-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines state information for ISIS interfaces.";
+
+ uses admin-config;
+ uses isis-interface-config;
+ }
+
+ container circuit-counters {
+ description
+ "This container defines state information for ISIS circuit counters.";
+
+ uses circuit-counters-structural;
+ }
+
+ container authentication {
+ description
+ "This container defines ISIS authentication.";
+
+ uses isis-hello-authentication-group;
+ }
+
+ container afi-safi {
+ description
+ "This container defines address-family specific configuration
+ and state information.";
+
+ uses isis-if-global-afi-safi-list;
+ }
+
+ container levels {
+ description
+ "This container defines ISIS level specific configuration and
+ state information.";
+
+ uses isis-interface-levels;
+ }
+
+ container timers {
+ description
+ "This container describes ISIS interface timers configuration";
+
+ container config {
+ description
+ "Configuration parameters relating to interface
+ timers for IS-IS";
+
+ uses isis-interface-timers-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines state information for ISIS interface timers.";
+
+ uses isis-interface-timers-config;
+ }
+ }
+
+ container bfd {
+ //TODO(bogdanov): Integrate BFD model/module
+ description
+ "This container defines BFD.";
+
+ container config {
+ description
+ "This container defines BFD configuration parameters.";
+
+ uses isis-bfd-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines BFD state information.";
+
+ uses isis-bfd-config;
+ }
+ }
+ }
+
+ grouping isis-levels {
+ description
+ "This grouping defines global ISIS Levels.";
+
+ list level {
+ key "level-number";
+
+ description
+ "Configuration and operational state parameters related to a
+ particular level within the IS-IS protocol instance";
+
+ leaf level-number {
+ type leafref {
+ path "../config/level-number";
+ }
+ description
+ "Reference to ISIS level-number.";
+ }
+
+ uses isis-level-group;
+ }
+ }
+
+ grouping isis-interface-levels {
+ description
+ "This grouping defines ISIS interface Levels.";
+
+ list level {
+ key "level-number";
+ description
+ "Configuration and operational state parameters related to a
+ particular level on an IS-IS enabled interface.";
+
+ leaf level-number {
+ type leafref {
+ path "../config/level-number";
+ }
+ description
+ "Reference to ISIS level-number.";
+ }
+
+ uses isis-interface-level-group;
+ }
+ }
+
+ grouping isis-level-group {
+ description
+ "This grouping defines ISIS level configuration and state
+ information.";
+
+ container config {
+ description
+ "This container defines ISIS level based configuration.";
+
+ uses admin-config;
+ uses isis-base-level-config;
+ uses isis-metric-style-config;
+ uses isis-authentication-check-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines ISIS level state information.";
+
+ uses admin-config;
+ uses isis-base-level-config;
+ uses isis-metric-style-config;
+ uses isis-authentication-check-config;
+ }
+
+ container system-level-counters {
+ description
+ "This container defines ISIS system level counters.";
+
+ uses system-level-counters-structural;
+ }
+
+ container link-state-database {
+ config false;
+ description
+ "This container defines ISIS LSDB.";
+
+ list lsp {
+ key "lsp-id";
+ description
+ "This list describes LSPs in the LSDB.";
+ uses lsp-state;
+ }
+ }
+
+ container traffic-engineering {
+ description
+ "This container defines ISIS TE.";
+
+ container config {
+ description
+ "This container defines ISIS TE configuration.";
+
+ uses admin-config;
+ uses isis-te-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines ISIS TE state information.";
+
+ uses admin-config;
+ uses isis-te-config;
+ }
+ }
+
+ container route-preference {
+ description
+ "This container defines Administrative Distance (or preference)
+ assigned to ISIS routes (level1 internal, level2 internal, level1
+ external, level2 external).";
+
+ container config {
+ description
+ "This container defines route preference configuration.";
+ uses isis-route-preference-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines ISIS route preference state information.";
+ uses isis-route-preference-config;
+ }
+ }
+
+ container authentication {
+ description
+ "This container defines ISIS authentication.";
+ uses isis-authentication-group;
+ }
+
+ }
+
+ grouping isis-interface-level-group {
+ description
+ "This grouping defines ISIS interface level.";
+
+ container config {
+ description
+ "This container defines interface ISIS level configuration.";
+
+ uses isis-interface-level-config;
+ uses admin-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines interface ISIS level state information.";
+
+ uses isis-interface-level-config;
+ uses admin-config;
+ }
+
+ container packet-counters {
+ description
+ "This container defines ISIS interface packet counters.";
+
+ uses packet-counters-structural;
+ }
+
+ container adjacencies {
+ config false;
+ description
+ "This container defines ISIS adjacencies.";
+
+ list adjacency {
+ key "system-id";
+
+ description
+ "List of the local system's IS-IS adjacencies.";
+
+ leaf system-id {
+ type leafref {
+ path "../state/system-id";
+ }
+ description
+ "Reference to the IS neighbor.";
+ }
+
+ container state {
+ description
+ "Operational state relating to the IS-IS adjacency with the
+ remote system";
+
+ uses adjacency-state;
+ }
+ }
+ }
+
+ container timers {
+ description
+ "This container defines ISIS timers.";
+
+ container config {
+ description
+ "This container defines ISIS interface hello-timers configuration.";
+
+ uses isis-hello-timers-config;
+ }
+
+ container state {
+ config false;
+ description
+ "This container defines ISIS interface hello-timers state.";
+
+ uses isis-hello-timers-config;
+ }
+ }
+
+ container afi-safi {
+ description
+ "This container defines address-family specific configuration
+ and state information.";
+
+ uses isis-if-afi-safi-list;
+ }
+
+ container hello-authentication {
+ description
+ "This container defines ISIS authentication.";
+
+ uses isis-hello-authentication-group;
+ }
+ }
+
+
+ grouping isis-top {
+ description
+ "This grouping define top-level ISIS model data.";
+
+ container isis {
+ description
+ "This container defines top-level ISIS configuration and state
+ information.";
+
+ container global {
+ description
+ "This container defines global ISIS configuration and state
+ information.";
+
+ uses isis-global-base;
+ uses inter-level-propagation-policies-structural;
+ }
+
+ container levels {
+ description
+ "This container defines ISIS level configuration and state
+ information.";
+ uses isis-levels;
+ }
+
+ container interfaces {
+ description
+ "This container defines global ISIS interface configuration and
+ state information.";
+ uses isis-interfaces;
+ }
+ }
+ }
+
+ grouping adjacency-state {
+ description
+ "This grouping defines ISIS adjacency.";
+
+ leaf system-id {
+ type oc-isis-types:system-id;
+ description
+ "ISIS neighbor system-id.";
+ }
+
+ leaf neighbor-ipv4-address {
+ type inet:ipv4-address-no-zone;
+ description
+ "ISIS Neighbor IPv4 address.";
+ }
+
+ leaf neighbor-ipv6-address {
+ type inet:ipv6-address-no-zone;
+ description
+ "ISIS Neighbor IPv6 address.";
+ }
+
+ leaf neighbor-snpa {
+ type oc-isis-types:snpa;
+ description
+ "ISIS neighbor SNPA.";
+ }
+
+ leaf local-extended-circuit-id {
+ type oc-isis-types:extended-circuit-id;
+ description
+ "Local extended circuit ID.";
+ }
+ leaf neighbor-extended-circuit-id {
+ type oc-isis-types:extended-circuit-id;
+ description
+ "ISIS neighbor extended circuit ID.";
+ }
+
+ leaf priority {
+ type uint8 {
+ range "0..127";
+ }
+ description
+ "Priority of the neighboring IS(LAN Hello only).";
+ }
+
+ leaf dis-system-id {
+ type oc-isis-types:system-id;
+ description
+ "DIS System ID(LAN hello only).";
+ }
+
+ leaf neighbor-circuit-type {
+ type oc-isis-types:level-type;
+ description
+ "Received ISIS circuit type (level-1, level-2, level-1-2).";
+ }
+
+ leaf adjacency-type {
+ type oc-isis-types:level-type;
+ description
+ "Formed ISIS adjacency type(level-1, level-2, level-1-2).";
+ }
+
+ leaf adjacency-state {
+ type oc-isis-types:isis-interface-adj-state;
+ description
+ "P2P 3-way ISIS adjacency state(up, down, init, failed).";
+ reference "RFC4303. TLV 240.";
+ }
+
+ leaf remaining-hold-time {
+ type uint16;
+ units seconds;
+ description
+ "Holding time in seconds for adjacency. This value is based on received
+ hello PDUs and the elapsed time since receipt.";
+ }
+
+ leaf up-time {
+ type yang:timestamp;
+ description
+ "Adjacency up time.";
+ }
+
+ leaf multi-topology {
+ type boolean;
+ description
+ "When set to true, ISIS multi-topology is supported.";
+ reference "RFC5129. TLV 229.";
+ }
+
+ leaf-list topology {
+ type identityref {
+ base oc-isis-types:AFI_SAFI_TYPE;
+ }
+ description
+ "ISIS topology type support(ipv4-unicast, ipv6-unicast,
+ ipv4-multicast, ipv6-multicast).";
+ }
+
+ leaf restart-support {
+ type boolean;
+ description
+ "When set to true, Graceful-restart signaling is supported.";
+ }
+
+ leaf restart-suppress {
+ type boolean;
+ description
+ "When set to true, adjacency is not advertised. The SA bit is used by a
+ starting router to request that its neighbor suppress advertisement of
+ the adjacency to the starting router in the neighbor's LSPs.";
+ }
+
+ leaf restart-status {
+ type boolean;
+ description
+ "When set to true, neighbor is being helped. The RR bit is used by a
+ (re)starting router to signal to its neighbors that a (re)start is in
+ progress.";
+ }
+
+ leaf-list area-address {
+ type oc-isis-types:area-address;
+ description
+ "List of ISIS area-address(es).";
+ }
+
+ leaf-list nlpid {
+ type enumeration {
+ enum IPV4 {
+ description
+ "IPv4 Address family.";
+ }
+ enum IPV6 {
+ description
+ "IPv6 Address family.";
+ }
+ }
+ description
+ "Supported Protocol. IPv4 is defined as (0xcc)
+ and IPv6 - (0x8e). ISIS reference is TLV 129.";
+ }
+
+ // TODO(bogdanov): update when BFD model is integrated.
+ //leaf ipv4-bfd-status {
+ //type oc-isis-types:bfd-state;
+ //description
+ // "IPv4 BFD session status.";
+ //}
+ //leaf ipv6-bfd-status {
+ //type oc-isis-types:bfd-state;
+ //description
+ // "IPv4 BFD session status. ";
+ //}
+
+ }
+
+ grouping packet-counters-generic-state {
+ description
+ "Operational state parameters relating to LSP packet counters.";
+
+ leaf received {
+ type yang:counter32;
+ description
+ "The number of the specified type of PDU received on the interface.";
+ }
+ leaf processed {
+ type yang:counter32;
+ description
+ "The number of the specified type of PDU received on the interface
+ that have been processed by the local system.";
+ }
+ leaf dropped {
+ type yang:counter32;
+ description
+ "The number of the specified type of PDU received on the interface
+ that have been dropped.";
+ }
+
+ leaf sent {
+ type yang:counter32;
+ description
+ "The number of the specified type of PDU that have been sent by the
+ local system on the interface.";
+ }
+
+ leaf retransmit {
+ type yang:counter32;
+ description
+ "The number of the specified type of PDU that that have been
+ retransmitted by the local system on the interface.";
+ }
+ }
+
+ grouping packet-counters-structural {
+ description
+ "This grouping defines ISIS packet counter state.";
+
+ container lsp {
+ description
+ "This container defines LSP packet counters.";
+
+ container state {
+ config false;
+ description
+ "This container defines LSP PDU counters.";
+
+ uses packet-counters-generic-state;
+ }
+ }
+
+ container iih {
+ description
+ "This container defines IIH packet counters.";
+
+ container state {
+ config false;
+ description
+ "Operational counters relating to IIH PDUs";
+
+ uses packet-counters-generic-state;
+ }
+ }
+
+ container ish {
+ description
+ "This container defines ISH packet counters.";
+
+ container state {
+ config false;
+ description
+ "Operational state relating to ISH PDUs.";
+
+ uses packet-counters-generic-state;
+ }
+ }
+
+ container esh {
+ description
+ "This container defines ESH packet counters.";
+ container state {
+ config false;
+ description
+ "Operational state relating to ESH PDUs";
+
+ uses packet-counters-generic-state;
+ }
+ }
+
+ container psnp {
+ description
+ "This container defines PSNP packet counters.";
+
+ container state {
+ config false;
+ description
+ "Packet counters relating to PSNPs.";
+
+ uses packet-counters-generic-state;
+ }
+ }
+
+ container csnp {
+ description
+ "Operational state parameters relating to CSNPs.";
+
+ container state {
+ config false;
+ description
+ "Packet counters relating to CSNPs.";
+
+ uses packet-counters-generic-state;
+ }
+ }
+
+ container unknown {
+ description
+ "Operational state parameters relating to IS-IS PDUs that are not
+ otherwise classified - referred to as Unknown PDUs.";
+
+ container state {
+ config false;
+ description
+ "Packet counters relating to unknown PDUs.";
+
+ uses packet-counters-generic-state;
+ }
+ }
+ }
+
+ grouping system-level-counters-state {
+ description
+ "IS-IS counters that are relevant to the system IS-IS context.";
+
+ leaf corrupted-lsps {
+ type yang:counter32;
+ description
+ "Number of corrupted in-memory LSPs detected. LSPs received from the
+ wire with a bad checksum are silently dropped and not counted. LSPs
+ received from the wire with parse errors are counted by lsp-errors. MIB
+ Entry: SysCorrLSPs.";
+ }
+
+ leaf database-overloads {
+ type yang:counter32;
+ description
+ "Number of times the database has become
+ overloaded.
+ MIB entry: SysLSPL(Level)DbaseOloads.";
+ }
+
+ leaf manual-address-drop-from-areas {
+ type yang:counter32;
+ description
+ "Number of times a manual address has been dropped from area.
+ MIB Entry: SysManAddrDropFromAreas.";
+ }
+
+ leaf exceed-max-seq-nums {
+ type yang:counter32;
+ description
+ "The number of times the system has attempted to exceed the maximum
+ sequence number. MIB Entry: SysAttmptToExMaxSeqNums.";
+ }
+ leaf seq-num-skips {
+ type yang:counter32;
+ description
+ "Number of times a sequence number skip has occurred. MIB Entry:
+ SysSeqNumSkips.";
+ }
+
+ leaf own-lsp-purges {
+ type yang:counter32;
+ description
+ "Number of times a zero-aged copy of the system's
+ own LSP is received from some other node.
+ MIB Entry: isisSysOwnLSPPurges.";
+ }
+
+ leaf id-len-mismatch {
+ type yang:counter32;
+ description
+ "Number of times a PDU is received with a different value for ID field
+ length from that of the receiving system. MIB Entry:
+ isisSysIDFieldLenMismatches.";
+ }
+
+ leaf part-changes {
+ type yang:counter32;
+ description
+ "The number of partition changes detected. MIB Entry: SysPartChanges.";
+ }
+
+ leaf max-area-address-mismatches {
+ type yang:counter32;
+ description
+ "Number of times a PDU is received with a different value for
+ MaximumAreaAddresses from that of the receiving system. MIB Entry:
+ SysMaxAreaAddrMismatches.";
+ }
+
+ leaf auth-fails {
+ type yang:counter32;
+ description
+ "The number of authentication key failures.
+ MIB Entry: SysAuthFails.";
+ }
+
+ leaf spf-runs {
+ type yang:counter32;
+ description
+ "The number of times SPF was ran at this level.";
+ }
+
+ leaf auth-type-fails {
+ type yang:counter32;
+ description
+ "The number of authentication type mismatches.";
+ }
+
+ leaf lsp-errors {
+ type yang:counter32;
+ description
+ "The number of received LSPs with errors.";
+ }
+ }
+
+ grouping system-level-counters-structural {
+ description
+ "This grouping defines system level counters.";
+
+ container state {
+ config false;
+ description
+ "The container defines a list of system counters for the IS.";
+
+ uses system-level-counters-state;
+ }
+ }
+
+ grouping circuit-counters-state {
+ description
+ "Operational state parameters relating to counters specific to one
+ interface or circuit.";
+
+ leaf adj-changes {
+ type yang:counter32;
+ description
+ "Number of times an adjacency state change has occurred on this circuit.
+ MIB Entry: CircAdjChanges.";
+ }
+
+ leaf init-fails {
+ type yang:counter32;
+ description
+ "Number of times initialization of this circuit has failed. This counts
+ events such as PPP NCP failures. MIB Entry: CircInitFails.";
+ }
+
+ leaf rejected-adj {
+ type yang:counter32;
+ description
+ "Number of times an adjacency has been rejected on this circuit. MIB
+ Entry: CircRejAdjs.";
+ }
+
+ leaf id-field-len-mismatches {
+ type yang:counter32;
+ description
+ "Number of times an IS-IS control PDU with an ID field length different
+ from that for this system has been received.
+ MIB Entry: CircIDFieldLenMismatches.";
+ }
+
+ leaf max-area-address-mismatches {
+ type yang:counter32;
+ description
+ "Number of times an IS-IS control PDU with a max area address field
+ different from that for this system has been received. MIB Entry:
+ CircMaxAreaAddrMismatches.";
+ }
+
+ leaf auth-type-fails {
+ type yang:counter32;
+ description
+ "Number of times an IS-IS control PDU with an auth type field different
+ from that for this system has been received. MIB Entry:
+ CircAuthTypeFails.";
+ }
+
+ leaf auth-fails {
+ type yang:counter32;
+ description
+ "Number of times an IS-IS control PDU with the correct auth type has
+ failed to pass authentication validation. MIB Entry: CircAuthFails.";
+ }
+
+ leaf lan-dis-changes {
+ type yang:counter32;
+ description
+ "Number of times the Designated IS has changed on this circuit at this
+ level. If the circuit is point to point, this count is zero. MIB Entry:
+ CircLANDesISChanges.";
+ }
+
+ leaf adj-number {
+ type uint32;
+ description
+ "Number of adjacencies on this circuit.
+ MIB Entry: CircNumAdj.";
+ }
+ }
+
+ grouping circuit-counters-structural {
+ description
+ "This grouping defines circuit counters.";
+
+ container state {
+ config false;
+ description
+ "The container defines a list of counters for IS circuit.";
+
+ uses circuit-counters-state;
+ }
+ }
+}