blob: 81ce28171f0e50b605d5fc1ef866ae45dfbf48df [file] [log] [blame]
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.0";
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;
}
}
}
}
}
}
}