ietf-rip@2019-12-02.yang | ietf-rip@2019-12-02-formatted.yang | |||
---|---|---|---|---|
module ietf-rip { | module ietf-rip { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-rip"; | namespace "urn:ietf:params:xml:ns:yang:ietf-rip"; | |||
prefix rip; | prefix rip; | |||
import ietf-inet-types { | import ietf-inet-types { | |||
prefix "inet"; | prefix inet; | |||
} | } | |||
import ietf-yang-types { | import ietf-yang-types { | |||
prefix "yang"; | prefix yang; | |||
} | } | |||
import ietf-interfaces { | import ietf-interfaces { | |||
prefix "if"; | prefix if; | |||
} | } | |||
import ietf-ip { | import ietf-ip { | |||
prefix "ip"; | prefix ip; | |||
} | } | |||
import ietf-routing { | import ietf-routing { | |||
prefix "rt"; | prefix rt; | |||
} | } | |||
import ietf-key-chain { | import ietf-key-chain { | |||
prefix "key-chain"; | prefix key-chain; | |||
} | } | |||
import ietf-bfd-types { | import ietf-bfd-types { | |||
prefix "bfd-types"; | prefix bfd-types; | |||
} | } | |||
import ietf-ospf { | import ietf-ospf { | |||
prefix "ospf"; | prefix ospf; | |||
} | } | |||
import ietf-isis { | import ietf-isis { | |||
prefix "isis"; | prefix isis; | |||
} | } | |||
organization "IETF Routing Area Working Group (rtgwg)"; | organization | |||
"IETF Routing Area Working Group (rtgwg)"; | ||||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/rgtwg/> | "WG Web: <http://tools.ietf.org/wg/rgtwg/> | |||
WG List: <mailto:rgtwg@ietf.org> | WG List: <mailto:rgtwg@ietf.org> | |||
Editor: Xufeng Liu | Editor: Xufeng Liu | |||
<mailto:xufeng_liu@jabil.com> | <mailto:xufeng_liu@jabil.com> | |||
Editor: Prateek Sarda | Editor: Prateek Sarda | |||
<mailto:prateek.sarda@ericsson.com> | <mailto:prateek.sarda@ericsson.com> | |||
skipping to change at line 143 ¶ | skipping to change at line 135 ¶ | |||
The definition of such a routing policy is outside the scope | The definition of such a routing policy is outside the scope | |||
of this document."; | of this document."; | |||
} | } | |||
/* | /* | |||
* Identities | * Identities | |||
*/ | */ | |||
identity rip { | identity rip { | |||
base rt:routing-protocol; | base rt:routing-protocol; | |||
description "Identity for the Routing Information Protocol."; | description | |||
"Identity for the Routing Information Protocol."; | ||||
} | } | |||
identity ripv2 { | identity ripv2 { | |||
base rip:rip; | base rip:rip; | |||
description "Identity for RIPv2 (RIP version 2)."; | description | |||
"Identity for RIPv2 (RIP version 2)."; | ||||
} | } | |||
identity ripng { | identity ripng { | |||
base rip:rip; | base rip:rip; | |||
description "Identity for RIPng."; | description | |||
"Identity for RIPng."; | ||||
} | } | |||
/* | /* | |||
* Groupings | * Groupings | |||
*/ | */ | |||
grouping originate-default-route-container { | grouping originate-default-route-container { | |||
description | description | |||
"Container for settings on whether to originate the default | "Container for settings on whether to originate the default | |||
route in RIP routing instance."; | route in RIP routing instance."; | |||
container originate-default-route { | container originate-default-route { | |||
description | description | |||
"Injects the default route into the RIP (RIPv2 or RIPng) | "Injects the default route into the RIP (RIPv2 or RIPng) | |||
routing instance."; | routing instance."; | |||
leaf enabled { | leaf enabled { | |||
type boolean; | type boolean; | |||
default false; | default "false"; | |||
description | description | |||
"'true' if originating default route is enabled."; | "'true' if originating default route is enabled."; | |||
} | } | |||
leaf route-policy { | leaf route-policy { | |||
type route-policy-ref; | type route-policy-ref; | |||
description | description | |||
"The conditions of the route policy are applied to the | "The conditions of the route policy are applied to the | |||
default route."; | default route."; | |||
} | } | |||
} | } | |||
skipping to change at line 205 ¶ | skipping to change at line 199 ¶ | |||
Gateway Protocol) autonomous system (AS) into the RIP | Gateway Protocol) autonomous system (AS) into the RIP | |||
routing instance."; | routing instance."; | |||
leaf asn { | leaf asn { | |||
type inet:as-number; | type inet:as-number; | |||
description | description | |||
"BGP autonomous system (AS) number."; | "BGP autonomous system (AS) number."; | |||
} | } | |||
uses redistribute-route-policy-attributes; | uses redistribute-route-policy-attributes; | |||
} | } | |||
container cg-nat { | container cg-nat { | |||
presence | presence "Present if Carrier-Grade Network Address Translation | |||
"Present if Carrier-Grade Network Address Translation | (CGNAT) routes are redistributed."; | |||
(CGNAT) routes are redistributed."; | ||||
description | description | |||
"Carrier-Grade Network Address Translation (CGNAT) | "Carrier-Grade Network Address Translation (CGNAT) | |||
routes."; | routes."; | |||
uses redistribute-route-policy-attributes; | uses redistribute-route-policy-attributes; | |||
} | } | |||
container connected { | container connected { | |||
presence | presence "Present if directly attached network routes are | |||
"Present if directly attached network routes are | redistributed."; | |||
redistributed."; | ||||
description | description | |||
"Redistributes directly attached networks into the RIP | "Redistributes directly attached networks into the RIP | |||
routing instance."; | routing instance."; | |||
uses redistribute-route-policy-attributes; | uses redistribute-route-policy-attributes; | |||
} | } | |||
container ipsec { | container ipsec { | |||
presence | presence "Present if IP security routing instance routes | |||
"Present if IP security routing instance routes | are redistributed."; | |||
are redistributed."; | ||||
description | description | |||
"Redistributes routes from the IP security routing | "Redistributes routes from the IP security routing | |||
instance into the RIP routing instance."; | instance into the RIP routing instance."; | |||
uses redistribute-route-policy-attributes; | uses redistribute-route-policy-attributes; | |||
} | } | |||
list isis { | list isis { | |||
key "instance"; | key "instance"; | |||
description | description | |||
"Redistributes IS-IS routes."; | "Redistributes IS-IS routes."; | |||
leaf instance { | leaf instance { | |||
type leafref { | type leafref { | |||
path "../../../../../rt:control-plane-protocol/rt:name"; | path "../../../../../rt:control-plane-protocol/rt:name"; | |||
} | } | |||
must "derived-from-or-self(" | must "derived-from-or-self(" | |||
+ "../../../../../rt:control-plane-protocol" | + "../../../../../rt:control-plane-protocol" | |||
+ "[rt:name = current()]/rt:type, 'isis:isis')" { | + "[rt:name = current()]/rt:type, 'isis:isis')" { | |||
description | description | |||
"The type of the routing protocol must be 'isis'."; | "The type of the routing protocol must be 'isis'."; | |||
} | } | |||
description | description | |||
"Redistributes routes from the specified IS-IS routing | "Redistributes routes from the specified IS-IS routing | |||
instance into the RIP routing instance."; | instance into the RIP routing instance."; | |||
} | } | |||
leaf level { | leaf level { | |||
type enumeration { | type enumeration { | |||
enum 1 { | enum 1 { | |||
description "IS-IS level 1 routes."; | description | |||
"IS-IS level 1 routes."; | ||||
} | } | |||
enum 2 { | enum 2 { | |||
description "IS-IS level 2 routes."; | description | |||
"IS-IS level 2 routes."; | ||||
} | } | |||
enum 1-2 { | enum 1-2 { | |||
description "IS-IS level 1-2 routes."; | description | |||
"IS-IS level 1-2 routes."; | ||||
} | } | |||
} | } | |||
description | description | |||
"IS-IS level."; | "IS-IS level."; | |||
} | } | |||
uses redistribute-route-policy-attributes; | uses redistribute-route-policy-attributes; | |||
} | } | |||
container nat { | container nat { | |||
presence | presence "Present if Network Address Translation (NAT) routes | |||
"Present if Network Address Translation (NAT) routes | are redistributed."; | |||
are redistributed."; | ||||
description | description | |||
"Redistributes Network Address Translation (NAT) | "Redistributes Network Address Translation (NAT) | |||
routes into the RIP routing instance."; | routes into the RIP routing instance."; | |||
uses redistribute-route-policy-attributes; | uses redistribute-route-policy-attributes; | |||
} | } | |||
list ospfv2 { | list ospfv2 { | |||
when "derived-from-or-self(../../../rt:type, 'rip:ripv2')" { | when "derived-from-or-self(../../../rt:type, 'rip:ripv2')" { | |||
description | description | |||
"Applicable to RIPv2."; | "Applicable to RIPv2."; | |||
} | } | |||
key "instance"; | key "instance"; | |||
description | description | |||
"Redistributes routes from the specified OSPFv2 routing | "Redistributes routes from the specified OSPFv2 routing | |||
instance into the RIPv2 routing instance."; | instance into the RIPv2 routing instance."; | |||
leaf instance { | leaf instance { | |||
type leafref { | type leafref { | |||
path "../../../../../rt:control-plane-protocol/rt:name"; | path "../../../../../rt:control-plane-protocol/rt:name"; | |||
} | } | |||
must "derived-from-or-self(" | must "derived-from-or-self(" | |||
+ "../../../../../rt:control-plane-protocol" | + "../../../../../rt:control-plane-protocol" | |||
+ "[rt:name = current()]/rt:type, 'ospf:ospfv2')" { | + "[rt:name = current()]/rt:type, 'ospf:ospfv2')" { | |||
description | description | |||
"The type of the routing protocol must be 'ospfv2'."; | "The type of the routing protocol must be 'ospfv2'."; | |||
} | } | |||
description | description | |||
"OSPFv2 instance ID. Redistributes routes from the | "OSPFv2 instance ID. Redistributes routes from the | |||
specified OSPFv2 routing instance into the RIPv2 routing | specified OSPFv2 routing instance into the RIPv2 routing | |||
instance."; | instance."; | |||
} | } | |||
leaf route-type { | leaf route-type { | |||
type ospf:route-type; | type ospf:route-type; | |||
skipping to change at line 321 ¶ | skipping to change at line 314 ¶ | |||
} | } | |||
key "instance"; | key "instance"; | |||
description | description | |||
"Redistributes routes from the specified OSPFv3 routing | "Redistributes routes from the specified OSPFv3 routing | |||
instance into the RIPng routing instance."; | instance into the RIPng routing instance."; | |||
leaf instance { | leaf instance { | |||
type leafref { | type leafref { | |||
path "../../../../../rt:control-plane-protocol/rt:name"; | path "../../../../../rt:control-plane-protocol/rt:name"; | |||
} | } | |||
must "derived-from-or-self(" | must "derived-from-or-self(" | |||
+ "../../../../../rt:control-plane-protocol" | + "../../../../../rt:control-plane-protocol" | |||
+ "[rt:name = current()]/rt:type, 'ospf:ospfv3')" { | + "[rt:name = current()]/rt:type, 'ospf:ospfv3')" { | |||
description | description | |||
"The type of the routing protocol must be 'ospfv3'."; | "The type of the routing protocol must be 'ospfv3'."; | |||
} | } | |||
description | description | |||
"OSPFv3 instance ID. Redistributes routes from the | "OSPFv3 instance ID. Redistributes routes from the | |||
specified OSPFv3 routing instance into the RIPng routing | specified OSPFv3 routing instance into the RIPng routing | |||
instance."; | instance."; | |||
} | } | |||
leaf route-type { | leaf route-type { | |||
type ospf:route-type; | type ospf:route-type; | |||
skipping to change at line 353 ¶ | skipping to change at line 346 ¶ | |||
} | } | |||
key "instance"; | key "instance"; | |||
description | description | |||
"Redistributes routes from another RIPv2 routing instance | "Redistributes routes from another RIPv2 routing instance | |||
into the current RIPv2 routing instance."; | into the current RIPv2 routing instance."; | |||
leaf instance { | leaf instance { | |||
type leafref { | type leafref { | |||
path "../../../../../rt:control-plane-protocol/rt:name"; | path "../../../../../rt:control-plane-protocol/rt:name"; | |||
} | } | |||
must "derived-from-or-self(" | must "derived-from-or-self(" | |||
+ "../../../../../rt:control-plane-protocol" | + "../../../../../rt:control-plane-protocol" | |||
+ "[rt:name = current()]/rt:type, 'rip:ripv2')" { | + "[rt:name = current()]/rt:type, 'rip:ripv2')" { | |||
description | description | |||
"The type of the routing protocol must be 'ripv2'."; | "The type of the routing protocol must be 'ripv2'."; | |||
} | } | |||
description | description | |||
"Redistributes routes from the specified RIPv2 routing | "Redistributes routes from the specified RIPv2 routing | |||
instance into the RIPv2 routing instance."; | instance into the RIPv2 routing instance."; | |||
} | } | |||
uses redistribute-route-policy-attributes; | uses redistribute-route-policy-attributes; | |||
} | } | |||
list ripng { | list ripng { | |||
skipping to change at line 378 ¶ | skipping to change at line 371 ¶ | |||
} | } | |||
key "instance"; | key "instance"; | |||
description | description | |||
"Redistributes routes from another RIPng routing instance | "Redistributes routes from another RIPng routing instance | |||
into the current RIPng routing instance."; | into the current RIPng routing instance."; | |||
leaf instance { | leaf instance { | |||
type leafref { | type leafref { | |||
path "../../../../../rt:control-plane-protocol/rt:name"; | path "../../../../../rt:control-plane-protocol/rt:name"; | |||
} | } | |||
must "derived-from-or-self(" | must "derived-from-or-self(" | |||
+ "../../../../../rt:control-plane-protocol" | + "../../../../../rt:control-plane-protocol" | |||
+ "[rt:name = current()]/rt:type, 'rip:ripng')" { | + "[rt:name = current()]/rt:type, 'rip:ripng')" { | |||
description | description | |||
"The type of the routing protocol must be 'ripng'."; | "The type of the routing protocol must be 'ripng'."; | |||
} | } | |||
description | description | |||
"Redistributes routes from the specified RIPng routing | "Redistributes routes from the specified RIPng routing | |||
instance into the RIPng routing instance."; | instance into the RIPng routing instance."; | |||
} | } | |||
uses redistribute-route-policy-attributes; | uses redistribute-route-policy-attributes; | |||
} | } | |||
container static { | container static { | |||
presence "Present if redistributing static routes."; | presence "Present if redistributing static routes."; | |||
description | description | |||
"Redistributes static routes into the RIP routing | "Redistributes static routes into the RIP routing | |||
instance."; | instance."; | |||
uses redistribute-route-policy-attributes; | uses redistribute-route-policy-attributes; | |||
} | } | |||
} // redistribute | } | |||
} // redistribute-container | // redistribute | |||
} | ||||
// redistribute-container | ||||
grouping redistribute-route-policy-attributes { | grouping redistribute-route-policy-attributes { | |||
description | description | |||
"Attributes for redistributing a route policy."; | "Attributes for redistributing a route policy."; | |||
leaf metric { | leaf metric { | |||
type uint8 { | type uint8 { | |||
range 0..16; | range "0..16"; | |||
} | } | |||
description | description | |||
"Metric used for the redistributed route. If a metric is | "Metric used for the redistributed route. If a metric is | |||
not specified, the metric configured with the | not specified, the metric configured with the | |||
default-metric attribute in RIP router configuration is | default-metric attribute in RIP router configuration is | |||
used. If the default-metric attribute has not been | used. If the default-metric attribute has not been | |||
configured, the default metric for redistributed routes | configured, the default metric for redistributed routes | |||
is 1."; | is 1."; | |||
} | } | |||
leaf route-policy { | leaf route-policy { | |||
type route-policy-ref; | type route-policy-ref; | |||
description | description | |||
"Applies the conditions of the specified route policy to | "Applies the conditions of the specified route policy to | |||
routes that are redistributed into the RIP routing | routes that are redistributed into the RIP routing | |||
instance."; | instance."; | |||
} | } | |||
} // redistribute-route-policy-attributes | } | |||
// redistribute-route-policy-attributes | ||||
grouping timers-container { | grouping timers-container { | |||
description | description | |||
"Container for settings of basic timers"; | "Container for settings of basic timers"; | |||
container timers { | container timers { | |||
must "invalid-interval >= (update-interval * 3)" { | must 'invalid-interval >= (update-interval * 3)' { | |||
description | description | |||
"invalid-interval must be at least three times the value | "invalid-interval must be at least three times the value | |||
for the update-interval argument."; | for the update-interval argument."; | |||
} | } | |||
must "flush-interval > invalid-interval" { | must 'flush-interval > invalid-interval' { | |||
description | description | |||
"flush-interval must be larger than the value for the | "flush-interval must be larger than the value for the | |||
invalid-interval argument."; | invalid-interval argument."; | |||
} | } | |||
description | description | |||
"Timers for the specified RIPv2 or RIPng instance or | "Timers for the specified RIPv2 or RIPng instance or | |||
interface."; | interface."; | |||
leaf update-interval { | leaf update-interval { | |||
type uint16 { | type uint16 { | |||
range 1..32767; | range "1..32767"; | |||
} | } | |||
units seconds; | units "seconds"; | |||
default 30; | default "30"; | |||
description | description | |||
"Interval at which RIPv2 or RIPng updates are sent."; | "Interval at which RIPv2 or RIPng updates are sent."; | |||
} | } | |||
leaf invalid-interval { | leaf invalid-interval { | |||
type uint16 { | type uint16 { | |||
range 1..32767; | range "1..32767"; | |||
} | } | |||
units seconds; | units "seconds"; | |||
default 180; | default "180"; | |||
description | description | |||
"Interval before a route is declared invalid after no | "Interval before a route is declared invalid after no | |||
updates are received. This value is at least three times | updates are received. This value is at least three times | |||
the value for the update-interval argument."; | the value for the update-interval argument."; | |||
} | } | |||
leaf holddown-interval { | leaf holddown-interval { | |||
type uint16 { | type uint16 { | |||
range 1..32767; | range "1..32767"; | |||
} | } | |||
units seconds; | units "seconds"; | |||
default 180; | default "180"; | |||
description | description | |||
"Interval before better routes are released."; | "Interval before better routes are released."; | |||
} | } | |||
leaf flush-interval { | leaf flush-interval { | |||
type uint16 { | type uint16 { | |||
range 1..32767; | range "1..32767"; | |||
} | } | |||
units seconds; | units "seconds"; | |||
default 240; | default "240"; | |||
description | description | |||
"Interval before a route is flushed from the routing | "Interval before a route is flushed from the routing | |||
table. This value must be larger than the value for the | table. This value must be larger than the value for the | |||
invalid-interval argument."; | invalid-interval argument."; | |||
} | } | |||
} // timers | } | |||
// timers | ||||
} | } | |||
grouping global-attributes { | grouping global-attributes { | |||
description | description | |||
"Global configuration and state attributes."; | "Global configuration and state attributes."; | |||
uses originate-default-route-container; | uses originate-default-route-container; | |||
leaf default-metric { | leaf default-metric { | |||
type uint8 { | type uint8 { | |||
range 0..16; | range "0..16"; | |||
} | } | |||
default 1; | default "1"; | |||
description | description | |||
"Set the default metric."; | "Set the default metric."; | |||
} | } | |||
leaf distance { | leaf distance { | |||
type uint8 { | type uint8 { | |||
range 1..255; | range "1..255"; | |||
} | } | |||
default 120; | default "120"; | |||
description | description | |||
"The administrative distance of the RIPv2 or RIPng for the | "The administrative distance of the RIPv2 or RIPng for the | |||
current RIPv2 or RIPng instance."; | current RIPv2 or RIPng instance."; | |||
} | } | |||
leaf triggered-update-threshold { | leaf triggered-update-threshold { | |||
type uint8 { | type uint8 { | |||
range 1..30; | range "1..30"; | |||
} | } | |||
units seconds; | units "seconds"; | |||
default 5; | default "5"; | |||
description | description | |||
"This attribute is used to suppress triggered updates. | "This attribute is used to suppress triggered updates. | |||
When the arrival of a regularly scheduled update matches the | When the arrival of a regularly scheduled update matches the | |||
number of seconds or is less than the number seconds | number of seconds or is less than the number seconds | |||
configured with this attribute, the triggered update is | configured with this attribute, the triggered update is | |||
suppressed."; | suppressed."; | |||
} | } | |||
leaf maximum-paths { | leaf maximum-paths { | |||
type uint8 { | type uint8 { | |||
range 1..16; | range "1..16"; | |||
} | } | |||
default 8; | default "8"; | |||
description | description | |||
"The number of multiple equal-cost RIPv2 or RIPng routes | "The number of multiple equal-cost RIPv2 or RIPng routes | |||
that can be used as the best paths for balancing the load | that can be used as the best paths for balancing the load | |||
of outgoing traffic packets."; | of outgoing traffic packets."; | |||
} | } | |||
leaf output-delay { | leaf output-delay { | |||
type uint8 { | type uint8 { | |||
range 1..50; | range "1..50"; | |||
} | } | |||
units milliseconds; | units "milliseconds"; | |||
description | description | |||
"A delay time between packets sent in multipacket | "A delay time between packets sent in multipacket | |||
RIPv2 or RIPng updates."; | RIPv2 or RIPng updates."; | |||
} | } | |||
} // global-attributes | } | |||
// global-attributes | ||||
grouping distribute-lists { | grouping distribute-lists { | |||
description | description | |||
"Grouping for distribute lists."; | "Grouping for distribute lists."; | |||
list distribute-list { | list distribute-list { | |||
key "prefix-set-name direction"; | key "prefix-set-name direction"; | |||
description | description | |||
"List of distribute-lists, which are used to filter incoming | "List of distribute-lists, which are used to filter incoming | |||
or outgoing routing updates."; | or outgoing routing updates."; | |||
leaf prefix-set-name { | leaf prefix-set-name { | |||
skipping to change at line 557 ¶ | skipping to change at line 553 ¶ | |||
key "prefix-set-name direction"; | key "prefix-set-name direction"; | |||
description | description | |||
"List of distribute-lists, which are used to filter incoming | "List of distribute-lists, which are used to filter incoming | |||
or outgoing routing updates."; | or outgoing routing updates."; | |||
leaf prefix-set-name { | leaf prefix-set-name { | |||
type prefix-set-ref; | type prefix-set-ref; | |||
description | description | |||
"Reference to a prefix list to be applied to RIPv2 or | "Reference to a prefix list to be applied to RIPv2 or | |||
RIPng packets."; | RIPng packets."; | |||
} | } | |||
leaf direction { | leaf direction { | |||
type enumeration { | type enumeration { | |||
enum "in" { | enum in { | |||
description | description | |||
"Apply the distribute-list to incoming routes."; | "Apply the distribute-list to incoming routes."; | |||
} | } | |||
enum "out" { | enum out { | |||
description | description | |||
"Apply the distribute-list to outgoing routes."; | "Apply the distribute-list to outgoing routes."; | |||
} | } | |||
} | } | |||
description | description | |||
"Direction of the routing updates."; | "Direction of the routing updates."; | |||
} | } | |||
leaf if-name { | leaf if-name { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"Reference to an interface to which the prefix list is | "Reference to an interface to which the prefix list is | |||
applied."; | applied."; | |||
} | } | |||
} | } | |||
} // distribute-lists | } | |||
// distribute-lists | ||||
grouping route-attributes { | grouping route-attributes { | |||
description | description | |||
"Grouping for route attributes."; | "Grouping for route attributes."; | |||
leaf redistributed { | leaf redistributed { | |||
type boolean; | type boolean; | |||
description | description | |||
"Redistributed routes."; | "Redistributed routes."; | |||
} | } | |||
leaf route-type { | leaf route-type { | |||
type enumeration { | type enumeration { | |||
enum connected { | enum connected { | |||
description "Connected route."; | description | |||
"Connected route."; | ||||
} | } | |||
enum external { | enum external { | |||
description "External route."; | description | |||
"External route."; | ||||
} | } | |||
enum external-backup { | enum external-backup { | |||
description "External backup route."; | description | |||
"External backup route."; | ||||
} | } | |||
enum rip { | enum rip { | |||
description "RIP route."; | description | |||
"RIP route."; | ||||
} | } | |||
} | } | |||
description | description | |||
"Route type."; | "Route type."; | |||
} | } | |||
leaf metric { | leaf metric { | |||
type uint8 { | type uint8 { | |||
range 0..16; | range "0..16"; | |||
} | } | |||
description "Route metric."; | description | |||
"Route metric."; | ||||
} | } | |||
leaf expire-time { | leaf expire-time { | |||
type uint16; | type uint16; | |||
description "Expiration time."; | description | |||
"Expiration time."; | ||||
} | } | |||
leaf deleted { | leaf deleted { | |||
type boolean; | type boolean; | |||
description "Deleted route."; | description | |||
"Deleted route."; | ||||
} | } | |||
leaf holddown { | leaf holddown { | |||
type boolean; | type boolean; | |||
description "Holddown route."; | description | |||
"Holddown route."; | ||||
} | } | |||
leaf need-triggered-update { | leaf need-triggered-update { | |||
type boolean; | type boolean; | |||
description "The route needs triggered update."; | description | |||
"The route needs triggered update."; | ||||
} | } | |||
leaf inactive { | leaf inactive { | |||
type boolean; | type boolean; | |||
description "The route is inactive."; | description | |||
"The route is inactive."; | ||||
} | } | |||
leaf flush-expire-before-holddown { | leaf flush-expire-before-holddown { | |||
type boolean; | type boolean; | |||
description | description | |||
"The flush timer expired before holddown time."; | "The flush timer expired before holddown time."; | |||
} | } | |||
} // route-attribute | } | |||
// route-attribute | ||||
/* | /* | |||
* Configuration data and operational state data nodes | * Configuration data and operational state data nodes | |||
*/ | */ | |||
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, 'rip:rip')" { | when "derived-from(rt:type, 'rip:rip')" { | |||
description | description | |||
"This augment is only valid for a routing protocol instance | "This augment is only valid for a routing protocol instance | |||
of RIP (type 'ripv2' or 'ripng')."; | of RIP (type 'ripv2' or 'ripng')."; | |||
} | } | |||
description "RIP augmentation."; | description | |||
"RIP augmentation."; | ||||
container rip { | container rip { | |||
description | description | |||
"RIP data."; | "RIP data."; | |||
uses global-attributes; | uses global-attributes; | |||
uses distribute-lists; | uses distribute-lists; | |||
uses redistribute-container; | uses redistribute-container; | |||
uses timers-container; | uses timers-container; | |||
container interfaces { | container interfaces { | |||
description | description | |||
"Containing a list of RIP interfaces."; | "Containing a list of RIP interfaces."; | |||
list interface { | list interface { | |||
key "interface"; | key "interface"; | |||
description | description | |||
"List of RIP interfaces."; | "List of RIP interfaces."; | |||
leaf interface { | leaf interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
must "(derived-from-or-self(" | must "(derived-from-or-self(" | |||
skipping to change at line 674 ¶ | skipping to change at line 678 ¶ | |||
container interfaces { | container interfaces { | |||
description | description | |||
"Containing a list of RIP interfaces."; | "Containing a list of RIP interfaces."; | |||
list interface { | list interface { | |||
key "interface"; | key "interface"; | |||
description | description | |||
"List of RIP interfaces."; | "List of RIP interfaces."; | |||
leaf interface { | leaf interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
must "(derived-from-or-self(" | must "(derived-from-or-self(" | |||
+ "../../../../rt:type, 'rip:ripv2') and " | + "../../../../rt:type, 'rip:ripv2') and " | |||
+ "/if:interfaces/if:interface[if:name=current()]/" | + "/if:interfaces/if:interface[if:name=current()]/" | |||
+ "ip:ipv4) or " | + "ip:ipv4) or " | |||
+ "(derived-from-or-self(" | + "(derived-from-or-self(" | |||
+ "../../../../rt:type, 'rip:ripng') and " | + "../../../../rt:type, 'rip:ripng') and " | |||
+ "/if:interfaces/if:interface[if:name=current()]/" | + "/if:interfaces/if:interface[if:name=current()]/" | |||
+ "ip:ipv6)" { | + "ip:ipv6)" { | |||
error-message "Invalid interface type."; | error-message "Invalid interface type."; | |||
description | description | |||
"RIPv2 can be enabled on IPv4 interface, and | "RIPv2 can be enabled on IPv4 interface, and | |||
RIPng can be enabled on IPv6 interface."; | RIPng can be enabled on IPv6 interface."; | |||
} | } | |||
description | description | |||
"Enable RIP on this interface."; | "Enable RIP on this interface."; | |||
} | } | |||
container authentication { | container authentication { | |||
when "derived-from-or-self(" | when "derived-from-or-self(" | |||
+ "../../../../rt:type, 'rip:ripv2')" { | + "../../../../rt:type, 'rip:ripv2')" { | |||
description "Only applicable to RIPv2."; | description | |||
"Only applicable to RIPv2."; | ||||
} | } | |||
description | description | |||
"Enables authentication and specifies the | "Enables authentication and specifies the | |||
authentication scheme for the RIP interface."; | authentication scheme for the RIP interface."; | |||
choice auth-type-selection { | choice auth-type-selection { | |||
description | description | |||
"Specify the authentication scheme."; | "Specify the authentication scheme."; | |||
reference | reference | |||
"RFC8177: YANG Data Model for Key Chains."; | "RFC8177: YANG Data Model for Key Chains."; | |||
case auth-key-chain { | case auth-key-chain { | |||
skipping to change at line 727 ¶ | skipping to change at line 731 ¶ | |||
type identityref { | type identityref { | |||
base key-chain:crypto-algorithm; | base key-chain:crypto-algorithm; | |||
} | } | |||
description | description | |||
"Cryptographic algorithm associated with the | "Cryptographic algorithm associated with the | |||
key."; | key."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container bfd { | container bfd { | |||
if-feature bfd; | if-feature "bfd"; | |||
description "BFD configuration."; | description | |||
"BFD configuration."; | ||||
uses bfd-types:client-cfg-parms; | uses bfd-types:client-cfg-parms; | |||
} | } | |||
leaf cost { | leaf cost { | |||
type uint8 { | type uint8 { | |||
range 1..16; | range "1..16"; | |||
} | } | |||
default 1; | default "1"; | |||
description | description | |||
"Interface cost."; | "Interface cost."; | |||
} | } | |||
container neighbors { | container neighbors { | |||
if-feature explicit-neighbors; | if-feature "explicit-neighbors"; | |||
description | description | |||
"Specifies the RIP neighbors. Useful for a | "Specifies the RIP neighbors. Useful for a | |||
non-broadcast multiple access (NBMA) network."; | non-broadcast multiple access (NBMA) network."; | |||
list neighbor { | list neighbor { | |||
key "address"; | key "address"; | |||
description | description | |||
"Specify a RIP neighbor on a non-broadcast network."; | "Specify a RIP neighbor on a non-broadcast network."; | |||
leaf address { | leaf address { | |||
type inet:ip-address; | type inet:ip-address; | |||
description "Neighbor IP address."; | description | |||
"Neighbor IP address."; | ||||
} | } | |||
} | } | |||
} | } | |||
leaf no-listen { | leaf no-listen { | |||
type empty; | type empty; | |||
description | description | |||
"Disables listening to, and processing of, RIPv2 or | "Disables listening to, and processing of, RIPv2 or | |||
RIPng packets on the specified interface."; | RIPng packets on the specified interface."; | |||
} | } | |||
uses originate-default-route-container; | uses originate-default-route-container; | |||
leaf passive { | leaf passive { | |||
type empty; | type empty; | |||
description | description | |||
"Disables sending of RIPv2 or RIPng packets on the | "Disables sending of RIPv2 or RIPng packets on the | |||
specified interface."; | specified interface."; | |||
} | } | |||
leaf split-horizon { | leaf split-horizon { | |||
type enumeration { | type enumeration { | |||
enum disabled { | enum disabled { | |||
description | description | |||
"Disables split-horizon processing."; | "Disables split-horizon processing."; | |||
} | } | |||
enum simple { | enum simple { | |||
description | description | |||
"Enables simple split-horizon processing."; | "Enables simple split-horizon processing."; | |||
} | } | |||
skipping to change at line 791 ¶ | skipping to change at line 790 ¶ | |||
enum simple { | enum simple { | |||
description | description | |||
"Enables simple split-horizon processing."; | "Enables simple split-horizon processing."; | |||
} | } | |||
enum poison-reverse { | enum poison-reverse { | |||
description | description | |||
"Enables split-horizon processing with poison | "Enables split-horizon processing with poison | |||
reverse."; | reverse."; | |||
} | } | |||
} | } | |||
default simple; | default "simple"; | |||
description | description | |||
"Controls RIPv2 or RIPng split-horizon processing on | "Controls RIPv2 or RIPng split-horizon processing on | |||
the specified interface."; | the specified interface."; | |||
} | } | |||
container summary-address { | container summary-address { | |||
description | description | |||
"Summarizes information about RIPv2 or RIPng routes | "Summarizes information about RIPv2 or RIPng routes | |||
sent over the specified interface in RIPv2 or RIPng | sent over the specified interface in RIPv2 or RIPng | |||
update packets."; | update packets."; | |||
leaf address { | leaf address { | |||
type inet:ip-prefix; | type inet:ip-prefix; | |||
description | description | |||
"Specifies the IP address and the prefix length that | "Specifies the IP address and the prefix length that | |||
identify the routes to be summarized. The IP | identify the routes to be summarized. The IP | |||
skipping to change at line 812 ¶ | skipping to change at line 810 ¶ | |||
leaf address { | leaf address { | |||
type inet:ip-prefix; | type inet:ip-prefix; | |||
description | description | |||
"Specifies the IP address and the prefix length that | "Specifies the IP address and the prefix length that | |||
identify the routes to be summarized. The IP | identify the routes to be summarized. The IP | |||
address can be specified in either IPv4 or IPv6 | address can be specified in either IPv4 or IPv6 | |||
format, as specified in RFC6991."; | format, as specified in RFC6991."; | |||
} | } | |||
leaf metric { | leaf metric { | |||
type uint8 { | type uint8 { | |||
range 0..16; | range "0..16"; | |||
} | } | |||
description | description | |||
"Metric used for the route. If this attribute is not | "Metric used for the route. If this attribute is not | |||
used, the value set through the default-metric | used, the value set through the default-metric | |||
attribute in RIPv2 or RIPng router configuration is | attribute in RIPv2 or RIPng router configuration is | |||
used for the route."; | used for the route."; | |||
} | } | |||
} | } | |||
uses timers-container; | uses timers-container; | |||
/* Operational state */ | /* Operational state */ | |||
leaf oper-status { | leaf oper-status { | |||
type enumeration { | type enumeration { | |||
enum up { | enum up { | |||
description | description | |||
"RIPv2 or RIPng is operational on this interface."; | "RIPv2 or RIPng is operational on this interface."; | |||
} | } | |||
enum down { | enum down { | |||
description | description | |||
"RIPv2 or RIPng is not operational on this | "RIPv2 or RIPng is not operational on this | |||
skipping to change at line 853 ¶ | skipping to change at line 849 ¶ | |||
config false; | config false; | |||
description | description | |||
"Next full update time."; | "Next full update time."; | |||
} | } | |||
leaf valid-address { | leaf valid-address { | |||
type boolean; | type boolean; | |||
config false; | config false; | |||
description | description | |||
"The interface has a valid address."; | "The interface has a valid address."; | |||
} | } | |||
container statistics { | container statistics { | |||
if-feature interface-statistics; | if-feature "interface-statistics"; | |||
config false; | config false; | |||
description | description | |||
"Interface statistics counters."; | "Interface statistics counters."; | |||
leaf discontinuity-time { | leaf discontinuity-time { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
description | description | |||
"The time on the most recent occasion at which any | "The time on the most recent occasion at which any | |||
one or more of the statistics counters suffered a | one or more of the statistics counters suffered a | |||
discontinuity. If no such discontinuities have | discontinuity. If no such discontinuities have | |||
occurred since the last re-initialization of the | occurred since the last re-initialization of the | |||
skipping to change at line 894 ¶ | skipping to change at line 889 ¶ | |||
} | } | |||
leaf updates-sent { | leaf updates-sent { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of triggered RIP updates actually | "The number of triggered RIP updates actually | |||
sent on this interface. This explicitly does | sent on this interface. This explicitly does | |||
NOT include full updates sent containing new | NOT include full updates sent containing new | |||
information."; | information."; | |||
} | } | |||
} | } | |||
} // interface | } | |||
} // interfaces | // interface | |||
} | ||||
// interfaces | ||||
/* Operational state */ | /* Operational state */ | |||
leaf next-triggered-update { | leaf next-triggered-update { | |||
type uint32; | type uint32; | |||
config false; | config false; | |||
description | description | |||
"Next triggered update."; | "Next triggered update."; | |||
} | } | |||
leaf num-of-routes { | leaf num-of-routes { | |||
type uint32; | type uint32; | |||
config false; | config false; | |||
skipping to change at line 955 ¶ | skipping to change at line 949 ¶ | |||
unknown command type)."; | unknown command type)."; | |||
} | } | |||
leaf bad-routes-rcvd { | leaf bad-routes-rcvd { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of routes received from this neighbor, | "The number of routes received from this neighbor, | |||
in valid RIP packets that were ignored for any | in valid RIP packets that were ignored for any | |||
reason (e.g., unknown address family, or invalid | reason (e.g., unknown address family, or invalid | |||
metric)."; | metric)."; | |||
} | } | |||
} // neighbor | } | |||
} // neighbors | // neighbor | |||
} | ||||
// neighbors | ||||
container routes { | container routes { | |||
description | description | |||
"IPv4 route information."; | "IPv4 route information."; | |||
list route { | list route { | |||
key "ipv4-prefix"; | key "ipv4-prefix"; | |||
description | description | |||
"A RIPv2 IPv4 route."; | "A RIPv2 IPv4 route."; | |||
leaf ipv4-prefix { | leaf ipv4-prefix { | |||
type inet:ipv4-prefix; | type inet:ipv4-prefix; | |||
description | description | |||
"IPv4 address and prefix length, in the format | "IPv4 address and prefix length, in the format | |||
specified in RFC6991."; | specified in RFC6991."; | |||
} | } | |||
leaf next-hop { | leaf next-hop { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"Next hop IPv4 address."; | "Next hop IPv4 address."; | |||
skipping to change at line 982 ¶ | skipping to change at line 977 ¶ | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"Next hop IPv4 address."; | "Next hop IPv4 address."; | |||
} | } | |||
leaf interface { | leaf interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"The interface that the route uses."; | "The interface that the route uses."; | |||
} | } | |||
uses route-attributes; | uses route-attributes; | |||
} // route | } | |||
} // routes | // route | |||
} // ipv4 | } | |||
// routes | ||||
} | ||||
// ipv4 | ||||
container ipv6 { | container ipv6 { | |||
when "derived-from-or-self(../../rt:type, 'rip:ripng')" { | when "derived-from-or-self(../../rt:type, 'rip:ripng')" { | |||
description | description | |||
"IPv6 address family is supported by RIPng."; | "IPv6 address family is supported by RIPng."; | |||
} | } | |||
config false; | config false; | |||
description | description | |||
"IPv6 address family information."; | "IPv6 address family information."; | |||
container neighbors { | container neighbors { | |||
description | description | |||
skipping to change at line 1029 ¶ | skipping to change at line 1026 ¶ | |||
unknown command type)."; | unknown command type)."; | |||
} | } | |||
leaf bad-routes-rcvd { | leaf bad-routes-rcvd { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of routes received from this neighbor, | "The number of routes received from this neighbor, | |||
in valid RIP packets that were ignored for any | in valid RIP packets that were ignored for any | |||
reason (e.g., unknown address family, or invalid | reason (e.g., unknown address family, or invalid | |||
metric)."; | metric)."; | |||
} | } | |||
} // neighbor | } | |||
} // neighbors | // neighbor | |||
} | ||||
// neighbors | ||||
container routes { | container routes { | |||
description | description | |||
"IPv6 route information."; | "IPv6 route information."; | |||
list route { | list route { | |||
key "ipv6-prefix"; | key "ipv6-prefix"; | |||
description | description | |||
"A RIPng IPv6 route."; | "A RIPng IPv6 route."; | |||
leaf ipv6-prefix { | leaf ipv6-prefix { | |||
type inet:ipv6-prefix; | type inet:ipv6-prefix; | |||
description | description | |||
"IPv6 address and prefix length, in the format | "IPv6 address and prefix length, in the format | |||
specified in RFC6991."; | specified in RFC6991."; | |||
} | } | |||
leaf next-hop { | leaf next-hop { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description | description | |||
"Next hop IPv6 address."; | "Next hop IPv6 address."; | |||
skipping to change at line 1056 ¶ | skipping to change at line 1054 ¶ | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description | description | |||
"Next hop IPv6 address."; | "Next hop IPv6 address."; | |||
} | } | |||
leaf interface { | leaf interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"The interface that the route uses."; | "The interface that the route uses."; | |||
} | } | |||
uses route-attributes; | uses route-attributes; | |||
} // route | } | |||
} // routes | // route | |||
} // ipv6 | } | |||
// routes | ||||
} | ||||
// ipv6 | ||||
container statistics { | container statistics { | |||
if-feature global-statistics; | if-feature "global-statistics"; | |||
config false; | config false; | |||
description | description | |||
"Global statistics counters."; | "Global statistics counters."; | |||
leaf discontinuity-time { | leaf discontinuity-time { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
description | description | |||
"The time on the most recent occasion at which any one | "The time on the most recent occasion at which any one | |||
or more of the statistics counters suffered a | or more of the statistics counters suffered a | |||
discontinuity. If no such discontinuities have occurred | discontinuity. If no such discontinuities have occurred | |||
since the last re-initialization of the local | since the last re-initialization of the local | |||
skipping to change at line 1095 ¶ | skipping to change at line 1095 ¶ | |||
leaf responses-rcvd { | leaf responses-rcvd { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of responses received by RIP."; | "The number of responses received by RIP."; | |||
} | } | |||
leaf responses-sent { | leaf responses-sent { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of responses sent by RIP."; | "The number of responses sent by RIP."; | |||
} | } | |||
} // statistics | } | |||
} // container rip | // statistics | |||
} | ||||
// container rip | ||||
} | } | |||
/* | /* | |||
* RPCs | * RPCs | |||
*/ | */ | |||
rpc clear-rip-route { | rpc clear-rip-route { | |||
description | description | |||
"Clears RIP routes from the IP routing table and routes | "Clears RIP routes from the IP routing table and routes | |||
redistributed into RIP for the specified RIP instance | redistributed into RIP for the specified RIP instance | |||
skipping to change at line 1108 ¶ | skipping to change at line 1110 ¶ | |||
/* | /* | |||
* RPCs | * RPCs | |||
*/ | */ | |||
rpc clear-rip-route { | rpc clear-rip-route { | |||
description | description | |||
"Clears RIP routes from the IP routing table and routes | "Clears RIP routes from the IP routing table and routes | |||
redistributed into RIP for the specified RIP instance | redistributed into RIP for the specified RIP instance | |||
or for all RIP instances in the current context."; | or for all RIP instances in the current context."; | |||
input { | input { | |||
leaf rip-instance { | leaf rip-instance { | |||
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"; | |||
} | } | |||
description | description | |||
"Instance name identifying a specific RIP instance. | "Instance name identifying a specific RIP instance. | |||
This leaf is optional for the RPC. | This leaf is optional for the RPC. | |||
If it is specified, the RPC will clear all routes in the | If it is specified, the RPC will clear all routes in the | |||
specified RIP instance; | specified RIP instance; | |||
if it is not specified, the RPC will clear all routes in | if it is not specified, the RPC will clear all routes in | |||
all RIP instances."; | all RIP instances."; | |||
} | } | |||
} | } | |||
} // rcp clear-rip-route | } | |||
// rcp clear-rip-route | ||||
} | } | |||
End of changes. 121 change blocks. | ||||
159 lines changed or deleted | 166 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |