draft-ietf-rtgwg-yang-rip-00.txt   draft-ietf-rtgwg-yang-rip-01.txt 
Network Working Group X. Liu Network Working Group X. Liu
Internet-Draft P. Sarda Internet-Draft P. Sarda
Intended status: Standards Track Ericsson Intended status: Standards Track Ericsson
Expires: February 3, 2016 V. Choudhary Expires: August 2, 2016 V. Choudhary
Huawei Technologies Huawei Technologies
August 3, 2015 February 2, 2016
A YANG Data Model for Routing Information Protocol (RIP) A YANG Data Model for Routing Information Protocol (RIP)
draft-ietf-rtgwg-yang-rip-00.txt draft-ietf-rtgwg-yang-rip-01.txt
Abstract Abstract
This document describes a data model for Routing Information Protocol This document describes a data model for the Routing Information
(RIP). Both RIP version 2 and RIPng are covered. Protocol (RIP). Both RIP version 2 and RIPng are covered.
Status of this Memo Status of this Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet- other groups may also distribute working documents as Internet-
Drafts. Drafts.
skipping to change at page 1, line 42 skipping to change at page 1, line 42
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html http://www.ietf.org/shadow.html
This Internet-Draft will expire on January 1, 2015. This Internet-Draft will expire on January 1, 2015.
Copyright Notice Copyright Notice
Copyright (c) 2015 IETF Trust and the persons identified as the Copyright (c) 2016 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction...................................................2 1. Introduction...................................................2
1.1. Terminology...............................................2 1.1. Terminology...............................................2
1.2. Tree Diagrams.............................................3
2. RIP YANG model overview........................................3 2. RIP YANG model overview........................................3
3. RIP YANG module................................................7 3. RIP YANG module................................................8
4. IANA Considerations...........................................28 4. IANA Considerations...........................................37
5. Security Considerations.......................................28 5. Security Considerations.......................................37
6. References....................................................29 6. References....................................................37
6.1. Normative References.....................................29 6.1. Normative References.....................................37
6.2. Informative References...................................29 6.2. Informative References...................................38
1. Introduction 1. Introduction
This document introduces a YANG [RFC6020] data model for Routing This document introduces a YANG [RFC6020] data model for the Routing
Information Protocol (RIP)[RFC2453][RFC2080]. RIP was designed to Information Protocol (RIP)[RFC2453][RFC2080]. RIP was designed to
work as an Interior Gateway Protocol (IGP) in moderate-size work as an Interior Gateway Protocol (IGP) in moderate-size
Autonomous Systems (AS). Autonomous Systems (AS).
This YANG model supports both RIP version 2 and RIPng. RIP version 2 This YANG model supports both RIP version 2 and RIPng. RIP version 2
defined in [RFC2453] supports IPv4. RIPng defined in [RFC2080] (defined in [RFC2453]) supports IPv4. RIPng (defined in [RFC2080])
supports IPv6. supports IPv6.
1.1. Terminology 1.1. Terminology
The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP "OPTIONAL" in this document are to be interpreted as described in BCP
14, [RFC2119]. 14, [RFC2119].
The following terms are defined in [RFC6020] and are not redefined The following terms are defined in [RFC6020] and are not redefined
skipping to change at page 2, line 48 skipping to change at page 3, line 4
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP "OPTIONAL" in this document are to be interpreted as described in BCP
14, [RFC2119]. 14, [RFC2119].
The following terms are defined in [RFC6020] and are not redefined The following terms are defined in [RFC6020] and are not redefined
here: here:
o augment o augment
o data model o data model
o data node o data node
1.2. Tree Diagrams
A simplified graphical representation of the data model is used in
this document. The meaning of the symbols in these diagrams is as
follows:
o Brackets "[" and "]" enclose list keys.
o Curly braces "{" and "}" contain names of optional features
that make the corresponding node conditional.
o Abbreviations before data node names: "rw" means configuration
(read-write), and "ro" means state data (read-only).
o Symbols after data node names: "?" means an optional node, "!"
means a presence container, and "*" denotes a list and leaf-
list.
o Parentheses enclose choice and case nodes, and case nodes are
also marked with a colon (":").
o Ellipsis ("...") stands for contents of subtrees that are not
shown.
2. RIP YANG model overview 2. RIP YANG model overview
This document defines the YANG module "ietf-rip", which has the This document defines the YANG module "ietf-rip", which has the
following structure: following structure:
module: ietf-rip module: ietf-rip
augment /rt:routing/rt:routing-instance/rt:routing-protocols augment /rt:routing/rt:routing-instance/rt:routing-protocols/
/rt:routing-protocol: rt:routing-protocol:
+--rw rip +--rw rip
+--rw originate-default-route! +--rw originate-default-route!
| +--rw route-map? string | +--rw route-policy? route-policy-ref
+--rw default-metric? uint8 +--rw default-metric? uint8
+--rw distance? uint8 +--rw distance? uint8
+--rw flash-update-threshold? uint8 +--rw triggered-update-threshold? uint8
+--rw maximum-paths? uint8 +--rw maximum-paths? uint8
+--rw output-delay? uint8 +--rw output-delay? uint8
+--rw distribute-list* [prefix-list-name direction] +--rw distribute-list* [prefix-set-name direction]
| +--rw prefix-list-name string | +--rw prefix-set-name prefix-set-ref
| +--rw direction enumeration | +--rw direction enumeration
| +--rw if-name? if:interface-ref | +--rw if-name? if:interface-ref
+--rw redistribute
| +--rw bgp* [asn]
| | +--rw asn inet:as-number
| | +--rw metric? uint8
| | +--rw route-policy? route-policy-ref
| +--rw cg-nat!
| | +--rw metric? uint8
| | +--rw route-policy? route-policy-ref
| +--rw connected!
| | +--rw metric? uint8
| | +--rw route-policy? route-policy-ref
| +--rw ipsec!
| | +--rw metric? uint8
| | +--rw route-policy? route-policy-ref
| +--rw isis* [instance]
| | +--rw instance leafref
| | +--rw level? enumeration
| | +--rw metric? uint8
| | +--rw route-policy? route-policy-ref
| +--rw nat!
| | +--rw metric? uint8
| | +--rw route-policy? route-policy-ref
| +--rw ospfv2* [instance]
| | +--rw instance leafref
| | +--rw route-type? ospf:route-type
| | +--rw metric? uint8
| | +--rw route-policy? route-policy-ref
| +--rw ospfv3* [instance]
| | +--rw instance leafref
| | +--rw route-type? ospf:route-type
| | +--rw metric? uint8
| | +--rw route-policy? route-policy-ref
| +--rw ripv2* [instance]
| | +--rw instance leafref
| | +--rw metric? uint8
| | +--rw route-policy? route-policy-ref
| +--rw ripng* [instance]
| | +--rw instance leafref
| | +--rw metric? uint8
| | +--rw route-policy? route-policy-ref
| +--rw static!
| +--rw metric? uint8
| +--rw route-policy? route-policy-ref
+--rw timers +--rw timers
| +--rw update-interval? uint16 | +--rw update-interval? uint16
| +--rw invalid-interval? uint16 | +--rw invalid-interval? uint16
| +--rw holddown-interval? uint16 | +--rw holddown-interval? uint16
| +--rw flush-interval? uint16 | +--rw flush-interval? uint16
+--rw interface* [interface] +--rw interface* [interface]
+--rw interface if:interface-ref +--rw interface if:interface-ref
+--rw authentication +--rw authentication
| +--rw (auth-type-selection)? | +--rw (auth-type-selection)?
| +--:(auth-key-chain) | +--:(auth-key-chain)
skipping to change at page 4, line 11 skipping to change at page 5, line 36
| +--:(sha-1) | +--:(sha-1)
| | +--rw sha-1? empty | | +--rw sha-1? empty
| +--:(hmac-sha-1) | +--:(hmac-sha-1)
| | +--rw hmac-sha-1? empty | | +--rw hmac-sha-1? empty
| +--:(hmac-sha-256) | +--:(hmac-sha-256)
| | +--rw hmac-sha-256? empty | | +--rw hmac-sha-256? empty
| +--:(hmac-sha-384) | +--:(hmac-sha-384)
| | +--rw hmac-sha-384? empty | | +--rw hmac-sha-384? empty
| +--:(hmac-sha-512) | +--:(hmac-sha-512)
| +--rw hmac-sha-512? empty | +--rw hmac-sha-512? empty
+--rw bfd? boolean {bfd}? +--rw bfd {bfd}?
| +--rw enabled? boolean
| +--rw local-multiplier? multiplier
| +--rw (interval-config-type)?
| +--:(tx-rx-intervals)
| | +--rw desired-min-tx-interval uint32
| | +--rw required-min-rx-interval uint32
| +--:(single-interval)
| +--rw min-interval uint32
+--rw cost? uint8 +--rw cost? uint8
+--rw neighbors {neighbor-configuration}? +--rw neighbors {neighbor-configuration}?
| +--rw neighbor* [address] | +--rw neighbor* [address]
| +--rw address inet:ip-address | +--rw address inet:ip-address
+--rw no-listen? empty +--rw no-listen? empty
+--rw no-supply? empty +--rw no-supply? empty
+--rw originate-default-route! +--rw originate-default-route!
| +--rw route-map? string | +--rw route-policy? route-policy-ref
+--rw split-horizon? enumeration +--rw split-horizon? enumeration
+--rw summary-address +--rw summary-address
| +--rw address? inet:ip-prefix | +--rw address? inet:ip-prefix
| +--rw metric? uint8 | +--rw metric? uint8
+--rw timers +--rw timers
+--rw update-interval? uint16 +--rw update-interval? uint16
+--rw invalid-interval? uint16 +--rw invalid-interval? uint16
+--rw holddown-interval? uint16 +--rw holddown-interval? uint16
+--rw flush-interval? uint16 +--rw flush-interval? uint16
augment /rt:routing-state/rt:routing-instance/rt:routing-protocols augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/
/rt:routing-protocol: rt:routing-protocol:
+--ro rip +--ro rip
+--ro originate-default-route! +--ro originate-default-route!
| +--ro route-map? string | +--ro route-policy? route-policy-ref
+--ro default-metric? uint8 +--ro default-metric? uint8
+--ro distance? uint8 +--ro distance? uint8
+--ro flash-update-threshold? uint8 +--ro triggered-update-threshold? uint8
+--ro maximum-paths? uint8 +--ro maximum-paths? uint8
+--ro output-delay? uint8 +--ro output-delay? uint8
+--ro distribute-list* [prefix-list-name direction] +--ro distribute-list* [prefix-set-name direction]
| +--ro prefix-list-name string | +--ro prefix-set-name prefix-set-ref
| +--ro direction enumeration | +--ro direction enumeration
| +--ro if-name? if:interface-ref | +--ro if-name? if:interface-ref
+--ro next-flash-update? uint32 +--ro next-triggered-update? uint32
+--ro num-of-routes? uint32 +--ro num-of-routes? uint32
+--ro routing-table-version? uint32
+--ro timers +--ro timers
| +--ro update-interval? uint16 | +--ro update-interval? uint16
| +--ro invalid-interval? uint16 | +--ro invalid-interval? uint16
| +--ro holddown-interval? uint16 | +--ro holddown-interval? uint16
| +--ro flush-interval? uint16 | +--ro flush-interval? uint16
+--ro interface* [interface] +--ro interface* [interface]
| +--ro interface if:interface-ref | +--ro interface if:interface-ref
| +--ro oper-status? enumeration | +--ro oper-status? enumeration
| +--ro cost? uint8 | +--ro cost? uint8
| +--ro listen? boolean | +--ro listen? boolean
skipping to change at page 5, line 40 skipping to change at page 7, line 31
| +--ro updates-sent? yang:counter32 | +--ro updates-sent? yang:counter32
+--ro ipv4 +--ro ipv4
| +--ro neighbors | +--ro neighbors
| | +--ro neighbor* [ipv4-address] | | +--ro neighbor* [ipv4-address]
| | +--ro ipv4-address inet:ipv4-address | | +--ro ipv4-address inet:ipv4-address
| | +--ro last-update? yang:date-and-time | | +--ro last-update? yang:date-and-time
| | +--ro bad-packets-rcvd? yang:counter32 | | +--ro bad-packets-rcvd? yang:counter32
| | +--ro bad-routes-rcvd? yang:counter32 | | +--ro bad-routes-rcvd? yang:counter32
| +--ro routes | +--ro routes
| +--ro route* [ipv4-prefix] | +--ro route* [ipv4-prefix]
| +--ro ipv4-prefix inet:ipv4-prefix | +--ro ipv4-prefix inet:ipv4-prefix
| +--ro next-hop? inet:ipv4-address | +--ro next-hop? inet:ipv4-
| +--ro interface? if:interface-ref address
| +--ro redistributed? boolean | +--ro interface? if:interface-ref
| +--ro route-type? enumeration | +--ro redistributed? boolean
| +--ro metric? uint8 | +--ro route-type? enumeration
| +--ro expire-time? uint16 | +--ro metric? uint8
| +--ro deleted? boolean | +--ro expire-time? uint16
| +--ro holddown? boolean | +--ro deleted? boolean
| +--ro need-flash? boolean | +--ro holddown? boolean
| +--ro need-download-to-rib? boolean | +--ro need-triggered-update? boolean
| +--ro inactive? boolean | +--ro inactive? boolean
| +--ro next-hop-flags? bits | +--ro flush-expire-before-holddown? boolean
+--ro ipv6 +--ro ipv6
| +--ro neighbors | +--ro neighbors
| | +--ro neighbor* [ipv6-address] | | +--ro neighbor* [ipv6-address]
| | +--ro ipv6-address inet:ipv6-address | | +--ro ipv6-address inet:ipv6-address
| | +--ro last-update? yang:date-and-time | | +--ro last-update? yang:date-and-time
| | +--ro bad-packets-rcvd? yang:counter32 | | +--ro bad-packets-rcvd? yang:counter32
| | +--ro bad-routes-rcvd? yang:counter32 | | +--ro bad-routes-rcvd? yang:counter32
| +--ro routes | +--ro routes
| +--ro route* [ipv6-prefix] | +--ro route* [ipv6-prefix]
| +--ro ipv6-prefix inet:ipv6-prefix | +--ro ipv6-prefix inet:ipv6-prefix
| +--ro next-hop? inet:ipv6-address | +--ro next-hop? inet:ipv6-
| +--ro interface? if:interface-ref address
| +--ro redistributed? boolean | +--ro interface? if:interface-ref
| +--ro route-type? enumeration | +--ro redistributed? boolean
| +--ro metric? uint8 | +--ro route-type? enumeration
| +--ro expire-time? uint16 | +--ro metric? uint8
| +--ro deleted? boolean | +--ro expire-time? uint16
| +--ro holddown? boolean | +--ro deleted? boolean
| +--ro need-flash? boolean | +--ro holddown? boolean
| +--ro need-download-to-rib? boolean | +--ro need-triggered-update? boolean
| +--ro inactive? boolean | +--ro inactive? boolean
| +--ro next-hop-flags? bits | +--ro flush-expire-before-holddown? boolean
+--ro statistics {global-statistics}? +--ro statistics {global-statistics}?
+--ro discontinuity-time? yang:date-and-time +--ro discontinuity-time? yang:date-and-time
+--ro requests-rcvd? yang:counter32 +--ro requests-rcvd? yang:counter32
+--ro requests-sent? yang:counter32 +--ro requests-sent? yang:counter32
+--ro responses-rcvd? yang:counter32 +--ro responses-rcvd? yang:counter32
+--ro responses-sent? yang:counter32 +--ro responses-sent? yang:counter32
rpcs: rpcs:
+---x clear-rip-route +---x clear-rip-route
+--ro input +---w input
+--ro instance-name? leafref +---w routing-instance? rt:routing-instance-ref
+---w rip-instance? Leafref
3. RIP YANG module 3. RIP YANG module
<CODE BEGINS> file "ietf-rip@2015-06-22.yang" <CODE BEGINS> file "ietf-rip@2016-01-28.yang"
module ietf-rip { module ietf-rip {
namespace "urn:ietf:params:xml:ns:yang:ietf-rip"; namespace "urn:ietf:params:xml:ns:yang:ietf-rip";
// replace with IANA namespace when assigned // replace with IANA namespace when assigned
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";
skipping to change at page 7, line 37 skipping to change at page 9, line 28
} }
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 {
prefix "bfd";
}
import routing-policy {
prefix "policy";
}
import ietf-ospf {
prefix "ospf";
}
organization "TBD"; organization "TBD";
contact "TBD"; contact "TBD";
description description
"This YANG module defines a model for managing Routing "This YANG module defines a model for managing Routing
Information Protocol (RIP), including RIP version 2 and RIPng."; Information Protocol (RIP), including RIP version 2 and RIPng.";
revision 2015-06-22 { revision 2016-01-28 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC 2453: RIP Version 2. "RFC 2453: RIP Version 2.
RFC 2080: RIPng for IPv6. RFC 2080: RIPng for IPv6.
RFC 1724: RIP Version 2 MIB Extension."; RFC 1724: RIP Version 2 MIB Extension.";
} }
/* /*
* Features * Features
*/ */
feature bfd {
description
"This feature indicates that the system supports BFD.";
}
feature bfd-protocol-parms {
description
"BFD protocol specific parameters support.";
}
feature global-statistics { feature global-statistics {
description description
"This feature indicates that the system supports collecting "This feature indicates that the system supports collecting
global statistic data."; global statistic data.";
} }
feature interface-statistics { feature interface-statistics {
description description
"This feature indicates that the system supports collecting "This feature indicates that the system supports collecting
per-interface statistic data."; per-interface statistic data.";
} }
feature bfd {
description
"This feature indicates that the system supports BFD.";
}
feature neighbor-configuration { feature neighbor-configuration {
description description
"This feature indicates that the system supports "This feature indicates that the system supports
neighbor configuration."; neighbor configuration.";
} }
/*
* Typedefs
*/
typedef prefix-set-ref {
type leafref {
path "/policy:routing-policy/policy:defined-sets/"
+ "policy:prefix-sets/policy:prefix-set/"
+ "policy:prefix-set-name";
}
description
"A type for a reference to a prefix list.";
}
typedef route-policy-ref {
type leafref {
path "/policy:routing-policy/policy:policy-definitions/"
+ "policy:policy-definition/policy:name";
}
description
"A type for a reference to a route policy.";
}
/* /*
* Identities * Identities
*/ */
identity rip { identity rip {
base "rt:routing-protocol"; base "rt:routing-protocol";
description "Identity for the RIP routing protocol."; description "Identity for the RIP routing protocol.";
} }
identity ripv2 { identity ripv2 {
base "rip:rip"; base "rip:rip";
description "RIPv2"; description "RIPv2";
} }
identity ripng { identity ripng {
base "rip:rip"; base "rip:rip";
description "RIPng"; description "RIPng";
} }
/* /*
* Groupings * Groupings
*/ */
grouping originate-default-route-container { grouping originate-default-route-container {
description description
"Container for setting of originating default route."; "Container for setting of originating default route.";
container originate-default-route { container originate-default-route {
presence "Present if originating default route is enabled."; presence "Present if originating default route is enabled.";
description description
skipping to change at page 9, line 26 skipping to change at page 12, line 16
*/ */
grouping originate-default-route-container { grouping originate-default-route-container {
description description
"Container for setting of originating default route."; "Container for setting of originating default route.";
container originate-default-route { container originate-default-route {
presence "Present if originating default route is enabled."; presence "Present if originating default route is enabled.";
description description
"Injects the default route into the RIP or RIPng "Injects the default route into the RIP or RIPng
instance."; instance.";
leaf route-map { leaf route-policy {
type string; type route-policy-ref;
description description
"The conditions of the route map are applied to the default "The conditions of the route policy are applied to the
default
route."; route.";
} }
} }
} }
grouping redistribute-container {
description
"Container of redistribute attributes.";
container redistribute {
description
"Redistributes routes learned from other routing protocols
into the RIP routing instance.";
list bgp {
key "asn";
description
"Redistributes routes from the specified BGP autonomous
system (AS) into the RIP routing instance.";
leaf asn {
type inet:as-number;
description
"BFP autonomous system (AS) number.";
}
uses redistribute-route-policy-attributes;
}
container cg-nat {
presence
"Present if Carrier Grade Network Address Translation
(CGNAT) routes are redistributed.";
description
"Carrier Grade Network Address Translation (CGNAT)
routes.";
uses redistribute-route-policy-attributes;
}
container connected {
presence
"Present if directly attached network routes are
redistributed.";
description
"Redistributes directly attached networks into the RIP
routing instance.";
uses redistribute-route-policy-attributes;
}
container ipsec {
presence
"Present if IP security routing instance routes
are redistributed.";
description
"Redistributes routes from the IP security routing
instance into the RIP routing instance.";
uses redistribute-route-policy-attributes;
}
list isis {
key "instance";
description
"Redistributes ISIS routes.";
leaf instance {
type leafref {
path "../../../../../rt:routing-protocol/rt:name";
}
must "../../../../../rt:routing-protocol"
+ "[rt:name = current()]/type = 'isis'" {
description
"The type of the routing protocol must be 'isis'";
}
description
"Redistributes routes from the specified IS-IS routing
instance into the RIP routing instance.";
}
leaf level {
type enumeration {
enum 1 {
description "ISIS level 1 routes.";
}
enum 2 {
description "ISIS level 1 routes.";
}
enum 1-2 {
description "ISIS level 1-2 routes.";
}
}
description
"ISIS level.";
}
uses redistribute-route-policy-attributes;
}
container nat {
presence
"Present if Network Address Translation (NAT) routes
are redistributed.";
description
"Redistributes Network Address Translation (NAT)
routes into the RIP routing instance.";
uses redistribute-route-policy-attributes;
}
list ospfv2 {
when "../../../rt:type = 'rip:ripv2'" {
description
"Applicable to RIPv2.";
}
key "instance";
description
"Redistributes routes from the specified OSPF routing
instance into the RIP routing instance.";
leaf instance {
type leafref {
path "../../../../../rt:routing-protocol/rt:name";
}
must "../../../../../rt:routing-protocol"
+ "[rt:name = current()]/type = 'ospfv2'" {
description
"The type of the routing protocol must be 'ospfv2'";
}
description
"OSPF instance ID. Redistributes routes from the
specified OSPF routing instance into the RIP routing
instance. ";
}
leaf route-type {
type ospf:route-type;
description
"Redistributes only those OSPF routes matching the
specified route type into the RIP routing instance.";
}
uses redistribute-route-policy-attributes;
}
list ospfv3 {
when "../../../rt:type = 'rip:ripng'" {
description
"Applicable to RIPng.";
}
key "instance";
description
"Redistributes routes from the specified OSPF routing
instance into the RIP routing instance.";
leaf instance {
type leafref {
path "../../../../../rt:routing-protocol/rt:name";
}
must "../../../../../rt:routing-protocol"
+ "[rt:name = current()]/type = 'ospfv3'" {
description
"The type of the routing protocol must be 'ospfv3'";
}
description
"OSPF instance ID. Redistributes routes from the
specified OSPF routing instance into the RIP routing
instance. ";
}
leaf route-type {
type ospf:route-type;
description
"Redistributes only those OSPF routes matching the
specified route type into the RIP routing instance.";
}
uses redistribute-route-policy-attributes;
}
list ripv2 {
when "../../../rt:type = 'rip:ripv2'" {
description
"Applicable to RIPv2.";
}
key "instance";
description
"Redistributes routes from another RIP routing instance
into the current RIP routing instance.";
leaf instance {
type leafref {
path "../../../../../rt:routing-protocol/rt:name";
}
must "../../../../../rt:routing-protocol"
+ "[rt:name = current()]/type = 'ripv2'" {
description
"The type of the routing protocol must be 'ripv2'";
}
description
"Redistributes routes from the specified RIP routing
instance into the RIP routing instance.";
}
uses redistribute-route-policy-attributes;
}
list ripng {
when "../../../rt:type = 'rip:ripng'" {
description
"Applicable to RIPng.";
}
key "instance";
description
"Redistributes routes from another RIPng routing instance
into the current RIPng routing instance.";
leaf instance {
type leafref {
path "../../../../../rt:routing-protocol/rt:name";
}
must "../../../../../rt:routing-protocol"
+ "[rt:name = current()]/type = 'ripng'" {
description
"The type of the routing protocol must be 'ripng'";
}
description
"Redistributes routes from the specified RIPng routing
instance into the RIPng routing instance.";
}
uses redistribute-route-policy-attributes;
}
container static {
presence "Present if redistributing static routes.";
description
"Redistributes static routes into the RIP routing
instance.";
uses redistribute-route-policy-attributes;
}
} // redistribute
} // redistribute-container
grouping redistribute-route-policy-attributes {
description
"Attributes for redistributing a route policy.";
leaf metric {
type uint8 {
range 0..16;
}
description
"Metric used for the redistributed route. If a metric is
not specified, the metric configured with the
default-metric attribute in RIP router configuration is
used. If the default-metric attribute has not been
configured, the default metric for redistributed routes
is 0.";
}
leaf route-policy {
type route-policy-ref;
description
"Applies the conditions of the specified route policy to
routes that are redistributed into the RIP routing
instance.";
}
} // 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" {
skipping to change at page 11, line 38 skipping to change at page 20, line 17
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 RIP or RIPng for the "The administrative distance of the RIP or RIPng for the
current RIP or RIPng instance."; current RIP or RIPng instance.";
} }
leaf flash-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
"The minimum interval between consecutive RIP or RIPng "This attribute is used to suppress triggered updates.
flash updates."; When the arrival of a regularly scheduled update matches the
number of seconds or is less than the number seconds
configured with this attribute, the triggered update is
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 RIP or RIPng routes "The number of multiple equal-cost RIP 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
skipping to change at page 12, line 34 skipping to change at page 21, line 17
description description
"A delay time between packets sent in multipacket "A delay time between packets sent in multipacket
RIP or RIPng updates."; RIP 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-list-name direction"; key "prefix-set-name direction";
description description
"List of distribute-lists, which are used to filter in-coming "List of distribute-lists, which are used to filter in-coming
or out-going routing updates."; or out-going routing updates.";
leaf prefix-list-name { leaf prefix-set-name {
type string; type prefix-set-ref;
description description
"Reference to a prefix list to be applied to RIP or "Reference to a prefix list to be applied to RIP or
RIPng packets."; RIPng packets.";
} }
leaf direction { leaf direction {
type enumeration { type enumeration {
enum "in" { enum "in" {
description description
"Apply the distribute-list to in-coming routes."; "Apply the distribute-list to in-coming routes.";
} }
enum "out" { enum "out" {
description description
"Apply the distribute-list to out-going routes."; "Apply the distribute-list to out-going routes.";
} }
skipping to change at page 14, line 34 skipping to change at page 23, line 15
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-flash { leaf need-triggered-update {
type boolean;
description "The route needs flash.";
}
leaf need-download-to-rib {
type boolean; type boolean;
description "The route needs to be downloaded to rib."; 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 next-hop-flags { leaf flush-expire-before-holddown {
type bits { type boolean;
bit withdrawn-from-rib { description
description "The route is withdrawn from rib."; "The flush timer expired before holddown time.";
}
bit holddown {
description "The route is holddown.";
}
bit flush-expire-before-holddown {
description
"The flush timer expired before holddown time.";
}
}
description "The next hop properties of the route.";
} }
} // route-attribute } // route-attribute
/* /*
* Configuration data nodes * Configuration data nodes
*/ */
augment "/rt:routing/rt:routing-instance/rt:routing-protocols/" augment "/rt:routing/rt:routing-instance/rt:routing-protocols/"
+ "rt:routing-protocol" { + "rt:routing-protocol" {
when "rt:type = 'rip:ripv2' or rt:type = 'rip:ripng'" { when "rt:type = 'rip:ripv2' or rt:type = 'rip:ripng'" {
skipping to change at page 15, line 40 skipping to change at page 24, line 8
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 configuration data."; "RIP configuration data.";
uses global-attributes; uses global-attributes;
uses distribute-lists; uses distribute-lists;
uses redistribute-container;
uses timers-container; uses timers-container;
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 "(../../../rt:type = 'rip:ripv2' and " must "(../../../rt:type = 'rip:ripv2' and "
+ "/if:interfaces/if:interface[name=current()]/" + "/if:interfaces/if:interface[name=current()]/"
skipping to change at page 17, line 19 skipping to change at page 25, line 30
container crypto-algorithm { container crypto-algorithm {
uses key-chain:crypto-algorithm-types; uses key-chain:crypto-algorithm-types;
description description
"Cryptographic algorithm associated with key."; "Cryptographic algorithm associated with key.";
} }
} }
} }
} }
leaf bfd { container bfd {
if-feature bfd; if-feature bfd;
type boolean; description "BFD operation.";
description leaf enabled {
"Enable/disable bfd."; type boolean;
description
"True if BFD is enabled for the interface.";
}
uses bfd:bfd-grouping-base-cfg-parms {
if-feature bfd-protocol-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 neighbor-configuration; if-feature neighbor-configuration;
description description
"Specifies the RIP neighbors. Useful for a non-broadcast "Specifies the RIP neighbors. Useful for a non-broadcast
skipping to change at page 20, line 11 skipping to change at page 28, line 28
of type 'ripv2' or 'ripng'."; of type 'ripv2' or 'ripng'.";
} }
description description
"RIP state."; "RIP state.";
container rip { container rip {
description "RIP operational state."; description "RIP operational state.";
uses global-attributes; uses global-attributes;
uses distribute-lists; uses distribute-lists;
leaf next-flash-update { leaf next-triggered-update {
type uint32; type uint32;
description description
"Next flash update."; "Next triggered update.";
} }
leaf num-of-routes { leaf num-of-routes {
type uint32; type uint32;
description description
"The number of routes."; "The number of routes.";
} }
leaf routing-table-version {
type uint32;
description
"Routing table version.";
}
uses timers-container; uses timers-container;
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;
description description
skipping to change at page 28, line 12 skipping to change at page 36, line 23
* 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 the RIP protocol for the specified RIP redistributed into the RIP protocol for the specified RIP
instance or for all RIP instances in the current context."; instance or for all RIP instances in the current context.";
input { input {
leaf instance-name { leaf routing-instance {
type rt:routing-instance-ref;
description
"Routing instance name identifying a specific routing
instance.
This leaf is optional for the rpc.
If it is specified, the rpc will clear routes in the
specified routing instance;
if it is not specified, the rpc will clear all routes in
all routing instances.";
}
leaf rip-instance {
type leafref { type leafref {
path "/rt:routing/rt:routing-instance/" path "/rt:routing/rt:routing-instance"
+ "[rt:name=current()/../routing-instance]/"
+ "rt:routing-protocols/rt:routing-protocol/rt:name"; + "rt:routing-protocols/rt:routing-protocol/rt:name";
} }
description description
"Instance name identifying the specific RIP Instance."; "Instance name identifying a specific RIP instance.
This leaf is optional for the rpc.
If it is specified, the rpc will clear all routes in the
specified RIP instance;
if it is not specified, the rpc will clear all routes in
all RIP instances.";
} }
} }
} // rcp clear-rip-route } // rcp clear-rip-route
} }
<CODE ENDS> <CODE ENDS>
4. IANA Considerations 4. IANA Considerations
RFC Ed.: In this section, replace all occurrences of 'XXXX' with the RFC Ed.: In this section, replace all occurrences of 'XXXX' with the
actual RFC number (and remove this note). actual RFC number (and remove this note).
skipping to change at page 30, line 8 skipping to change at page 39, line 8
RFC1724, November 1994. RFC1724, November 1994.
6.2. Informative References 6.2. Informative References
[RFC6087] Bierman, A., "Guidelines for Authors and Reviewers of YANG [RFC6087] Bierman, A., "Guidelines for Authors and Reviewers of YANG
Data Model Documents", RFC 6087, January 2011. Data Model Documents", RFC 6087, January 2011.
Authors' Addresses Authors' Addresses
Xufeng Liu Xufeng Liu
Ericsson Ericsson / Kuatro Technologies Inc.
1595 Spring Hill Road, Suite 500 8281 Greensboro Drive, Suite 200
Vienna, VA 22182 McLean, VA 22102
USA USA
Email: xufeng.liu@ericsson.com Email: xliu@kuatrotech.com
Prateek Sarda Prateek Sarda
Ericsson India Global Services Pvt. Ltd. Ericsson India Global Services Pvt. Ltd.
Fern Icon, Survey No 28 and 36/5, Doddanakundi Village Fern Icon, Survey No 28 and 36/5, Doddanakundi Village
Bangalore, Karnataka 560037 Bangalore, Karnataka 560037
India India
Email: prateek.sarda@ericsson.com Email: prateek.sarda@ericsson.com
Vikram Choudhary Vikram Choudhary
 End of changes. 53 change blocks. 
129 lines changed or deleted 486 lines changed or added

This html diff was produced by rfcdiff 1.42. The latest version is available from http://tools.ietf.org/tools/rfcdiff/