| 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/ | ||||