| 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; |
| } |
| } |
| } |
| |
| } |
| } |
| } |
| |
| } |