diff options
Diffstat (limited to 'src/plugins/yang/openconfig/openconfig-isis.yang')
-rw-r--r-- | src/plugins/yang/openconfig/openconfig-isis.yang | 2059 |
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; + } + } +} |