< draft-yeung-netmod-ospf-00.txt   draft-yeung-netmod-ospf-01.txt >
Internet D. Yeung Internet D. Yeung
Internet-Draft Y. Qu Internet-Draft Y. Qu
Intended status: Informational A. Clemm Intended status: Informational A. Clemm
Expires: April 25, 2014 Cisco Systems Expires: August 18, 2014 Cisco Systems
October 22, 2013 February 14, 2014
Yang Data Model for OSPF Protocol Yang Data Model for OSPF Protocol
draft-yeung-netmod-ospf-00 draft-yeung-netmod-ospf-01
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. and manage OSPF.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
skipping to change at page 1, line 32 skipping to change at page 1, line 32
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 http://datatracker.ietf.org/drafts/current/. Drafts is at http://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 April 25, 2014. This Internet-Draft will expire on August 18, 2014.
Copyright Notice Copyright Notice
Copyright (c) 2013 IETF Trust and the persons identified as the Copyright (c) 2014 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
(http://trustee.ietf.org/license-info) in effect on the date of (http://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
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
skipping to change at page 2, line 14 skipping to change at page 2, line 14
Table of Contents Table of Contents
1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 2 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 2
2. Design of Data Model . . . . . . . . . . . . . . . . . . . . 3 2. Design of Data Model . . . . . . . . . . . . . . . . . . . . 3
2.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2. OSPFv2 and OSPFv3 . . . . . . . . . . . . . . . . . . . . 4 2.2. OSPFv2 and OSPFv3 . . . . . . . . . . . . . . . . . . . . 4
2.3. Optional Features . . . . . . . . . . . . . . . . . . . . 4 2.3. Optional Features . . . . . . . . . . . . . . . . . . . . 4
2.4. Inheritance . . . . . . . . . . . . . . . . . . . . . . . 4 2.4. Inheritance . . . . . . . . . . . . . . . . . . . . . . . 4
2.5. OSPF Router Configuration . . . . . . . . . . . . . . . . 4 2.5. OSPF Router Configuration . . . . . . . . . . . . . . . . 5
2.6. OSPF Address-Family Configuration . . . . . . . . . . . . 5 2.6. OSPF Address-Family Configuration . . . . . . . . . . . . 5
2.7. OSPF Area Configuration . . . . . . . . . . . . . . . . . 6 2.7. OSPF Area Configuration . . . . . . . . . . . . . . . . . 7
2.8. OSPF Interface Configuration . . . . . . . . . . . . . . 7 2.8. OSPF Interface Configuration . . . . . . . . . . . . . . 9
3. OSPF Yang Module . . . . . . . . . . . . . . . . . . . . . . 9 3. OSPF Yang Module . . . . . . . . . . . . . . . . . . . . . . 10
4. Security Considerations . . . . . . . . . . . . . . . . . . . 29 4. Security Considerations . . . . . . . . . . . . . . . . . . . 32
5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 29 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 32
6. References . . . . . . . . . . . . . . . . . . . . . . . . . 30 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.1. Normative References . . . . . . . . . . . . . . . . . . 30 6.1. Normative References . . . . . . . . . . . . . . . . . . 33
6.2. Informative References . . . . . . . . . . . . . . . . . 30 6.2. Informative References . . . . . . . . . . . . . . . . . 33
1. Overview 1. Overview
YANG [RFC6020] is a data definition language that was introduced to YANG [RFC6020] is a data definition language that was introduced to
define the contents of a conceptual data store that allows networked define the contents of a conceptual data store that allows networked
devices to be managed using NETCONF [RFC6241]. YANG is proving devices to be managed using NETCONF [RFC6241]. YANG is proving
relevant beyond its initial confines, as bindings to other interfaces relevant beyond its initial confines, as bindings to other interfaces
(e.g. ReST) and encodings other than XML (e.g. JSON) are being (e.g. ReST) and encodings other than XML (e.g. JSON) are being
defined. Furthermore, YANG data models can be used as the basis of defined. Furthermore, YANG data models can be used as the basis of
implementation for other interfaces, such as CLI and programmatic implementation for other interfaces, such as CLI and programmatic
APIs. APIs.
A core routing data model is defined in
[I-D.ietf-netmod-routing-cfg], and it proposed a basis for the
development of data models for routing protocols. This document
defines a YANG data model that can be used to configure and manage
OSPF and it is an augment to the core routing data model.
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. Both OSPFv2 and OSPFv3 are supported. In and manage OSPF. Both OSPFv2 and OSPFv3 are supported. In
additional to the core OSPF protocol, features described in different additional to the core OSPF protocol, features described in different
separate OSPF RFC are also supported. Those non-core features are separate OSPF RFC are also supported. Those non-core features are
made optional in the data model provided. made optional in the data model provided.
1.1. Requirements Language 1.1. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
skipping to change at page 3, line 24 skipping to change at page 3, line 24
The goal of this document is to define a data model that is capable The goal of this document is to define a data model that is capable
of representing these differences. There is very little information of representing these differences. There is very little information
that is designated as "mandatory", providing freedom to vendors to that is designated as "mandatory", providing freedom to vendors to
adapt this data model to their product implementation. adapt this data model to their product implementation.
2.1. Overview 2.1. Overview
The OSPF YANG module defined in this document has all the common The OSPF YANG module defined in this document has all the common
building blocks for OSPF protocol. building blocks for OSPF protocol.
module: ospf The OSPF YANG module augments the routing/routing-instance/routing-
+--rw ospf-routers protocols/routing-protocol path of the ietf-routing module.
+--rw ospf-router [version name]
.
.
+--rw ospf-afs
+--rw ospf-af [vrf-name afi safi]
.
.
+--rw ospf-areas
.
.
+--rw ospf-area [area-id]
.
.
+--rw ospf-interfaces
.
.
+--rw ospf-interface [interface]
.
.
The container ospf-routers allows specification of one or more OSPF module: ospf
configuration entities called ospf-router. The ospf-router is +--rw routing
intended to match to the vendor specific OSPF configuration construct +--rw routing-instance [name]
which is identified by a local identifier 'name'. The field +--rw routing-protocols
'version' allows support for OSPFv2 and OSPFv3. +--rw routing-protocol [name]
+--rw ospf:ospf-router [version name]
.
.
+--rw ospf:ospf-afs
+--rw ospf:ospf-af [vrf-name afi safi]
.
.
+--rw ospf:ospf-areas
.
.
+--rw ospf:ospf-area [area-id]
.
.
+--rw ospf:ospf-interfaces
.
.
+--rw ospf:ospf-interface [interface]
.
.
The ospf-router is intended to match to the vendor specific OSPF
configuration construct which is identified by a local identifier
'name'. The field 'version' allows support for OSPFv2 and OSPFv3.
The container ospf-afs includes one or more OSPF protocol engines, The container ospf-afs includes one or more OSPF protocol engines,
each encapsulated in the ospf-af entity. Each ospf-af includes each encapsulated in the ospf-af entity. Each ospf-af includes
information for the routing domain it is running on based on the information for the routing domain it is running on based on the
[vrf-name afi safi] specification. There is no default routing [vrf-name afi safi] specification. There is no default routing
domain assumed by the data model. For example, to enable OSPF on the domain assumed by the data model. For example, to enable OSPF on the
default IPv4 routing domain of the vendor, this model requires an default IPv4 routing domain of the vendor, this model requires an
explicit ospf-af entity with the specification like ["default" "ipv4" explicit ospf-af entity with the specification like ["default" "ipv4"
"unicast"]. The ospf-af also contains OSPF router level "unicast"]. The ospf-af also contains OSPF router level
configuration configuration
skipping to change at page 4, line 51 skipping to change at page 5, line 7
apply to all ospf-area. apply to all ospf-area.
Interface related configurations specified in ospf-areas container Interface related configurations specified in ospf-areas container
apply to all ospf-interface in all ospf-area's. apply to all ospf-interface in all ospf-area's.
Interface related configurations specified in ospf-interfaces Interface related configurations specified in ospf-interfaces
container apply to all ospf-interface in the enclosing ospf-area. container apply to all ospf-interface in the enclosing ospf-area.
2.5. OSPF Router Configuration 2.5. OSPF Router Configuration
The container ospf-routers is the top level container in this data The container ospf-router is the top level container in this data
model. One or more ospf-router entity could be included in the ospf- model. The main purpose of the ospf-router is to specify the OSPF
routers container. The main purpose of the ospf-router is to specify version and the local name for the enclosed ospf-afs container which
the OSPF version and the local name for the enclosed ospf-afs has the protocol configuration specifics.
container which has the protocol configuration specifics.
module: ospf module: ospf
+--rw ospf-routers +--rw ospf-router [version name]
+--rw ospf-router [version name] +--rw version uint8
+--rw version uint8 +--rw name string
+--rw name string .
. .
.
2.6. OSPF Address-Family Configuration 2.6. OSPF Address-Family Configuration
The container ospf-afs contains one of more ospf-af's each represents The container ospf-afs contains one of more ospf-af's each represents
an OSPF protocol engine. Each ospf-af indicates the routing domain an OSPF protocol engine. Each ospf-af indicates the routing domain
it is associated with based on [vrf-name afi safi] and contains the it is associated with based on [vrf-name afi safi] and contains the
router level configurations. router level configurations.
module: ospf module: ospf
+--rw ospf-routers
+--rw ospf-router [version name] +--rw ospf-router [version name]
... ...
+--rw ospf-afs +--rw ospf-afs
+--rw ospf-af [vrf-name afi safi] +--rw ospf-af [vrf-name afi safi]
+--rw vrf-name string +--rw vrf-name string
+--rw afi enumeration +--rw afi enumeration
+--rw safi enumeration +--rw safi enumeration
+--rw router-id +--rw router-id
| ... | ...
+--rw distance? uint8 +--rw distance? uint8
+--rw default-originate +--rw default-originate
| ... | ...
+--rw auto-cost +--rw auto-cost
| ... | ...
+--rw default-metric? uint32 +--rw default-metric? uint32
+--rw summary-prefix [prefix] +--rw summary-prefix [prefix]
| ... | ...
+--rw max-lsa +--rw max-lsa
| ... | ...
+--rw maximum +--rw maximum
| ... | ...
+--rw ignore +--rw ignore
| ... | ...
+--rw log +--rw log
| ... | ...
+--rw nsr +--rw nsr
| ... | ...
+--rw nsf +--rw nsf
| ... | ...
+--rw protocol +--rw protocol
| ... | ...
+--rw spf +--rw spf
| ... | ...
+--rw snmp +--rw snmp
| ... | ...
+--rw redistribute +--rw redistribute
| ... | ...
+--rw timers +--rw timers
| ... | ...
+--rw mpls +--rw mpls
| ... | ...
+--rw fast-reroute +--rw fast-reroute
| ... | ...
2.7. OSPF Area Configuration 2.7. OSPF Area Configuration
The container ospf-areas contains one of more ospf-area's each The container ospf-areas contains one of more ospf-area's each
represents an area in the OSPF protocol. Each ospf-area contains represents an area in the OSPF protocol. Each ospf-area contains
configurations of that area and the ospf-interfaces container which configurations of that area and the ospf-interfaces container which
includes all the OSPF interfaces active in the enclosing area. includes all the OSPF interfaces active in the enclosing area.
The ospf-areas also contains area configuration that could be The ospf-areas also contains area configuration that could be
inherited to all ospf-area's defined. Similarly, the ospf-area also inherited to all ospf-area's defined. Similarly, the ospf-area also
contains interface configuration that could be inherited to all the contains interface configuration that could be inherited to all the
ospf-interface's defined. ospf-interface's defined.
module: ospf module: ospf
+--rw ospf-routers +--rw ospf-router [version name]
+--rw ospf-router [version name] ...
... +--rw ospf-afs
+--rw ospf-afs +--rw ospf-af [vrf-name afi safi]
+--rw ospf-af [vrf-name afi safi] ...
... +--rw ospf-areas
+--rw ospf-areas +--rw loopback? enumeration
+--rw loopback? enumeration +--rw network-type? enumeration
+--rw network-type? enumeration +--rw passive? boolean
+--rw passive? boolean +--rw mtu-ignore? boolean
+--rw mtu-ignore? boolean +--rw flood-reduction-enable? boolean
+--rw flood-reduction-enable? boolean +--rw demand-circuit? boolean
+--rw demand-circuit? boolean +--rw demand-circuit-ignore-enable? boolean
+--rw demand-circuit-ignore-enable? boolean +--rw prefix-suppression? boolean
+--rw prefix-suppression? boolean +--rw ttl-security
+--rw ttl-security ...
... +--rw packet-size
+--rw packet-size ...
... +--rw authentication
+--rw authentication ...
... +--rw database-filter
+--rw database-filter ...
... +--rw neighbor [ip-address]
+--rw neighbor [ip-address] ...
... +--rw bfd
+--rw bfd ...
... +--rw cost? uint16
+--rw cost? uint16 +--rw hello-interval? uint16
+--rw hello-interval? uint16 +--rw dead-interval? uint16
+--rw dead-interval? uint16 +--rw retransmit-interval? uint16
+--rw retransmit-interval? uint16 +--rw transmit-delay? uint16
+--rw transmit-delay? uint16 +--rw ospf-area [area-id]
+--rw ospf-area [area-id] +--rw area-id uint32
+--rw area-id uint32 +--rw area-notation? enumeration
+--rw area-notation? enumeration +--rw (area-type)?
+--rw (area-type)? ...
... +--rw default-cost? uint32
+--rw default-cost? uint32 +--rw range [prefix]
+--rw range [prefix] ...
... +--rw virtual-link
+--rw virtual-link ...
... +--rw sham-link
+--rw sham-link ...
... +--rw mpls-te-config
+--rw mpls-te-config ...
...
2.8. OSPF Interface Configuration 2.8. OSPF Interface Configuration
The container ospf-areas contains one of more ospf-inteface's each The container ospf-areas contains one of more ospf-inteface's each
represents an interface in the OSPF protocol. Each ospf-interface represents an interface in the OSPF protocol. Each ospf-interface
contains configurations of that interface. contains configurations of that interface.
The ospf-interfaces also contain interface configuration that could The ospf-interfaces also contain interface configuration that could
be inherited to all ospf-interface's defined. be inherited to all ospf-interface's defined.
module: ospf module: ospf
+--rw ospf-routers +--rw ospf-router [version name]
+--rw ospf-router [version name] ...
... +--rw ospf-afs
+--rw ospf-afs +--rw ospf-af [vrf-name afi safi]
+--rw ospf-af [vrf-name afi safi] ...
+--rw ospf-areas
... ...
+--rw ospf-areas +--rw ospf-interfaces
... +--rw network-type? enumeration
+--rw ospf-interfaces +--rw passive? boolean
+--rw network-type? enumeration +--rw mtu-ignore? boolean
+--rw passive? boolean +--rw flood-reduction-enable? boolean
+--rw mtu-ignore? boolean +--rw demand-circuit? boolean
+--rw flood-reduction-enable? boolean +--rw demand-circuit-ignore-enable? boolean
+--rw demand-circuit? boolean +--rw prefix-suppression? boolean
+--rw demand-circuit-ignore-enable? boolean +--rw ttl-security
+--rw prefix-suppression? boolean ...
+--rw ttl-security +--rw packet-size
... ...
+--rw packet-size +--rw authentication
... ...
+--rw authentication +--rw database-filter
... ...
+--rw database-filter +--rw neighbor [ip-address]
... ...
+--rw neighbor [ip-address] +--rw bfd
... ...
+--rw bfd +--rw cost? uint16
... +--rw hello-interval? uint16
+--rw cost? uint16 +--rw dead-interval? uint16
+--rw hello-interval? uint16 +--rw retransmit-interval? uint16
+--rw dead-interval? uint16 +--rw transmit-delay? uint16
+--rw retransmit-interval? uint16 +--rw ospf-interface [interface]
+--rw transmit-delay? uint16 +--rw interface if:interface-ref
+--rw ospf-interface [interface] +--rw network-type? enumeration
+--rw interface if:interface-ref +--rw passive? boolean
+--rw network-type? enumeration +--rw mtu-ignore? boolean
+--rw passive? boolean +--rw flood-reduction-enable? boolean
+--rw mtu-ignore? boolean +--rw demand-circuit? boolean
+--rw flood-reduction-enable? boolean +--rw demand-circuit-ignore-enable? boolean
+--rw demand-circuit? boolean +--rw prefix-suppression? boolean
+--rw demand-circuit-ignore-enable? boolean +--rw ttl-security
+--rw prefix-suppression? boolean ...
+--rw ttl-security +--rw packet-size
... ...
+--rw packet-size +--rw authentication
... ...
+--rw authentication +--rw database-filter
... ...
+--rw database-filter +--rw neighbor [ip-address]
... ...
+--rw neighbor [ip-address] +--rw bfd
... ...
+--rw bfd +--rw cost? uint16
... +--rw hello-interval? uint16
+--rw cost? uint16 +--rw dead-interval? uint16
+--rw hello-interval? uint16 +--rw retransmit-interval? uint16
+--rw dead-interval? uint16 +--rw transmit-delay? uint16
+--rw retransmit-interval? uint16
+--rw transmit-delay? uint16
3. OSPF Yang Module 3. OSPF Yang Module
<CODE BEGINS> <CODE BEGINS>
module ospf { module ospf {
namespace "urn:cisco:params:xml:ns:yang:ospf"; namespace "urn:cisco:params:xml:ns:yang:ospf";
// replace with IANA namespace when assigned // replace with IANA namespace when assigned
prefix ospf; prefix ospf;
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix "inet";
} }
import ietf-interfaces { import ietf-yang-types {
prefix if; prefix "yang";
} }
organization import ietf-interfaces {
"Cisco Systems prefix "if";
170 West Tasman Drive }
San Jose, CA 95134-1706
USA"; import ietf-routing {
contact prefix "rt";
"Derek Yeung myeung@cisco.com }
Yingzhen Qu yiqu@cisco.com
Alexander Clemm alex@cisco.com"; organization
"Cisco Systems
170 West Tasman Drive
San Jose, CA 95134-1706
USA";
contact
"Derek Yeung myeung@cisco.com
Yingzhen Qu yiqu@cisco.com
Alexander Clemm alex@cisco.com";
description
"This YANG module defines the generic configuration
data for OSPF, which is common across all of the vendor
implementations of the protocol. 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.
Terms and Acronyms
OSPF (ospf): Open Shortest Path First
IP (ip): Internet Protocol
IPv4 (ipv4):Internet Protocol Version 4
IPv6 (ipv6): Internet Protocol Version 6
MTU (mtu) Maximum Transmission Unit
";
revision 2014-02-14 {
description description
"This YANG module defines the generic configuration "Initial revision.";
data for OSPF, which is common across all of the vendor }
implementations of the protocol. 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.
Terms and Acronyms feature ospfv3-authentication-trailer {
description
"OSPFv3 Cryptographic Authentication as in RFC 6506.";
}
OSPF (ospf): Open Shortest Path First feature ospfv2-authentication-SHA {
description
"OSPFv2 support of HMAC-SHA algorithms as in RFC 5709.";
}
IP (ip): Internet Protocol feature ospf-madj {
IPv4 (ipv4):Internet Protocol Version 4 description
"OSPF multi-area adjacency support as in RFC 5185.";
}
feature ospf-lls {
description
"OSPF link-local signaling (LLS) as in RFC 5613.";
}
IPv6 (ipv6): Internet Protocol Version 6 feature flood-reduction {
description
"OSPF Flood Reduction.";
}
MTU (mtu) Maximum Transmission Unit feature demand-circuit-ignore {
"; description
"Ignore demand circuit auto-negotiation requests.";
}
revision 2013-10-20 { feature security {
description
"Enable/Disable TTL security.";
}
feature packet-size {
description
"Customize size of OSPF packets up to MTU.";
}
feature nsf-cisco {
description
"Enable Cisco Non Stop Forwarding.";
}
feature loopback-config {
description
"OSPF loopback configuration.";
}
feature max-lsa {
description
"Maximum number of LSAs OSPF process will receive.";
}
feature maximum-ecmp {
description
"Maximum number of ECMP paths.";
}
feature nsr {
description
"Enable NSR.";
}
feature spf {
description
"SPF configuration";
}
feature nssa-only {
description
"Limit summary to NSSA areas.";
}
feature nssa-ext-capability {
description
"Send domain specific capabilities into NSSA.";
}
identity ospf {
base "rt:routing-protocol";
description "OSPF routing protocol";
}
grouping interface-internal-inherit-config {
leaf cost {
description description
"Initial revision."; "Interface cost.";
type uint16 {
range "1..65535";
}
} }
feature flood-reduction { leaf hello-interval {
description description
"OSPF Flood Reduction."; "Time between HELLO packets.";
units seconds;
type uint16 {
range "1..65535";
}
} }
feature demand-circuit-ignore { leaf dead-interval {
description description
"Ignore demand circuit auto-negotiation requests."; "Interval after which a neighbor is declared dead.";
units seconds;
type uint16 {
range "1..65535";
}
must "dead-interval > ../hello-interval" {
error-app-tag dead-interval-invalid;
error-message "The dead interval must be "
+ "larger than the hello interval";
}
} }
feature security { leaf retransmit-interval {
description description
"Enable/Disable TTL security."; "Time between retransmitting lost link state advertisements.";
units seconds;
type uint16 {
range "1..65535";
}
} }
feature packet-size { leaf transmit-delay {
description description
"Customize size of OSPF packets up to MTU."; "Estimated time needed to send link-state update.";
units seconds;
type uint16 {
range "1..65535";
}
} }
} // interface-internal-inherit-config
feature nsf-cisco { grouping interface-inherit-config {
leaf network-type {
description description
"Enable Cisco Non Stop Forwarding."; "Network type.";
type enumeration {
enum "broadcast" {
description
"Specify OSPF broadcast multi-access network.";
}
enum "non-broadcast" {
description
"Specify OSPF NBMA network.";
}
enum "point-to-multipoint" {
description
"Specify OSPF point-to-multipoint network.";
}
enum "point-to-point" {
description
"Specify OSPF point-to-point network.";
}
}
} }
leaf passive {
feature loopback-config {
description description
"OSPF loopback configuration."; "Enable/Disable passive.";
type boolean;
} }
feature max-lsa { leaf mtu-ignore {
description description
"Maximum number of LSAs OSPF process will receive."; "Enable/Disable ignoring of MTU in DBD packets.";
type boolean;
} }
feature maximum-ecmp { leaf flood-reduction-enable {
description if-feature flood-reduction;
"Maximum number of ECMP paths."; type boolean;
} }
feature nsr { leaf demand-circuit {
description description
"Enable NSR."; "Enable/Disable demand circuits.";
type boolean;
} }
feature spf { leaf demand-circuit-ignore-enable {
description if-feature demand-circuit-ignore;
"SPF configuration"; type boolean;
} }
feature nssa-only { leaf prefix-suppression {
description description
"Limit summary to NSSA areas."; "Suppress advertisement of the prefixes.";
type boolean;
} }
feature nssa-ext-capability { leaf lls-enable {
if-feature ospf-lls;
description description
"Send domain specific capabilities into NSSA."; "link-local signaling (LLS) support.";
type boolean;
} }
grouping interface-internal-inherit-config { container ttl-security {
leaf cost { if-feature security;
description leaf enable {
"Interface cost."; type boolean;
type uint16 { }
range "1..65535"; leaf hops {
type uint8 {
range "1..254";
} }
} }
}
leaf hello-interval { container packet-size {
description if-feature packet-size;
"Time between HELLO packets."; description
units seconds; "Customize size of OSPF packets up to MTU.";
leaf enable {
type boolean;
}
leaf size {
type uint16 { type uint16 {
range "1..65535"; range "576..10000";
} }
} }
}
leaf dead-interval { container ospf-multiarea-adj {
description if-feature ospf-madj;
"Interval after which a neighbor is declared dead."; description
units seconds; "Configure ospf multi-area.";
type uint16 { leaf multi-area {
range "1..65535"; type uint32;
}
} leaf cost {
must "dead-interval > ../hello-interval" { type uint16;
error-app-tag dead-interval-invalid;
error-message "The dead interval must be "
+ "larger than the hello interval";
}
} }
}
leaf retransmit-interval { container ospfv3-authentication {
description when "../../../version = 3";
"Time between retransmitting lost link state description "Configure authentication for ospfv3.";
advertisements."; if-feature ospfv3-authentication-trailer;
units seconds; leaf key-chain {
type uint16 { type string;
range "1..65535";
}
} }
container ipsec {
leaf spi {
type uint32 {
range "256..4294967295";
}
}
leaf encrypted {
type uint8 {
range "0..7";
}
leaf transmit-delay { }
description leaf key {
"Estimated time needed to send link-state update."; type string;
units seconds;
type uint16 {
range "1..65535";
} }
} }
} // interface-internal-inherit-config }
grouping interface-inherit-config { container ospfv2-authentication {
leaf network-type { when "../../../version = 2";
description description "Configure authentication for ospfv2.";
"Network type."; leaf enable {
type enumeration { type boolean;
enum "broadcast" { }
description choice authentication-type-selection {
"Specify OSPF broadcast multi-access network."; case clear-text {
} description
enum "non-broadcast" { "Use clear-text authentication.";
description leaf key {
"Specify OSPF NBMA network."; type string {
length "1..8";
}
} }
enum "point-to-multipoint" { }
description case message-digest {
"Specify OSPF point-to-multipoint network."; description
"Use message-digest authentication.";
list message-digest-key {
key key-id;
leaf key-id {
type uint8 {
range "1..255";
}
}
leaf algorithm {
type enumeration {
enum "md5";
}
}
leaf key {
type string {
length "1..8";
}
}
} }
enum "point-to-point" { }
description case cryptographic {
"Specify OSPF point-to-point network."; if-feature ospfv2-authentication-SHA;
description
"OSPFv2 Cryptographic Authentication(SHA) as in RFC 5709.";
leaf key-chain {
type string {
length "1..8";
}
} }
} }
} }
}
leaf passive { container database-filter {
description description
"Enable/Disable passive."; "Filter OSPF LSA during synchronization and flooding";
leaf enable {
type boolean; type boolean;
} }
leaf lsa-type {
leaf mtu-ignore { type enumeration {
description enum "all";
"Enable/Disable ignoring of MTU in DBD packets."; }
type boolean;
} }
leaf direction {
leaf flood-reduction-enable { type enumeration {
if-feature flood-reduction; enum "out";
type boolean; }
} }
}
leaf demand-circuit { list neighbor {
description description
"Enable/Disable demand circuits."; "Specify a neighbor router.";
type boolean; key "address";
leaf address {
type inet:ip-address;
} }
leaf demand-circuit-ignore-enable { leaf cost {
if-feature demand-circuit-ignore; type uint16 {
type boolean; range "1..65535";
}
}
leaf poll-interval {
units seconds;
type uint16 {
range "1..65535";
}
}
leaf priority {
type uint8 {
range "1..255";
}
} }
}
leaf prefix-suppression { container bfd {
leaf enable {
description description
"Suppress advertisement of the prefixes."; "enable bfd.";
type boolean; type boolean;
} }
container ttl-security { leaf minimum-interval {
if-feature security; description
leaf enable { "bfd hello interval";
type boolean; type uint16 {
range "15..30000";
} }
leaf hops { }
type uint8 { leaf multiplier {
range "1..254"; description
} "detect multiplier";
type uint8 {
range "2..50";
} }
}
}
uses interface-internal-inherit-config;
} // grouping interface-inherit-config
grouping area-inherit-config {
leaf loopback {
if-feature loopback-config;
description
"OSPF loopback configuration.";
type enumeration {
enum "stub";
enum "host";
} }
}
} // grouping area-inherit-config
container packet-size { // data nodes follow
if-feature packet-size; augment "/rt:routing/rt:routing-instance/rt:routing-protocols/"
+ "rt:routing-protocol" {
list ospf-router {
description
"This is a top-level container for the OSPF router.";
when "./type=ospf";
key "version name";
leaf version {
description description
"Customize size of OSPF packets up to MTU."; "OSPF version.";
leaf enable { type uint8 {
type boolean; range "2..3";
}
leaf size {
type uint16 {
range "576..10000";
}
} }
} }
container authentication { leaf name {
when "../../../version = 2"; description
description "Configure authentication."; "Name, combined with
leaf enable { ospf_router/ospf-vrfs/ospf-vrf/name,
type boolean; identify an OSPF protocol instance.";
} type string;
choice authentication-type-selection { }
case clear-text {
description container ospf-afs {
"Use clear-text authentication."; list ospf-af {
leaf key { key "vrf-name afi safi";
type string { leaf vrf-name {
length "1..8"; type string;
}
}
} }
case message-digest {
description leaf afi {
"Use message-digest authentication."; type enumeration {
list message-digest-key { enum "ipv4" {
key key-id; description
leaf key-id { "IPv4";
type uint8 {
range "1..255";
}
}
leaf algorithm {
type enumeration {
enum "md5";
}
} }
leaf key { enum "ipv6" {
type string { description
length "1..8"; "IPv6";
}
} }
} }
} }
}
}
container database-filter { leaf safi {
description type enumeration {
"Filter OSPF LSA during synchronization and flooding"; enum "unicast" {
leaf enable { description
type boolean; "unicast";
} }
leaf lsa-type { }
type enumeration {
enum "all";
}
}
leaf direction {
type enumeration {
enum "out";
} }
}
}
list neighbor { container router-id {
description description
"Specify a neighbor router."; "Defined in RFC 2328. A 32-bit number that uniquely
key ip-address; identifies the router.";
leaf ip-address { leaf static_config {
description
"Define whether a static router-id is configured.";
type boolean;
}
leaf router-id {
type inet:ip-address; type inet:ip-address;
} }
leaf cost {
type uint16 {
range "1..65535";
} }
}
leaf poll-interval {
units seconds;
type uint16 {
range "1..65535";
}
}
leaf priority {
type uint8 {
range "1..255";
leaf distance {
description
"Define an administrative distance.";
type uint8 {
range "1..255";
}
} }
}
}
container bfd { container default-originate {
leaf enable { description
description "Control distribution of default route information.";
"enable bfd."; leaf enable {
type boolean; type boolean;
} default "false";
}
leaf minimum-interval {
description
"bfd hello interval";
type uint16 {
range "15..30000";
}
}
leaf multiplier {
description
"detect multiplier";
type uint8 {
range "2..50";
} }
}
}
uses interface-internal-inherit-config;
} // grouping interface-inherit-config
grouping area-inherit-config { container auto-cost {
leaf loopback { description
if-feature loopback-config; "Calculate OSPF interface cost according to bandwidth.";
description leaf enable {
"OSPF loopback configuration."; type boolean;
type enumeration { }
enum "stub"; leaf reference-bandwidth {
enum "host"; type uint32 {
} range "1..4294967";
} }
} // grouping area-inherit-config
container ospf-routers {
list ospf-router {
description
"This is a top-level container for the OSPF router.";
key "version name"; }
leaf version {
description
"OSPF version.";
mandatory true;
type uint8 {
range "2..3";
} }
}
leaf name { leaf default-metric {
description description
"Name, combined with "Calculate OSPF interface cost according to bandwidth.";
ospf-routers/ospf_router/ospf-afs/ospf-af, type uint32 {
identify an OSPF protocol instance."; range "1..16777214";
mandatory true; }
type string; }
}
container ospf-afs { when "../../version = 2";
list ospf-af { list summary-prefix {
key "vrf-name afi safi"; description
leaf vrf-name { "Configure IP address summaries";
type string; key "prefix";
leaf prefix {
type inet:ipv4-prefix;
} }
leaf afi { leaf advertise {
type enumeration { type boolean;
enum "ipv4" {
description
"IPv4";
}
enum "ipv6" {
description
"IPv6";
}
}
} }
leaf safi { leaf tag {
type enumeration { type uint32 {
enum "unicast" { range "0..4294967295";
description
"unicast";
}
} }
} }
leaf nssa-only-enable {
if-feature nssa-only;
type boolean;
}
}
container router-id { container max-lsa {
if-feature max-lsa;
description
"Maximum number of LSAs OSPF process will receive.";
leaf max {
description description
"Specify the router-id for this OSPF process."; "Maximum number of non self-generated LSAs this
leaf enable { process can receive.";
type boolean; type uint32 {
range "1..4294967294";
} }
choice config-type {
case static {
leaf ip-address {
type boolean;
}
}
case auto-config {
leaf enable-auto-config {
type boolean;
}
}
}
} }
leaf threshold {
leaf distance {
description description
"Define an administrative distance."; "Threshold value (%) at which to generate
a warning msg.";
type uint8 { type uint8 {
range "1..255"; range "1..100";
} }
} }
leaf warning-only {
container default-originate {
description description
"Control distribution of default route information."; "Only give warning message when limit is exceeded.";
leaf enable { type boolean;
type boolean;
default "false";
}
} }
leaf ignore-time {
container auto-cost {
description description
"Calculate OSPF interface cost according to "Number of minutes during which all adjacencies
bandwidth."; are suppressed.";
leaf enable { type uint16 {
type boolean; range "1..17895";
} }
leaf reference-bandwidth { }
type uint32 { leaf ignore-count {
range "1..4294967"; description
} "Count on how many times adjacencies can be
suppressed.";
type uint16 {
range "1..65534";
} }
} }
leaf default-metric { leaf reset-time {
description description
"Calculate OSPF interface cost according to "number of minutes after which ignore-count is
bandwidth."; reset to zero.";
type uint32 { type uint16 {
range "1..16777214"; range "2..35791";
} }
} }
}
list summary-prefix { container maximum {
if-feature maximum-ecmp;
description
"Set OSPF limits.";
leaf paths {
description description
"Configure IP address summaries"; "Maximum number of ECMP paths.";
key "prefix"; type uint16 {
leaf prefix { range "1..32";
type inet:ip-prefix;
}
leaf advertise {
type boolean;
}
leaf tag {
type uint32 {
range "0..4294967295";
}
} }
leaf nssa-only-enable { }
if-feature nssa-only; leaf interfaces {
type boolean; description
"Maximum number of interfaces.";
type uint16 {
range "1..1024";
} }
} }
container redistributed-prefixes {
container max-lsa {
if-feature max-lsa;
description description
"Maximum number of LSAs OSPF process will "Maximum number of prefixes redistributed.";
receive.";
leaf max { leaf max {
description
"Maximum number of non self-generated LSAs
this process can receive.";
type uint32 { type uint32 {
range "1..4294967294"; range "1..4294967295";
} }
} }
leaf threshold { leaf threshold {
description description
"Threshold value (%) at which to generate "Threshold value (%) at which to generate
a warning msg."; a warning msg.";
type uint8 { type uint8 {
range "1..100"; range "1..100";
} }
} }
leaf warning-only { leaf warning-only {
description description
"Only give warning message when limit is "Only give warning message when limit is exceeded.";
exceeded.";
type boolean; type boolean;
} }
leaf ignore-time {
description
"Number of minutes during which all adjacencies
are suppressed.";
type uint16 {
range "1..17895";
}
}
leaf ignore-count {
description
"Count on how many times adjacencies can be
suppressed.";
type uint16 {
range "1..65534";
}
}
leaf reset-time {
description
"number of minutes after which ignore-count is
reset to zero.";
type uint16 {
range "2..35791";
}
}
} }
}
container maximum { container ignore {
if-feature maximum-ecmp; description
description "Do not complain about specific event.";
"Set OSPF limits."; leaf-list lsa {
leaf paths { type enumeration {
description enum "mospf";
"Maximum number of ECMP paths.";
type uint16 {
range "1..32";
}
} }
leaf interfaces { }
}
container log {
description
"Log ospf info.";
leaf adjacency-changes {
type boolean;
}
}
container nsr {
if-feature nsr;
description
"Enable NSR.";
leaf enable {
type boolean;
}
}
container nsf {
choice nsf-type {
case cisco {
if-feature nsf-cisco;
description description
"Maximum number of interfaces."; "Enable Cisco Non Stop Forwarding.";
type uint16 { leaf cisco-enable {
range "1..1024"; type boolean;
} }
} }
container redistributed-prefixes { case ietf {
description description
"Maximum number of prefixes redistributed."; "Enable IETF standardized graceful restart
leaf max { functionality that is described in
type uint32 { RFC 3623 and 5187.";
range "1..4294967295"; leaf ietf-enable {
}
}
leaf threshold {
description
"Threshold value (%) at which to generate
a warning msg.";
type uint8 {
range "1..100";
}
}
leaf warning-only {
description
"Only give warning message when limit is
exceeded.";
type boolean; type boolean;
} }
} leaf ietf-helper-enable {
} type boolean;
container ignore {
description
"Do not complain about specific event.";
leaf-list lsa {
type enumeration {
enum "mospf";
} }
} }
} }
}
container log { container protocol {
description description
"Log ospf info."; "Protocol specific configuration.";
leaf adjacency-changes { leaf shutdown {
type boolean; type boolean;
}
}
container nsr {
if-feature nsr;
description
"Enable NSR.";
leaf enable {
type boolean;
}
} }
}
container nsf { container spf {
choice nsf-type { if-feature spf;
case cisco { description
if-feature nsf-cisco; "SPF configuration";
description leaf prefix-priority-policy {
"Enable Cisco Non Stop Forwarding."; type string;
leaf cisco-enable {
type boolean;
}
}
case ietf {
description
"Enable Cisco Non Stop Forwarding.";
leaf ietf-enable {
type boolean;
}
leaf ietf-helper-enable {
type boolean;
}
}
}
}
container protocol {
description
"Protocol specific configuration.";
leaf shutdown {
type boolean;
}
} }
}
container spf { container snmp {
if-feature spf; description
description "Adjust ospf snmp parameters";
"SPF configuration"; leaf context {
leaf prefix-priority-policy { type string;
type string;
}
}
container snmp {
description
"Adjust ospf snmp parameters";
leaf context {
type string;
}
} }
}
container redistribute { container redistribute {
description description
"Redistribute information from another "Redistribute information from another routing protocol.
routing protocol. This grouping is intended to be augmented by vendors
This grouping is intended to be augmented by to implement vendor-specific protocol redistribution
vendors to implement vendor-specific protocol configuration options.";
redistribution configuration options."; choice protocol {
choice protocol { case bgp {
case bgp { leaf enable-bgp {
leaf enable-bgp { type boolean;
type boolean;
}
} }
case ospf { }
leaf enable-ospf { case ospf {
type boolean; leaf enable-ospf {
} type boolean;
} }
case isis { }
leaf enable-isis { case isis {
type boolean; leaf enable-isis {
} type boolean;
} }
case connected { }
leaf enable-connected { case connected {
type boolean; leaf enable-connected {
} type boolean;
} }
case eigrp { }
leaf enable-eigrp { case eigrp {
type boolean; leaf enable-eigrp {
} type boolean;
} }
case mobile { }
leaf enable-mobile { case mobile {
type boolean; leaf enable-mobile {
} type boolean;
} }
case static { }
leaf enable-static { case static {
type boolean; leaf enable-static {
} type boolean;
} }
case rip { }
leaf enable-rip { case rip {
type boolean; leaf enable-rip {
} type boolean;
} }
} }
} }
}
container timers { container timers {
description description
"Adjust routing timers. "Adjust routing timers.
This grouping is intended to be augmented This grouping is intended to be augmented by vendors
by vendors to implement vendor-specific to implement vendor-specific protocol timers
protocol timers configuration options"; configuration options";
container lsa { container lsa {
leaf min-arrival { leaf min-arrival {
description description
"The minimum interval in milliseconds "The minimum interval in milliseconds between
between accepting the same"; accepting the same";
units milliseconds; units milliseconds;
type uint32 { type uint32 {
range "0..600000"; range "0..600000";
}
}
leaf refresh {
description
"The minimum interval in seconds
between refresh";
units seconds;
type uint32 {
range "1800..2700";
}
} }
} }
container throttle-lsa { leaf refresh {
leaf delay { description
description "The minimum interval in seconds between refresh";
"Delay to generate first occurance of units seconds;
LSA in milliseconds"; type uint32 {
units milliseconds; range "1800..2700";
type uint32 {
range "0..600000";
}
}
leaf min-delay {
description
"The Minimum delay between originating
the same LSA in milliseconds";
units milliseconds;
type uint32 {
range "0..600000";
}
}
leaf max-delay {
description
"The Maximum delay between originating
the same LSA in milliseconds";
units milliseconds;
type uint32 {
range "0..600000";
}
} }
} }
}
container throttle-lsa {
leaf delay {
description
"Delay to generate first occurance of LSA
in milliseconds";
units milliseconds;
type uint32 {
range "0..600000";
container throttle-spf {
leaf delay {
description
"Delay between receiving a change to
SPF calculation in milliseconds";
units milliseconds;
type uint32 {
range "0..600000";
}
} }
leaf min-delay { }
description leaf min-delay {
"Delay between first and second SPF description
calculation in milliseconds"; "The Minimum delay between originating the same
units milliseconds; LSA in milliseconds";
type uint32 { units milliseconds;
range "0..600000"; type uint32 {
} range "0..600000";
} }
leaf max-delay { }
description leaf max-delay {
"Maximum wait time in milliseconds description
for SPF calculations"; "The Maximum delay between originating the same
units milliseconds; LSA in milliseconds";
type uint32 { units milliseconds;
range "0..600000"; type uint32 {
} range "0..600000";
} }
} }
} }
container mpls { container throttle-spf {
description leaf delay {
"OSPF MPLS configuraions.";
leaf te-rid {
description description
"Traffic Engineering stable "Delay between receiving a change to SPF calculation
IP address for system."; in milliseconds";
type if:interface-ref; units milliseconds;
type uint32 {
range "0..600000";
}
} }
leaf ldp-sync-enable { leaf min-delay {
description description
"Enable LDP IGP synchronization."; "Delay between first and second SPF calculation
type boolean; in milliseconds";
units milliseconds;
type uint32 {
range "0..600000";
}
} }
leaf ldp-autoconfig-enable { leaf max-delay {
description description
"Enable LDP IGP interface "Maximum wait time in milliseconds for
auto-configuration."; SPF calculations";
type boolean; units milliseconds;
type uint32 {
range "0..600000";
}
} }
} }
}
container fast-reroute { container mpls {
leaf fast-reroute-enable { description
description "OSPF MPLS configuraions.";
"IP fast reroute."; leaf te-rid {
type boolean; description
} "Traffic Engineering stable IP address for system.";
type if:interface-ref;
}
leaf ldp-sync-enable {
description
"Enable LDP IGP synchronization.";
type boolean;
}
leaf ldp-autoconfig-enable {
description
"Enable LDP IGP interface auto-configuration.";
type boolean;
} }
}
container ospf-areas { container fast-reroute {
leaf fast-reroute-enable {
description description
"The top level container for the list "IP fast reroute.";
of areas of the OSPF router."; type boolean;
}
}
uses area-inherit-config; container ospf-areas {
uses interface-inherit-config; description
"The top level container for the list of areas of
the OSPF router.";
list ospf-area { uses area-inherit-config;
key "area-id"; uses interface-inherit-config;
leaf area-id {
type uint32;
}
leaf area-notation { list ospf-area {
key "area-id";
leaf area-id {
type uint32;
}
leaf area-notation {
description
"Sets the default area notation.";
type enumeration {
enum "decimal";
enum "dot";
}
}
choice area-type {
case nssa {
description description
"Sets the default area notation."; "Specify area as a NSSA area.";
type enumeration { leaf redistribute {
enum "decimal"; type boolean;
enum "dot";
} }
} leaf nssa-summary {
choice area-type { type boolean;
case nssa {
description
"Specify area as a NSSA area.";
leaf redistribute {
type boolean;
}
leaf nssa-summary {
type boolean;
}
leaf nssa-ext-capability {
if-feature nssa-ext-capability;
type boolean;
}
container default-information-originate {
description
"Originate Type 7 default into NSSA area.";
leaf metric {
type uint16 {
range "1..65535";
}
}
leaf metric-type {
type uint8 {
range "1..2";
}
}
}
} }
case stub { leaf nssa-ext-capability {
if-feature nssa-ext-capability;
type boolean;
}
container default-information-originate {
description description
"Specify area as a stub area."; "Originate Type 7 default into NSSA area.";
leaf stub-summary { leaf metric {
type boolean; type uint16 {
range "1..65535";
}
} }
leaf stub-ext-capability { leaf metric-type {
type boolean; type uint8 {
range "1..2";
}
} }
} }
} }
leaf default-cost { case stub {
description
"Set the summary default-cost of a
NSSA/stub area.";
type uint32 {
range "1..16777215";
}
}
list range {
description description
"Summarize routes matching "Specify area as a stub area.";
address/mask (border routers only)"; leaf stub-summary {
key "prefix";
leaf prefix {
type inet:ip-prefix;
}
leaf advertise {
type boolean; type boolean;
} }
leaf cost { leaf stub-ext-capability {
type uint32 { type boolean;
range "0..16777214";
}
} }
} }
}
leaf default-cost {
description
"Set the summary default-cost of a NSSA/stub area.";
type uint32 {
range "1..16777215";
}
}
container virtual-link { list range {
description description
"Define a virtual link"; "Summarize routes matching address/mask (border
leaf router-id { routers only)";
type inet:ip-address; key "prefix";
leaf prefix {
type inet:ipv4-prefix;
}
leaf advertise {
type boolean;
}
leaf cost {
type uint32 {
range "0..16777214";
} }
uses interface-internal-inherit-config;
} }
}
container sham-link { container virtual-link {
leaf local-id { description
description "Define a virtual link";
"Address of the local end-point."; leaf router-id {
type inet:ip-address; type inet:ip-address;
}
leaf remote-id {
description
"Address of the remote end-point.";
type inet:ip-address;
}
uses interface-internal-inherit-config;
} }
container mpls-te-config { uses interface-internal-inherit-config;
leaf mpls-te-enable { }
description
"Enable an ospf area to run MPLS container sham-link {
Traffic Engineering."; leaf local-id {
type boolean; description
} "Address of the local end-point.";
type inet:ip-address;
}
leaf remote-id {
description
"Address of the remote end-point.";
type inet:ip-address;
} }
uses interface-internal-inherit-config;
container ospf-interfaces { }
container mpls-te-config {
leaf mpls-te-enable {
description description
"The top level container for the "Enable an ospf area to run MPLS
list of interfaces of the OSPF router."; Traffic Engineering.";
type boolean;
}
}
uses interface-inherit-config; container ospf-interfaces {
description
"The top level container for the list of interfaces
of the OSPF router.";
uses interface-inherit-config;
list ospf-interface { list ospf-interface {
key "interface"; key "interface";
leaf interface { leaf interface {
type if:interface-ref; type if:interface-ref;
} }
uses interface-inherit-config; uses interface-inherit-config;
} // list ospf-interface } // list ospf-interface
} // container ospf-interfaces } // container ospf-interfaces
} // list ospf-area } // list ospf-area
} // container ospf-areas } // container ospf-areas
} // container ospf-af } // container ospf-af
} // container ospf-afs } // container ospf-afs
} // list ospf-router } // list ospf-router
} // container ospf-routers } // container ospf-routers
} }
<CODE ENDS> <CODE ENDS>
4. Security Considerations 4. Security Considerations
The data model defined does not create any security implications. The data model defined does not create any security implications.
This draft does not change any underlying security issues inherent in This draft does not change any underlying security issues inherent in
[I-D.ietf-netmod-routing-cfg]. [I-D.ietf-netmod-routing-cfg].
5. Acknowledgements 5. Acknowledgements
skipping to change at page 30, line 26 skipping to change at page 33, line 24
October 2010. October 2010.
[RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A.
Bierman, "Network Configuration Protocol (NETCONF)", RFC Bierman, "Network Configuration Protocol (NETCONF)", RFC
6241, June 2011. 6241, June 2011.
6.2. Informative References 6.2. Informative References
[I-D.ietf-netmod-interfaces-cfg] [I-D.ietf-netmod-interfaces-cfg]
Bjorklund, M., "A YANG Data Model for Interface Bjorklund, M., "A YANG Data Model for Interface
Management", draft-ietf-netmod-interfaces-cfg-12 (work in Management", draft-ietf-netmod-interfaces-cfg-16 (work in
progress), July 2013. progress), January 2014.
[I-D.ietf-netmod-routing-cfg] [I-D.ietf-netmod-routing-cfg]
Lhotka, L., "A YANG Data Model for Routing Management", Lhotka, L., "A YANG Data Model for Routing Management",
draft-ietf-netmod-routing-cfg-11 (work in progress), draft-ietf-netmod-routing-cfg-13 (work in progress),
October 2013. January 2014.
Authors' Addresses Authors' Addresses
Derek Yeung Derek Yeung
Cisco Systems Cisco Systems
170 West Tasman Drive 170 West Tasman Drive
San Jose, CA 95134 San Jose, CA 95134
USA USA
EMail: myeung@cisco.com EMail: myeung@cisco.com
 End of changes. 194 change blocks. 
964 lines changed or deleted 1052 lines changed or added

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