--- 1/draft-ietf-ospf-yang-24.txt 2019-08-05 09:13:26.012395202 -0700 +++ 2/draft-ietf-ospf-yang-25.txt 2019-08-05 09:13:26.224400555 -0700 @@ -1,25 +1,25 @@ Internet D. Yeung Internet-Draft Arrcus Intended status: Standards Track Y. Qu -Expires: January 30, 2020 Huawei +Expires: February 6, 2020 Huawei J. Zhang Juniper Networks I. Chen The MITRE Corporation A. Lindem Cisco Systems - July 29, 2019 + August 5, 2019 YANG Data Model for OSPF Protocol - draft-ietf-ospf-yang-24 + draft-ietf-ospf-yang-25 Abstract This document defines a YANG data model that can be used to configure and manage OSPF. The model is based on YANG 1.1 as defined in RFC 7950 and conforms to the Network Management Datastore Architecture (NDMA) as described in RFC 8342. Status of This Memo @@ -29,21 +29,21 @@ Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at https://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." - This Internet-Draft will expire on January 30, 2020. + This Internet-Draft will expire on February 6, 2020. Copyright Notice Copyright (c) 2019 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents @@ -62,28 +62,28 @@ 2.1. OSPF Operational State . . . . . . . . . . . . . . . . . 3 2.2. Overview . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3. OSPFv2 and OSPFv3 . . . . . . . . . . . . . . . . . . . . 5 2.4. Optional Features . . . . . . . . . . . . . . . . . . . . 5 2.5. OSPF Router Configuration/Operational State . . . . . . . 7 2.6. OSPF Area Configuration/Operational State . . . . . . . . 10 2.7. OSPF Interface Configuration/Operational State . . . . . 16 2.8. OSPF Notifications . . . . . . . . . . . . . . . . . . . 19 2.9. OSPF RPC Operations . . . . . . . . . . . . . . . . . . . 23 3. OSPF YANG Module . . . . . . . . . . . . . . . . . . . . . . 23 - 4. Security Considerations . . . . . . . . . . . . . . . . . . . 115 - 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 117 - 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 117 - 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 117 - 7.1. Normative References . . . . . . . . . . . . . . . . . . 117 - 7.2. Informative References . . . . . . . . . . . . . . . . . 123 - Appendix A. Contributors' Addresses . . . . . . . . . . . . . . 125 - Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 125 + 4. Security Considerations . . . . . . . . . . . . . . . . . . . 117 + 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 119 + 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 119 + 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 119 + 7.1. Normative References . . . . . . . . . . . . . . . . . . 119 + 7.2. Informative References . . . . . . . . . . . . . . . . . 125 + Appendix A. Contributors' Addresses . . . . . . . . . . . . . . 126 + Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 126 1. Overview YANG [RFC6020][RFC7950] is a data definition language used to define the contents of a conceptual data store that allows networked devices to be managed using NETCONF [RFC6241]. YANG is proving relevant beyond its initial confines, as bindings to other interfaces (e.g., ReST) and encodings other than XML (e.g., JSON) are being defined. Furthermore, YANG data models can be used as the basis for implementation of other interfaces, such as CLI and programmatic @@ -153,21 +153,20 @@ ietf-ospf model defines a single instance of OSPF which may be instantiated as an OSPFv2 or OSPFv3 instance. Multiple instances are instantiated as multiple control-plane protocols instances. module: ietf-ospf augment /rt:routing/rt:control-plane-protocols/ rt:control-plane-protocol: +--rw ospf . . - +--rw operation-mode? identityref +--rw af? identityref . . +--rw areas | +--rw area* [area-id] | +--rw area-id area-id-type | . | . | +--rw virtual-links | | +--rw virtual-link* [transit-area-id router-id] @@ -186,22 +185,22 @@ . . The ospf module is intended to match to the vendor specific OSPF configuration construct that is identified by the local identifier 'name'. The ospf container includes one OSPF protocol instance. The instance includes OSPF router level configuration and operational state. - The area and area/interface containers respectively define the OSPF - configuration and operational state for OSPF areas and interfaces. + The area and area/interface containers define the OSPF configuration + and operational state for OSPF areas and interfaces respectively. The topologies container defines the OSPF configuration and operational state for OSPF topologies when the multi-topology feature is supported. 2.3. OSPFv2 and OSPFv3 The data model defined herein supports both OSPFv2 and OSPFv3. The field 'version' is used to indicate the OSPF version and is @@ -1083,21 +1082,21 @@ -> /rt:routing/control-plane-protocols/ control-plane-protocol/name 3. OSPF YANG Module The following RFCs and drafts are not referenced in the document text but are referenced in the ietf-ospf.yang module: [RFC0905], [RFC4576], [RFC4973], [RFC5250], [RFC5309], [RFC5642], [RFC5881], [RFC6991], [RFC7770], [RFC7884], [RFC8294], and [RFC8476]. - file "ietf-ospf@2019-07-29.yang" + file "ietf-ospf@2019-08-05.yang" module ietf-ospf { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-ospf"; prefix ospf; import ietf-inet-types { prefix "inet"; reference "RFC 6991: Common YANG Data Types"; } @@ -1141,31 +1139,32 @@ prefix "bfd-types"; reference "RFC YYYY: YANG Data Model for Bidirectional Forwarding Detection (BFD). Please replace YYYY with published RFC number for draft-ietf-bfd-yang."; } organization "IETF LSR - Link State Routing Working Group"; contact - "WG Web: + "WG Web: WG List: Editor: Derek Yeung Author: Acee Lindem Author: Yingzhen Qu - Author: Jeffrey Zhang - + + Author: Salih K A + Author: Ing-Wher Chen "; description "This YANG module defines the generic configuration and operational state for the OSPF protocol common to all vendor implementations. It is intended that the module will be extended by vendors to define vendor-specific OSPF configuration parameters and policies, for example, route maps or route policies. @@ -1189,26 +1188,27 @@ The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document are to be interpreted as described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here. This version of this YANG module is part of RFC XXXX; see the RFC itself for full legal notices."; - revision 2019-07-29 { + revision 2019-08-05 { description "Initial revision."; reference "RFC XXXX: A YANG Data Model for OSPF."; } + feature multi-topology { description "Support Multiple-Topology Routing (MTR)."; reference "RFC 4915: Multi-Topology Routing"; } feature multi-area-adj { description "OSPF multi-area adjacency support as in RFC 5185."; reference "RFC 5185: Multi-Area Adjacency"; @@ -1418,25 +1414,20 @@ identity ospfv2 { base "ospf"; description "OSPFv2 protocol"; } identity ospfv3 { base "ospf"; description "OSPFv3 protocol"; } - identity operation-mode { - description - "OSPF operation mode."; - } - identity area-type { description "Base identity for OSPF area type."; } identity normal-area { base area-type; description "OSPF normal area."; } identity stub-nssa-area { @@ -1625,35 +1620,277 @@ description "Base identity for an LSA log reason."; } identity lsa-refresh { base lsa-log-reason; description "Identity used when the LSA is logged as a result of receiving a refresh LSA."; } + identity lsa-content-change { base lsa-log-reason; description "Identity used when the LSA is logged as a result of a change in the content of the LSA."; } - identity lsa-purge { base lsa-log-reason; description "Identity used when the LSA is logged as a result of being purged."; } + identity informational-capability { + description + "Base identity for router informational capabilities."; + } + + identity graceful-restart { + base informational-capability; + description + "When set, the router is capable of restarting + gracefully."; + reference "RFC 3623: Graceful OSPF Restart + RFC 5187: OSPFv3 Graceful Restart"; + } + + identity graceful-restart-helper { + base informational-capability; + description + "When set, the router is capable of acting as + a graceful restart helper."; + reference "RFC 3623: Graceful OSPF Restart + RFC 5187: OSPFv3 Graceful Restart"; + } + + identity stub-router { + base informational-capability; + description + "When set, the router is capable of acting as + an OSPF Stub Router."; + reference "RFC 6987: OSPF Stub Router Advertisement"; + } + + identity traffic-engineering { + base informational-capability; + description + "When set, the router is capable of OSPF traffic + engineering."; + reference "RFC 3630: Traffic Engineering (TE) Extensions + to OSPF Version 2 + RFC 5329: Traffic Engineering (TE) Extensions + to OSPF Version 3"; + } + identity p2p-over-lan { + base informational-capability; + description + "When set, the router is capable of OSPF Point-to-Point + over LAN."; + reference "RFC 5309: Point-to-Point Operation over LAN + in Link State Routing Protocols"; + } + + identity experimental-te { + base informational-capability; + description + "When set, the router is capable of OSPF experimental + traffic engineering."; + reference + "RFC 4973: OSPF-xTE OSPF Experimental Traffic + Engineering"; + } + + identity router-lsa-bit { + description + "Base identity for Router-LSA bits."; + } + + identity vlink-end-bit { + base router-lsa-bit; + description + "V bit, when set, the router is an endpoint of one or + more virtual links."; + } + + identity asbr-bit { + base router-lsa-bit; + description + "E bit, when set, the router is an AS Boundary + Router (ASBR)."; + } + + identity abr-bit { + base router-lsa-bit; + description + "B bit, when set, the router is an Area Border + Router (ABR)."; + } + + identity nssa-bit { + base router-lsa-bit; + description + "Nt bit, when set, the router is an NSSA border router + that is unconditionally translating NSSA LSAs into + AS-external LSAs."; + } + + identity ospfv3-lsa-option { + description + "Base identity for OSPF LSA options flags."; + } + + identity af-bit { + base ospfv3-lsa-option; + description + "AF bit, when set, the router supports OSPFv3 Address + Families as in RFC5838."; + } + + identity dc-bit { + base ospfv3-lsa-option; + description + "DC bit, when set, the router supports demand circuits."; + } + + identity r-bit { + base ospfv3-lsa-option; + description + "R bit, when set, the originator is an active router."; + } + + identity n-bit { + base ospfv3-lsa-option; + description + "N bit, when set, the router is attached to an NSSA"; + } + + identity e-bit { + base ospfv3-lsa-option; + description + "E bit, this bit describes the way AS-external LSAs + are flooded"; + } + + identity v6-bit { + base ospfv3-lsa-option; + description + "V6 bit, if clear, the router/link should be excluded + from IPv6 routing calculation"; + } + identity ospfv3-prefix-option { + description + "Base identity for OSPFv3 Prefix Options."; + } + + identity nu-bit { + base ospfv3-prefix-option; + description + "When set, the prefix should be excluded + from IPv6 unicast calculations."; + } + + identity la-bit { + base ospfv3-prefix-option; + description + "When set, the prefix is actually an IPv6 interface + address of the Advertising Router."; + } + + identity p-bit { + base ospfv3-prefix-option; + description + "When set, the NSSA area prefix should be + translated to an AS External LSA and advertised + by the translating NSSA Border Router."; + } + + identity dn-bit { + base ospfv3-prefix-option; + description + "When set, the inter-area-prefix LSA or + AS-external LSA prefix has been advertised as an + L3VPN prefix."; + } + + identity ospfv2-lsa-option { + description + "Baes idenity for OSPFv2 LSA option flags."; + } + + identity mt-bit { + base ospfv2-lsa-option; + description + "When set, the router supports multi-topology as + in RFC 4915."; + } + + identity v2-dc-bit { + base ospfv2-lsa-option; + description + "When set, the router supports demand circuits."; + } + + identity v2-p-bit { + base ospfv2-lsa-option; + description + "Only used in type-7 LSA. When set, an NSSA + border router should translate the type-7 LSA + to a type-5 LSA."; + } + + identity mc-flag { + base ospfv2-lsa-option; + description + "When set, the router supports MOSPF."; + } + + identity v2-e-flag { + base ospfv2-lsa-option; + description + "This bit describes the way AS-external LSAs + are flooded."; + } + + identity o-bit { + base ospfv2-lsa-option; + description + "When set, the router is opaque-capable as in + RFC 5250."; + } + + identity v2-dn-bit { + base ospfv2-lsa-option; + description + "When a type 3, 5 or 7 LSA is sent from a PE to a CE, + the DN bit must be set. See RFC 4576."; + } + + identity ospfv2-extended-prefix-flag { + description + "Base identity for extended prefix TLV flag."; + } + + identity a-flag { + base ospfv2-extended-prefix-flag; + description + "Attach flag."; + } + + identity node-flag { + base ospfv2-extended-prefix-flag; + description + "Node flag."; + } + typedef ospf-metric { type uint32 { range "0 .. 16777215"; } description "OSPF Metric - 24-bit unsigned integer."; } typedef ospf-link-metric { type uint16 { @@ -2010,76 +2249,37 @@ } } grouping node-tag-tlv { description "OSPF Node Admin Tag TLV grouping."; list node-tag { leaf tag { type uint32; description "Node admin tag value."; - } description "List of tags."; } } - grouping router-capabilities-tlv { description "OSPF Router Capabilities TLV grouping."; reference "RFC 7770: OSPF Router Capabilities"; - leaf informational-flags { - type bits { - bit graceful-restart-capability { - description - "When set, the router is capable of restarting - gracefully."; - reference "RFC 3623: Graceful OSPF Restart - RFC 5187: OSPFv3 Graceful Restart"; - } - bit graceful-restart-helper { - description - "When set, the router is capable of acting as - a graceful restart helper."; - reference "RFC 3623: Graceful OSPF Restart - RFC 5187: OSPFv3 Graceful Restart"; - } - bit stub-router { - description - "When set, the router is capable of acting as - an OSPF Stub Router."; - reference "RFC 6987: OSPF Stub Router Advertisement"; - } - bit traffic-engineering { - description - "When set, the router is capable of OSPF traffic - engineering."; - reference "RFC 3630: Traffic Engineering (TE) Extensions - to OSPF Version 2 - RFC 5329: Traffic Engineering (TE) Extensions - to OSPF Version 3"; - } - bit p2p-over-lan { - description - "When set, the router is capable of OSPF Point-to-Point - over LAN."; - reference "RFC 5309: Point-to-Point Operation over LAN - in Link State Routing Protocols"; + container router-informational-capabilities { + leaf-list informational-capabilitiess { + type identityref { + base informational-capability; } - bit experimental-te { description - "When set, the router is capable of OSPF experimental - traffic engineering."; - reference - "RFC 4973: OSPF-xTE OSPF Experimental Traffic - Engineering"; - } + "Informational capability list. This list will + contains the identities for the informational + capabilities supported by router."; } description "OSPF Router Informational Flag Definitions."; } list informational-capabilities { leaf informational-flag { type uint32; description "Informational flag."; } @@ -2134,50 +2334,37 @@ leaf msd-value { type uint8; description "Maximum Segment Depth (MSD) value for the type"; } description "List of Maximum Segment Depth (MSD) tuples"; } } - grouping ospf-router-lsa-flags { - leaf flags { - type bits { - bit V { - description - "When set, the router is an endpoint of one or - more virtual links."; - } - bit E { - description - "When set, the router is an AS Boundary Router - (ASBR)."; - } - bit B { - description - "When set, the router is an Area Border - Router (ABR)."; + grouping ospf-router-lsa-bits { + container rputer-bits { + leaf-list rtr-lsa-bits { + type identityref { + base router-lsa-bit; } - bit Nt { description - "When set, the router is an NSSA border router - that is unconditionally translating NSSA LSAs - into AS-external LSAs."; - } + "Router LSA bits list. This list will contain + identities for the bits which are set in the + Router-LSA bits."; } - description "Router LSA Flags."; + description "Router LSA Bits."; } description - "Router LSA Flags - Currently common for OSPFv2 and + "Router LSA Bits - Currently common for OSPFv2 and OSPFv3 but it may diverge with future augmentations."; + } grouping ospfv2-router-link { description "OSPFv2 router link."; leaf link-id { type union { type inet:ipv4-address; type yang:dotted-quad; } description "Router-LSA Link ID"; @@ -2198,21 +2385,21 @@ grouping ospfv2-lsa-body { description "OSPFv2 LSA body."; container router { when "derived-from-or-self(../../header/type, " + "'ospfv2-router-lsa')" { description "Only applies to Router-LSAs."; } description "Router LSA."; - uses ospf-router-lsa-flags; + uses ospf-router-lsa-bits; leaf num-of-links { type uint16; description "Number of links in Router LSA."; } container links { description "All router Links."; list link { description "Router LSA link."; uses ospfv2-router-link; container topologies { @@ -2497,30 +2683,30 @@ value "5"; description "OSPF External route."; } enum nssa { value "7"; description "OSPF NSSA external route."; } } description "Route type."; } - leaf flags { - type bits { - bit A { - description - "Attach flag."; + container flags { + leaf-list extended-prefix-flags { + type identityref { + base ospfv2-extended-prefix-flag; + } - bit N { description - "Node flag."; - } + "Extended prefix TLV flags list. This list will + contain identities for the prefix flags that + are set in the extended prefix flags."; } description "Prefix Flags."; } leaf prefix { type inet:ip-prefix; description "Address prefix."; } uses unknown-tlvs; } } @@ -2535,90 +2721,53 @@ uses maximum-sid-depth-tlv; } uses unknown-tlvs; } } } } grouping ospfv3-lsa-options { description "OSPFv3 LSA options"; - leaf options { - type bits { - bit AF { - description - "When set, the router supports OSPFv3 Address - Families as in RFC5838."; - } - bit DC { - description - "When set, the router supports demand circuits."; - } - bit R { - description - "When set, the originator is an active router."; - } - bit N { - description - "If set, the router is attached to an NSSA"; - } - bit E { - description - "This bit describes the way AS-external LSAs - are flooded"; + container lsa-options { + leaf-list lsa-options { + type identityref { + base ospfv3-lsa-option; } - bit V6 { description - "If clear, the router/link should be excluded - from IPv6 routing calculation"; - } + "OSPFv3 LSA Option flags list. This list will contain + the identities for the OSPFv3 LSA options that are + set for the LSA."; } - mandatory true; description "OSPFv3 LSA options."; } } grouping ospfv3-lsa-prefix { description "OSPFv3 LSA prefix."; leaf prefix { type inet:ip-prefix; description "LSA Prefix."; } - leaf prefix-options { - type bits { - bit NU { - description - "When set, the prefix should be excluded - from IPv6 unicast calculations."; - } - bit LA { - description - "When set, the prefix is actually an IPv6 interface - address of the Advertising Router."; - } - bit P { - description - "When set, the NSSA area prefix should be - translated to an AS External LSA and advertised - by the translating NSSA Border Router."; + container prefix-options { + leaf-list prefix-options { + type identityref { + base ospfv3-prefix-option; } - bit DN { description - "When set, the inter-area-prefix LSA or - AS-external LSA prefix has been advertised as an - L3VPN prefix."; - } + "OSPFv3 prefix option flag list. This list will + contain the identities for the OSPFv3 options + that are set for the OSPFv3 prefix."; } - mandatory true; description "Prefix options."; } } grouping ospfv3-lsa-external { description "AS-External and NSSA LSA."; leaf metric { type ospf-metric; description "Metric"; @@ -2680,21 +2828,21 @@ grouping ospfv3-lsa-body { description "OSPFv3 LSA body."; container router { when "derived-from-or-self(../../header/type, " + "'ospfv3-router-lsa')" { description "Only applies to Router LSAs."; } description "Router LSA."; - uses ospf-router-lsa-flags; + uses ospf-router-lsa-bits; uses ospfv3-lsa-options; container links { description "All router link."; list link { description "Router LSA link."; leaf interface-id { type uint32; description "Interface ID for link."; } @@ -2958,60 +3106,35 @@ + "'ospfv2-opaque-lsa-type') and " + "opaque-id and opaque-type) or " + "(not(derived-from(type, " + "'ospfv2-opaque-lsa-type')) " + "and not(opaque-id) and not(opaque-type))" { description "Opaque type and ID only apply to Opaque LSAs."; } description "Decoded OSPFv2 LSA header data."; - leaf option { - type bits { - bit MT { - description - "When set, the router supports multi-topology as - in RFC 4915."; - } - bit DC { - description - "When set, the router supports demand circuits."; - } - bit P { - description - "Only used in type-7 LSA. When set, an NSSA - border router should translate the type-7 LSA - to a type-5 LSA."; - } - bit MC { - description - "When set, the router supports MOSPF."; - } - bit E { - description - "This bit describes the way AS-external LSAs - are flooded."; + + container lsa-options { + leaf-list lsa-options { + type identityref { + base ospfv2-lsa-option; } - bit O { description - "When set, the router is opaque-capable as in - RFC 5250."; + "LSA option flags list. This list will contain + the identities for the identities for the OSPFv2 + LSA options that are set."; } - bit DN { description - "When a type 3, 5 or 7 LSA is sent from a PE to a CE, - the DN bit must be set. See RFC 4576."; - } - } - mandatory true; - description "LSA options."; + "LSA options."; } + leaf lsa-id { type yang:dotted-quad; mandatory true; description "Link-State ID."; } leaf opaque-type { type uint8; description "Opaque type."; } @@ -4639,30 +4765,20 @@ } } } } } } uses spf-log; uses lsa-log; } - grouping ospf-config { - description - "OSPF top configuration state - currently empty."; - } - - grouping ospf-state { - description - "OSPF top operational state - currently empty."; - } - grouping multi-topology-area-common-config { description "OSPF multi-topology area common configuration state."; leaf summary { when "derived-from(../../../area-type, 'stub-nssa-area')" { description "Summary advertisement into the stub/NSSA area."; } type boolean; description @@ -4683,48 +4799,38 @@ } grouping multi-topology-area-config { description "OSPF multi-topology area configuration state."; uses multi-topology-area-common-config; uses address-family-area-config; } - grouping multi-topology-config { - description - "OSPF multi-topology configuration state."; - } - grouping multi-topology-state { description "OSPF multi-topology operational state."; uses local-rib; } grouping multi-topology-interface-config { description "OSPF multi-topology configuration state."; leaf cost { type ospf-link-metric; description "Interface cost for this topology."; } } - grouping multi-topology-interface-state { - description - "OSPF multi-topology operational state."; - } - grouping ospfv3-interface-config { description "OSPFv3 interface specific configuration state."; leaf instance-id { type uint8 { range "0 .. 31"; } description "OSPFv3 instance ID."; @@ -4888,23 +4996,20 @@ "This augmentation is only valid for a routing protocol instance of OSPF (type 'ospfv2' or 'ospfv3')."; } description "OSPF protocol ietf-routing module control-plane-protocol augmentation."; container ospf { description "OSPF protocol Instance"; - uses ospf-config; - uses ospf-state; - leaf address-family { type iana-rt-types:address-family; description "Address-family of the instance."; } uses instance-config; uses instance-state; container areas { description "All areas."; @@ -5022,21 +5127,20 @@ must coincide with the routing-instance address-family."; leaf name { type leafref { path "../../../../../../rt:ribs/rt:rib/rt:name"; } description "RIB name corresponding to the OSPF topology."; } - uses multi-topology-config; uses multi-topology-state; } } } augment "/rt:routing/rt:control-plane-protocols/" + "rt:control-plane-protocol/ospf/" + "areas/area" { when "derived-from-or-self(../../../rt:type, " + "'ospfv2')" { @@ -5086,28 +5190,28 @@ leaf name { type leafref { path "../../../../../../../../../../" + "rt:ribs/rt:rib/rt:name"; } description "Single topology enabled on this interface."; } uses multi-topology-interface-config; - uses multi-topology-interface-state; } } } augment "/rt:routing/rt:control-plane-protocols/" + "rt:control-plane-protocol/ospf/" + "areas/area/interfaces/interface" { + when "derived-from-or-self(../../../../../rt:type, " + "'ospfv3')" { description "This augmentation is only valid for OSPFv3."; } description "OSPFv3 interface specific configuration state augmentation."; uses ospfv3-interface-config; uses ospfv3-interface-state;