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/