RIP component.
Version: 2020-06-17
module huawei-rip { yang-version 1; namespace "urn:huawei:yang:huawei-rip"; prefix rip; import huawei-network-instance { prefix ni; } import huawei-l3vpn { prefix l3vpn; } import huawei-ifm { prefix ifm; } import huawei-routing-policy { prefix rtp; } import huawei-acl { prefix acl; } import huawei-xpl { prefix xpl; } import huawei-pub-type { prefix pub-type; } import huawei-extension { prefix ext; } import ietf-inet-types { prefix inet; } import ietf-yang-types { prefix yang; } include huawei-rip-type; organization "Huawei Technologies Co., Ltd."; contact "Huawei Industrial Base Bantian, Longgang Shenzhen 518129 People's Republic of China Website: http://www.huawei.com Email: support@huawei.com"; description "RIP component."; revision "2020-06-17" { description "Add leaf units."; reference "Huawei private."; } revision "2020-03-23" { description "Modify the description."; reference "Huawei private."; } revision "2020-03-09" { description "Modify the description."; reference "Huawei private."; } revision "2020-03-03" { description "Modify the description."; reference "Huawei private."; } revision "2020-02-14" { description "Modify input output split-horizon poison-reverse data type."; reference "Huawei private."; } revision "2020-02-04" { description "Remove bfd detect-multiplier."; reference "Huawei private."; } revision "2020-01-14" { description "Add RPC reset RIP."; reference "Huawei private."; } revision "2020-01-03" { description "Add container networks."; reference "Huawei private."; } revision "2019-12-16" { description "Add container filter imports filter export and import route."; reference "Huawei private."; } revision "2019-04-04" { description "Initial revision."; reference "Huawei private."; } ext:task-name "rip"; rpc reset-rip-configuration { ext:node-ref "/ni:network-instance/ni:instances/ni:instance/rip:rip"; description "Reset RIP configuration information."; input { choice process { mandatory true; description "Reset rip specified process or all processes."; case process-id { description "Specify the RIP process which needs to be reset."; leaf process-id { type uint32 { range "1..4294967295"; } description "Specify the RIP process which needs to be reset."; } } // case process-id case all-process { description "Reset all RIP processes."; leaf all-process { type rip-enable-flag; default "disable"; description "Reset all the processes."; } } // case all-process } // choice process } } // rpc reset-rip-configuration rpc reset-rip-import-routes { ext:node-ref "/ni:network-instance/ni:instances/ni:instance/rip:rip/rip:processs/rip:process/rip:import-routes/rip:import-route"; description "Reset import routes from other protocols into RIP."; input { choice process { mandatory true; description "Reset rip specified process or all processes."; case process-id { description "Specify the RIP process which needs to be reset."; leaf process-id { type uint32 { range "1..4294967295"; } description "Specify the RIP process which needs to be reset."; } } // case process-id case all-process { description "Reset all RIP processes."; leaf all-process { type rip-enable-flag; default "disable"; description "Reset all the processes."; } } // case all-process } // choice process } } // rpc reset-rip-import-routes rpc reset-rip-statistics { ext:node-ref "/ni:network-instance/ni:instances/ni:instance/rip:rip/rip:processs/rip:process/rip:statistics"; description "Reset RIP statistical information."; input { choice process { mandatory true; description "Reset rip specified process or all processes."; case process-id { description "Specify the RIP process which needs to be reset."; leaf process-id { type uint32 { range "1..4294967295"; } description "Specify the RIP process which needs to be reset."; } } // case process-id case all-process { description "Reset all RIP processes."; leaf all-process { type rip-enable-flag; default "disable"; description "Reset all the processes."; } } // case all-process } // choice process leaf interface { type leafref { path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name"; } must "../process-id"; description "Specify the interface on which statistics needs to be cleared."; } leaf neighbor-address { type inet:ipv4-address-no-zone; description "Specify the neighbor IP address."; } } } // rpc reset-rip-statistics augment /ni:network-instance/ni:instances/ni:instance { description "RIP augment to L3VPN."; container rip { when "../l3vpn:afs/l3vpn:af[l3vpn:type='ipv4-unicast']"; description "Configure RIP component."; container processs { description "List of RIP process."; list process { key "id"; description "Configure RIP process."; leaf id { type uint32 { range "1..4294967295"; } description "Specify a RIP process ID."; } leaf description { type string { length "1..80"; } description "Specify a description for a RIP process. The description is used to identify a RIP process. You can configure a meaningful name, which helps understanding the configuration."; } leaf verify-source { type rip-enable-flag; default "enable"; description "You can enable a device to validate the source IP address of the incoming RIP route updates. For all received RIP updates, you can check whether the originator and the receiver belong to the same subnet. It is recommended not to disable this feature in normal circumstances."; } leaf threshold-percent { type uint8 { range "0..100"; } default "80"; description "Specify the percentage of the maximum number of routes after which an alarm is generated. Once RIP learns the maximum number of routes, it will stop learning any new route till the number of routes falls to a value below the threshold-value percentage of the maximum number."; } leaf summary { type rip-summ-enable-flag; default "enable"; description "You can enable RIP summarization. When RIP summarization is enabled, the router summarizes subnet routes to a classful route. The summarization is invalid when the split horizon or poison reverse feature is enabled. Therefore, when the summarized routes are sent to the natural network segment."; } leaf host-route { type rip-enable-flag; default "enable"; description "In RIPv1 advertisements, there is no subnet information associated with the routes. When routes are learned through RIPv1 packets, the subnet mask is used as follows: 1. Classful subnet mask, when the major net of the learned route and that of the received interface do not match. 2. Interface's subnet mask, when the major net of the route matches that of the interface. In the second case, when the major net matches, and there is some non-zero part in the route advertisement after applying the interface mask, it will use a host-route mask when the host-route is enabled."; } leaf check-zero { type rip-enable-flag; default "enable"; description "In general, RIPv1-enabled routers will reject all the packets containing non-zero bits in the MBZ fields of the RIP packets. This configuration is applied only for RIPv1 packets. If the version applicable on the interface is RIP version 2 (RIPv2), then the packets are not checked for MBZ fields. If the version is V2-broadcast, then the configuration is applied to any received version 1 packets. And if the version is V1, then the configuration is applied to received RIPv1 packets."; } leaf version { type uint8 { range "1..2"; } description "If the configured version is 1, only RIPv1 packets will be sent and received, and RIPv2 packets will be rejected. If the configured version is 2, only RIPv2 multicast packets will be sent, and only RIPv2 (multicast/broadcast) packets will be received. If the RIP version is changed from version 1 to version 2, or from version 2 to version 1, then all the routes will be deleted from the routing table."; } leaf mib-binding { type rip-enable-flag; default "disable"; description "You can run the RIP mib binding command to set binding between the MIB and RIP process ID. All configurations that will be done through SNMP manager will be reflected in this RIP process. In the RIP MIB table, there is no way to specify a RIP process ID. Hence the configurations that are done using SNMP, cannot be resolved to the intended process. To facilitate this, run the rip mib-binding command."; } leaf maximum-load-balancing { ext:dynamic-default; type uint8 { range "1..128"; } description "You can configure the maximum number of equal cost routes for load balancing. This does not limit the number of equal-cost routes that RIP can learn. RIP will store all the received ECMP routes. The default value of the number of equal-cost routes may vary with products and licenses. You can adjust the default value by purchasing a new license. If the value is configured twice, the second one overrides the first one."; } leaf zero-metric-check { type rip-enable-flag; default "enable"; description "Some vendors support the metric of a route as zero. This means a route update packet from other vendors' routers can contain routes with metric field value as zero."; } leaf default-cost { type uint8 { range "0..15"; } default "0"; description "The default cost is used when RIP imports routes from other routing protocols, and no cost is specified through a route-policy or the cost parameter in the import-route command. Triggered update will be sent if the cost of any of the imported route changes due to the default cost configuration."; } leaf silent-interface-all { type rip-enable-flag; default "disable"; description "Specify all the RIP enabled interfaces in the process as silent interfaces. A silent RIP interface can receive updates but cannot send any update. If on a silent interface, unicast neighbors are configured, then updates can be sent to those unicast neighbors. A request received from a configured unicast neighbor that falls on a silent interface will be responded with a response message."; } leaf max-routes { type uint32 { range "1..300000"; } default "150000"; description "A RIP process must have been created before you configure the maximum number of routes. On reaching the maximum number of routes, RIP cannot add any further routes into the routing table. By configuring a threshold, the user can get a warning message indicating that the maximum number of routes is being added. On reaching the maximum number of routes even if routes are deleted, no new routes can be added to RIP until the number of routes drops to the threshold value. The upper limit on the number of routes that RIP can handle is to ensure that RIP performs within its memory constraints and meets its performance requirements."; } container networks { description "List of networks for each RIP process."; list network { key "address"; description "Configure the network."; leaf address { type inet:ipv4-address-no-zone; description "Specified address must be major net address without any subnets."; } } // list network } // container networks container filter-imports { description "List of the filter policies. There can be multiple filter policies for each RIP process."; list filter-import { key "interface"; description "Configure the filter policies."; leaf interface { type leafref { path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name"; } description "Specify the name of the interface on which the imported routes are filtered. The specified interface must be bound to the process for which the filter-policy is configured."; } choice policy-type { mandatory true; description "Mode of the policy used for import route."; case ip-prefix { description "Set a name of the IP prefix list."; leaf ip-prefix { type leafref { path "/rtp:routing-policy/rtp:ipv4-prefix-filters/rtp:ipv4-prefix-filter/rtp:name"; } description "Specify the name of the IP prefix list to be configured along with metricin."; } leaf gataway { type leafref { path "/rtp:routing-policy/rtp:ipv4-prefix-filters/rtp:ipv4-prefix-filter/rtp:name"; } description "Specify the name of the gateway IP prefix list that is used to filter routes."; } } // case ip-prefix case acl-number { description "Set a number of the basic ACL."; leaf acl-number { type leafref { path "/acl:acl/acl:groups/acl:group/acl:identity"; } must "/acl:acl/acl:groups/acl:group[acl:identity=current()]/acl:type='basic'"; description "Specify the number of the basic ACL to be configured along with metricin."; } } // case acl-number case acl-name { description "Set a name of an basic ACL."; leaf acl-name { type leafref { path "/acl:acl/acl:groups/acl:group/acl:identity"; } must "/acl:acl/acl:groups/acl:group[acl:identity=current()]/acl:type='basic'"; description "Specify the name of an basic ACL to be configured along with metricin."; } } // case acl-name } // choice policy-type } // list filter-import } // container filter-imports container filter-exports { description "List of the filter policies. There can be multiple filter policies for each RIP process."; list filter-export { key "protocol process-id interface"; description "Configure the filter policy."; leaf protocol { type rip-proto-type; must "../protocol='none' or ../interface='NULL0'"; description "Specify the imported external routing protocol. It can be static, direct, BGP, RIP, OSPF, or ISIS."; } leaf process-id { type uint32 { range "1..4294967295"; } must "../process-id=1 or (../protocol='ospfv2' or ../protocol='isis' or ../protocol='rip')"; description "Specify the process ID. Process-id is required when the imported protocol is RIP, OSPF, or ISIS."; } leaf interface { type leafref { path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name"; } description "Specify the name of the interface on which the imported routes are filtered. The specified interface must be bound to the process for which the filter-policy is configured."; } choice policy-type { mandatory true; description "Mode of the policy used for import route."; case ip-prefix { description "Set a name of the IP prefix list."; leaf ip-prefix { type leafref { path "/rtp:routing-policy/rtp:ipv4-prefix-filters/rtp:ipv4-prefix-filter/rtp:name"; } description "Specify the name of the IP prefix list to be configured along with metricin."; } } // case ip-prefix case acl-number { description "Set a number of the basic ACL."; leaf acl-number { type leafref { path "/acl:acl/acl:groups/acl:group/acl:identity"; } must "/acl:acl/acl:groups/acl:group[acl:identity=current()]/acl:type='basic'"; description "Specify the number of the basic ACL to be configured along with metricin."; } } // case acl-number case acl-name { description "Set a name of an basic ACL."; leaf acl-name { type leafref { path "/acl:acl/acl:groups/acl:group/acl:identity"; } must "/acl:acl/acl:groups/acl:group[acl:identity=current()]/acl:type='basic'"; description "Specify the name of an basic ACL to be configured along with metricin."; } } // case acl-name } // choice policy-type } // list filter-export } // container filter-exports container import-routes { description "List of import routes from multiple protocols."; list import-route { key "protocol process-id"; description "Configure import routes from a specified protocol."; leaf protocol { type rip-imp-prototype; description "Specify the protocol from which routes are imported."; } leaf process-id { type uint32 { range "1..4294967295"; } must "(../protocol!='ospfv2' and ../protocol!='isis' and ../protocol!='rip' and ../process-id=1) or not(../protocol!='ospfv2' and ../protocol!='isis' and ../protocol!='rip' or ../protocol='bgp' or ../protocol='direct' or ../protocol='static' or ../protocol='unr')"; description "Specify the process ID of the protocol from which routes are imported. The value can be RIP, OSPFv2, or ISIS."; } choice policy-type { description "Mode of the policy used for import route."; case route-policy-name { description "Set a route-policy name."; leaf route-policy-name { type leafref { path "/rtp:routing-policy/rtp:policy-definitions/rtp:policy-definition/rtp:name"; } description "Specify the name of the route policy to be used during route import. Redistributing routes from other protocols will import even the direct routes of the source protocol. The prerequisites for the import route command are as follows: 1. A RIP process has been created. 2. The policy to be applied has been configured. Reconfiguration of this command with a new value of process-id or protocol will not affect previous configurations. Reconfiguration of this command with the existing protocol and process-id, regardless of the policy configuration, will overwrite previous configurations. The policy used in the redistribution command can be deleted only when no other configuration is using the policy."; } } // case route-policy-name case route-filter-name { description "Set a route policy name."; leaf route-filter-name { type string { length "1..1809"; } description "Name of a routing Filter The value is a string of 1 to 585 characters."; } } // case route-filter-name } // choice policy-type leaf cost { type uint16 { range "0..15"; } description "Specify the cost used for the imported route. The cost and the tag value of the routes imported to RIP may be specified in the policy. If no cost is specified in the policy, the routes are imported into RIP with the cost specified in the command. If no cost is specified either in the command or policy, the configured default cost is used. If no tag value is specified in the policy, the tag value specified by the RM module is used. If the route tag specified by the RM module overflows 2 bytes, zero is used as the route tag."; } leaf transparent { type rip-enable-flag; must "(../transparent='enable' and ../protocol='bgp') or ../transparent='disable'"; default "disable"; description "This is used in case of importing routes from BGP. If this option is selected, the BGP route cost will be directly applied to these imported routes. The configured import route cost will not be considered in this case. If the BGP cost is more than 16, RIP will advertise these routes with cost 16 only."; } leaf permit-ibgp { when "../../../../../../ni:name='_public_'"; type rip-enable-flag; must "(../permit-ibgp='enable' and ../protocol='bgp') or ../permit-ibgp='disable'"; default "disable"; description "IBGP routes will be imported to the RIP process."; } } // list import-route } // container import-routes container timer { description "Configure a timer for a process."; leaf garbage { type uint32 { range "1..86400"; } units "s"; default "120"; description "Specify the interval for the device to delete a route from the routing table after detecting that the route is unreachable."; } leaf periodic { type uint32 { range "1..86400"; } units "s"; default "30"; description "Specify the periodic timer in seconds. RIP will send route updates periodically at this configured interval."; } leaf age { type uint32 { range "1..86400"; } units "s"; default "180"; description "Specify the age timer. Routes will be considered unreachable after this interval. In most cases, the age timer is three times the update timer."; } leaf suppress { type uint32 { range "0..86400"; } units "s"; default "0"; description "A route is suppressed after it ages and becomes unreachable. During the suppression time, no route update is accepted to prevent route flapping. The values of these timers should follow the rule: update < age and suppress < garbage-collect. For example, when the update timer is longer than the age timer, the router cannot inform its neighbors of the change in time if a RIP route changes during the update timer. This configuration should be used carefully as any parameter change can cause route flapping and can increase the convergence time considerably. If the network is quite stable, you can increase the timer values."; } leaf triggered-flag { type rip-enable-flag; default "disable"; description "Enable the triggered timer."; } leaf triggered-min-interval { type uint32 { range "100..5000"; } must "../triggered-min-interval='200' or ../triggered-flag='enable'"; default "200"; description "Specify the minimum interval after which the triggered update can be sent."; } leaf triggered-max-interval { type uint32 { range "200..5000"; } must "../triggered-max-interval='5000' or ../triggered-flag='enable'"; default "5000"; description "Specify the maximum interval after which the triggered update has to be sent, even if the route is still changing."; } leaf triggered-incr-value { type uint32 { range "100..1000"; } must "../triggered-incr-value='100' or ../triggered-flag='enable'"; default "100"; description "Specify the value by which the triggered timer will be incremented in case of frequent route changes."; } } // container timer container peers { description "List of the unicast neighbors. There can be multiple unicast neighbors configured for each RIP process."; list peer { key "address"; description "Configure the unicast neighbor."; leaf address { type inet:ipv4-address-no-zone; description "Display the address of a neighbor. The neighbor configuration is used when you do not want to send the RIP routing information as broadcast or multicast messages. This is particularly useful on broadcast and multicast networks when we want to send messages to few neighbors. If unicast neighbors are configured on silent interfaces, then updates will be sent to those unicast neighbors. This configuration will cause RIP to send unicast packets to some destinations. As a result, all the routers on that interface will not be able to hear the advertisement. If neighbor-address is same as one of the addresses configured on the interface, then the updates are not sent to neighbors."; } } // list peer } // container peers container neighbor-infos { config false; description "List of the information for the unicast neighbor."; list neighbor-info { key "address interface-name"; description "Operational data of the information for the unicast neighbor."; leaf address { type inet:ipv4-address-no-zone; description "The address of a neighbor."; } leaf interface-name { type pub-type:if-name; description "The interface information of a neighbor."; } leaf version { type rip-version-type; description "The version of a neighbor."; } leaf last-heard-time-hours { type uint32 { range "0..4294967295"; } description "The hours of the last heard time."; } leaf last-heard-time-minutes { type uint32 { range "0..4294967295"; } description "The minutes of the last heard time."; } leaf last-heard-time-seconds { type uint32 { range "0..4294967295"; } description "The seconds of the last heard time."; } leaf active-routes-number { type uint32 { range "0..4294967295"; } description "The number of active RIP routes."; } leaf holddown-routes-number { type uint32 { range "0..4294967295"; } description "The number of holddown routes."; } leaf garbage-routes-number { type uint32 { range "0..4294967295"; } description "The number of garbage routes."; } leaf last-receive-sequence { type string { length "1..12"; } description "The last receive sequence."; } } // list neighbor-info } // container neighbor-infos container neighbor-packets-statisticss { config false; description "List of the updates and packets statisticss for neighbor."; list neighbor-packets-statistics { key "address interface-name"; description "Statistics of the updates and packets for neighbor."; leaf address { type inet:ipv4-address-no-zone; description "The address of a neighbor."; } leaf interface-name { type pub-type:if-name; description "The interface information of a neighbor."; } leaf request-packets-received-last-minutes { type uint32 { range "0..4294967295"; } description "Number of request packets within the last 1 minute that are received by the neighbor."; } leaf request-packets-received-last-five-minutes { type uint32 { range "0..4294967295"; } description "Number of request packets within the last 5 minute that are received by the neighbor."; } leaf request-packets-received-total { type uint32 { range "0..4294967295"; } description "Number of total request packets that are received by the neighbor."; } leaf request-packets-ignored-last-minutes { type uint32 { range "0..4294967295"; } description "Number of request packets within the last 1 minute that are ignored by the neighbor."; } leaf request-packets-ignored-last-five-minutes { type uint32 { range "0..4294967295"; } description "Number of request packets within the last 5 minute that are ignored by the neighbor."; } leaf request-packets-ignored-total { type uint32 { range "0..4294967295"; } description "Number of total request packets that are ignored by the neighbor."; } leaf response-packets-received-last-minutes { type uint32 { range "0..4294967295"; } description "Number of response packets within the last 1 minute that are received by the neighbor."; } leaf response-packets-received-last-five-minutes { type uint32 { range "0..4294967295"; } description "Number of response packets within the last 5 minute that are received by the neighbor."; } leaf response-packets-received-total { type uint32 { range "0..4294967295"; } description "Number of total response packets that are received by the neighbor."; } leaf response-packets-ignored-last-minutes { type uint32 { range "0..4294967295"; } description "Number of response packets within the last 1 minute that are ignored by the neighbor."; } leaf response-packets-ignored-last-five-minutes { type uint32 { range "0..4294967295"; } description "Number of response packets within the last 5 minute that are ignored by the neighbor."; } leaf response-packets-ignored-total { type uint32 { range "0..4294967295"; } description "Number of total response packets that are ignored by the neighbor."; } leaf bad-packets-received-last-minutes { type uint32 { range "0..4294967295"; } description "Number of bad packets within the last 1 minute that are received by the neighbor."; } leaf bad-packets-received-last-five-minutes { type uint32 { range "0..4294967295"; } description "Number of bad packets within the last 5 minute that are received by the neighbor."; } leaf bad-packets-received-total { type uint32 { range "0..4294967295"; } description "Number of total bad packets that are received by the neighbor."; } leaf bad-routes-received-last-minutes { type uint32 { range "0..4294967295"; } description "Number of bad routes within the last 1 minute that are received by the neighbor."; } leaf bad-routes-received-last-five-minutes { type uint32 { range "0..4294967295"; } description "Number of bad routes within the last 5 minute that are received by the neighbor."; } leaf bad-routes-received-total { type uint32 { range "0..4294967295"; } description "Number of total bad routes that are received by the neighbor."; } leaf authentication-failed-packets-last-minutes { type uint32 { range "0..4294967295"; } description "Number of packets within the last 1 minute that fail to be authenticated on the neighbor."; } leaf authentication-failed-packets-last-five-minutes { type uint32 { range "0..4294967295"; } description "Number of packets within the last 5 minute that fail to be authenticated on the neighbor."; } leaf authentication-failed-packets-total { type uint32 { range "0..4294967295"; } description "Number of total packets that fail to be authenticated on the neighbor."; } } // list neighbor-packets-statistics } // container neighbor-packets-statisticss container neighbor-last-downs { config false; description "List of the reason why a neighbor went Down."; list neighbor-last-down { key "index"; description "Operational data of the reason why a neighbor went Down."; leaf index { type uint8 { range "1..255"; } description "Index of the neighbor that went Down."; } leaf ip-address { type inet:ipv4-address-no-zone; description "IP address of a neighbor."; } leaf interface-name { type pub-type:if-name; description "Interface on which a neighbor was present."; } leaf down-reason { type rip-nbr-down-reason; description "Reason why a neighbor went Down."; } leaf down-time { type yang:date-and-time; description "Time when a neighbor went Down."; } } // list neighbor-last-down } // container neighbor-last-downs container silent-interfaces { when "(../silent-interface-all='disable')"; description "List of silent interfaces. There can be multiple silent interfaces configured for each RIP process."; list silent-interface { key "if-name"; description "Configure the silent interface."; leaf if-name { type leafref { path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name"; } must "../../../../../../ni:name=/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:vrf-name"; description "The silent interface configuration is used when you do not want to send the RIP routing information on a specific multicast interface. If neighbor-address is configured on the interface, then the updates are sent to neighbors."; } } // list silent-interface } // container silent-interfaces container undo-silent-interfaces { when "(../silent-interface-all='enable')"; description "List of silent interfaces disabled. There can be multiple silent interfaces configured for each RIP process."; list undo-silent-interface { key "if-name"; description "Configure the silent interface disable."; leaf if-name { type leafref { path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name"; } must "../../../../../../ni:name=/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:vrf-name"; description "The silent interface configuration is used when you do not want to send the RIP routing information on a specific multicast interface. If neighbor address is configured on the interface, then the updates are sent to neighbors."; } } // list undo-silent-interface } // container undo-silent-interfaces container default-route { presence "Enable default-route."; description "Configure a default route."; leaf cost { type uint8 { range "0..15"; } default "0"; description "Specify the cost to be used while generating a default route. If a metric out value is applicable on the interface, then the advertised metric value is the sum of the cost (specified in the default-route originate command) and the metric out value."; } leaf tag { type uint16; default "0"; description "Specify the tag value to be used while generating a default route."; } leaf avoid-learning { type rip-enable-flag; must "../avoid-learning='disable' or not(../always)"; default "disable"; description "Prevent the default route from being learned from neighbors."; } choice default-route-mode { mandatory true; description "Mode for default route."; case always { description "Set always."; leaf always { type empty; description "The router configured with the always parameter does not calculate the default routes of other routers."; } } // case always case match-default { description "Match default route."; leaf match-default { type empty; description "Advertises the default routes (if any) in the routing table generated by other routing protocols or RIP processes to neighbors."; } } // case match-default case route-policy-name { description "Specify the name of a route-policy."; leaf route-policy-name { type leafref { path "/rtp:routing-policy/rtp:policy-definitions/rtp:policy-definition/rtp:name"; } description "Name of a routing policy. Through the routing policy, the device matches the default routing entry generated by the device that does not run RIP in the routing table, and advertises the default route according to the parameters set through the routing policy."; } leaf advertise-tag { type rip-enable-flag; must "../advertise-tag='disable' or ../route-policy-name"; default "disable"; description "Inherit tag applied through route-policy."; } } // case route-policy-name case route-filter-name { description "Specify the name of a route-filter."; leaf route-filter-name { type leafref { path "/xpl:xpl/xpl:route-filters/xpl:route-filter/xpl:name"; } description "Name of a routing Filter The value is a string of 1 to 585 characters."; } } // case route-filter-name } // choice default-route-mode } // container default-route container bfd { description "Configure BFD for the process."; leaf enable { type rip-enable-flag; default "disable"; description "Enable BFD for the given RIP process."; } leaf min-tx { ext:dynamic-default; type uint32 { range "1..4294967295"; } units "ms"; description "Minimum interval for sending BFD packets to the neighbor. The value range and default value are controlled by the PAF."; } leaf min-rx { ext:dynamic-default; type uint32 { range "1..4294967295"; } units "ms"; description "Minimum interval for receiving BFD packets from the neighbor. The value range and default value are controlled by the PAF."; } leaf detect-multiplier { type uint32 { range "3..50"; } default "3"; description "Local detection multiplier."; } leaf min-tx-val { type uint32 { range "1..4294967295"; } config false; description "Minimum interval for sending BFD packets to the neighbor. The value range and default value are controlled by the PAF."; } leaf min-rx-val { type uint32 { range "1..4294967295"; } config false; description "Minimum interval for receiving BFD packets from the neighbor. The value range and default value are controlled by the PAF."; } } // container bfd container bfd-states { config false; description "List of the BFD state for the current process."; list bfd-state { key "interface-name local-ip remote-ip"; description "Statistics of the BFD state for the current process."; leaf interface-name { type pub-type:if-name; description "Interface from which a local router advertises BFD sessions."; } leaf local-ip { type inet:ipv4-address-no-zone; description "Local IP address."; } leaf remote-ip { type inet:ipv4-address-no-zone; description "Remote IP address."; } leaf state { type rip-bfd-state; description "BFD session status."; } } // list bfd-state } // container bfd-states container preference { description "Configure a preference value."; leaf value { type uint8 { range "1..255"; } default "100"; description "The configured priority applies to the routes to be delivered to the RM module. If RIP has added a route to the RM module, and then the priority is changed, RIP re-adds it with the new priority. The prerequisites for the priority configuration are as follows: 1. A RIP process has been created. 2. The policy to be applied has been configured."; } choice policy-type { description "Mode of the policy used for import route."; case route-policy { description "Set a route policy name."; leaf route-policy { type leafref { path "/rtp:routing-policy/rtp:policy-definitions/rtp:policy-definition/rtp:name"; } description "You can set a priority for the routes that match the policy, and the result is displayed in the routing table of the RM module. The prerequisites for the priority configuration are as follows: 1. A RIP process has been created. 2. The policy to be applied has been configured."; } } // case route-policy case route-filter { description "Set a route policy name."; leaf route-filter { type string { length "1..1809"; } description "Name of a routing Filter The value is a string of 1 to 585 characters."; } } // case route-filter } // choice policy-type } // container preference container interfaces { description "List of the interface. There can be multiple interfaces on which RIP is enabled."; list interface { key "name"; description "Configure the interface."; leaf name { type leafref { path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name"; } must "../../../../../../ni:name=/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:vrf-name"; description "Specify the name of an interface on which RIP is to be configured."; } choice max-packet-length { default "value"; description "Configure max packet length information."; case value { description "Max packet length value."; leaf value { type uint16 { range "32..65535"; } default "512"; description "If max packet length is more than the interface MTU, the interface MTU is used. The maximum size of RIP packets is 512 bytes. Using this packet size is not very efficient as it leads to wastage of some bandwidth. If the neighbor on the other side supports RIP packets of a greater size, then you can increase the packet size so that more routes can be sent in one packet. This configuration can increase the RIP packet size. After the packet size is increased, the router may fail to communicate with non-Huawei routers. Therefore, exercise caution when using this command. This command can be configured only if the other side can accept RIP packets of a size greater that 512 bytes."; } } // case value case mtu { description "Configure inteface MTU as max packet length."; leaf mtu { type empty; description "Specify that the maximum length of packets is equal to the interface MTU.If this is set, interface MTU configuration will be preferred to RIP configuration."; } } // case mtu } // choice max-packet-length leaf input { type rip-enable-flag; default "enable"; description "If the input is disabled, then no RIP packets will be received on that interface regardless of the unicast neighbor and silent configuration on that interface. When input is disabled and then enabled, it will send full table request packets."; } leaf output { type rip-enable-flag; default "enable"; description "If output is disabled, then no RIP packets will be sent on that interface regardless of the unicast neighbor and silent configuration on that interface. But if the max-route configuration changes, RIP requests may be sent regardless of the silent configuration on that interface."; } leaf version { type rip-version-type; default "rip-version-default"; description "The version configuration can be done on an interface to receive and advertise RIPv1 and RIPv2 packets. If the user wants to receive both RIPv1 and RIPv2 packets, then RIPv2 broadcast should be configured. But only RIPv2 broadcast packets will be sent. Configure the version based on the version of the neighbors on that interface."; } leaf split-horizon { type rip-enable-flag; default "enable"; description "Split horizon prevents a route from being advertised back on the interface from which was learned. Split horizon is not enabled on NBMA or P2MP interfaces because they have multiple neighbors."; } leaf poison-reverse { type rip-enable-flag; default "disable"; description "Poison reverse is disabled by default. Poison reverse can be enabled to advertise routes with infinite metric (16) on the interface from which the routes were learned. When both split horizon and poison reverse is configured, poison reverse will have a higher priority."; } leaf pkt-transmit-interval { type uint16 { range "50..500"; } default "200"; description "Interval at which packets are transmitted."; } leaf pkt-transmit-bandwidth { type uint8 { range "1..99"; } default "99"; description "Specify the percentage of the interface bandwidth to be used to send RIP updates."; } leaf pkt-transmit-number { type uint8 { range "25..100"; } default "50"; description "Number of packets that can be sent from an interface each time."; } container authentication { description "Configure the authentication type on the interface."; leaf mode { type rip-auth; default "none"; description "Specify the authentication type configured on this interface. Authentication password mismatch between sending and receiving side can cause packet drops on the receiving side. While RIP is using keychain authentication, if no valid password exist in keychain, then RIP packets will be sent and received without any authentication. The configuration on an interface has a higher priority over the configuration in a process. Before running the ripng authentication-mode command, a RIP process or an interface has been created."; } leaf simple { when "(../mode='simple') or (../mode='usual')"; type pub-type:password; mandatory true; description "Specify the password authentication. The password is a string ranging from 1 to 16 characters for a unencrypted password and 24 to 128 characters for a encrypted password."; } leaf key-id { when "(../mode='md5-keyid') or (../mode='hmac-sha256')"; type uint32 { range "0..255"; } mandatory true; description "Specify the ID to identify the key when encrypted authentication is used."; } leaf md5 { when "(../mode='md5-keyid') or (../mode='hmac-sha256')"; type pub-type:password-extend; mandatory true; description "Specify the password string when encrypted authentication is used."; } leaf keychain { ext:case-sensitivity "lower-only"; when "(../mode='md5-keychain')"; type string { length "1..47"; pattern '[^A-Z]+'; } mandatory true; description "Keychain name."; } } // container authentication container metricin { description "Configure the metricin on the interface."; leaf value { type uint8 { range "0..15"; } default "0"; description "Metricin is the mechanism to increase the incoming metric of routes learned through RIP. When RIP receives a route, the metric value configured on that interface is added before adding it to the RIP routing table. After the metric is added, if the metric is greater than 16, 16 is used as the metric."; } choice policy-type { description "Mode of the policy used for import route."; case ip-prefix { description "Set a name of the IP prefix list."; leaf ip-prefix { when "../value>0"; type leafref { path "/rtp:routing-policy/rtp:ipv4-prefix-filters/rtp:ipv4-prefix-filter/rtp:name"; } description "Specify the name of the IP prefix list to be configured along with metricin."; } } // case ip-prefix case acl-number { description "Set a number of the basic ACL."; leaf acl-number { when "../value>0"; type leafref { path "/acl:acl/acl:groups/acl:group/acl:identity"; } must "/acl:acl/acl:groups/acl:group[acl:identity=current()]/acl:type='basic'"; description "Specify the number of the basic ACL to be configured along with metricin."; } } // case acl-number case acl-name { description "Set a name of an basic ACL."; leaf acl-name { when "../value>0"; type leafref { path "/acl:acl/acl:groups/acl:group/acl:identity"; } must "/acl:acl/acl:groups/acl:group[acl:identity=current()]/acl:type='basic'"; description "Specify the name of an basic ACL to be configured along with metricin."; } } // case acl-name } // choice policy-type } // container metricin container metricout { description "Configure the metricout on the interface."; leaf value { type uint8 { range "1..15"; } default "1"; description "When RIP advertises a route, the metric value configured on an interface is added before sending the route. After the metric is added, if the value is greater than 16, 16 is used as the metric. When an ACL or IP prefix list is configured in the metricout command, the metric is applied only to those routes that match the ACL or IP prefix list. All other routes are sent with the default cost (1)."; } choice policy-type { description "Mode of the policy used for import route."; case ip-prefix { description "Set a name of the IP prefix list."; leaf ip-prefix { when "../value>1"; type leafref { path "/rtp:routing-policy/rtp:ipv4-prefix-filters/rtp:ipv4-prefix-filter/rtp:name"; } description "Specify the name of the IP prefix list to be configured along with metric out."; } } // case ip-prefix case acl-number { description "Set a number of the basic ACL."; leaf acl-number { when "../value>1"; type leafref { path "/acl:acl/acl:groups/acl:group/acl:identity"; } must "/acl:acl/acl:groups/acl:group[acl:identity=current()]/acl:type='basic'"; description "Specify the number of the basic ACL to be configured along with metric out."; } } // case acl-number case acl-name { description "Set a name of the basic ACL."; leaf acl-name { when "../value>1"; type leafref { path "/acl:acl/acl:groups/acl:group/acl:identity"; } must "/acl:acl/acl:groups/acl:group[acl:identity=current()]/acl:type='basic'"; description "Specify the name of the basic ACL to be configured along with metric out."; } } // case acl-name } // choice policy-type } // container metricout container bfd { description "Configure the BFD configuration on the interface."; leaf type { type rip-bfd-type; default "none"; description "Specify the type of BFD on the interface, dynamic, static, or block."; } leaf min-tx { ext:dynamic-default; type uint32 { range "1..4294967295"; } units "ms"; description "Minimum interval for sending BFD packets to the neighbor. The value range vary with the product."; } leaf min-rx { ext:dynamic-default; type uint32 { range "1..4294967295"; } units "ms"; description "Minimum interval for receiving BFD packets from the neighbor. The value range vary with the product."; } leaf detect-multiplier { type uint32 { range "3..50"; } default "3"; description "Local detection multiplier."; } } // container bfd container summarys { description "List of summary addresses configured for the interface."; list summary { key "address network-mask"; max-elements 128; description "Configure a summary class."; leaf address { type inet:ipv4-address-no-zone; description "Route summarization improves the scalability and efficiency of routers on large networks and reduces the routing table size. Instead of sending many routes to neighbors, a router sends only the route to the specified summarized address."; } leaf network-mask { type inet:ipv4-address-no-zone; description "Specify the mask for the summary address."; } leaf avoid-feedback { type rip-enable-flag; default "disable"; description "Prevent summarized routes from being sent back to the interface."; } } // list summary } // container summarys } // list interface } // container interfaces container interface-packets-statisticss { config false; description "List of Updates and packets statistics for interface."; list interface-packets-statistics { key "interface-name"; description "Statistics of Updates and packets statistics for interface."; leaf interface-name { type pub-type:if-name; description "Collect statistics on packets on the interface."; } leaf ip-address { type inet:ipv4-address-no-zone; description "IP address of the interface."; } leaf periodic-updates-sent-last-minutes { type uint32 { range "0..4294967295"; } description "Number of periodic Update packets within the last 1 minute that are sent by the interface."; } leaf periodic-updates-sent-last-five-minutes { type uint32 { range "0..4294967295"; } description "Number of periodic Update packets within the last 5 minute that are sent by the interface."; } leaf periodic-updates-sent-total { type uint32 { range "0..4294967295"; } description "Number of total periodic Update packets that are sent by the interface."; } leaf triggered-updates-sent-last-minutes { type uint32 { range "0..4294967295"; } description "Number of triggered Update packets within the last 1 minute that are sent by the interface."; } leaf triggered-updates-sent-last-five-minutes { type uint32 { range "0..4294967295"; } description "Number of triggered Update packets within the last 5 minute that are sent by the interface."; } leaf triggered-updates-sent-total { type uint32 { range "0..4294967295"; } description "Number of total triggered Update packets that are sent by the interface."; } leaf response-packets-sent-last-minutes { type uint32 { range "0..4294967295"; } description "Number of response packets within the last 1 minute that are sent by the interface."; } leaf response-packets-sent-last-five-minutes { type uint32 { range "0..4294967295"; } description "Number of response packets within the last 5 minute that are sent by the interface."; } leaf response-packets-sent-total { type uint32 { range "0..4294967295"; } description "Number of total response packets that are sent by the interface."; } leaf response-packets-received-last-minutes { type uint32 { range "0..4294967295"; } description "Number of response packets within the last 1 minute that are received by the interface."; } leaf response-packets-received-last-five-minutes { type uint32 { range "0..4294967295"; } description "Number of response packets within the last 5 minute that are received by the interface."; } leaf response-packets-received-total { type uint32 { range "0..4294967295"; } description "Number of total response packets that are received by the interface."; } leaf response-packets-ignored-last-minutes { type uint32 { range "0..4294967295"; } description "Number of response packets within the last 1 minute that are ignored by the interface."; } leaf response-packets-ignored-last-five-minutes { type uint32 { range "0..4294967295"; } description "Number of response packets within the last 5 minute that are ignored by the interface."; } leaf response-packets-ignored-total { type uint32 { range "0..4294967295"; } description "Number of total response packets that are ignored by the interface."; } leaf request-packets-sent-last-minutes { type uint32 { range "0..4294967295"; } description "Number of request packets within the last 1 minute that are sent by the interface."; } leaf request-packets-sent-last-five-minutes { type uint32 { range "0..4294967295"; } description "Number of request packets within the last 5 minute that are sent by the interface."; } leaf request-packets-sent-total { type uint32 { range "0..4294967295"; } description "Number of total request packets that are sent by the interface."; } leaf request-packets-received-last-minutes { type uint32 { range "0..4294967295"; } description "Number of request packets within the last 1 minute that are received by the interface."; } leaf request-packets-received-last-five-minutes { type uint32 { range "0..4294967295"; } description "Number of request packets within the last 5 minute that are received by the interface."; } leaf request-packets-received-total { type uint32 { range "0..4294967295"; } description "Number of total request packets that are received by the interface."; } leaf request-packets-ignored-last-minutes { type uint32 { range "0..4294967295"; } description "Number of request packets within the last 1 minute that are ignored by the interface."; } leaf request-packets-ignored-last-five-minutes { type uint32 { range "0..4294967295"; } description "Number of request packets within the last 5 minute that are ignored by the interface."; } leaf request-packets-ignored-total { type uint32 { range "0..4294967295"; } description "Number of total request packets that are ignored by the interface."; } leaf bad-packets-received-last-minutes { type uint32 { range "0..4294967295"; } description "Number of bad packets within the last 1 minute that are received by the interface."; } leaf bad-packets-received-last-five-minutes { type uint32 { range "0..4294967295"; } description "Number of bad packets within the last 5 minute that are received by the interface."; } leaf bad-packets-received-total { type uint32 { range "0..4294967295"; } description "Number of total bad packets that are received by the interface."; } leaf routes-received-last-minutes { type uint32 { range "0..4294967295"; } description "Number of routes within the last 1 minute that are received by the interface."; } leaf routes-received-last-five-minutes { type uint32 { range "0..4294967295"; } description "Number of routes within the last 5 minute that are received by the interface."; } leaf routes-received-total { type uint32 { range "0..4294967295"; } description "Number of total routes that are received by the interface."; } leaf routes-sent-last-minutes { type uint32 { range "0..4294967295"; } description "Number of routes within the last 1 minute that are sent by the interface."; } leaf routes-sent-last-five-minutes { type uint32 { range "0..4294967295"; } description "Number of routes within the last 5 minute that are sent by the interface."; } leaf routes-sent-total { type uint32 { range "0..4294967295"; } description "Number of total routes that are sent by the interface."; } leaf bad-routes-received-last-minutes { type uint32 { range "0..4294967295"; } description "Number of bad routes within the last 1 minute that are received by the interface."; } leaf bad-routes-received-last-five-minutes { type uint32 { range "0..4294967295"; } description "Number of bad routes within the last 5 minute that are received by the interface."; } leaf bad-routes-received-total { type uint32 { range "0..4294967295"; } description "Number of total bad routes that are received by the interface."; } leaf authentication-failed-packets-last-minutes { type uint32 { range "0..4294967295"; } description "Number of packets within the last 1 minute that fail to be authenticated."; } leaf authentication-failed-packets-last-five-minutes { type uint32 { range "0..4294967295"; } description "Number of packets within the last 5 minute that fail to be authenticated."; } leaf authentication-failed-packets-total { type uint32 { range "0..4294967295"; } description "Number of total packets that fail to be authenticated."; } leaf sent-failed-packets-last-minutes { type uint32 { range "0..4294967295"; } description "Number of packets within the last 1 minute that fail to be sent."; } leaf sent-failed-packets-last-five-minutes { type uint32 { range "0..4294967295"; } description "Number of packets within the last 5 minute that fail to be sent."; } leaf sent-failed-packets-total { type uint32 { range "0..4294967295"; } description "Number of total packets that fail to be sent."; } } // list interface-packets-statistics } // container interface-packets-statisticss container ecmp-groups { config false; description "List of ecmp group information of the process."; list ecmp-group { key "group-id"; description "Operational data of ecmp group statistics for the process."; leaf group-id { type uint32 { range "0..4294967295"; } description "ID of an ECMP group."; } leaf flag { type ecmp-group-flag; description "Route attribute:- D: Direct route ;- URT: Unicast route;- URT6: Unicast IPv6 route."; } leaf reference-count { type uint32 { range "0..4294967295"; } description "Number of routes using the ECMP group ID."; } container nexthops { description "List of ecmp group nexthop information."; list nexthop { key "nexthop-address"; description "Operational data of the nexthop for the ecmp group."; leaf nexthop-address { type inet:ipv4-address-no-zone; description "Next hop of route using the ECMP group ID."; } } // list nexthop } // container nexthops } // list ecmp-group } // container ecmp-groups container routes { config false; description "List of information about all the routes on the peer."; list route { key "destination mask-length nexthop interface-name"; description "Operational data of the route on the peer."; leaf destination { type inet:ipv4-address-no-zone; description "Destination IP address."; } leaf mask-length { type uint8 { range "1..255"; } description "Mask length of the route."; } leaf nexthop { type inet:ipv4-address-no-zone; description "Next hop of the route."; } leaf interface-name { type pub-type:if-name; description "Interface on which a neighbor was present."; } leaf peer-address { ext:support-filter "true"; type inet:ipv4-address-no-zone; description "Neighbor that is connected to the interface."; } leaf cost { type uint8 { range "1..255"; } description "Cost of the route."; } leaf tag { type uint16 { range "0..65535"; } description "Tag of the route."; } leaf flags { type string { length "1..4"; } description "First character to distinguish RIP routes from TRIP routes and the second character to indicate the route state."; } leaf state-time { type uint32 { range "0..4294967295"; } units "s"; description "Time during which a route remains in a specific state, Unit: second."; } } // list route } // container routes container database-routes { config false; description "List of information about all the database routes on the peer."; list database-route { key "destination mask-length nexthop"; description "Operational data of the database route on the peer."; leaf destination { type inet:ipv4-address-no-zone; description "Destination IP address."; } leaf mask-length { type uint8 { range "1..255"; } description "Mask length of the route."; } leaf nexthop { type inet:ipv4-address-no-zone; description "Next hop of the route."; } leaf cost { type uint8 { range "1..255"; } description "Cost of the route."; } leaf interface-name { type pub-type:if-name; description "Interface on which a neighbor was present."; } leaf tag { type uint16 { range "0..65535"; } description "Tag of the route."; } leaf source-type { type rip-route-source-type; description "Route source."; } } // list database-route } // container database-routes container statistics { config false; description "Statistics of then major information for the process."; leaf routes-in-database { type uint32 { range "0..4294967295"; } description "Number of routes in the database."; } leaf interfaces-enabled { type uint32 { range "0..4294967295"; } description "Number of the interfaces on which is enabled."; } leaf vrrp-interfaces { type uint32 { range "0..4294967295"; } description "Number of VRRP-capable interfaces."; } leaf trigger-updates-sent { type uint32 { range "0..4294967295"; } description "Number of sent triggered updates."; } leaf route-changes { type uint32 { range "0..4294967295"; } description "Statistics on the routes that have been changed in the database."; } leaf replies-to-queries { type uint32 { range "0..4294967295"; } description "Number of response packets to RIP queries."; } leaf routes-sendable-periodic { type uint32 { range "0..4294967295"; } description "Number of routes that can be sent in each update."; } leaf routes-send-last-periodic { type uint32 { range "0..4294967295"; } description "Number of routes that were sent in the last update."; } } // container statistics } // list process } // container processs container gtsm { description "Configure RIP GTSM."; leaf hops { type uint8 { range "1..255"; } description "Specify the TTL value."; } } // container gtsm } // container rip } } // module huawei-rip
© 2023 YumaWorks, Inc. All rights reserved.