< draft-ietf-ospf-yang-24.txt   draft-ietf-ospf-yang-25.txt >
Internet D. Yeung Internet D. Yeung
Internet-Draft Arrcus Internet-Draft Arrcus
Intended status: Standards Track Y. Qu Intended status: Standards Track Y. Qu
Expires: January 30, 2020 Huawei Expires: February 6, 2020 Huawei
J. Zhang J. Zhang
Juniper Networks Juniper Networks
I. Chen I. Chen
The MITRE Corporation The MITRE Corporation
A. Lindem A. Lindem
Cisco Systems Cisco Systems
July 29, 2019 August 5, 2019
YANG Data Model for OSPF Protocol YANG Data Model for OSPF Protocol
draft-ietf-ospf-yang-24 draft-ietf-ospf-yang-25
Abstract Abstract
This document defines a YANG data model that can be used to configure 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 and manage OSPF. The model is based on YANG 1.1 as defined in RFC
7950 and conforms to the Network Management Datastore Architecture 7950 and conforms to the Network Management Datastore Architecture
(NDMA) as described in RFC 8342. (NDMA) as described in RFC 8342.
Status of This Memo Status of This Memo
skipping to change at page 1, line 40 skipping to change at page 1, line 40
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." 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 Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2019 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 27 skipping to change at page 2, line 27
2.1. OSPF Operational State . . . . . . . . . . . . . . . . . 3 2.1. OSPF Operational State . . . . . . . . . . . . . . . . . 3
2.2. Overview . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2. Overview . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3. OSPFv2 and OSPFv3 . . . . . . . . . . . . . . . . . . . . 5 2.3. OSPFv2 and OSPFv3 . . . . . . . . . . . . . . . . . . . . 5
2.4. Optional Features . . . . . . . . . . . . . . . . . . . . 5 2.4. Optional Features . . . . . . . . . . . . . . . . . . . . 5
2.5. OSPF Router Configuration/Operational State . . . . . . . 7 2.5. OSPF Router Configuration/Operational State . . . . . . . 7
2.6. OSPF Area Configuration/Operational State . . . . . . . . 10 2.6. OSPF Area Configuration/Operational State . . . . . . . . 10
2.7. OSPF Interface Configuration/Operational State . . . . . 16 2.7. OSPF Interface Configuration/Operational State . . . . . 16
2.8. OSPF Notifications . . . . . . . . . . . . . . . . . . . 19 2.8. OSPF Notifications . . . . . . . . . . . . . . . . . . . 19
2.9. OSPF RPC Operations . . . . . . . . . . . . . . . . . . . 23 2.9. OSPF RPC Operations . . . . . . . . . . . . . . . . . . . 23
3. OSPF YANG Module . . . . . . . . . . . . . . . . . . . . . . 23 3. OSPF YANG Module . . . . . . . . . . . . . . . . . . . . . . 23
4. Security Considerations . . . . . . . . . . . . . . . . . . . 115 4. Security Considerations . . . . . . . . . . . . . . . . . . . 117
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 117 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 119
6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 117 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 119
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 117 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 119
7.1. Normative References . . . . . . . . . . . . . . . . . . 117 7.1. Normative References . . . . . . . . . . . . . . . . . . 119
7.2. Informative References . . . . . . . . . . . . . . . . . 123 7.2. Informative References . . . . . . . . . . . . . . . . . 125
Appendix A. Contributors' Addresses . . . . . . . . . . . . . . 125 Appendix A. Contributors' Addresses . . . . . . . . . . . . . . 126
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 125 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 126
1. Overview 1. Overview
YANG [RFC6020][RFC7950] is a data definition language used to define YANG [RFC6020][RFC7950] is a data definition language used to define
the contents of a conceptual data store that allows networked devices the contents of a conceptual data store that allows networked devices
to be managed using NETCONF [RFC6241]. YANG is proving relevant to be managed using NETCONF [RFC6241]. YANG is proving relevant
beyond its initial confines, as bindings to other interfaces (e.g., beyond its initial confines, as bindings to other interfaces (e.g.,
ReST) and encodings other than XML (e.g., JSON) are being defined. ReST) and encodings other than XML (e.g., JSON) are being defined.
Furthermore, YANG data models can be used as the basis for Furthermore, YANG data models can be used as the basis for
implementation of other interfaces, such as CLI and programmatic implementation of other interfaces, such as CLI and programmatic
skipping to change at page 4, line 22 skipping to change at page 4, line 22
ietf-ospf model defines a single instance of OSPF which may be ietf-ospf model defines a single instance of OSPF which may be
instantiated as an OSPFv2 or OSPFv3 instance. Multiple instances are instantiated as an OSPFv2 or OSPFv3 instance. Multiple instances are
instantiated as multiple control-plane protocols instances. instantiated as multiple control-plane protocols instances.
module: ietf-ospf module: ietf-ospf
augment /rt:routing/rt:control-plane-protocols/ augment /rt:routing/rt:control-plane-protocols/
rt:control-plane-protocol: rt:control-plane-protocol:
+--rw ospf +--rw ospf
. .
. .
+--rw operation-mode? identityref
+--rw af? identityref +--rw af? identityref
. .
. .
+--rw areas +--rw areas
| +--rw area* [area-id] | +--rw area* [area-id]
| +--rw area-id area-id-type | +--rw area-id area-id-type
| . | .
| . | .
| +--rw virtual-links | +--rw virtual-links
| | +--rw virtual-link* [transit-area-id router-id] | | +--rw virtual-link* [transit-area-id router-id]
skipping to change at page 5, line 8 skipping to change at page 5, line 5
. .
. .
The ospf module is intended to match to the vendor specific OSPF The ospf module is intended to match to the vendor specific OSPF
configuration construct that is identified by the local identifier configuration construct that is identified by the local identifier
'name'. 'name'.
The ospf container includes one OSPF protocol instance. The instance The ospf container includes one OSPF protocol instance. The instance
includes OSPF router level configuration and operational state. includes OSPF router level configuration and operational state.
The area and area/interface containers respectively define the OSPF The area and area/interface containers define the OSPF configuration
configuration and operational state for OSPF areas and interfaces. and operational state for OSPF areas and interfaces respectively.
The topologies container defines the OSPF configuration and The topologies container defines the OSPF configuration and
operational state for OSPF topologies when the multi-topology feature operational state for OSPF topologies when the multi-topology feature
is supported. is supported.
2.3. OSPFv2 and OSPFv3 2.3. OSPFv2 and OSPFv3
The data model defined herein supports both 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 The field 'version' is used to indicate the OSPF version and is
skipping to change at page 23, line 37 skipping to change at page 23, line 35
-> /rt:routing/control-plane-protocols/ -> /rt:routing/control-plane-protocols/
control-plane-protocol/name control-plane-protocol/name
3. OSPF YANG Module 3. OSPF YANG Module
The following RFCs and drafts are not referenced in the document text The following RFCs and drafts are not referenced in the document text
but are referenced in the ietf-ospf.yang module: [RFC0905], but are referenced in the ietf-ospf.yang module: [RFC0905],
[RFC4576], [RFC4973], [RFC5250], [RFC5309], [RFC5642], [RFC5881], [RFC4576], [RFC4973], [RFC5250], [RFC5309], [RFC5642], [RFC5881],
[RFC6991], [RFC7770], [RFC7884], [RFC8294], and [RFC8476]. [RFC6991], [RFC7770], [RFC7884], [RFC8294], and [RFC8476].
<CODE BEGINS> file "ietf-ospf@2019-07-29.yang" <CODE BEGINS> file "ietf-ospf@2019-08-05.yang"
module ietf-ospf { module ietf-ospf {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-ospf"; namespace "urn:ietf:params:xml:ns:yang:ietf-ospf";
prefix ospf; prefix ospf;
import ietf-inet-types { import ietf-inet-types {
prefix "inet"; prefix "inet";
reference "RFC 6991: Common YANG Data Types"; reference "RFC 6991: Common YANG Data Types";
} }
skipping to change at page 24, line 47 skipping to change at page 24, line 43
prefix "bfd-types"; prefix "bfd-types";
reference "RFC YYYY: YANG Data Model for Bidirectional reference "RFC YYYY: YANG Data Model for Bidirectional
Forwarding Detection (BFD). Please replace YYYY with Forwarding Detection (BFD). Please replace YYYY with
published RFC number for draft-ietf-bfd-yang."; published RFC number for draft-ietf-bfd-yang.";
} }
organization organization
"IETF LSR - Link State Routing Working Group"; "IETF LSR - Link State Routing Working Group";
contact contact
"WG Web: <http://datatracker.ietf.org/group/lsr/> "WG Web: <https://datatracker.ietf.org/group/lsr/>
WG List: <mailto:lsr@ietf.org> WG List: <mailto:lsr@ietf.org>
Editor: Derek Yeung Editor: Derek Yeung
<mailto:derek@arrcus.com> <mailto:derek@arrcus.com>
Author: Acee Lindem Author: Acee Lindem
<mailto:acee@cisco.com> <mailto:acee@cisco.com>
Author: Yingzhen Qu Author: Yingzhen Qu
<mailto:yingzhen.qu@huawei.com> <mailto:yingzhen.qu@huawei.com>
Author: Jeffrey Zhang
<mailto:zzhang@juniper.net> Author: Salih K A
<mailto:salih@juniper.net>
Author: Ing-Wher Chen Author: Ing-Wher Chen
<mailto:ingwherchen@mitre.org>"; <mailto:ingwherchen@mitre.org>";
description description
"This YANG module defines the generic configuration and "This YANG module defines the generic configuration and
operational state for the OSPF protocol common to all operational state for the OSPF protocol common to all
vendor implementations. It is intended that the module vendor implementations. It is intended that the module
will be extended by vendors to define vendor-specific will be extended by vendors to define vendor-specific
OSPF configuration parameters and policies, OSPF configuration parameters and policies,
for example, route maps or route policies. for example, route maps or route policies.
skipping to change at page 25, line 46 skipping to change at page 25, line 44
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
'MAY', and 'OPTIONAL' in this document are to be interpreted as 'MAY', and 'OPTIONAL' in this document are to be interpreted as
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
they appear in all capitals, as shown here. they appear in all capitals, as shown here.
This version of this YANG module is part of RFC XXXX; This version of this YANG module is part of RFC XXXX;
see the RFC itself for full legal notices."; see the RFC itself for full legal notices.";
revision 2019-07-29 { revision 2019-08-05 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC XXXX: A YANG Data Model for OSPF."; "RFC XXXX: A YANG Data Model for OSPF.";
} }
feature multi-topology { feature multi-topology {
description description
"Support Multiple-Topology Routing (MTR)."; "Support Multiple-Topology Routing (MTR).";
reference "RFC 4915: Multi-Topology Routing"; reference "RFC 4915: Multi-Topology Routing";
} }
feature multi-area-adj { feature multi-area-adj {
description description
"OSPF multi-area adjacency support as in RFC 5185."; "OSPF multi-area adjacency support as in RFC 5185.";
reference "RFC 5185: Multi-Area Adjacency"; reference "RFC 5185: Multi-Area Adjacency";
skipping to change at page 30, line 33 skipping to change at page 30, line 30
identity ospfv2 { identity ospfv2 {
base "ospf"; base "ospf";
description "OSPFv2 protocol"; description "OSPFv2 protocol";
} }
identity ospfv3 { identity ospfv3 {
base "ospf"; base "ospf";
description "OSPFv3 protocol"; description "OSPFv3 protocol";
} }
identity operation-mode {
description
"OSPF operation mode.";
}
identity area-type { identity area-type {
description "Base identity for OSPF area type."; description "Base identity for OSPF area type.";
} }
identity normal-area { identity normal-area {
base area-type; base area-type;
description "OSPF normal area."; description "OSPF normal area.";
} }
identity stub-nssa-area { identity stub-nssa-area {
skipping to change at page 35, line 4 skipping to change at page 34, line 44
description description
"Base identity for an LSA log reason."; "Base identity for an LSA log reason.";
} }
identity lsa-refresh { identity lsa-refresh {
base lsa-log-reason; base lsa-log-reason;
description description
"Identity used when the LSA is logged "Identity used when the LSA is logged
as a result of receiving a refresh LSA."; as a result of receiving a refresh LSA.";
} }
identity lsa-content-change { identity lsa-content-change {
base lsa-log-reason; base lsa-log-reason;
description description
"Identity used when the LSA is logged "Identity used when the LSA is logged
as a result of a change in the content as a result of a change in the content
of the LSA."; of the LSA.";
} }
identity lsa-purge { identity lsa-purge {
base lsa-log-reason; base lsa-log-reason;
description description
"Identity used when the LSA is logged "Identity used when the LSA is logged
as a result of being purged."; 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 { typedef ospf-metric {
type uint32 { type uint32 {
range "0 .. 16777215"; range "0 .. 16777215";
} }
description description
"OSPF Metric - 24-bit unsigned integer."; "OSPF Metric - 24-bit unsigned integer.";
} }
typedef ospf-link-metric { typedef ospf-link-metric {
type uint16 { type uint16 {
skipping to change at page 43, line 4 skipping to change at page 47, line 47
} }
} }
grouping node-tag-tlv { grouping node-tag-tlv {
description "OSPF Node Admin Tag TLV grouping."; description "OSPF Node Admin Tag TLV grouping.";
list node-tag { list node-tag {
leaf tag { leaf tag {
type uint32; type uint32;
description description
"Node admin tag value."; "Node admin tag value.";
} }
description description
"List of tags."; "List of tags.";
} }
} }
grouping router-capabilities-tlv { grouping router-capabilities-tlv {
description "OSPF Router Capabilities TLV grouping."; description "OSPF Router Capabilities TLV grouping.";
reference "RFC 7770: OSPF Router Capabilities"; reference "RFC 7770: OSPF Router Capabilities";
leaf informational-flags { container router-informational-capabilities {
type bits { leaf-list informational-capabilitiess {
bit graceful-restart-capability { type identityref {
description base informational-capability;
"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";
}
bit experimental-te {
description
"When set, the router is capable of OSPF experimental
traffic engineering.";
reference
"RFC 4973: OSPF-xTE OSPF Experimental Traffic
Engineering";
} }
description
"Informational capability list. This list will
contains the identities for the informational
capabilities supported by router.";
} }
description description
"OSPF Router Informational Flag Definitions."; "OSPF Router Informational Flag Definitions.";
} }
list informational-capabilities { list informational-capabilities {
leaf informational-flag { leaf informational-flag {
type uint32; type uint32;
description description
"Informational flag."; "Informational flag.";
} }
skipping to change at page 45, line 31 skipping to change at page 49, line 36
leaf msd-value { leaf msd-value {
type uint8; type uint8;
description description
"Maximum Segment Depth (MSD) value for the type"; "Maximum Segment Depth (MSD) value for the type";
} }
description description
"List of Maximum Segment Depth (MSD) tuples"; "List of Maximum Segment Depth (MSD) tuples";
} }
} }
grouping ospf-router-lsa-flags { grouping ospf-router-lsa-bits {
leaf flags { container rputer-bits {
type bits { leaf-list rtr-lsa-bits {
bit V { type identityref {
description base router-lsa-bit;
"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).";
}
bit Nt {
description
"When set, the router is an NSSA border router
that is unconditionally translating NSSA LSAs
into AS-external LSAs.";
} }
description
"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 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."; OSPFv3 but it may diverge with future augmentations.";
} }
grouping ospfv2-router-link { grouping ospfv2-router-link {
description "OSPFv2 router link."; description "OSPFv2 router link.";
leaf link-id { leaf link-id {
type union { type union {
type inet:ipv4-address; type inet:ipv4-address;
type yang:dotted-quad; type yang:dotted-quad;
} }
description "Router-LSA Link ID"; description "Router-LSA Link ID";
skipping to change at page 46, line 47 skipping to change at page 50, line 39
grouping ospfv2-lsa-body { grouping ospfv2-lsa-body {
description "OSPFv2 LSA body."; description "OSPFv2 LSA body.";
container router { container router {
when "derived-from-or-self(../../header/type, " when "derived-from-or-self(../../header/type, "
+ "'ospfv2-router-lsa')" { + "'ospfv2-router-lsa')" {
description description
"Only applies to Router-LSAs."; "Only applies to Router-LSAs.";
} }
description description
"Router LSA."; "Router LSA.";
uses ospf-router-lsa-flags; uses ospf-router-lsa-bits;
leaf num-of-links { leaf num-of-links {
type uint16; type uint16;
description "Number of links in Router LSA."; description "Number of links in Router LSA.";
} }
container links { container links {
description "All router Links."; description "All router Links.";
list link { list link {
description "Router LSA link."; description "Router LSA link.";
uses ospfv2-router-link; uses ospfv2-router-link;
container topologies { container topologies {
skipping to change at page 53, line 9 skipping to change at page 56, line 48
value "5"; value "5";
description "OSPF External route."; description "OSPF External route.";
} }
enum nssa { enum nssa {
value "7"; value "7";
description "OSPF NSSA external route."; description "OSPF NSSA external route.";
} }
} }
description "Route type."; description "Route type.";
} }
leaf flags { container flags {
type bits { leaf-list extended-prefix-flags {
bit A { type identityref {
description base ospfv2-extended-prefix-flag;
"Attach flag.";
}
bit N {
description
"Node flag.";
} }
description
"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."; description "Prefix Flags.";
} }
leaf prefix { leaf prefix {
type inet:ip-prefix; type inet:ip-prefix;
description "Address prefix."; description "Address prefix.";
} }
uses unknown-tlvs; uses unknown-tlvs;
} }
} }
skipping to change at page 53, line 47 skipping to change at page 57, line 38
uses maximum-sid-depth-tlv; uses maximum-sid-depth-tlv;
} }
uses unknown-tlvs; uses unknown-tlvs;
} }
} }
} }
} }
grouping ospfv3-lsa-options { grouping ospfv3-lsa-options {
description "OSPFv3 LSA options"; description "OSPFv3 LSA options";
leaf options { container lsa-options {
type bits { leaf-list lsa-options {
bit AF { type identityref {
description base ospfv3-lsa-option;
"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";
}
bit V6 {
description
"If clear, the router/link should be excluded
from IPv6 routing calculation";
} }
description
"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."; description "OSPFv3 LSA options.";
} }
} }
grouping ospfv3-lsa-prefix { grouping ospfv3-lsa-prefix {
description description
"OSPFv3 LSA prefix."; "OSPFv3 LSA prefix.";
leaf prefix { leaf prefix {
type inet:ip-prefix; type inet:ip-prefix;
description description
"LSA Prefix."; "LSA Prefix.";
} }
leaf prefix-options { container prefix-options {
type bits { leaf-list prefix-options {
bit NU { type identityref {
description base ospfv3-prefix-option;
"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.";
}
bit DN {
description
"When set, the inter-area-prefix LSA or
AS-external LSA prefix has been advertised as an
L3VPN prefix.";
} }
description
"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."; description "Prefix options.";
} }
} }
grouping ospfv3-lsa-external { grouping ospfv3-lsa-external {
description description
"AS-External and NSSA LSA."; "AS-External and NSSA LSA.";
leaf metric { leaf metric {
type ospf-metric; type ospf-metric;
description "Metric"; description "Metric";
skipping to change at page 56, line 48 skipping to change at page 59, line 48
grouping ospfv3-lsa-body { grouping ospfv3-lsa-body {
description "OSPFv3 LSA body."; description "OSPFv3 LSA body.";
container router { container router {
when "derived-from-or-self(../../header/type, " when "derived-from-or-self(../../header/type, "
+ "'ospfv3-router-lsa')" { + "'ospfv3-router-lsa')" {
description description
"Only applies to Router LSAs."; "Only applies to Router LSAs.";
} }
description "Router LSA."; description "Router LSA.";
uses ospf-router-lsa-flags; uses ospf-router-lsa-bits;
uses ospfv3-lsa-options; uses ospfv3-lsa-options;
container links { container links {
description "All router link."; description "All router link.";
list link { list link {
description "Router LSA link."; description "Router LSA link.";
leaf interface-id { leaf interface-id {
type uint32; type uint32;
description "Interface ID for link."; description "Interface ID for link.";
} }
skipping to change at page 62, line 36 skipping to change at page 65, line 36
+ "'ospfv2-opaque-lsa-type') and " + "'ospfv2-opaque-lsa-type') and "
+ "opaque-id and opaque-type) or " + "opaque-id and opaque-type) or "
+ "(not(derived-from(type, " + "(not(derived-from(type, "
+ "'ospfv2-opaque-lsa-type')) " + "'ospfv2-opaque-lsa-type')) "
+ "and not(opaque-id) and not(opaque-type))" { + "and not(opaque-id) and not(opaque-type))" {
description description
"Opaque type and ID only apply to Opaque LSAs."; "Opaque type and ID only apply to Opaque LSAs.";
} }
description description
"Decoded OSPFv2 LSA header data."; "Decoded OSPFv2 LSA header data.";
leaf option {
type bits { container lsa-options {
bit MT { leaf-list lsa-options {
description type identityref {
"When set, the router supports multi-topology as base ospfv2-lsa-option;
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.";
}
bit O {
description
"When set, the router is opaque-capable as in
RFC 5250.";
}
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.";
} }
description
"LSA option flags list. This list will contain
the identities for the identities for the OSPFv2
LSA options that are set.";
} }
mandatory true; description
description "LSA options."; "LSA options.";
} }
leaf lsa-id { leaf lsa-id {
type yang:dotted-quad; type yang:dotted-quad;
mandatory true; mandatory true;
description "Link-State ID."; description "Link-State ID.";
} }
leaf opaque-type { leaf opaque-type {
type uint8; type uint8;
description "Opaque type."; description "Opaque type.";
} }
skipping to change at page 97, line 32 skipping to change at page 100, line 8
} }
} }
} }
} }
} }
} }
uses spf-log; uses spf-log;
uses lsa-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 { grouping multi-topology-area-common-config {
description description
"OSPF multi-topology area common configuration state."; "OSPF multi-topology area common configuration state.";
leaf summary { leaf summary {
when "derived-from(../../../area-type, 'stub-nssa-area')" { when "derived-from(../../../area-type, 'stub-nssa-area')" {
description description
"Summary advertisement into the stub/NSSA area."; "Summary advertisement into the stub/NSSA area.";
} }
type boolean; type boolean;
description description
skipping to change at page 98, line 28 skipping to change at page 100, line 42
} }
grouping multi-topology-area-config { grouping multi-topology-area-config {
description description
"OSPF multi-topology area configuration state."; "OSPF multi-topology area configuration state.";
uses multi-topology-area-common-config; uses multi-topology-area-common-config;
uses address-family-area-config; uses address-family-area-config;
} }
grouping multi-topology-config {
description
"OSPF multi-topology configuration state.";
}
grouping multi-topology-state { grouping multi-topology-state {
description description
"OSPF multi-topology operational state."; "OSPF multi-topology operational state.";
uses local-rib; uses local-rib;
} }
grouping multi-topology-interface-config { grouping multi-topology-interface-config {
description description
"OSPF multi-topology configuration state."; "OSPF multi-topology configuration state.";
leaf cost { leaf cost {
type ospf-link-metric; type ospf-link-metric;
description description
"Interface cost for this topology."; "Interface cost for this topology.";
} }
} }
grouping multi-topology-interface-state {
description
"OSPF multi-topology operational state.";
}
grouping ospfv3-interface-config { grouping ospfv3-interface-config {
description description
"OSPFv3 interface specific configuration state."; "OSPFv3 interface specific configuration state.";
leaf instance-id { leaf instance-id {
type uint8 { type uint8 {
range "0 .. 31"; range "0 .. 31";
} }
description description
"OSPFv3 instance ID."; "OSPFv3 instance ID.";
skipping to change at page 102, line 41 skipping to change at page 104, line 44
"This augmentation is only valid for a routing protocol "This augmentation is only valid for a routing protocol
instance of OSPF (type 'ospfv2' or 'ospfv3')."; instance of OSPF (type 'ospfv2' or 'ospfv3').";
} }
description "OSPF protocol ietf-routing module description "OSPF protocol ietf-routing module
control-plane-protocol augmentation."; control-plane-protocol augmentation.";
container ospf { container ospf {
description description
"OSPF protocol Instance"; "OSPF protocol Instance";
uses ospf-config;
uses ospf-state;
leaf address-family { leaf address-family {
type iana-rt-types:address-family; type iana-rt-types:address-family;
description description
"Address-family of the instance."; "Address-family of the instance.";
} }
uses instance-config; uses instance-config;
uses instance-state; uses instance-state;
container areas { container areas {
description "All areas."; description "All areas.";
skipping to change at page 105, line 30 skipping to change at page 107, line 30
must coincide with the routing-instance must coincide with the routing-instance
address-family."; address-family.";
leaf name { leaf name {
type leafref { type leafref {
path "../../../../../../rt:ribs/rt:rib/rt:name"; path "../../../../../../rt:ribs/rt:rib/rt:name";
} }
description "RIB name corresponding to the OSPF description "RIB name corresponding to the OSPF
topology."; topology.";
} }
uses multi-topology-config;
uses multi-topology-state; uses multi-topology-state;
} }
} }
} }
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/ospf/" + "rt:control-plane-protocol/ospf/"
+ "areas/area" { + "areas/area" {
when "derived-from-or-self(../../../rt:type, " when "derived-from-or-self(../../../rt:type, "
+ "'ospfv2')" { + "'ospfv2')" {
skipping to change at page 106, line 46 skipping to change at page 108, line 45
leaf name { leaf name {
type leafref { type leafref {
path "../../../../../../../../../../" path "../../../../../../../../../../"
+ "rt:ribs/rt:rib/rt:name"; + "rt:ribs/rt:rib/rt:name";
} }
description description
"Single topology enabled on this interface."; "Single topology enabled on this interface.";
} }
uses multi-topology-interface-config; uses multi-topology-interface-config;
uses multi-topology-interface-state;
} }
} }
} }
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/ospf/" + "rt:control-plane-protocol/ospf/"
+ "areas/area/interfaces/interface" { + "areas/area/interfaces/interface" {
when "derived-from-or-self(../../../../../rt:type, " when "derived-from-or-self(../../../../../rt:type, "
+ "'ospfv3')" { + "'ospfv3')" {
description description
"This augmentation is only valid for OSPFv3."; "This augmentation is only valid for OSPFv3.";
} }
description description
"OSPFv3 interface specific configuration state "OSPFv3 interface specific configuration state
augmentation."; augmentation.";
uses ospfv3-interface-config; uses ospfv3-interface-config;
uses ospfv3-interface-state; uses ospfv3-interface-state;
 End of changes. 46 change blocks. 
224 lines changed or deleted 324 lines changed or added

This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/