ietf-ospf.yang | ietf-ospf-formatted.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 | reference | |||
"RFC 6991: Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
import ietf-yang-types { | import ietf-yang-types { | |||
prefix "yang"; | prefix yang; | |||
reference | reference | |||
"RFC 6991: Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
import ietf-interfaces { | import ietf-interfaces { | |||
prefix "if"; | prefix if; | |||
reference | reference | |||
"RFC 8343: A YANG Data Model for Interface Management"; | "RFC 8343: A YANG Data Model for Interface Management"; | |||
} | } | |||
import ietf-routing-types { | import ietf-routing-types { | |||
prefix "rt-types"; | prefix rt-types; | |||
reference | reference | |||
"RFC 8294: Common YANG Data Types for the Routing Area"; | "RFC 8294: Common YANG Data Types for the Routing Area"; | |||
} | } | |||
import iana-routing-types { | import iana-routing-types { | |||
prefix "iana-rt-types"; | prefix iana-rt-types; | |||
reference | reference | |||
"RFC 8294: Common YANG Data Types for the Routing Area"; | "RFC 8294: Common YANG Data Types for the Routing Area"; | |||
} | } | |||
import ietf-routing { | import ietf-routing { | |||
prefix "rt"; | prefix rt; | |||
reference | reference | |||
"RFC 8349: A YANG Data Model for Routing Management | "RFC 8349: A YANG Data Model for Routing Management | |||
(NMDA Version)"; | (NMDA Version)"; | |||
} | } | |||
import ietf-key-chain { | import ietf-key-chain { | |||
prefix "key-chain"; | prefix key-chain; | |||
reference | reference | |||
"RFC 8177: YANG Data Model for Key Chains"; | "RFC 8177: YANG Data Model for Key Chains"; | |||
} | } | |||
import ietf-bfd-types { | import ietf-bfd-types { | |||
prefix "bfd-types"; | prefix bfd-types; | |||
reference | reference | |||
"RFC 9127: YANG Data Model for Bidirectional Forwarding | "RFC 9127: YANG Data Model for Bidirectional Forwarding | |||
Detection (BFD)"; | Detection (BFD)"; | |||
} | } | |||
organization | organization | |||
"IETF Link State Routing (lsr) Working Group"; | "IETF Link State Routing (lsr) Working Group"; | |||
contact | contact | |||
"WG Web: <https://datatracker.ietf.org/wg/lsr/> | "WG Web: <https://datatracker.ietf.org/wg/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@futurewei.com> | <mailto:yingzhen.qu@futurewei.com> | |||
skipping to change at line 192 ¶ | skipping to change at line 183 ¶ | |||
"Graceful OSPF restart as defined in RFCs 3623 and 5187."; | "Graceful OSPF restart as defined in RFCs 3623 and 5187."; | |||
reference | reference | |||
"RFC 3623: Graceful OSPF Restart | "RFC 3623: Graceful OSPF Restart | |||
RFC 5187: OSPFv3 Graceful Restart"; | RFC 5187: OSPFv3 Graceful Restart"; | |||
} | } | |||
feature auto-cost { | feature auto-cost { | |||
description | description | |||
"Calculates the OSPF interface cost according to | "Calculates the OSPF interface cost according to | |||
reference bandwidth."; | reference bandwidth."; | |||
reference | reference | |||
"RFC 2328: OSPF Version 2"; | "RFC 2328: OSPF Version 2"; | |||
} | } | |||
feature max-ecmp { | feature max-ecmp { | |||
description | description | |||
"Sets the maximum number of ECMP paths."; | "Sets the maximum number of ECMP paths."; | |||
} | } | |||
feature max-lsa { | feature max-lsa { | |||
description | description | |||
"Sets the maximum number of Link State Advertisements (LSAs) | "Sets the maximum number of Link State Advertisements (LSAs) | |||
skipping to change at line 255 ¶ | skipping to change at line 246 ¶ | |||
feature ospfv3-authentication-trailer { | feature ospfv3-authentication-trailer { | |||
description | description | |||
"Support for the OSPFv3 Authentication Trailer for OSPFv3 | "Support for the OSPFv3 Authentication Trailer for OSPFv3 | |||
authentication."; | authentication."; | |||
reference | reference | |||
"RFC 7166: Supporting Authentication Trailer for OSPFv3"; | "RFC 7166: Supporting Authentication Trailer for OSPFv3"; | |||
} | } | |||
feature fast-reroute { | feature fast-reroute { | |||
description | description | |||
"Support for IP Fast Reroute (IP-FRR)."; | "Support for IP Fast Reroute (IP-FRR)."; | |||
reference | reference | |||
"RFC 5714: IP Fast Reroute Framework"; | "RFC 5714: IP Fast Reroute Framework"; | |||
} | } | |||
feature key-chain { | feature key-chain { | |||
description | description | |||
"Support of key chains for authentication."; | "Support of key chains for authentication."; | |||
reference | reference | |||
"RFC 8177: YANG Data Model for Key Chains"; | "RFC 8177: YANG Data Model for Key Chains"; | |||
} | } | |||
feature node-flag { | feature node-flag { | |||
description | description | |||
"Support for node flags for OSPF prefixes."; | "Support for node flags for OSPF prefixes."; | |||
reference | reference | |||
"RFC 7684: OSPFv2 Prefix/Link Attribute Advertisement"; | "RFC 7684: OSPFv2 Prefix/Link Attribute Advertisement"; | |||
} | } | |||
feature node-tag { | feature node-tag { | |||
description | description | |||
"Support for node administrative tags for OSPF routing | "Support for node administrative tags for OSPF routing | |||
instances."; | instances."; | |||
reference | reference | |||
"RFC 7777: Advertising Node Administrative Tags in OSPF"; | "RFC 7777: Advertising Node Administrative Tags in OSPF"; | |||
} | } | |||
feature lfa { | feature lfa { | |||
description | description | |||
"Support for Loop-Free Alternates (LFAs)."; | "Support for Loop-Free Alternates (LFAs)."; | |||
reference | reference | |||
"RFC 5286: Basic Specification for IP Fast Reroute: | "RFC 5286: Basic Specification for IP Fast Reroute: | |||
Loop-Free Alternates"; | Loop-Free Alternates"; | |||
} | } | |||
feature remote-lfa { | feature remote-lfa { | |||
description | description | |||
"Support for Remote LFAs (R-LFAs)."; | "Support for Remote LFAs (R-LFAs)."; | |||
reference | reference | |||
"RFC 7490: Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)"; | "RFC 7490: Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)"; | |||
} | } | |||
feature stub-router { | feature stub-router { | |||
description | description | |||
"Support for OSPF stub router advertisements as defined in | "Support for OSPF stub router advertisements as defined in | |||
RFC 6987."; | RFC 6987."; | |||
reference | reference | |||
"RFC 6987: OSPF Stub Router Advertisement"; | "RFC 6987: OSPF Stub Router Advertisement"; | |||
} | } | |||
skipping to change at line 344 ¶ | skipping to change at line 335 ¶ | |||
feature hybrid-interface { | feature hybrid-interface { | |||
description | description | |||
"Support for the OSPF Hybrid interface type."; | "Support for the OSPF Hybrid interface type."; | |||
reference | reference | |||
"RFC 6845: OSPF Hybrid Broadcast and | "RFC 6845: OSPF Hybrid Broadcast and | |||
Point-to-Multipoint Interface Type"; | Point-to-Multipoint Interface Type"; | |||
} | } | |||
identity ospf { | identity ospf { | |||
base "rt:routing-protocol"; | base rt:routing-protocol; | |||
description | description | |||
"Any OSPF protocol version."; | "Any OSPF protocol version."; | |||
} | } | |||
identity ospfv2 { | identity ospfv2 { | |||
base "ospf"; | base ospf; | |||
description | description | |||
"OSPFv2 protocol."; | "OSPFv2 protocol."; | |||
} | } | |||
identity ospfv3 { | identity ospfv3 { | |||
base "ospf"; | base ospf; | |||
description | description | |||
"OSPFv3 protocol."; | "OSPFv3 protocol."; | |||
} | } | |||
identity area-type { | identity area-type { | |||
description | description | |||
"Base identity for an OSPF area type."; | "Base identity for an OSPF area type."; | |||
} | } | |||
identity normal-area { | identity normal-area { | |||
skipping to change at line 918 ¶ | skipping to change at line 909 ¶ | |||
"OSPF type 2 NSSA route."; | "OSPF type 2 NSSA route."; | |||
} | } | |||
} | } | |||
description | description | |||
"OSPF route type."; | "OSPF route type."; | |||
} | } | |||
typedef if-state-type { | typedef if-state-type { | |||
type enumeration { | type enumeration { | |||
enum down { | enum down { | |||
value "1"; | value 1; | |||
description | description | |||
"Interface is in the 'Down' state."; | "Interface is in the 'Down' state."; | |||
} | } | |||
enum loopback { | enum loopback { | |||
value "2"; | value 2; | |||
description | description | |||
"Interface is in the 'Loopback' state."; | "Interface is in the 'Loopback' state."; | |||
} | } | |||
enum waiting { | enum waiting { | |||
value "3"; | value 3; | |||
description | description | |||
"Interface is in the 'Waiting' state."; | "Interface is in the 'Waiting' state."; | |||
} | } | |||
enum point-to-point { | enum point-to-point { | |||
value "4"; | value 4; | |||
description | description | |||
"Interface is in the 'Point-to-point' state."; | "Interface is in the 'Point-to-point' state."; | |||
} | } | |||
enum dr { | enum dr { | |||
value "5"; | value 5; | |||
description | description | |||
"Interface is in the 'DR' (Designated Router) state."; | "Interface is in the 'DR' (Designated Router) state."; | |||
} | } | |||
enum bdr { | enum bdr { | |||
value "6"; | value 6; | |||
description | description | |||
"Interface is in the 'Backup' (Backup Designated Router | "Interface is in the 'Backup' (Backup Designated Router | |||
(BDR)) state."; | (BDR)) state."; | |||
} | } | |||
enum dr-other { | enum dr-other { | |||
value "7"; | value 7; | |||
description | description | |||
"Interface is in the 'DR Other' state."; | "Interface is in the 'DR Other' state."; | |||
} | } | |||
} | } | |||
description | description | |||
"OSPF interface state type."; | "OSPF interface state type."; | |||
reference | reference | |||
"RFC 2328: OSPF Version 2"; | "RFC 2328: OSPF Version 2"; | |||
} | } | |||
typedef router-link-type { | typedef router-link-type { | |||
type enumeration { | type enumeration { | |||
enum point-to-point-link { | enum point-to-point-link { | |||
value "1"; | value 1; | |||
description | description | |||
"Point-to-point link to the router."; | "Point-to-point link to the router."; | |||
} | } | |||
enum transit-network-link { | enum transit-network-link { | |||
value "2"; | value 2; | |||
description | description | |||
"Link to the transit network, identified by the DR."; | "Link to the transit network, identified by the DR."; | |||
} | } | |||
enum stub-network-link { | enum stub-network-link { | |||
value "3"; | value 3; | |||
description | description | |||
"Link to the stub network, identified by the subnet."; | "Link to the stub network, identified by the subnet."; | |||
} | } | |||
enum virtual-link { | enum virtual-link { | |||
value "4"; | value 4; | |||
description | description | |||
"Virtual link across a transit area."; | "Virtual link across a transit area."; | |||
} | } | |||
} | } | |||
description | description | |||
"OSPF router link type."; | "OSPF router link type."; | |||
} | } | |||
typedef nbr-state-type { | typedef nbr-state-type { | |||
type enumeration { | type enumeration { | |||
enum down { | enum down { | |||
value "1"; | value 1; | |||
description | description | |||
"Neighbor is in the 'Down' state."; | "Neighbor is in the 'Down' state."; | |||
} | } | |||
enum attempt { | enum attempt { | |||
value "2"; | value 2; | |||
description | description | |||
"Neighbor is in the 'Attempt' state."; | "Neighbor is in the 'Attempt' state."; | |||
} | } | |||
enum init { | enum init { | |||
value "3"; | value 3; | |||
description | description | |||
"Neighbor is in the 'Init' state."; | "Neighbor is in the 'Init' state."; | |||
} | } | |||
enum 2-way { | enum 2-way { | |||
value "4"; | value 4; | |||
description | description | |||
"Neighbor is in the '2-Way' state."; | "Neighbor is in the '2-Way' state."; | |||
} | } | |||
enum exstart { | enum exstart { | |||
value "5"; | value 5; | |||
description | description | |||
"Neighbor is in the 'ExStart' (exchange start) state."; | "Neighbor is in the 'ExStart' (exchange start) state."; | |||
} | } | |||
enum exchange { | enum exchange { | |||
value "6"; | value 6; | |||
description | description | |||
"Neighbor is in the 'Exchange' state."; | "Neighbor is in the 'Exchange' state."; | |||
} | } | |||
enum loading { | enum loading { | |||
value "7"; | value 7; | |||
description | description | |||
"Neighbor is in the 'Loading' state."; | "Neighbor is in the 'Loading' state."; | |||
} | } | |||
enum full { | enum full { | |||
value "8"; | value 8; | |||
description | description | |||
"Neighbor is in the 'Full' state."; | "Neighbor is in the 'Full' state."; | |||
} | } | |||
} | } | |||
description | description | |||
"OSPF neighbor state type."; | "OSPF neighbor state type."; | |||
reference | reference | |||
"RFC 2328: OSPF Version 2"; | "RFC 2328: OSPF Version 2"; | |||
} | } | |||
typedef restart-helper-status-type { | typedef restart-helper-status-type { | |||
type enumeration { | type enumeration { | |||
enum not-helping { | enum not-helping { | |||
value "1"; | value 1; | |||
description | description | |||
"Restart helper status of 'not-helping'."; | "Restart helper status of 'not-helping'."; | |||
} | } | |||
enum helping { | enum helping { | |||
value "2"; | value 2; | |||
description | description | |||
"Restart helper status of 'helping'."; | "Restart helper status of 'helping'."; | |||
} | } | |||
} | } | |||
description | description | |||
"Restart helper status type."; | "Restart helper status type."; | |||
} | } | |||
typedef restart-exit-reason-type { | typedef restart-exit-reason-type { | |||
type enumeration { | type enumeration { | |||
enum none { | enum none { | |||
value "1"; | value 1; | |||
description | description | |||
"Restart not attempted."; | "Restart not attempted."; | |||
} | } | |||
enum in-progress { | enum in-progress { | |||
value "2"; | value 2; | |||
description | description | |||
"Restart in progress."; | "Restart in progress."; | |||
} | } | |||
enum completed { | enum completed { | |||
value "3"; | value 3; | |||
description | description | |||
"Restart successfully completed."; | "Restart successfully completed."; | |||
} | } | |||
enum timed-out { | enum timed-out { | |||
value "4"; | value 4; | |||
description | description | |||
"Restart timed out."; | "Restart timed out."; | |||
} | } | |||
enum topology-changed { | enum topology-changed { | |||
value "5"; | value 5; | |||
description | description | |||
"Restart aborted due to a topology change."; | "Restart aborted due to a topology change."; | |||
} | } | |||
} | } | |||
description | description | |||
"Describes the outcome of the last attempt at a | "Describes the outcome of the last attempt at a | |||
graceful restart, either by itself or acting | graceful restart, either by itself or acting | |||
as a helper."; | as a helper."; | |||
} | } | |||
typedef packet-type { | typedef packet-type { | |||
type enumeration { | type enumeration { | |||
enum hello { | enum hello { | |||
value "1"; | value 1; | |||
description | description | |||
"OSPF Hello packet."; | "OSPF Hello packet."; | |||
} | } | |||
enum database-description { | enum database-description { | |||
value "2"; | value 2; | |||
description | description | |||
"OSPF Database Description packet."; | "OSPF Database Description packet."; | |||
} | } | |||
enum link-state-request { | enum link-state-request { | |||
value "3"; | value 3; | |||
description | description | |||
"OSPF Link State Request packet."; | "OSPF Link State Request packet."; | |||
} | } | |||
enum link-state-update { | enum link-state-update { | |||
value "4"; | value 4; | |||
description | description | |||
"OSPF Link State Update packet."; | "OSPF Link State Update packet."; | |||
} | } | |||
enum link-state-ack { | enum link-state-ack { | |||
value "5"; | value 5; | |||
description | description | |||
"OSPF Link State Acknowledgment packet."; | "OSPF Link State Acknowledgment packet."; | |||
} | } | |||
} | } | |||
description | description | |||
"OSPF packet type."; | "OSPF packet type."; | |||
} | } | |||
typedef nssa-translator-state-type { | typedef nssa-translator-state-type { | |||
type enumeration { | type enumeration { | |||
enum enabled { | enum enabled { | |||
value "1"; | value 1; | |||
description | description | |||
"NSSA translator enabled state."; | "NSSA translator enabled state."; | |||
} | } | |||
enum elected { | enum elected { | |||
value "2"; | value 2; | |||
description | description | |||
"NSSA translator elected state."; | "NSSA translator elected state."; | |||
} | } | |||
enum disabled { | enum disabled { | |||
value "3"; | value 3; | |||
description | description | |||
"NSSA translator disabled state."; | "NSSA translator disabled state."; | |||
} | } | |||
} | } | |||
description | description | |||
"OSPF NSSA translator state type."; | "OSPF NSSA translator state type."; | |||
} | } | |||
typedef restart-status-type { | typedef restart-status-type { | |||
type enumeration { | type enumeration { | |||
enum not-restarting { | enum not-restarting { | |||
value "1"; | value 1; | |||
description | description | |||
"The router is not restarting."; | "The router is not restarting."; | |||
} | } | |||
enum planned-restart { | enum planned-restart { | |||
value "2"; | value 2; | |||
description | description | |||
"The router is going through a planned restart."; | "The router is going through a planned restart."; | |||
} | } | |||
enum unplanned-restart { | enum unplanned-restart { | |||
value "3"; | value 3; | |||
description | description | |||
"The router is going through an unplanned restart."; | "The router is going through an unplanned restart."; | |||
} | } | |||
} | } | |||
description | description | |||
"OSPF graceful restart status type."; | "OSPF graceful restart status type."; | |||
} | } | |||
typedef fletcher-checksum16-type { | typedef fletcher-checksum16-type { | |||
type string { | type string { | |||
pattern '(0x)?[0-9a-fA-F]{4}'; | pattern '(0x)?[0-9a-fA-F]{4}'; | |||
} | } | |||
description | description | |||
"Fletcher 16-bit checksum in hex-string format 0xXXXX."; | "Fletcher 16-bit checksum in hex-string format 0xXXXX."; | |||
reference | reference | |||
"RFC 905: ISO Transport Protocol Specification ISO DP 8073"; | "RFC 905: ISO Transport Protocol Specification ISO DP 8073"; | |||
} | } | |||
typedef ospfv2-auth-trailer-rfc-version { | typedef ospfv2-auth-trailer-rfc-version { | |||
type enumeration { | type enumeration { | |||
enum rfc5709 { | enum rfc5709 { | |||
description | description | |||
"Support for the OSPF Authentication Trailer as | "Support for the OSPF Authentication Trailer as | |||
described in RFC 5709."; | described in RFC 5709."; | |||
reference | reference | |||
"RFC 5709: OSPFv2 HMAC-SHA Cryptographic Authentication"; | "RFC 5709: OSPFv2 HMAC-SHA Cryptographic Authentication"; | |||
skipping to change at line 1260 ¶ | skipping to change at line 1251 ¶ | |||
leaf-list informational-capabilities { | leaf-list informational-capabilities { | |||
type identityref { | type identityref { | |||
base informational-capability; | base informational-capability; | |||
} | } | |||
description | description | |||
"List of informational capabilities. This list will | "List of informational capabilities. This list will | |||
contain the identities for the informational | contain the identities for the informational | |||
capabilities supported by the router."; | capabilities supported by the router."; | |||
} | } | |||
description | description | |||
"OSPF Router Informational Flag definitions."; | "OSPF Router Informational Flag definitions."; | |||
} | } | |||
list informational-capabilities-flags { | list informational-capabilities-flags { | |||
leaf informational-flag { | leaf informational-flag { | |||
type uint32; | type uint32; | |||
description | description | |||
"Individual informational capability flag."; | "Individual informational capability flag."; | |||
} | } | |||
description | description | |||
"List of informational capability flags. This will | "List of informational capability flags. This will | |||
return all the 32-bit informational flags, irrespective | return all the 32-bit informational flags, irrespective | |||
skipping to change at line 1388 ¶ | skipping to change at line 1379 ¶ | |||
description | description | |||
"Router-LSA link type."; | "Router-LSA link type."; | |||
} | } | |||
} | } | |||
grouping ospfv2-lsa-body { | grouping ospfv2-lsa-body { | |||
description | description | |||
"OSPFv2 LSA body."; | "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-bits; | uses ospf-router-lsa-bits; | |||
leaf num-of-links { | leaf num-of-links { | |||
type uint16; | type uint16; | |||
description | description | |||
"Number of links in the Router LSA."; | "Number of links in the Router LSA."; | |||
skipping to change at line 1430 ¶ | skipping to change at line 1421 ¶ | |||
description | description | |||
"Metric for the topology."; | "Metric for the topology."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container network { | container network { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv2-network-lsa')" { | + "'ospfv2-network-lsa')" { | |||
description | description | |||
"Only applies to Network LSAs."; | "Only applies to Network LSAs."; | |||
} | } | |||
description | description | |||
"Network LSA."; | "Network LSA."; | |||
leaf network-mask { | leaf network-mask { | |||
type yang:dotted-quad; | type yang:dotted-quad; | |||
description | description | |||
"The IP address mask for the network."; | "The IP address mask for the network."; | |||
} | } | |||
skipping to change at line 1687 ¶ | skipping to change at line 1669 ¶ | |||
} | } | |||
} | } | |||
leaf admin-group { | leaf admin-group { | |||
type uint32; | type uint32; | |||
description | description | |||
"Administrative Group / Resource Class/Color."; | "Administrative Group / Resource Class/Color."; | |||
} | } | |||
uses unknown-tlvs; | uses unknown-tlvs; | |||
} | } | |||
} | } | |||
container extended-prefix-opaque { | container extended-prefix-opaque { | |||
description | description | |||
"All Extended Prefix TLVs in the LSA."; | "All Extended Prefix TLVs in the LSA."; | |||
list extended-prefix-tlv { | list extended-prefix-tlv { | |||
description | description | |||
"Extended Prefix TLV."; | "Extended Prefix TLV."; | |||
leaf route-type { | leaf route-type { | |||
type enumeration { | type enumeration { | |||
enum unspecified { | enum unspecified { | |||
value "0"; | value 0; | |||
description | description | |||
"Unspecified."; | "Unspecified."; | |||
} | } | |||
enum intra-area { | enum intra-area { | |||
value "1"; | value 1; | |||
description | description | |||
"OSPF intra-area route."; | "OSPF intra-area route."; | |||
} | } | |||
enum inter-area { | enum inter-area { | |||
value "3"; | value 3; | |||
description | description | |||
"OSPF inter-area route."; | "OSPF inter-area route."; | |||
} | } | |||
enum external { | enum external { | |||
value "5"; | value 5; | |||
description | description | |||
"OSPF external route."; | "OSPF external route."; | |||
} | } | |||
enum nssa { | enum nssa { | |||
value "7"; | value 7; | |||
description | description | |||
"OSPF NSSA external route."; | "OSPF NSSA external route."; | |||
} | } | |||
} | } | |||
description | description | |||
"Route type."; | "Route type."; | |||
} | } | |||
container flags { | container flags { | |||
leaf-list extended-prefix-flags { | leaf-list extended-prefix-flags { | |||
type identityref { | type identityref { | |||
skipping to change at line 1919 ¶ | skipping to change at line 1893 ¶ | |||
leaf type { | leaf type { | |||
type router-link-type; | type router-link-type; | |||
description | description | |||
"Link type: 1 - Point-to-Point Link | "Link type: 1 - Point-to-Point Link | |||
2 - Transit Network Link | 2 - Transit Network Link | |||
3 - Stub Network Link | 3 - Stub Network Link | |||
4 - Virtual Link."; | 4 - Virtual Link."; | |||
} | } | |||
leaf metric { | leaf metric { | |||
type uint16; | type uint16; | |||
description | description | |||
"Link metric."; | "Link metric."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container network { | container network { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv3-network-lsa')" { | + "'ospfv3-network-lsa')" { | |||
description | description | |||
"Only applies to Network LSAs."; | "Only applies to Network LSAs."; | |||
} | } | |||
skipping to change at line 2591 ¶ | skipping to change at line 2551 ¶ | |||
description | description | |||
"The current length of the retransmission queue."; | "The current length of the retransmission queue."; | |||
} | } | |||
} | } | |||
grouping instance-fast-reroute-config { | grouping instance-fast-reroute-config { | |||
description | description | |||
"This group defines the global configuration of | "This group defines the global configuration of | |||
IP Fast Reroute (IP-FRR)."; | IP Fast Reroute (IP-FRR)."; | |||
container fast-reroute { | container fast-reroute { | |||
if-feature fast-reroute; | if-feature "fast-reroute"; | |||
description | description | |||
"This container may be augmented with global | "This container may be augmented with global | |||
parameters for IP-FRR."; | parameters for IP-FRR."; | |||
container lfa { | container lfa { | |||
if-feature lfa; | if-feature "lfa"; | |||
description | description | |||
"This container may be augmented with | "This container may be augmented with | |||
global parameters for Loop-Free Alternates (LFAs). | global parameters for Loop-Free Alternates (LFAs). | |||
Container creation has no effect on LFA activation."; | Container creation has no effect on LFA activation."; | |||
} | } | |||
} | } | |||
} | } | |||
grouping instance-fast-reroute-state { | grouping instance-fast-reroute-state { | |||
description | description | |||
skipping to change at line 2608 ¶ | skipping to change at line 2568 ¶ | |||
"This container may be augmented with | "This container may be augmented with | |||
global parameters for Loop-Free Alternates (LFAs). | global parameters for Loop-Free Alternates (LFAs). | |||
Container creation has no effect on LFA activation."; | Container creation has no effect on LFA activation."; | |||
} | } | |||
} | } | |||
} | } | |||
grouping instance-fast-reroute-state { | grouping instance-fast-reroute-state { | |||
description | description | |||
"IP-FRR state data grouping."; | "IP-FRR state data grouping."; | |||
container protected-routes { | container protected-routes { | |||
if-feature fast-reroute; | if-feature "fast-reroute"; | |||
config false; | config false; | |||
description | description | |||
"Instance protection statistics."; | "Instance protection statistics."; | |||
list address-family-stats { | list address-family-stats { | |||
key "address-family prefix alternate"; | key "address-family prefix alternate"; | |||
description | description | |||
"Per-Address-Family (AF) protected prefix information."; | "Per-Address-Family (AF) protected prefix information."; | |||
leaf address-family { | leaf address-family { | |||
type iana-rt-types:address-family; | type iana-rt-types:address-family; | |||
description | description | |||
"Address family."; | "Address family."; | |||
} | } | |||
leaf prefix { | leaf prefix { | |||
type inet:ip-prefix; | type inet:ip-prefix; | |||
description | description | |||
"Protected prefix."; | "Protected prefix."; | |||
} | } | |||
skipping to change at line 2732 ¶ | skipping to change at line 2689 ¶ | |||
description | description | |||
"Metric from the PLR to the alternate node."; | "Metric from the PLR to the alternate node."; | |||
} | } | |||
leaf alternate-metric3 { | leaf alternate-metric3 { | |||
type uint32; | type uint32; | |||
description | description | |||
"Metric from the alternate node to the destination."; | "Metric from the alternate node to the destination."; | |||
} | } | |||
} | } | |||
} | } | |||
container unprotected-routes { | container unprotected-routes { | |||
if-feature fast-reroute; | if-feature "fast-reroute"; | |||
config false; | config false; | |||
description | description | |||
"List of prefixes that are not protected."; | "List of prefixes that are not protected."; | |||
list address-family-stats { | list address-family-stats { | |||
key "address-family prefix"; | key "address-family prefix"; | |||
description | description | |||
"Per-AF unprotected prefix statistics."; | "Per-AF unprotected prefix statistics."; | |||
leaf address-family { | leaf address-family { | |||
type iana-rt-types:address-family; | type iana-rt-types:address-family; | |||
description | description | |||
"Address family."; | "Address family."; | |||
} | } | |||
leaf prefix { | leaf prefix { | |||
type inet:ip-prefix; | type inet:ip-prefix; | |||
description | description | |||
"Unprotected prefix."; | "Unprotected prefix."; | |||
} | } | |||
skipping to change at line 2756 ¶ | skipping to change at line 2710 ¶ | |||
description | description | |||
"Address family."; | "Address family."; | |||
} | } | |||
leaf prefix { | leaf prefix { | |||
type inet:ip-prefix; | type inet:ip-prefix; | |||
description | description | |||
"Unprotected prefix."; | "Unprotected prefix."; | |||
} | } | |||
} | } | |||
} | } | |||
list protection-statistics { | list protection-statistics { | |||
key frr-protection-method; | key "frr-protection-method"; | |||
config false; | config false; | |||
description | description | |||
"List of protection method statistics."; | "List of protection method statistics."; | |||
leaf frr-protection-method { | leaf frr-protection-method { | |||
type string; | type string; | |||
description | description | |||
"Protection method used."; | "Protection method used."; | |||
} | } | |||
list address-family-stats { | list address-family-stats { | |||
key address-family; | key "address-family"; | |||
description | description | |||
"Per-AF protection statistics."; | "Per-AF protection statistics."; | |||
leaf address-family { | leaf address-family { | |||
type iana-rt-types:address-family; | type iana-rt-types:address-family; | |||
description | description | |||
"Address family."; | "Address family."; | |||
} | } | |||
leaf total-routes { | leaf total-routes { | |||
type uint32; | type uint32; | |||
description | description | |||
"Total prefixes."; | "Total prefixes."; | |||
} | } | |||
skipping to change at line 2811 ¶ | skipping to change at line 2762 ¶ | |||
"Total prefixes that are node protected."; | "Total prefixes that are node protected."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping interface-fast-reroute-config { | grouping interface-fast-reroute-config { | |||
description | description | |||
"This group defines interface configuration of IP-FRR."; | "This group defines interface configuration of IP-FRR."; | |||
container fast-reroute { | container fast-reroute { | |||
if-feature fast-reroute; | if-feature "fast-reroute"; | |||
container lfa { | container lfa { | |||
if-feature lfa; | if-feature "lfa"; | |||
leaf candidate-enable { | leaf candidate-enable { | |||
type boolean; | type boolean; | |||
default true; | default "true"; | |||
description | description | |||
"Enables the interface to be used as a backup."; | "Enables the interface to be used as a backup."; | |||
} | } | |||
leaf enable { | leaf enable { | |||
type boolean; | type boolean; | |||
default false; | default "false"; | |||
description | description | |||
"Activates an LFA. Per-prefix LFA computation | "Activates an LFA. Per-prefix LFA computation | |||
is assumed."; | is assumed."; | |||
} | } | |||
container remote-lfa { | container remote-lfa { | |||
if-feature remote-lfa; | if-feature "remote-lfa"; | |||
leaf enable { | leaf enable { | |||
type boolean; | type boolean; | |||
default false; | default "false"; | |||
description | description | |||
"Activates a Remote LFA (R-LFA)."; | "Activates a Remote LFA (R-LFA)."; | |||
} | } | |||
description | description | |||
"R-LFA configuration."; | "R-LFA configuration."; | |||
} | } | |||
description | description | |||
"LFA configuration."; | "LFA configuration."; | |||
} | } | |||
description | description | |||
skipping to change at line 2856 ¶ | skipping to change at line 2807 ¶ | |||
grouping interface-physical-link-config { | grouping interface-physical-link-config { | |||
description | description | |||
"Interface cost configuration that only applies to | "Interface cost configuration that only applies to | |||
physical interfaces (non-virtual) and sham links."; | physical interfaces (non-virtual) and sham links."; | |||
leaf cost { | leaf cost { | |||
type ospf-link-metric; | type ospf-link-metric; | |||
description | description | |||
"Interface's cost."; | "Interface's cost."; | |||
} | } | |||
leaf mtu-ignore { | leaf mtu-ignore { | |||
if-feature mtu-ignore; | if-feature "mtu-ignore"; | |||
type boolean; | type boolean; | |||
description | description | |||
"Enables/disables bypassing the MTU mismatch check in | "Enables/disables bypassing the MTU mismatch check in | |||
Database Description packets as specified in Section 10.6 | Database Description packets as specified in Section 10.6 | |||
of RFC 2328."; | of RFC 2328."; | |||
reference | reference | |||
"RFC 2328: OSPF Version 2, Section 10.6"; | "RFC 2328: OSPF Version 2, Section 10.6"; | |||
} | } | |||
leaf prefix-suppression { | leaf prefix-suppression { | |||
if-feature prefix-suppression; | if-feature "prefix-suppression"; | |||
type boolean; | type boolean; | |||
description | description | |||
"Suppresses advertisement of the prefixes associated | "Suppresses advertisement of the prefixes associated | |||
with the interface."; | with the interface."; | |||
} | } | |||
} | } | |||
grouping interface-common-config { | grouping interface-common-config { | |||
description | description | |||
"Common configuration for all types of interfaces, | "Common configuration for all types of interfaces, | |||
skipping to change at line 2878 ¶ | skipping to change at line 2829 ¶ | |||
description | description | |||
"Suppresses advertisement of the prefixes associated | "Suppresses advertisement of the prefixes associated | |||
with the interface."; | with the interface."; | |||
} | } | |||
} | } | |||
grouping interface-common-config { | grouping interface-common-config { | |||
description | description | |||
"Common configuration for all types of interfaces, | "Common configuration for all types of interfaces, | |||
including virtual links and sham links."; | including virtual links and sham links."; | |||
leaf hello-interval { | leaf hello-interval { | |||
type uint16; | type uint16; | |||
units seconds; | units "seconds"; | |||
description | description | |||
"Interval between Hello packets (seconds). It must | "Interval between Hello packets (seconds). It must | |||
be the same for all routers on the same network. | be the same for all routers on the same network. | |||
Different networks, implementations, and deployments | Different networks, implementations, and deployments | |||
will use different Hello intervals. A sample value | will use different Hello intervals. A sample value | |||
for a LAN network would be 10 seconds."; | for a LAN network would be 10 seconds."; | |||
reference | reference | |||
"RFC 2328: OSPF Version 2, Appendix C.3"; | "RFC 2328: OSPF Version 2, Appendix C.3"; | |||
} | } | |||
leaf dead-interval { | leaf dead-interval { | |||
type uint16; | type uint16; | |||
units seconds; | units "seconds"; | |||
must "../dead-interval > ../hello-interval" { | must '../dead-interval > ../hello-interval' { | |||
error-message "The dead interval must be " | error-message "The dead interval must be " | |||
+ "larger than the Hello interval"; | + "larger than the Hello interval"; | |||
description | description | |||
"The value must be greater than 'hello-interval'."; | "The value must be greater than 'hello-interval'."; | |||
} | } | |||
description | description | |||
"Interval after which a neighbor is declared down | "Interval after which a neighbor is declared down | |||
(seconds) if Hello packets are not received. It is | (seconds) if Hello packets are not received. It is | |||
typically 3 or 4 times the 'hello-interval' period. | typically 3 or 4 times the 'hello-interval' period. | |||
A typical value for LAN networks is 40 seconds."; | A typical value for LAN networks is 40 seconds."; | |||
reference | reference | |||
"RFC 2328: OSPF Version 2, Appendix C.3"; | "RFC 2328: OSPF Version 2, Appendix C.3"; | |||
} | } | |||
leaf retransmit-interval { | leaf retransmit-interval { | |||
type uint16 { | type uint16 { | |||
range "1..3600"; | range "1..3600"; | |||
} | } | |||
units seconds; | units "seconds"; | |||
description | description | |||
"Interval between retransmitting unacknowledged Link | "Interval between retransmitting unacknowledged Link | |||
State Advertisements (LSAs) (seconds). This should | State Advertisements (LSAs) (seconds). This should | |||
be well over the round-trip transmit delay for | be well over the round-trip transmit delay for | |||
any two routers on the network. A sample value | any two routers on the network. A sample value | |||
would be 5 seconds."; | would be 5 seconds."; | |||
reference | reference | |||
"RFC 2328: OSPF Version 2, Appendix C.3"; | "RFC 2328: OSPF Version 2, Appendix C.3"; | |||
} | } | |||
leaf transmit-delay { | leaf transmit-delay { | |||
type uint16; | type uint16; | |||
units seconds; | units "seconds"; | |||
description | description | |||
"Estimated time needed to transmit Link State Update | "Estimated time needed to transmit Link State Update | |||
(LSU) packets on the interface (seconds). LSAs have | (LSU) packets on the interface (seconds). LSAs have | |||
their age incremented by this amount when advertised | their age incremented by this amount when advertised | |||
on the interface. A sample value would be 1 second."; | on the interface. A sample value would be 1 second."; | |||
reference | reference | |||
"RFC 2328: OSPF Version 2, Appendix C.3"; | "RFC 2328: OSPF Version 2, Appendix C.3"; | |||
} | } | |||
leaf lls { | leaf lls { | |||
if-feature lls; | if-feature "lls"; | |||
type boolean; | type boolean; | |||
description | description | |||
"Enables/disables link-local signaling (LLS) support."; | "Enables/disables link-local signaling (LLS) support."; | |||
} | } | |||
container ttl-security { | container ttl-security { | |||
if-feature ttl-security; | if-feature "ttl-security"; | |||
description | description | |||
"Time to Live (TTL) security checking."; | "Time to Live (TTL) security checking."; | |||
leaf enable { | leaf enable { | |||
type boolean; | type boolean; | |||
description | description | |||
"Enables/disables TTL security checking."; | "Enables/disables TTL security checking."; | |||
} | } | |||
leaf hops { | leaf hops { | |||
type uint8 { | type uint8 { | |||
range "1..254"; | range "1..254"; | |||
} | } | |||
default 1; | default "1"; | |||
description | description | |||
"Maximum number of hops that an OSPF packet may | "Maximum number of hops that an OSPF packet may | |||
have traversed before reception."; | have traversed before reception."; | |||
} | } | |||
} | } | |||
leaf enable { | leaf enable { | |||
type boolean; | type boolean; | |||
default true; | default "true"; | |||
description | description | |||
"Enables/disables the OSPF protocol on the interface."; | "Enables/disables the OSPF protocol on the interface."; | |||
} | } | |||
container authentication { | container authentication { | |||
description | description | |||
"Authentication configuration."; | "Authentication configuration."; | |||
choice auth-type-selection { | choice auth-type-selection { | |||
description | description | |||
"Options for OSPFv2/OSPFv3 authentication | "Options for OSPFv2/OSPFv3 authentication | |||
configuration."; | configuration."; | |||
case ospfv2-auth { | case ospfv2-auth { | |||
when "derived-from-or-self(../../../../../../rt:type, " | when "derived-from-or-self(../../../../../../rt:type, " | |||
+ "'ospfv2')" { | + "'ospfv2')" { | |||
description | description | |||
"Applied to OSPFv2 only."; | "Applied to OSPFv2 only."; | |||
} | } | |||
leaf ospfv2-auth-trailer-rfc { | leaf ospfv2-auth-trailer-rfc { | |||
if-feature ospfv2-authentication-trailer; | if-feature "ospfv2-authentication-trailer"; | |||
type ospfv2-auth-trailer-rfc-version; | type ospfv2-auth-trailer-rfc-version; | |||
description | description | |||
"Version of OSPFv2 Authentication Trailer support. | "Version of OSPFv2 Authentication Trailer support. | |||
See RFCs 5709 and 7474."; | See RFCs 5709 and 7474."; | |||
reference | reference | |||
"RFC 5709: OSPFv2 HMAC-SHA Cryptographic Authentication | "RFC 5709: OSPFv2 HMAC-SHA Cryptographic Authentication | |||
RFC 7474: Security Extension for OSPFv2 When Using | RFC 7474: Security Extension for OSPFv2 When Using | |||
Manual Key Management"; | Manual Key Management"; | |||
} | } | |||
choice ospfv2-auth-specification { | choice ospfv2-auth-specification { | |||
description | description | |||
"Key chain or explicit key parameter specification."; | "Key chain or explicit key parameter specification."; | |||
case auth-key-chain { | case auth-key-chain { | |||
if-feature key-chain; | if-feature "key-chain"; | |||
leaf ospfv2-key-chain { | leaf ospfv2-key-chain { | |||
type key-chain:key-chain-ref; | type key-chain:key-chain-ref; | |||
description | description | |||
"Name of the key chain."; | "Name of the key chain."; | |||
} | } | |||
} | } | |||
case auth-key-explicit { | case auth-key-explicit { | |||
leaf ospfv2-key-id { | leaf ospfv2-key-id { | |||
type uint32; | type uint32; | |||
description | description | |||
skipping to change at line 3030 ¶ | skipping to change at line 2974 ¶ | |||
base key-chain:crypto-algorithm; | base key-chain:crypto-algorithm; | |||
} | } | |||
description | description | |||
"Cryptographic algorithm associated with the key."; | "Cryptographic algorithm associated with the key."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
case ospfv3-auth-ipsec { | case ospfv3-auth-ipsec { | |||
when "derived-from-or-self(../../../../../../rt:type, " | when "derived-from-or-self(../../../../../../rt:type, " | |||
+ "'ospfv3')" { | + "'ospfv3')" { | |||
description | description | |||
"Applied to OSPFv3 only."; | "Applied to OSPFv3 only."; | |||
} | } | |||
if-feature ospfv3-authentication-ipsec; | if-feature "ospfv3-authentication-ipsec"; | |||
leaf sa { | leaf sa { | |||
type string; | type string; | |||
description | description | |||
"Name of the Security Association (SA)."; | "Name of the Security Association (SA)."; | |||
} | } | |||
} | } | |||
case ospfv3-auth-trailer { | case ospfv3-auth-trailer { | |||
when "derived-from-or-self(../../../../../../rt:type, " | when "derived-from-or-self(../../../../../../rt:type, " | |||
+ "'ospfv3')" { | + "'ospfv3')" { | |||
description | description | |||
"Applied to OSPFv3 only."; | "Applied to OSPFv3 only."; | |||
} | } | |||
if-feature ospfv3-authentication-trailer; | if-feature "ospfv3-authentication-trailer"; | |||
choice ospfv3-auth-specification { | choice ospfv3-auth-specification { | |||
description | description | |||
"Key chain or explicit key parameter specification."; | "Key chain or explicit key parameter specification."; | |||
case auth-key-chain { | case auth-key-chain { | |||
if-feature key-chain; | if-feature "key-chain"; | |||
leaf ospfv3-key-chain { | leaf ospfv3-key-chain { | |||
type key-chain:key-chain-ref; | type key-chain:key-chain-ref; | |||
description | description | |||
"Name of the key chain."; | "Name of the key chain."; | |||
} | } | |||
} | } | |||
case auth-key-explicit { | case auth-key-explicit { | |||
leaf ospfv3-sa-id { | leaf ospfv3-sa-id { | |||
type uint16; | type uint16; | |||
description | description | |||
skipping to change at line 3089 ¶ | skipping to change at line 3033 ¶ | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping interface-config { | grouping interface-config { | |||
description | description | |||
"Configuration for real interfaces."; | "Configuration for real interfaces."; | |||
leaf interface-type { | leaf interface-type { | |||
type enumeration { | type enumeration { | |||
enum "broadcast" { | enum broadcast { | |||
description | description | |||
"Specifies an OSPF broadcast multi-access network."; | "Specifies an OSPF broadcast multi-access network."; | |||
} | } | |||
enum "non-broadcast" { | enum non-broadcast { | |||
description | description | |||
"Specifies an OSPF Non-Broadcast Multi-Access | "Specifies an OSPF Non-Broadcast Multi-Access | |||
(NBMA) network."; | (NBMA) network."; | |||
} | } | |||
enum "point-to-multipoint" { | enum point-to-multipoint { | |||
description | description | |||
"Specifies an OSPF point-to-multipoint network."; | "Specifies an OSPF point-to-multipoint network."; | |||
} | } | |||
enum "point-to-point" { | enum point-to-point { | |||
description | description | |||
"Specifies an OSPF point-to-point network."; | "Specifies an OSPF point-to-point network."; | |||
} | } | |||
enum "hybrid" { | enum hybrid { | |||
if-feature hybrid-interface; | if-feature "hybrid-interface"; | |||
description | description | |||
"Specifies an OSPF Hybrid Broadcast / | "Specifies an OSPF Hybrid Broadcast / | |||
point-to-multipoint network."; | point-to-multipoint network."; | |||
} | } | |||
} | } | |||
description | description | |||
"Interface type."; | "Interface type."; | |||
} | } | |||
leaf passive { | leaf passive { | |||
type boolean; | type boolean; | |||
description | description | |||
"Enables/disables a passive interface. A passive | "Enables/disables a passive interface. A passive | |||
interface's prefix will be advertised, but no neighbor | interface's prefix will be advertised, but no neighbor | |||
adjacencies will be formed on the interface."; | adjacencies will be formed on the interface."; | |||
} | } | |||
leaf demand-circuit { | leaf demand-circuit { | |||
if-feature demand-circuit; | if-feature "demand-circuit"; | |||
type boolean; | type boolean; | |||
description | description | |||
"Enables/disables a demand circuit."; | "Enables/disables a demand circuit."; | |||
} | } | |||
leaf priority { | leaf priority { | |||
type uint8; | type uint8; | |||
description | description | |||
"Configures OSPF router priority. In a multi-access | "Configures OSPF router priority. In a multi-access | |||
network, this value is for Designated Router (DR) election. | network, this value is for Designated Router (DR) election. | |||
The priority is ignored on other interface types. A router | The priority is ignored on other interface types. A router | |||
with a higher priority will be preferred in the election. | with a higher priority will be preferred in the election. | |||
A value of 0 indicates that the router is not eligible to | A value of 0 indicates that the router is not eligible to | |||
become the DR or Backup DR (BDR)."; | become the DR or Backup DR (BDR)."; | |||
} | } | |||
skipping to change at line 3145 ¶ | skipping to change at line 3085 ¶ | |||
leaf priority { | leaf priority { | |||
type uint8; | type uint8; | |||
description | description | |||
"Configures OSPF router priority. In a multi-access | "Configures OSPF router priority. In a multi-access | |||
network, this value is for Designated Router (DR) election. | network, this value is for Designated Router (DR) election. | |||
The priority is ignored on other interface types. A router | The priority is ignored on other interface types. A router | |||
with a higher priority will be preferred in the election. | with a higher priority will be preferred in the election. | |||
A value of 0 indicates that the router is not eligible to | A value of 0 indicates that the router is not eligible to | |||
become the DR or Backup DR (BDR)."; | become the DR or Backup DR (BDR)."; | |||
} | } | |||
container multi-areas { | container multi-areas { | |||
if-feature multi-area-adj; | if-feature "multi-area-adj"; | |||
description | description | |||
"Container for multi-area configuration."; | "Container for multi-area configuration."; | |||
list multi-area { | list multi-area { | |||
key multi-area-id; | key "multi-area-id"; | |||
description | description | |||
"Configures an OSPF multi-area adjacency."; | "Configures an OSPF multi-area adjacency."; | |||
leaf multi-area-id { | leaf multi-area-id { | |||
type area-id-type; | type area-id-type; | |||
description | description | |||
"Multi-area adjacency area ID."; | "Multi-area adjacency area ID."; | |||
} | } | |||
leaf cost { | leaf cost { | |||
type ospf-link-metric; | type ospf-link-metric; | |||
description | description | |||
skipping to change at line 3193 ¶ | skipping to change at line 3128 ¶ | |||
type ospf-link-metric; | type ospf-link-metric; | |||
description | description | |||
"Neighbor's cost. Different implementations have | "Neighbor's cost. Different implementations have | |||
different default costs, with some defaulting to a | different default costs, with some defaulting to a | |||
cost inversely proportional to the interface speed. | cost inversely proportional to the interface speed. | |||
Others will default to 1, equating the cost to a | Others will default to 1, equating the cost to a | |||
hop count."; | hop count."; | |||
} | } | |||
leaf poll-interval { | leaf poll-interval { | |||
type uint16; | type uint16; | |||
units seconds; | units "seconds"; | |||
description | description | |||
"Neighbor's poll interval (seconds) for sending OSPF | "Neighbor's poll interval (seconds) for sending OSPF | |||
Hello packets to discover the neighbor on NBMA | Hello packets to discover the neighbor on NBMA | |||
networks. This interval dictates the granularity for | networks. This interval dictates the granularity for | |||
discovery of new neighbors. A sample would be | discovery of new neighbors. A sample would be | |||
120 seconds (2 minutes) for a legacy Packet Data | 120 seconds (2 minutes) for a legacy Packet Data | |||
Network (PDN) X.25 network."; | Network (PDN) X.25 network."; | |||
reference | reference | |||
"RFC 2328: OSPF Version 2, Appendix C.5"; | "RFC 2328: OSPF Version 2, Appendix C.5"; | |||
} | } | |||
skipping to change at line 3214 ¶ | skipping to change at line 3149 ¶ | |||
leaf priority { | leaf priority { | |||
type uint8; | type uint8; | |||
description | description | |||
"Neighbor's priority for DR election. A router with a | "Neighbor's priority for DR election. A router with a | |||
higher priority will be preferred in the election. | higher priority will be preferred in the election. | |||
A value of 0 indicates that the router is not | A value of 0 indicates that the router is not | |||
eligible to become the DR or BDR."; | eligible to become the DR or BDR."; | |||
} | } | |||
} | } | |||
} | } | |||
leaf node-flag { | leaf node-flag { | |||
if-feature node-flag; | if-feature "node-flag"; | |||
type boolean; | type boolean; | |||
default false; | default "false"; | |||
description | description | |||
"Sets the prefix as identifying the advertising router."; | "Sets the prefix as identifying the advertising router."; | |||
reference | reference | |||
"RFC 7684: OSPFv2 Prefix/Link Attribute Advertisement"; | "RFC 7684: OSPFv2 Prefix/Link Attribute Advertisement"; | |||
} | } | |||
container bfd { | container bfd { | |||
if-feature bfd; | if-feature "bfd"; | |||
description | description | |||
"BFD client configuration."; | "BFD client configuration."; | |||
uses bfd-types:client-cfg-parms; | uses bfd-types:client-cfg-parms; | |||
reference | reference | |||
"RFC 9127: YANG Data Model for Bidirectional Forwarding | "RFC 9127: YANG Data Model for Bidirectional Forwarding | |||
Detection (BFD)"; | Detection (BFD)"; | |||
} | } | |||
uses interface-fast-reroute-config; | uses interface-fast-reroute-config; | |||
uses interface-common-config; | uses interface-common-config; | |||
uses interface-physical-link-config; | uses interface-physical-link-config; | |||
} | } | |||
grouping neighbor-state { | grouping neighbor-state { | |||
description | description | |||
"OSPF neighbor operational state."; | "OSPF neighbor operational state."; | |||
leaf address { | leaf address { | |||
type inet:ip-address; | type inet:ip-address; | |||
config false; | config false; | |||
description | description | |||
"Neighbor's address."; | "Neighbor's address."; | |||
} | } | |||
leaf dr-router-id { | leaf dr-router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
config false; | config false; | |||
description | description | |||
skipping to change at line 3499 ¶ | skipping to change at line 3412 ¶ | |||
"IPv4 or IPv6 prefix."; | "IPv4 or IPv6 prefix."; | |||
} | } | |||
leaf advertise { | leaf advertise { | |||
type boolean; | type boolean; | |||
description | description | |||
"Advertise or hide."; | "Advertise or hide."; | |||
} | } | |||
leaf cost { | leaf cost { | |||
type ospf-metric; | type ospf-metric; | |||
description | description | |||
"Advertised cost of a summary route."; | "Advertised cost of a summary route."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping area-common-config { | grouping area-common-config { | |||
description | description | |||
"OSPF area common configuration state."; | "OSPF 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 area / NSSA."; | "Summary advertisement into the stub area / NSSA."; | |||
} | } | |||
type boolean; | type boolean; | |||
description | description | |||
"Enables/disables a summary advertisement into the stub | "Enables/disables a summary advertisement into the stub | |||
area or NSSA."; | area or NSSA."; | |||
} | } | |||
skipping to change at line 3521 ¶ | skipping to change at line 3433 ¶ | |||
description | description | |||
"Summary advertisement into the stub area / NSSA."; | "Summary advertisement into the stub area / NSSA."; | |||
} | } | |||
type boolean; | type boolean; | |||
description | description | |||
"Enables/disables a summary advertisement into the stub | "Enables/disables a summary advertisement into the stub | |||
area or NSSA."; | area or NSSA."; | |||
} | } | |||
leaf default-cost { | leaf default-cost { | |||
when "derived-from(../area-type,'stub-nssa-area')" { | when "derived-from(../area-type,'stub-nssa-area')" { | |||
description | description | |||
"Cost for the LSA default route advertised into the | "Cost for the LSA default route advertised into the | |||
stub area or NSSA."; | stub area or NSSA."; | |||
} | } | |||
type ospf-metric; | type ospf-metric; | |||
description | description | |||
"Sets the summary default route cost for a stub area | "Sets the summary default route cost for a stub area | |||
or NSSA."; | or NSSA."; | |||
} | } | |||
} | } | |||
grouping area-config { | grouping area-config { | |||
description | description | |||
skipping to change at line 3535 ¶ | skipping to change at line 3447 ¶ | |||
type ospf-metric; | type ospf-metric; | |||
description | description | |||
"Sets the summary default route cost for a stub area | "Sets the summary default route cost for a stub area | |||
or NSSA."; | or NSSA."; | |||
} | } | |||
} | } | |||
grouping area-config { | grouping area-config { | |||
description | description | |||
"OSPF area configuration state."; | "OSPF area configuration state."; | |||
leaf area-type { | leaf area-type { | |||
type identityref { | type identityref { | |||
base area-type; | base area-type; | |||
} | } | |||
default normal-area; | default "normal-area"; | |||
description | description | |||
"Area type."; | "Area type."; | |||
} | } | |||
uses area-common-config; | uses area-common-config; | |||
uses address-family-area-config; | uses address-family-area-config; | |||
} | } | |||
grouping area-state { | grouping area-state { | |||
description | description | |||
"OSPF area operational state."; | "OSPF area operational state."; | |||
container statistics { | container statistics { | |||
config false; | config false; | |||
description | description | |||
"Per-area statistics."; | "Per-area statistics."; | |||
uses area-stat; | uses area-stat; | |||
} | } | |||
container database { | container database { | |||
config false; | config false; | |||
description | description | |||
"Area-scope LSDB."; | "Area-scope LSDB."; | |||
list area-scope-lsa-type { | list area-scope-lsa-type { | |||
key "lsa-type"; | key "lsa-type"; | |||
description | description | |||
"List of OSPF area-scope LSAs."; | "List of OSPF area-scope LSAs."; | |||
leaf lsa-type { | leaf lsa-type { | |||
type uint16; | type uint16; | |||
skipping to change at line 3636 ¶ | skipping to change at line 3544 ¶ | |||
list next-hop { | list next-hop { | |||
key "next-hop"; | key "next-hop"; | |||
description | description | |||
"List of next hops for the route."; | "List of next hops for the route."; | |||
leaf outgoing-interface { | leaf outgoing-interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"Name of the outgoing interface."; | "Name of the outgoing interface."; | |||
} | } | |||
leaf next-hop { | leaf next-hop { | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"Address of the next hop."; | "Address of the next hop."; | |||
} | } | |||
} | } | |||
} | } | |||
leaf metric { | leaf metric { | |||
type uint32; | type uint32; | |||
description | description | |||
"Metric for this route."; | "Metric for this route."; | |||
} | } | |||
leaf route-type { | leaf route-type { | |||
type route-type; | type route-type; | |||
skipping to change at line 3664 ¶ | skipping to change at line 3572 ¶ | |||
description | description | |||
"Route tag for this route."; | "Route tag for this route."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping ietf-spf-delay { | grouping ietf-spf-delay { | |||
leaf initial-delay { | leaf initial-delay { | |||
type uint32; | type uint32; | |||
units milliseconds; | units "milliseconds"; | |||
description | description | |||
"Delay used while in the 'QUIET' state (milliseconds)."; | "Delay used while in the 'QUIET' state (milliseconds)."; | |||
} | } | |||
leaf short-delay { | leaf short-delay { | |||
type uint32; | type uint32; | |||
units milliseconds; | units "milliseconds"; | |||
description | description | |||
"Delay used while in the 'SHORT_WAIT' state (milliseconds)."; | "Delay used while in the 'SHORT_WAIT' state (milliseconds)."; | |||
} | } | |||
leaf long-delay { | leaf long-delay { | |||
type uint32; | type uint32; | |||
units milliseconds; | units "milliseconds"; | |||
description | description | |||
"Delay used while in the 'LONG_WAIT' state (milliseconds)."; | "Delay used while in the 'LONG_WAIT' state (milliseconds)."; | |||
} | } | |||
leaf hold-down { | leaf hold-down { | |||
type uint32; | type uint32; | |||
units milliseconds; | units "milliseconds"; | |||
description | description | |||
"This timer value defines the period without any changes | "This timer value defines the period without any changes | |||
for the IGP to be considered stable (milliseconds)."; | for the IGP to be considered stable (milliseconds)."; | |||
} | } | |||
leaf time-to-learn { | leaf time-to-learn { | |||
type uint32; | type uint32; | |||
units milliseconds; | units "milliseconds"; | |||
description | description | |||
"Duration used to learn all the IGP events | "Duration used to learn all the IGP events | |||
related to a single component failure (milliseconds)."; | related to a single component failure (milliseconds)."; | |||
} | } | |||
leaf current-state { | leaf current-state { | |||
type enumeration { | type enumeration { | |||
enum "quiet" { | enum quiet { | |||
description | description | |||
"'QUIET' state."; | "'QUIET' state."; | |||
} | } | |||
enum "short-wait" { | enum short-wait { | |||
description | description | |||
"'SHORT_WAIT' state."; | "'SHORT_WAIT' state."; | |||
} | } | |||
enum "long-wait" { | enum long-wait { | |||
description | description | |||
"'LONG_WAIT' state."; | "'LONG_WAIT' state."; | |||
} | } | |||
} | } | |||
config false; | config false; | |||
description | description | |||
"Current SPF back-off algorithm state."; | "Current SPF back-off algorithm state."; | |||
} | } | |||
leaf remaining-time-to-learn { | leaf remaining-time-to-learn { | |||
type rt-types:timer-value-milliseconds; | type rt-types:timer-value-milliseconds; | |||
skipping to change at line 3742 ¶ | skipping to change at line 3650 ¶ | |||
type yang:timestamp; | type yang:timestamp; | |||
config false; | config false; | |||
description | description | |||
"Time when the next SPF has been scheduled."; | "Time when the next SPF has been scheduled."; | |||
} | } | |||
leaf last-spf-time { | leaf last-spf-time { | |||
type yang:timestamp; | type yang:timestamp; | |||
config false; | config false; | |||
description | description | |||
"Time of the last SPF computation."; | "Time of the last SPF computation."; | |||
} | } | |||
description | description | |||
"Grouping for IETF SPF delay configuration and state."; | "Grouping for IETF SPF delay configuration and state."; | |||
} | } | |||
grouping node-tag-config { | grouping node-tag-config { | |||
description | description | |||
"OSPF node tag configuration state."; | "OSPF node tag configuration state."; | |||
container node-tags { | container node-tags { | |||
if-feature node-tag; | if-feature "node-tag"; | |||
list node-tag { | list node-tag { | |||
key tag; | key "tag"; | |||
leaf tag { | leaf tag { | |||
type uint32; | type uint32; | |||
description | description | |||
"Node tag value."; | "Node tag value."; | |||
} | } | |||
description | description | |||
"List of tags."; | "List of tags."; | |||
} | } | |||
description | description | |||
"Container for node administrative tags."; | "Container for node administrative tags."; | |||
} | } | |||
} | } | |||
grouping instance-config { | grouping instance-config { | |||
skipping to change at line 3770 ¶ | skipping to change at line 3678 ¶ | |||
"List of tags."; | "List of tags."; | |||
} | } | |||
description | description | |||
"Container for node administrative tags."; | "Container for node administrative tags."; | |||
} | } | |||
} | } | |||
grouping instance-config { | grouping instance-config { | |||
description | description | |||
"OSPF instance configuration state."; | "OSPF instance configuration state."; | |||
leaf enable { | leaf enable { | |||
type boolean; | type boolean; | |||
default true; | default "true"; | |||
description | description | |||
"Enables/disables the protocol."; | "Enables/disables the protocol."; | |||
} | } | |||
leaf explicit-router-id { | leaf explicit-router-id { | |||
if-feature explicit-router-id; | if-feature "explicit-router-id"; | |||
type rt-types:router-id; | type rt-types:router-id; | |||
description | description | |||
"Defined in RFC 2328. A 32-bit number | "Defined in RFC 2328. A 32-bit number | |||
that uniquely identifies the router."; | that uniquely identifies the router."; | |||
reference | reference | |||
"RFC 2328: OSPF Version 2"; | "RFC 2328: OSPF Version 2"; | |||
} | } | |||
container preference { | container preference { | |||
description | description | |||
"Route preference configuration. In many | "Route preference configuration. In many | |||
implementations, preference is referred to as | implementations, preference is referred to as | |||
administrative distance."; | administrative distance."; | |||
reference | reference | |||
"RFC 8349: A YANG Data Model for Routing Management | "RFC 8349: A YANG Data Model for Routing Management | |||
(NMDA Version)"; | (NMDA Version)"; | |||
choice scope { | choice scope { | |||
description | description | |||
skipping to change at line 3842 ¶ | skipping to change at line 3747 ¶ | |||
} | } | |||
} | } | |||
leaf external { | leaf external { | |||
type uint8; | type uint8; | |||
description | description | |||
"Preference for AS external routes."; | "Preference for AS external routes."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container nsr { | container nsr { | |||
if-feature nsr; | if-feature "nsr"; | |||
description | description | |||
"Non-Stop Routing (NSR) configuration state."; | "Non-Stop Routing (NSR) configuration state."; | |||
leaf enable { | leaf enable { | |||
type boolean; | type boolean; | |||
description | description | |||
"Enables/disables NSR."; | "Enables/disables NSR."; | |||
} | } | |||
} | } | |||
container graceful-restart { | container graceful-restart { | |||
if-feature graceful-restart; | if-feature "graceful-restart"; | |||
description | description | |||
"Graceful restart configuration state."; | "Graceful restart configuration state."; | |||
reference | reference | |||
"RFC 3623: Graceful OSPF Restart | "RFC 3623: Graceful OSPF Restart | |||
RFC 5187: OSPFv3 Graceful Restart"; | RFC 5187: OSPFv3 Graceful Restart"; | |||
leaf enable { | leaf enable { | |||
type boolean; | type boolean; | |||
description | description | |||
"Enables/disables graceful restart as defined in RFC 3623 | "Enables/disables graceful restart as defined in RFC 3623 | |||
for OSPFv2 and RFC 5187 for OSPFv3."; | for OSPFv2 and RFC 5187 for OSPFv3."; | |||
skipping to change at line 3877 ¶ | skipping to change at line 3780 ¶ | |||
leaf helper-enable { | leaf helper-enable { | |||
type boolean; | type boolean; | |||
description | description | |||
"Enables graceful restart helper support for restarting | "Enables graceful restart helper support for restarting | |||
routers (Section 3 of RFC 3623)."; | routers (Section 3 of RFC 3623)."; | |||
reference | reference | |||
"RFC 3623: Graceful OSPF Restart, Section 3"; | "RFC 3623: Graceful OSPF Restart, Section 3"; | |||
} | } | |||
leaf restart-interval { | leaf restart-interval { | |||
type uint16 { | type uint16 { | |||
range "1..1800"; | range "1..1800"; | |||
} | } | |||
units seconds; | units "seconds"; | |||
default "120"; | default "120"; | |||
description | description | |||
"Interval during which to attempt graceful restart prior | "Interval during which to attempt graceful restart prior | |||
to failing (seconds) (Appendix B.1 of RFC 3623)."; | to failing (seconds) (Appendix B.1 of RFC 3623)."; | |||
reference | reference | |||
"RFC 3623: Graceful OSPF Restart, Appendix B.1"; | "RFC 3623: Graceful OSPF Restart, Appendix B.1"; | |||
} | } | |||
leaf helper-strict-lsa-checking { | leaf helper-strict-lsa-checking { | |||
type boolean; | type boolean; | |||
description | description | |||
skipping to change at line 3896 ¶ | skipping to change at line 3799 ¶ | |||
} | } | |||
leaf helper-strict-lsa-checking { | leaf helper-strict-lsa-checking { | |||
type boolean; | type boolean; | |||
description | description | |||
"Terminates graceful restart when an LSA topology change | "Terminates graceful restart when an LSA topology change | |||
is detected (Appendix B.2 of RFC 3623)."; | is detected (Appendix B.2 of RFC 3623)."; | |||
reference | reference | |||
"RFC 3623: Graceful OSPF Restart, Appendix B.2"; | "RFC 3623: Graceful OSPF Restart, Appendix B.2"; | |||
} | } | |||
} | } | |||
container auto-cost { | container auto-cost { | |||
if-feature auto-cost; | if-feature "auto-cost"; | |||
description | description | |||
"Interface auto-cost configuration state."; | "Interface auto-cost configuration state."; | |||
leaf enable { | leaf enable { | |||
type boolean; | type boolean; | |||
description | description | |||
"Enables/disables interface auto-cost."; | "Enables/disables interface auto-cost."; | |||
} | } | |||
leaf reference-bandwidth { | leaf reference-bandwidth { | |||
when "../enable = 'true'" { | when "../enable = 'true'" { | |||
description | description | |||
"Only when auto-cost is enabled."; | "Only when auto-cost is enabled."; | |||
} | } | |||
type uint32 { | type uint32 { | |||
range "1..4294967"; | range "1..4294967"; | |||
} | } | |||
units Mbits; | units "Mbits"; | |||
description | description | |||
"Configures reference bandwidth used to automatically | "Configures reference bandwidth used to automatically | |||
determine interface cost (Mbits). The cost is the | determine interface cost (Mbits). The cost is the | |||
reference bandwidth divided by the interface speed, | reference bandwidth divided by the interface speed, | |||
with 1 being the minimum cost."; | with 1 being the minimum cost."; | |||
} | } | |||
} | } | |||
container spf-control { | container spf-control { | |||
leaf paths { | leaf paths { | |||
if-feature max-ecmp; | if-feature "max-ecmp"; | |||
type uint16 { | type uint16 { | |||
range "1..65535"; | range "1..65535"; | |||
} | } | |||
description | description | |||
"Maximum number of Equal-Cost Multi-Path (ECMP) paths."; | "Maximum number of Equal-Cost Multi-Path (ECMP) paths."; | |||
} | } | |||
container ietf-spf-delay { | container ietf-spf-delay { | |||
if-feature ietf-spf-delay; | if-feature "ietf-spf-delay"; | |||
uses ietf-spf-delay; | uses ietf-spf-delay; | |||
description | description | |||
"IETF SPF delay algorithm configuration."; | "IETF SPF delay algorithm configuration."; | |||
} | } | |||
description | description | |||
"SPF calculation control."; | "SPF calculation control."; | |||
} | } | |||
container database-control { | container database-control { | |||
leaf max-lsa { | leaf max-lsa { | |||
if-feature max-lsa; | if-feature "max-lsa"; | |||
type uint32 { | type uint32 { | |||
range "1..4294967294"; | range "1..4294967294"; | |||
} | } | |||
description | description | |||
"Maximum number of OSPF LSAs the router will accept."; | "Maximum number of OSPF LSAs the router will accept."; | |||
} | } | |||
description | description | |||
"Database maintenance control."; | "Database maintenance control."; | |||
} | } | |||
container stub-router { | container stub-router { | |||
if-feature stub-router; | if-feature "stub-router"; | |||
description | description | |||
"Sets the maximum metric configuration."; | "Sets the maximum metric configuration."; | |||
choice trigger { | choice trigger { | |||
description | description | |||
"Specific triggers that will enable stub router state."; | "Specific triggers that will enable stub router state."; | |||
container always { | container always { | |||
presence | presence "Enables unconditional stub router support"; | |||
"Enables unconditional stub router support"; | ||||
description | description | |||
"Unconditional stub router state (advertises | "Unconditional stub router state (advertises | |||
transit links with 'MaxLinkMetric')."; | transit links with 'MaxLinkMetric')."; | |||
reference | reference | |||
"RFC 6987: OSPF Stub Router Advertisement"; | "RFC 6987: OSPF Stub Router Advertisement"; | |||
} | } | |||
} | } | |||
} | } | |||
container mpls { | container mpls { | |||
description | description | |||
"OSPF MPLS configuration state."; | "OSPF MPLS configuration state."; | |||
container te-rid { | container te-rid { | |||
if-feature te-rid; | if-feature "te-rid"; | |||
description | description | |||
"Stable OSPF Router IP address used for TE."; | "Stable OSPF Router IP address used for TE."; | |||
leaf ipv4-router-id { | leaf ipv4-router-id { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"Explicitly configures the TE IPv4 Router ID."; | "Explicitly configures the TE IPv4 Router ID."; | |||
} | } | |||
leaf ipv6-router-id { | leaf ipv6-router-id { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description | description | |||
"Explicitly configures the TE IPv6 Router ID."; | "Explicitly configures the TE IPv6 Router ID."; | |||
} | } | |||
} | } | |||
container ldp { | container ldp { | |||
description | description | |||
"OSPF MPLS LDP configuration state."; | "OSPF MPLS LDP configuration state."; | |||
leaf igp-sync { | leaf igp-sync { | |||
if-feature ldp-igp-sync; | if-feature "ldp-igp-sync"; | |||
type boolean; | type boolean; | |||
description | description | |||
"Enables LDP IGP synchronization."; | "Enables LDP IGP synchronization."; | |||
} | } | |||
} | } | |||
} | } | |||
uses instance-fast-reroute-config; | uses instance-fast-reroute-config; | |||
uses node-tag-config; | uses node-tag-config; | |||
} | } | |||
skipping to change at line 4107 ¶ | skipping to change at line 3999 ¶ | |||
type ospf-metric; | type ospf-metric; | |||
description | description | |||
"Sets the summary default route cost for a | "Sets the summary default route cost for a | |||
stub area or NSSA."; | stub area or NSSA."; | |||
} | } | |||
} | } | |||
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-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 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."; | |||
} | } | |||
} | } | |||
grouping ospfv3-interface-state { | grouping ospfv3-interface-state { | |||
skipping to change at line 4196 ¶ | skipping to change at line 4083 ¶ | |||
} | } | |||
grouping spf-log { | grouping spf-log { | |||
description | description | |||
"Grouping for the SPF log."; | "Grouping for the SPF log."; | |||
container spf-log { | container spf-log { | |||
config false; | config false; | |||
description | description | |||
"This container lists the SPF log entries."; | "This container lists the SPF log entries."; | |||
list event { | list event { | |||
key id; | key "id"; | |||
description | description | |||
"List of SPF log entries represented | "List of SPF log entries represented | |||
as a wrapping buffer in chronological | as a wrapping buffer in chronological | |||
order, with the oldest entry returned | order, with the oldest entry returned | |||
first."; | first."; | |||
leaf id { | leaf id { | |||
type uint32; | type uint32; | |||
description | description | |||
"Event identifier. A purely internal value."; | "Event identifier. A purely internal value."; | |||
} | } | |||
skipping to change at line 4269 ¶ | skipping to change at line 4156 ¶ | |||
grouping lsa-log { | grouping lsa-log { | |||
description | description | |||
"Grouping for the LSA log."; | "Grouping for the LSA log."; | |||
container lsa-log { | container lsa-log { | |||
config false; | config false; | |||
description | description | |||
"This container lists the LSA log entries. | "This container lists the LSA log entries. | |||
Local LSA modifications are also included | Local LSA modifications are also included | |||
in the list."; | in the list."; | |||
list event { | list event { | |||
key id; | key "id"; | |||
description | description | |||
"List of LSA log entries represented | "List of LSA log entries represented | |||
as a wrapping buffer in chronological order, | as a wrapping buffer in chronological order, | |||
with the oldest entry returned first."; | with the oldest entry returned first."; | |||
leaf id { | leaf id { | |||
type uint32; | type uint32; | |||
description | description | |||
"Event identifier. A purely internal value."; | "Event identifier. A purely internal value."; | |||
} | } | |||
container lsa { | container lsa { | |||
skipping to change at line 4304 ¶ | skipping to change at line 4191 ¶ | |||
} | } | |||
description | description | |||
"Reason for the LSA log entry."; | "Reason for the LSA log entry."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol" { | + "rt:control-plane-protocol" { | |||
when "derived-from(rt:type, 'ospf')" { | when "derived-from(rt:type, 'ospf')" { | |||
description | description | |||
"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 | description | |||
"OSPF protocol 'ietf-routing' module 'control-plane-protocol' | "OSPF protocol 'ietf-routing' module 'control-plane-protocol' | |||
augmentation."; | augmentation."; | |||
container ospf { | container ospf { | |||
description | description | |||
"OSPF protocol instance."; | "OSPF protocol instance."; | |||
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 | description | |||
"All areas."; | "All areas."; | |||
list area { | list area { | |||
key "area-id"; | key "area-id"; | |||
description | description | |||
"List of OSPF areas."; | "List of OSPF areas."; | |||
leaf area-id { | leaf area-id { | |||
type area-id-type; | type area-id-type; | |||
description | description | |||
skipping to change at line 4338 ¶ | skipping to change at line 4221 ¶ | |||
"All areas."; | "All areas."; | |||
list area { | list area { | |||
key "area-id"; | key "area-id"; | |||
description | description | |||
"List of OSPF areas."; | "List of OSPF areas."; | |||
leaf area-id { | leaf area-id { | |||
type area-id-type; | type area-id-type; | |||
description | description | |||
"Area ID."; | "Area ID."; | |||
} | } | |||
uses area-config; | uses area-config; | |||
uses area-state; | uses area-state; | |||
container virtual-links { | container virtual-links { | |||
when "derived-from-or-self(../area-type, 'normal-area') " | when "derived-from-or-self(../area-type, 'normal-area') " | |||
+ "and ../area-id = '0.0.0.0'" { | + "and ../area-id = '0.0.0.0'" { | |||
description | description | |||
"Virtual links must be in a backbone area."; | "Virtual links must be in a backbone area."; | |||
} | } | |||
description | description | |||
"All virtual links."; | "All virtual links."; | |||
list virtual-link { | list virtual-link { | |||
key "transit-area-id router-id"; | key "transit-area-id router-id"; | |||
description | description | |||
"OSPF virtual link."; | "OSPF virtual link."; | |||
leaf transit-area-id { | leaf transit-area-id { | |||
type leafref { | type leafref { | |||
path "../../../../area/area-id"; | path "../../../../area/area-id"; | |||
} | } | |||
must "derived-from-or-self(" | must "derived-from-or-self(" | |||
+ "../../../../area[area-id=current()]/area-type, " | + "../../../../area[area-id=current()]/area-type, " | |||
+ "'normal-area') and " | + "'normal-area') and " | |||
+ "../../../../area[area-id=current()]/area-id != " | + "../../../../area[area-id=current()]/area-id != " | |||
+ "'0.0.0.0'" { | + "'0.0.0.0'" { | |||
error-message "The virtual link transit area must " | error-message "The virtual link transit area must " | |||
+ "be non-zero."; | + "be non-zero."; | |||
description | description | |||
"The virtual link transit area must be a | "The virtual link transit area must be a | |||
non-zero area."; | non-zero area."; | |||
} | } | |||
description | description | |||
"Virtual link transit area ID."; | "Virtual link transit area ID."; | |||
} | } | |||
leaf router-id { | leaf router-id { | |||
skipping to change at line 4377 ¶ | skipping to change at line 4258 ¶ | |||
non-zero area."; | non-zero area."; | |||
} | } | |||
description | description | |||
"Virtual link transit area ID."; | "Virtual link transit area ID."; | |||
} | } | |||
leaf router-id { | leaf router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
description | description | |||
"Virtual link remote endpoint Router ID."; | "Virtual link remote endpoint Router ID."; | |||
} | } | |||
uses virtual-link-config; | uses virtual-link-config; | |||
uses virtual-link-state; | uses virtual-link-state; | |||
} | } | |||
} | } | |||
container sham-links { | container sham-links { | |||
if-feature pe-ce-protocol; | if-feature "pe-ce-protocol"; | |||
description | description | |||
"All sham links."; | "All sham links."; | |||
list sham-link { | list sham-link { | |||
key "local-id remote-id"; | key "local-id remote-id"; | |||
description | description | |||
"OSPF sham link."; | "OSPF sham link."; | |||
leaf local-id { | leaf local-id { | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"Address of the local sham link endpoint."; | "Address of the local sham link endpoint."; | |||
skipping to change at line 4432 ¶ | skipping to change at line 4312 ¶ | |||
} | } | |||
} | } | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/ospf" { | + "rt:control-plane-protocol/ospf" { | |||
when "derived-from(../rt:type, 'ospf')" { | when "derived-from(../rt:type, 'ospf')" { | |||
description | description | |||
"This augmentation is only valid for OSPF | "This augmentation is only valid for OSPF | |||
(type 'ospfv2' or 'ospfv3')."; | (type 'ospfv2' or 'ospfv3')."; | |||
} | } | |||
if-feature multi-topology; | if-feature "multi-topology"; | |||
description | description | |||
"OSPF multi-topology instance configuration | "OSPF multi-topology instance configuration | |||
state augmentation."; | state augmentation."; | |||
container topologies { | container topologies { | |||
description | description | |||
"All topologies."; | "All topologies."; | |||
list topology { | list topology { | |||
key "name"; | key "name"; | |||
description | description | |||
"OSPF topology. The OSPF topology address family | "OSPF topology. The OSPF topology address family | |||
skipping to change at line 4466 ¶ | skipping to change at line 4345 ¶ | |||
} | } | |||
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')" { | |||
description | description | |||
"This augmentation is only valid for OSPFv2."; | "This augmentation is only valid for OSPFv2."; | |||
} | } | |||
if-feature multi-topology; | if-feature "multi-topology"; | |||
description | description | |||
"OSPF multi-topology area configuration state | "OSPF multi-topology area configuration state | |||
augmentation."; | augmentation."; | |||
container topologies { | container topologies { | |||
description | description | |||
"All topologies for the area."; | "All topologies for the area."; | |||
list topology { | list topology { | |||
key "name"; | key "name"; | |||
description | description | |||
"OSPF area topology."; | "OSPF area topology."; | |||
skipping to change at line 4499 ¶ | skipping to change at line 4377 ¶ | |||
} | } | |||
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, " | |||
+ "'ospfv2')" { | + "'ospfv2')" { | |||
description | description | |||
"This augmentation is only valid for OSPFv2."; | "This augmentation is only valid for OSPFv2."; | |||
} | } | |||
if-feature multi-topology; | if-feature "multi-topology"; | |||
description | description | |||
"OSPF multi-topology interface configuration state | "OSPF multi-topology interface configuration state | |||
augmentation."; | augmentation."; | |||
container topologies { | container topologies { | |||
description | description | |||
"All topologies for the interface."; | "All topologies for the interface."; | |||
list topology { | list topology { | |||
key "name"; | key "name"; | |||
description | description | |||
"OSPF interface topology."; | "OSPF interface topology."; | |||
skipping to change at line 4587 ¶ | skipping to change at line 4464 ¶ | |||
"This RPC request clears a particular set of OSPF neighbors. | "This RPC request clears a particular set of OSPF neighbors. | |||
If the operation fails for an OSPF-internal reason, then | If the operation fails for an OSPF-internal reason, then | |||
'error-tag' and 'error-app-tag' should be set to meaningful | 'error-tag' and 'error-app-tag' should be set to meaningful | |||
values."; | values."; | |||
input { | input { | |||
leaf routing-protocol-name { | leaf routing-protocol-name { | |||
type leafref { | type leafref { | |||
path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rt:name"; | + "rt:control-plane-protocol/rt:name"; | |||
} | } | |||
mandatory "true"; | mandatory true; | |||
description | description | |||
"OSPF protocol instance for which information for neighbors | "OSPF protocol instance for which information for neighbors | |||
is to be cleared. | is to be cleared. | |||
If the referenced OSPF instance doesn't exist, then | If the referenced OSPF instance doesn't exist, then | |||
this operation SHALL fail with an 'error-tag' setting of | this operation SHALL fail with an 'error-tag' setting of | |||
'data-missing' and an 'error-app-tag' setting of | 'data-missing' and an 'error-app-tag' setting of | |||
'routing-protocol-instance-not-found'."; | 'routing-protocol-instance-not-found'."; | |||
} | } | |||
leaf interface { | leaf interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"Name of the OSPF interface for which neighbors are to | "Name of the OSPF interface for which neighbors are to | |||
be cleared. | be cleared. | |||
If the referenced OSPF interface doesn't exist, then | If the referenced OSPF interface doesn't exist, then | |||
this operation SHALL fail with an 'error-tag' setting | this operation SHALL fail with an 'error-tag' setting | |||
of 'data-missing' and an 'error-app-tag' setting of | of 'data-missing' and an 'error-app-tag' setting of | |||
'ospf-interface-not-found'."; | 'ospf-interface-not-found'."; | |||
} | } | |||
} | } | |||
} | } | |||
rpc clear-database { | rpc clear-database { | |||
description | description | |||
"This RPC request clears a particular OSPF LSDB. | "This RPC request clears a particular OSPF LSDB. | |||
If the operation fails for an OSPF-internal reason, | If the operation fails for an OSPF-internal reason, | |||
then 'error-tag' and 'error-app-tag' should be set to | then 'error-tag' and 'error-app-tag' should be set to | |||
meaningful values."; | meaningful values."; | |||
input { | input { | |||
leaf routing-protocol-name { | leaf routing-protocol-name { | |||
type leafref { | type leafref { | |||
path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rt:name"; | + "rt:control-plane-protocol/rt:name"; | |||
} | } | |||
mandatory "true"; | mandatory true; | |||
description | description | |||
"OSPF protocol instance whose LSDB is to be cleared. | "OSPF protocol instance whose LSDB is to be cleared. | |||
If the referenced OSPF instance doesn't exist, then | If the referenced OSPF instance doesn't exist, then | |||
this operation SHALL fail with an 'error-tag' setting of | this operation SHALL fail with an 'error-tag' setting of | |||
'data-missing' and an 'error-app-tag' setting of | 'data-missing' and an 'error-app-tag' setting of | |||
'routing-protocol-instance-not-found'."; | 'routing-protocol-instance-not-found'."; | |||
} | } | |||
} | } | |||
} | } | |||
skipping to change at line 4644 ¶ | skipping to change at line 4520 ¶ | |||
} | } | |||
/* | /* | |||
* Notifications | * Notifications | |||
*/ | */ | |||
grouping notification-instance-hdr { | grouping notification-instance-hdr { | |||
description | description | |||
"This grouping describes common instance-specific | "This grouping describes common instance-specific | |||
data for OSPF notifications."; | data for OSPF notifications."; | |||
leaf routing-protocol-name { | leaf routing-protocol-name { | |||
type leafref { | type leafref { | |||
path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rt:name"; | + "rt:control-plane-protocol/rt:name"; | |||
} | } | |||
must "derived-from( " | must "derived-from( " | |||
+ "/rt:routing/rt:control-plane-protocols/" | + "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol[rt:name=current()]/" | + "rt:control-plane-protocol[rt:name=current()]/" | |||
+ "rt:type, 'ospf')"; | + "rt:type, 'ospf')"; | |||
description | description | |||
"Name of the OSPF routing protocol instance."; | "Name of the OSPF routing protocol instance."; | |||
} | } | |||
leaf address-family { | leaf address-family { | |||
type leafref { | type leafref { | |||
path "/rt:routing/" | path "/rt:routing/" | |||
+ "rt:control-plane-protocols/rt:control-plane-protocol" | + "rt:control-plane-protocols/rt:control-plane-protocol" | |||
+ "[rt:name=current()/../routing-protocol-name]/" | + "[rt:name=current()/../routing-protocol-name]/" | |||
+ "ospf/address-family"; | + "ospf/address-family"; | |||
} | } | |||
description | description | |||
"Address family of the OSPF instance."; | "Address family of the OSPF instance."; | |||
} | } | |||
skipping to change at line 4758 ¶ | skipping to change at line 4628 ¶ | |||
"Interface state."; | "Interface state."; | |||
} | } | |||
description | description | |||
"This notification is sent when an interface | "This notification is sent when an interface | |||
state change is detected."; | state change is detected."; | |||
} | } | |||
notification if-config-error { | notification if-config-error { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface; | uses notification-interface; | |||
leaf packet-source { | leaf packet-source { | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"Source address."; | "Source address."; | |||
} | } | |||
leaf packet-type { | leaf packet-type { | |||
type packet-type; | type packet-type; | |||
description | description | |||
"OSPF packet type."; | "OSPF packet type."; | |||
} | } | |||
leaf error { | leaf error { | |||
type enumeration { | type enumeration { | |||
enum "bad-version" { | enum bad-version { | |||
description | description | |||
"Bad version."; | "Bad version."; | |||
} | } | |||
enum "area-mismatch" { | enum area-mismatch { | |||
description | description | |||
"Area mismatch."; | "Area mismatch."; | |||
} | } | |||
enum "unknown-nbma-nbr" { | enum unknown-nbma-nbr { | |||
description | description | |||
"Unknown NBMA neighbor."; | "Unknown NBMA neighbor."; | |||
} | } | |||
enum "unknown-virtual-nbr" { | enum unknown-virtual-nbr { | |||
description | description | |||
"Unknown virtual link neighbor."; | "Unknown virtual link neighbor."; | |||
} | } | |||
enum "auth-type-mismatch" { | enum auth-type-mismatch { | |||
description | description | |||
"Authentication type mismatch."; | "Authentication type mismatch."; | |||
} | } | |||
enum "auth-failure" { | enum auth-failure { | |||
description | description | |||
"Authentication failure."; | "Authentication failure."; | |||
} | } | |||
enum "net-mask-mismatch" { | enum net-mask-mismatch { | |||
description | description | |||
"Network mask mismatch."; | "Network mask mismatch."; | |||
} | } | |||
enum "hello-interval-mismatch" { | enum hello-interval-mismatch { | |||
description | description | |||
"Hello interval mismatch."; | "Hello interval mismatch."; | |||
} | } | |||
enum "dead-interval-mismatch" { | enum dead-interval-mismatch { | |||
description | description | |||
"Dead interval mismatch."; | "Dead interval mismatch."; | |||
} | } | |||
enum "option-mismatch" { | enum option-mismatch { | |||
description | description | |||
"Option mismatch."; | "Option mismatch."; | |||
} | } | |||
enum "mtu-mismatch" { | enum mtu-mismatch { | |||
description | description | |||
"MTU mismatch."; | "MTU mismatch."; | |||
} | } | |||
enum "duplicate-router-id" { | enum duplicate-router-id { | |||
description | description | |||
"Duplicate Router ID."; | "Duplicate Router ID."; | |||
} | } | |||
enum "no-error" { | enum no-error { | |||
description | description | |||
"No error."; | "No error."; | |||
} | } | |||
} | } | |||
description | description | |||
"Error codes."; | "Error codes."; | |||
} | } | |||
description | description | |||
"This notification is sent when an interface | "This notification is sent when an interface | |||
configuration error is detected."; | configuration error is detected."; | |||
skipping to change at line 4882 ¶ | skipping to change at line 4744 ¶ | |||
"Restart helper exit reason."; | "Restart helper exit reason."; | |||
} | } | |||
description | description | |||
"This notification is sent when a neighbor restart | "This notification is sent when a neighbor restart | |||
helper status change is detected."; | helper status change is detected."; | |||
} | } | |||
notification if-rx-bad-packet { | notification if-rx-bad-packet { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface; | uses notification-interface; | |||
leaf packet-source { | leaf packet-source { | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"Source address."; | "Source address."; | |||
} | } | |||
leaf packet-type { | leaf packet-type { | |||
type packet-type; | type packet-type; | |||
description | description | |||
"OSPF packet type."; | "OSPF packet type."; | |||
} | } | |||
description | description | |||
"This notification is sent when an OSPF packet that | "This notification is sent when an OSPF packet that | |||
cannot be parsed is received on an OSPF interface."; | cannot be parsed is received on an OSPF interface."; | |||
} | } | |||
notification lsdb-approaching-overflow { | notification lsdb-approaching-overflow { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
leaf ext-lsdb-limit { | leaf ext-lsdb-limit { | |||
type uint32; | type uint32; | |||
description | description | |||
"The maximum number of non-default AS-external LSA | "The maximum number of non-default AS-external LSA | |||
entries that can be stored in the LSDB."; | entries that can be stored in the LSDB."; | |||
} | } | |||
description | description | |||
"This notification is sent when the number of LSAs | "This notification is sent when the number of LSAs | |||
in the router's LSDB has exceeded ninety percent of the | in the router's LSDB has exceeded ninety percent of the | |||
AS-external limit ('ext-lsdb-limit')."; | AS-external limit ('ext-lsdb-limit')."; | |||
} | } | |||
notification lsdb-overflow { | notification lsdb-overflow { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
leaf ext-lsdb-limit { | leaf ext-lsdb-limit { | |||
type uint32; | type uint32; | |||
description | description | |||
"The maximum number of non-default AS-external LSA | "The maximum number of non-default AS-external LSA | |||
entries that can be stored in the LSDB."; | entries that can be stored in the LSDB."; | |||
} | } | |||
description | description | |||
"This notification is sent when the number of LSAs | "This notification is sent when the number of LSAs | |||
in the router's LSDB has exceeded the AS-external limit | in the router's LSDB has exceeded the AS-external limit | |||
('ext-lsdb-limit')."; | ('ext-lsdb-limit')."; | |||
} | } | |||
notification nssa-translator-status-change { | notification nssa-translator-status-change { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
leaf area-id { | leaf area-id { | |||
type area-id-type; | type area-id-type; | |||
description | description | |||
"Area ID."; | "Area ID."; | |||
} | } | |||
leaf status { | leaf status { | |||
type nssa-translator-state-type; | type nssa-translator-state-type; | |||
description | description | |||
"NSSA translator status."; | "NSSA translator status."; | |||
} | } | |||
description | description | |||
"This notification is sent when there is a change | "This notification is sent when there is a change | |||
in the router's role in translating OSPF NSSA LSAs | in the router's role in translating OSPF NSSA LSAs | |||
to OSPF AS-External LSAs."; | to OSPF AS-External LSAs."; | |||
} | } | |||
notification restart-status-change { | notification restart-status-change { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
leaf status { | leaf status { | |||
type restart-status-type; | type restart-status-type; | |||
description | description | |||
"Restart status."; | "Restart status."; | |||
} | } | |||
leaf restart-interval { | leaf restart-interval { | |||
type uint16 { | type uint16 { | |||
range 1..1800; | range "1..1800"; | |||
} | } | |||
units seconds; | units "seconds"; | |||
default "120"; | default "120"; | |||
description | description | |||
"Restart interval."; | "Restart interval."; | |||
} | } | |||
leaf exit-reason { | leaf exit-reason { | |||
type restart-exit-reason-type; | type restart-exit-reason-type; | |||
description | description | |||
"Restart exit reason."; | "Restart exit reason."; | |||
} | } | |||
description | description | |||
"This notification is sent when the graceful restart | "This notification is sent when the graceful restart | |||
state for the router has changed."; | state for the router has changed."; | |||
} | } | |||
} | } | |||
End of changes. 254 change blocks. | ||||
298 lines changed or deleted | 215 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/ |