aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/yang/openconfig/openconfig-ospfv2-area-interface.yang
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/yang/openconfig/openconfig-ospfv2-area-interface.yang')
-rw-r--r--src/plugins/yang/openconfig/openconfig-ospfv2-area-interface.yang472
1 files changed, 472 insertions, 0 deletions
diff --git a/src/plugins/yang/openconfig/openconfig-ospfv2-area-interface.yang b/src/plugins/yang/openconfig/openconfig-ospfv2-area-interface.yang
new file mode 100644
index 0000000..f2454c0
--- /dev/null
+++ b/src/plugins/yang/openconfig/openconfig-ospfv2-area-interface.yang
@@ -0,0 +1,472 @@
+submodule openconfig-ospfv2-area-interface {
+
+ belongs-to openconfig-ospfv2 {
+ prefix "oc-ospfv2";
+ }
+
+ import ietf-yang-types { prefix "yang"; }
+ import openconfig-extensions { prefix "oc-ext"; }
+ import openconfig-types { prefix "oc-types"; }
+ import openconfig-interfaces { prefix "oc-if"; }
+ import openconfig-ospf-types { prefix "oc-ospf-types"; }
+
+ // include common submodule
+ include openconfig-ospfv2-common;
+
+ // meta
+ organization "OpenConfig working group";
+
+ contact
+ "OpenConfig working group
+ www.openconfig.net";
+
+ description
+ "This submodule provides OSPFv2 configuration and operational
+ state parameters that are specific to the area context";
+
+ oc-ext:openconfig-version "0.1.2";
+
+ revision "2018-06-05" {
+ description
+ "Bug fixes in when statements in lsdb";
+ reference "0.1.2";
+ }
+
+ revision "2017-08-24" {
+ description
+ "Minor formatting fixes.";
+ reference "0.1.1";
+ }
+
+ revision "2017-02-28"{
+ description
+ "Initial public release of OSPFv2";
+ reference "0.1.0";
+ }
+
+ revision "2016-06-24" {
+ description
+ "Initial revision";
+ reference "0.0.1";
+ }
+
+ grouping ospfv2-area-interface-config {
+ description
+ "Configuration parameters for an OSPF interface";
+
+ leaf id {
+ type string;
+ description
+ "An operator-specified string utilised to uniquely
+ reference this interface";
+ }
+
+ leaf network-type {
+ type identityref {
+ base "oc-ospf-types:OSPF_NETWORK_TYPE";
+ }
+ description
+ "The type of network that OSPFv2 should use for the specified
+ interface.";
+ }
+
+ leaf priority {
+ type uint8;
+ description
+ "The local system's priority to become the designated
+ router";
+ }
+
+ leaf multi-area-adjacency-primary {
+ type boolean;
+ default true;
+ description
+ "When the specified interface is included in more than one
+ area's configuration, this leaf marks whether the area should
+ be considered the primary (when the value is true). In the
+ case that this value is false, the area is considered a
+ secondary area.";
+ }
+
+ leaf authentication-type {
+ type string;
+ // rjs TODO: discuss with bogdanov@ what the approach for auth
+ // links should be.
+ description
+ "The type of authentication that should be used on this
+ interface";
+ }
+
+ leaf metric {
+ type oc-ospf-types:ospf-metric;
+ description
+ "The metric for the interface";
+ }
+
+ leaf passive {
+ type boolean;
+ description
+ "When this leaf is set to true, the interface should be
+ advertised within the OSPF area but OSPF adjacencies should
+ not be established over the interface";
+ }
+
+ leaf hide-network {
+ type boolean;
+ description
+ "When this leaf is set to true, the network connected to
+ the interface should be hidden from OSPFv2 advertisements
+ per the procedure described in RFC6860.";
+ reference
+ "RFC6860 - Hiding Transit-Only Networks in OSFF";
+ }
+ }
+
+ grouping ospfv2-area-interface-timers-config {
+ description
+ "Configuration parameters relating to per-interface OSPFv2
+ timers";
+
+ leaf dead-interval {
+ type uint32;
+ units seconds;
+ description
+ "The number of seconds that the local system should let
+ elapse before declaring a silent router down";
+ reference "RFC2328";
+ }
+
+ leaf hello-interval {
+ type uint32;
+ units seconds;
+ description
+ "The number of seconds the local system waits between the
+ transmission of subsequent Hello packets";
+ }
+
+ leaf retransmission-interval {
+ type uint32;
+ units seconds;
+ description
+ "The number of seconds that the local system waits before
+ retransmitting an unacknowledged LSA.";
+ }
+ }
+
+ grouping ospfv2-area-interface-mpls-config {
+ description
+ "Configuration parameters relating to MPLS extensions for OSPF";
+
+ leaf traffic-engineering-metric {
+ type uint32;
+ description
+ "A link metric that should only be considered for traffic
+ engineering purposes.";
+ reference "RFC3630, #2.5.5";
+ }
+ }
+
+ grouping ospfv2-area-interface-neighbor-config {
+ description
+ "Configuration parameters relating to an individual neighbor
+ system on an interface within an OSPF area";
+
+ leaf router-id {
+ type yang:dotted-quad;
+ description
+ "The router ID of the remote system.";
+ }
+
+ leaf metric {
+ type oc-ospf-types:ospf-metric;
+ description
+ "The metric that should be considered to the remote neighbor
+ over this interface. This configuration is only applicable
+ for multiple-access networks";
+ }
+ }
+
+ grouping ospfv2-area-interface-neighbor-state {
+ description
+ "Operational state parameters relating an individual neighbor
+ system on an interface within an OSPF area";
+
+ leaf priority {
+ type uint8;
+ description
+ "The remote system's priority to become the designated
+ router";
+ }
+
+ leaf dead-time {
+ // rjs TODO: discussion with aashaikh@ + hines@ around how this
+ // value should be represented, usually is a timer that
+ // continually counts down but this sounds challenging for
+ // telemetry.
+ type oc-types:timeticks64;
+ description
+ "The time at which this neighbor's adjacency will be
+ considered dead. This value is expressed as a number of
+ seconds since the Unix Epoch";
+ }
+
+ leaf designated-router {
+ type yang:dotted-quad;
+ description
+ "The designated router for the adjacency. This device
+ advertises the Network LSA for broadcast and NBMA networks.";
+ }
+
+ leaf backup-designated-router {
+ type yang:dotted-quad;
+ description
+ "The backup designated router for the adjacency.";
+ }
+
+ leaf optional-capabilities {
+ // rjs TODO: should this be anything more than the hex-string
+ // this is currently what is shown in IOS/JUNOS
+ type yang:hex-string;
+ description
+ "The optional capabilities field received in the Hello
+ message from the neighbor";
+ }
+
+ leaf last-established-time {
+ type oc-types:timeticks64;
+ units seconds;
+ // rjs TODO: check implementations - is FULL considered 'up'
+ // since the adjacency is probably up since ExStart
+ description
+ "The time at which the adjacency was last established with
+ the neighbor. That is to say the time at which the
+ adjacency last transitioned into the FULL state.
+
+ This value is expressed as the number of seconds, relative to
+ the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
+ }
+
+ leaf adjacency-state {
+ type identityref {
+ base "oc-ospf-types:OSPF_NEIGHBOR_STATE";
+ }
+ description
+ "The state of the adjacency with the neighbor.";
+ }
+
+ leaf state-changes {
+ type uint32;
+ description
+ "The number of transitions out of the FULL state that this
+ neighbor has been through";
+ }
+
+ leaf retranmission-queue-length {
+ type uint32;
+ description
+ "The number of LSAs that are currently in the queue to be
+ retransmitted to the neighbor";
+ }
+ }
+
+ grouping ospfv2-area-interface-lsa-filter-config {
+ description
+ "Configuration options relating to filtering LSAs
+ on an interface.";
+
+ leaf all {
+ type boolean;
+ description
+ "When this leaf is set to true, all LSAs should be
+ filtered to the neighbours with whom adjacencies are
+ formed on the interface.";
+ }
+
+ // NB: this container can be augmented to add additional
+ // filtering options which exist in some implementations.
+ }
+
+ grouping ospfv2-area-interface-mpls-igp-ldp-sync-state {
+ description
+ "Operational state parameters relating to MPLS LDP/IGP
+ synchronization on a per-neighbor basis";
+
+ leaf synchronized {
+ type boolean;
+ description
+ "When the value of this leaf is set to true, the
+ LDP neighbors reachable via this interface are considered
+ to be synchronized, and hence the link is considered
+ usable by the IGP.";
+ }
+ }
+
+ grouping ospfv2-area-interfaces-structure {
+ description
+ "Structural grouping for configuration and operational state
+ parameters that relate to an interface";
+
+ container interfaces {
+ description
+ "Enclosing container for a list of interfaces enabled within
+ this area";
+
+ list interface {
+ key "id";
+
+ description
+ "List of interfaces which are enabled within this area";
+
+ leaf id {
+ type leafref {
+ path "../config/id";
+ }
+ description
+ "A pointer to the identifier for the interface.";
+ }
+
+ container config {
+ description
+ "Configuration parameters for the interface on which
+ OSPFv2 is enabled";
+
+ uses ospfv2-area-interface-config;
+ }
+
+ container state {
+ config false;
+ description
+ "Operational state parameters for the interface on which
+ OSPFv2 is enabled";
+ uses ospfv2-area-interface-config;
+ }
+
+ uses oc-if:interface-ref;
+
+ container timers {
+ description
+ "Timers relating to OSPFv2 on the interface";
+
+ container config {
+ description
+ "Configuration parameters for OSPFv2 timers on the
+ interface";
+ uses ospfv2-area-interface-timers-config;
+ }
+
+ container state {
+ config false;
+ description
+ "Operational state parameters for OSPFv2 timers on
+ the interface";
+
+ uses ospfv2-area-interface-timers-config;
+ }
+ }
+
+ container mpls {
+ description
+ "Configuration and operational state parameters for
+ OSPFv2 extensions related to MPLS on the interface.";
+
+ container config {
+ description
+ "Configuration parameters for OSPFv2 extensions relating
+ to MPLS for the interface";
+ uses ospfv2-area-interface-mpls-config;
+ }
+
+ container state {
+ config false;
+ description
+ "Operational state for OSPFv2 extensions relating to
+ MPLS for the interface";
+ uses ospfv2-area-interface-mpls-config;
+ }
+
+ container igp-ldp-sync {
+ description
+ "OSPFv2 parameters relating to LDP/IGP synchronization";
+
+ container config {
+ description
+ "Configuration parameters relating to LDP/IG
+ synchronization.";
+ uses ospfv2-common-mpls-igp-ldp-sync-config;
+ }
+
+ container state {
+ config false;
+ description
+ "Operational state variables relating to LDP/IGP
+ synchronization";
+ uses ospfv2-common-mpls-igp-ldp-sync-config;
+ uses ospfv2-area-interface-mpls-igp-ldp-sync-state;
+ }
+ }
+ }
+
+ container lsa-filter {
+ description
+ "OSPFv2 parameters relating to filtering of LSAs to
+ neighbors the specified interface.";
+
+ container config {
+ description
+ "Configuration parameters relating to filtering LSAs
+ on the specified interface.";
+ uses ospfv2-area-interface-lsa-filter-config;
+ }
+
+ container state {
+ config false;
+ description
+ "Operational state parameters relating to filtering
+ LSAs on the specified interface";
+ uses ospfv2-area-interface-lsa-filter-config;
+ }
+ }
+
+ container neighbors {
+ description
+ "Enclosing container for the list of neighbors that
+ an adjacency has been established with on the interface";
+
+ list neighbor {
+ key "router-id";
+
+ description
+ "A neighbor with which an OSPFv2 adjacency has been
+ established within this area";
+
+ leaf router-id {
+ type leafref {
+ path "../config/router-id";
+ }
+ description
+ "Reference to the router ID of the adjacent system";
+ }
+
+ container config {
+ description
+ "Configuration parameters relating to the adjacent
+ system";
+ uses ospfv2-area-interface-neighbor-config;
+ }
+
+ container state {
+ config false;
+ description
+ "Operational state parameters relating to the adjacent
+ system";
+ uses ospfv2-area-interface-neighbor-config;
+ uses ospfv2-area-interface-neighbor-state;
+ }
+ }
+ }
+
+ }
+ }
+ }
+
+} \ No newline at end of file