ietf-i2rs-rib@2018-08-06.yang   ietf-i2rs-ribxml.yang 
module ietf-i2rs-rib { module ietf-i2rs-rib {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-i2rs-rib"; namespace "urn:ietf:params:xml:ns:yang:ietf-i2rs-rib";
prefix "iir"; prefix iir;
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
reference "RFC 6991"; reference "RFC 6991";
} }
import ietf-interfaces { import ietf-interfaces {
prefix if; prefix if;
reference "RFC 8344"; reference "RFC 8344";
} }
import ietf-yang-types { import ietf-yang-types {
prefix yang; prefix yang;
reference "RFC 6991"; reference "RFC 6991";
} }
organization organization
"IETF I2RS (Interface to Routing System) Working Group"; "IETF I2RS (Interface to Routing System) Working Group";
contact contact
"WG Web: <https://datatracker.ietf.org/wg/i2rs/> "WG Web: <https://datatracker.ietf.org/wg/i2rs/>
WG List: <mailto:i2rs@ietf.org> WG List: <mailto:i2rs@ietf.org>
skipping to change at line 62 skipping to change at line 60
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8341; see This version of this YANG module is part of RFC 8341; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
revision "2018-08-06" { revision 2018-08-06 {
description "initial revision"; description
"initial revision";
reference "RFC 8431"; reference "RFC 8431";
} }
//Features //Features
feature nexthop-tunnel { feature nexthop-tunnel {
description description
"This feature means that a node supports "This feature means that a node supports
tunnel nexthop capability."; tunnel nexthop capability.";
} }
feature nexthop-chain { feature nexthop-chain {
description description
"This feature means that a node supports "This feature means that a node supports
chain nexthop capability."; chain nexthop capability.";
skipping to change at line 160 skipping to change at line 160
operations are derived. operations are derived.
The MPLS label stack operations include: The MPLS label stack operations include:
push - to add a new label to a label stack, push - to add a new label to a label stack,
pop - to pop the top label from a label stack, and pop - to pop the top label from a label stack, and
swap - to exchange the top label of a label swap - to exchange the top label of a label
stack with a new label."; stack with a new label.";
} }
identity label-push { identity label-push {
base "mpls-label-action"; base mpls-label-action;
description description
"MPLS label stack operation: push."; "MPLS label stack operation: push.";
} }
identity label-pop { identity label-pop {
base "mpls-label-action"; base mpls-label-action;
description description
"MPLS label stack operation: pop."; "MPLS label stack operation: pop.";
} }
identity label-swap { identity label-swap {
base "mpls-label-action"; base mpls-label-action;
description description
"MPLS label stack operation: swap."; "MPLS label stack operation: swap.";
} }
typedef mpls-label-action-definition { typedef mpls-label-action-definition {
type identityref { type identityref {
base "mpls-label-action"; base mpls-label-action;
} }
description description
"MPLS label action definition."; "MPLS label action definition.";
} }
identity tunnel-decapsulation-action { identity tunnel-decapsulation-action {
description description
"Base identity from which all tunnel decapsulation "Base identity from which all tunnel decapsulation
actions are derived. actions are derived.
Tunnel decapsulation actions include Tunnel decapsulation actions include
ipv4-decapsulation (to decapsulate an IPv4 tunnel) and ipv4-decapsulation (to decapsulate an IPv4 tunnel) and
ipv6-decapsulation (to decapsulate an IPv6 tunnel)."; ipv6-decapsulation (to decapsulate an IPv6 tunnel).";
} }
identity ipv4-decapsulation { identity ipv4-decapsulation {
base "tunnel-decapsulation-action"; base tunnel-decapsulation-action;
description description
"IPv4 tunnel decapsulation."; "IPv4 tunnel decapsulation.";
} }
identity ipv6-decapsulation { identity ipv6-decapsulation {
base "tunnel-decapsulation-action"; base tunnel-decapsulation-action;
description description
"IPv6 tunnel decapsulation."; "IPv6 tunnel decapsulation.";
} }
typedef tunnel-decapsulation-action-definition { typedef tunnel-decapsulation-action-definition {
type identityref { type identityref {
base "tunnel-decapsulation-action"; base tunnel-decapsulation-action;
} }
description description
"Tunnel decapsulation definition."; "Tunnel decapsulation definition.";
} }
identity ttl-action { identity ttl-action {
description description
"Base identity from which all TTL "Base identity from which all TTL
actions are derived."; actions are derived.";
} }
identity no-action { identity no-action {
base "ttl-action"; base ttl-action;
description description
"Do nothing regarding the TTL."; "Do nothing regarding the TTL.";
} }
identity copy-to-inner { identity copy-to-inner {
base "ttl-action"; base ttl-action;
description description
"Copy the TTL of the outer header "Copy the TTL of the outer header
to the inner header."; to the inner header.";
} }
identity decrease-and-copy-to-inner { identity decrease-and-copy-to-inner {
base "ttl-action"; base ttl-action;
description description
"Decrease TTL by one and copy the TTL "Decrease TTL by one and copy the TTL
to the inner header."; to the inner header.";
} }
identity decrease-and-copy-to-next { identity decrease-and-copy-to-next {
base "ttl-action"; base ttl-action;
description description
"Decrease TTL by one and copy the TTL "Decrease TTL by one and copy the TTL
to the next header; for example, when to the next header; for example, when
MPLS label swapping, decrease the TTL MPLS label swapping, decrease the TTL
of the in_label and copy it to the of the in_label and copy it to the
out_label."; out_label.";
} }
typedef ttl-action-definition { typedef ttl-action-definition {
type identityref { type identityref {
base "ttl-action"; base ttl-action;
} }
description description
"TTL action definition."; "TTL action definition.";
} }
identity hop-limit-action { identity hop-limit-action {
description description
"Base identity from which all hop limit "Base identity from which all hop limit
actions are derived."; actions are derived.";
} }
identity hop-limit-no-action { identity hop-limit-no-action {
base "hop-limit-action"; base hop-limit-action;
description description
"Do nothing regarding the hop limit."; "Do nothing regarding the hop limit.";
} }
identity hop-limit-copy-to-inner { identity hop-limit-copy-to-inner {
base "hop-limit-action"; base hop-limit-action;
description description
"Copy the hop limit of the outer header "Copy the hop limit of the outer header
to the inner header."; to the inner header.";
} }
typedef hop-limit-action-definition { typedef hop-limit-action-definition {
type identityref { type identityref {
base "hop-limit-action"; base hop-limit-action;
} }
description description
"IPv6 hop limit action definition."; "IPv6 hop limit action definition.";
} }
identity special-nexthop { identity special-nexthop {
description description
"Base identity from which all special "Base identity from which all special
nexthops are derived."; nexthops are derived.";
} }
identity discard { identity discard {
base "special-nexthop"; base special-nexthop;
description description
"This indicates that the network "This indicates that the network
device should drop the packet and device should drop the packet and
increment a drop counter."; increment a drop counter.";
} }
identity discard-with-error { identity discard-with-error {
base "special-nexthop"; base special-nexthop;
description description
"This indicates that the network "This indicates that the network
device should drop the packet, device should drop the packet,
increment a drop counter, and send increment a drop counter, and send
back an appropriate error message back an appropriate error message
(like ICMP error)."; (like ICMP error).";
} }
identity receive { identity receive {
base "special-nexthop"; base special-nexthop;
description description
"This indicates that the traffic is "This indicates that the traffic is
destined for the network device, e.g., destined for the network device, e.g.,
protocol packets or Operations, protocol packets or Operations,
Administration, and Maintenance (OAM) packets. Administration, and Maintenance (OAM) packets.
All locally destined traffic SHOULD be All locally destined traffic SHOULD be
throttled to avoid a denial-of-service throttled to avoid a denial-of-service
attack on the router's control plane. An attack on the router's control plane. An
optional rate-limiter can be specified optional rate-limiter can be specified
to indicate how to throttle traffic to indicate how to throttle traffic
destined for the control plane."; destined for the control plane.";
} }
identity cos-value { identity cos-value {
base "special-nexthop"; base special-nexthop;
description description
"Cos-value special nexthop."; "Cos-value special nexthop.";
} }
typedef special-nexthop-definition { typedef special-nexthop-definition {
type identityref { type identityref {
base "special-nexthop"; base special-nexthop;
} }
description description
"Special nexthop definition."; "Special nexthop definition.";
} }
identity ip-route-match-type { identity ip-route-match-type {
description description
"Base identity from which all route "Base identity from which all route
match types are derived. match types are derived.
The route match type could be: The route match type could be:
match source, or match source, or
match destination, or match destination, or
match source and destination."; match source and destination.";
} }
identity match-ip-src { identity match-ip-src {
base "ip-route-match-type"; base ip-route-match-type;
description description
"Source route match type."; "Source route match type.";
} }
identity match-ip-dest { identity match-ip-dest {
base "ip-route-match-type"; base ip-route-match-type;
description description
"Destination route match type"; "Destination route match type";
} }
identity match-ip-src-dest { identity match-ip-src-dest {
base "ip-route-match-type"; base ip-route-match-type;
description description
"Source and Destination route match type"; "Source and Destination route match type";
} }
typedef ip-route-match-type-definition { typedef ip-route-match-type-definition {
type identityref { type identityref {
base "ip-route-match-type"; base ip-route-match-type;
} }
description description
"IP route match type definition."; "IP route match type definition.";
} }
identity address-family { identity address-family {
description description
"Base identity from which all RIB "Base identity from which all RIB
address families are derived."; address families are derived.";
} }
identity ipv4-address-family { identity ipv4-address-family {
base "address-family"; base address-family;
description description
"IPv4 RIB address family."; "IPv4 RIB address family.";
} }
identity ipv6-address-family { identity ipv6-address-family {
base "address-family"; base address-family;
description description
"IPv6 RIB address family."; "IPv6 RIB address family.";
} }
identity mpls-address-family { identity mpls-address-family {
base "address-family"; base address-family;
description description
"MPLS RIB address family."; "MPLS RIB address family.";
} }
identity ieee-mac-address-family { identity ieee-mac-address-family {
base "address-family"; base address-family;
description description
"MAC RIB address family."; "MAC RIB address family.";
} }
typedef address-family-definition { typedef address-family-definition {
type identityref { type identityref {
base "address-family"; base address-family;
} }
description description
"RIB address family definition."; "RIB address family definition.";
} }
identity route-type { identity route-type {
description description
"Base identity from which all route types "Base identity from which all route types
are derived."; are derived.";
} }
identity ipv4-route { identity ipv4-route {
base "route-type"; base route-type;
description description
"IPv4 route type."; "IPv4 route type.";
} }
identity ipv6-route { identity ipv6-route {
base "route-type"; base route-type;
description description
"IPv6 route type."; "IPv6 route type.";
} }
identity mpls-route { identity mpls-route {
base "route-type"; base route-type;
description description
"MPLS route type."; "MPLS route type.";
} }
identity ieee-mac { identity ieee-mac {
base "route-type"; base route-type;
description description
"MAC route type."; "MAC route type.";
} }
identity interface { identity interface {
base "route-type"; base route-type;
description description
"Interface route type."; "Interface route type.";
} }
typedef route-type-definition { typedef route-type-definition {
type identityref { type identityref {
base "route-type"; base route-type;
} }
description description
"Route type definition."; "Route type definition.";
} }
identity tunnel-type { identity tunnel-type {
description description
"Base identity from which all tunnel "Base identity from which all tunnel
types are derived."; types are derived.";
} }
identity ipv4-tunnel { identity ipv4-tunnel {
base "tunnel-type"; base tunnel-type;
description description
"IPv4 tunnel type"; "IPv4 tunnel type";
} }
identity ipv6-tunnel { identity ipv6-tunnel {
base "tunnel-type"; base tunnel-type;
description description
"IPv6 tunnel type"; "IPv6 tunnel type";
} }
identity mpls-tunnel { identity mpls-tunnel {
base "tunnel-type"; base tunnel-type;
description description
"MPLS tunnel type"; "MPLS tunnel type";
} }
identity gre-tunnel { identity gre-tunnel {
base "tunnel-type"; base tunnel-type;
description description
"GRE tunnel type"; "GRE tunnel type";
} }
identity vxlan-tunnel { identity vxlan-tunnel {
base "tunnel-type"; base tunnel-type;
description description
"VXLAN tunnel type"; "VXLAN tunnel type";
} }
identity nvgre-tunnel { identity nvgre-tunnel {
base "tunnel-type"; base tunnel-type;
description description
"NVGRE tunnel type"; "NVGRE tunnel type";
} }
typedef tunnel-type-definition { typedef tunnel-type-definition {
type identityref { type identityref {
base "tunnel-type"; base tunnel-type;
} }
description description
"Tunnel type definition."; "Tunnel type definition.";
} }
identity route-state { identity route-state {
description description
"Base identity from which all route "Base identity from which all route
states are derived."; states are derived.";
} }
identity active { identity active {
base "route-state"; base route-state;
description description
"Active state."; "Active state.";
} }
identity inactive { identity inactive {
base "route-state"; base route-state;
description description
"Inactive state."; "Inactive state.";
} }
typedef route-state-definition { typedef route-state-definition {
type identityref { type identityref {
base "route-state"; base route-state;
} }
description description
"Route state definition."; "Route state definition.";
} }
identity nexthop-state { identity nexthop-state {
description description
"Base identity from which all nexthop "Base identity from which all nexthop
states are derived."; states are derived.";
} }
identity resolved { identity resolved {
base "nexthop-state"; base nexthop-state;
description description
"Resolved nexthop state."; "Resolved nexthop state.";
} }
identity unresolved { identity unresolved {
base "nexthop-state"; base nexthop-state;
description description
"Unresolved nexthop state."; "Unresolved nexthop state.";
} }
typedef nexthop-state-definition { typedef nexthop-state-definition {
type identityref { type identityref {
base "nexthop-state"; base nexthop-state;
} }
description description
"Nexthop state definition."; "Nexthop state definition.";
} }
identity route-installed-state { identity route-installed-state {
description description
"Base identity from which all route "Base identity from which all route
installed states are derived."; installed states are derived.";
} }
identity uninstalled { identity uninstalled {
base "route-installed-state"; base route-installed-state;
description description
"Uninstalled state."; "Uninstalled state.";
} }
identity installed { identity installed {
base "route-installed-state"; base route-installed-state;
description description
"Installed state."; "Installed state.";
} }
typedef route-installed-state-definition { typedef route-installed-state-definition {
type identityref { type identityref {
base "route-installed-state"; base route-installed-state;
} }
description description
"Route installed state definition."; "Route installed state definition.";
} }
//Route Change Reason Identities //Route Change Reason Identities
identity route-change-reason { identity route-change-reason {
description description
"Base identity from which all route change "Base identity from which all route change
reasons are derived."; reasons are derived.";
} }
identity lower-route-preference { identity lower-route-preference {
base "route-change-reason"; base route-change-reason;
description description
"This route was installed in the FIB because it had "This route was installed in the FIB because it had
a lower route preference value (and thus was more a lower route preference value (and thus was more
preferred) than the route it replaced."; preferred) than the route it replaced.";
} }
identity higher-route-preference { identity higher-route-preference {
base "route-change-reason"; base route-change-reason;
description description
"This route was uninstalled from the FIB because it had "This route was uninstalled from the FIB because it had
a higher route preference value (and thus was less a higher route preference value (and thus was less
preferred) than the route that replaced it."; preferred) than the route that replaced it.";
} }
identity resolved-nexthop { identity resolved-nexthop {
base "route-change-reason"; base route-change-reason;
description description
"This route was made active because at least "This route was made active because at least
one of its nexthops was resolved."; one of its nexthops was resolved.";
} }
identity unresolved-nexthop { identity unresolved-nexthop {
base "route-change-reason"; base route-change-reason;
description description
"This route was made inactive because all of "This route was made inactive because all of
its nexthops are unresolved."; its nexthops are unresolved.";
} }
typedef route-change-reason-definition { typedef route-change-reason-definition {
type identityref { type identityref {
base "route-change-reason"; base route-change-reason;
} }
description description
"Route change reason definition."; "Route change reason definition.";
} }
typedef nexthop-preference-definition { typedef nexthop-preference-definition {
type uint8 { type uint8 {
range "1..99"; range "1..99";
} }
description description
skipping to change at line 668 skipping to change at line 670
nexthops. The value 0 is reserved for equal nexthops. The value 0 is reserved for equal
load-balancing and, if applied, MUST be applied load-balancing and, if applied, MUST be applied
to all member nexthops. to all member nexthops.
Note that the weight of 0 is special because of Note that the weight of 0 is special because of
historical reasons. It's typically used in historical reasons. It's typically used in
hardware devices to signify ECMP."; hardware devices to signify ECMP.";
} }
typedef nexthop-ref { typedef nexthop-ref {
type leafref { type leafref {
path "/iir:routing-instance" + path "/iir:routing-instance/iir:rib-list/iir:route-list/iir:nexthop/iir:nexthop-id";
"/iir:rib-list" +
"/iir:route-list" +
"/iir:nexthop" +
"/iir:nexthop-id";
} }
description description
"A nexthop reference that provides "A nexthop reference that provides
an indirection reference to a nexthop."; an indirection reference to a nexthop.";
} }
//Groupings //Groupings
grouping route-prefix { grouping route-prefix {
description description
"The common attributes used for all types of route prefixes."; "The common attributes used for all types of route prefixes.";
leaf route-index { leaf route-index {
type uint64 ; type uint64;
mandatory true; mandatory true;
description description
"Route index."; "Route index.";
} }
container match { container match {
description description
"The match condition specifies the "The match condition specifies the
kind of route (IPv4, MPLS, etc.) kind of route (IPv4, MPLS, etc.)
and the set of fields to match on."; and the set of fields to match on.";
choice route-type { choice route-type {
skipping to change at line 800 skipping to change at line 800
} }
} }
} }
} }
} }
} }
case mpls-route { case mpls-route {
description description
"MPLS route case."; "MPLS route case.";
leaf mpls-label { leaf mpls-label {
type uint32 ; type uint32;
mandatory true; mandatory true;
description description
"The label used for matching."; "The label used for matching.";
} }
} }
case mac-route { case mac-route {
description description
"MAC route case."; "MAC route case.";
leaf mac-address { leaf mac-address {
type yang:mac-address; type yang:mac-address;
skipping to change at line 976 skipping to change at line 976
description description
"Nexthop type options."; "Nexthop type options.";
case nexthop-base { case nexthop-base {
container nexthop-base { container nexthop-base {
description description
"The base nexthop."; "The base nexthop.";
uses nexthop-base; uses nexthop-base;
} }
} }
case nexthop-chain { case nexthop-chain {
if-feature nexthop-chain; if-feature "nexthop-chain";
container nexthop-chain { container nexthop-chain {
description description
"A chain nexthop."; "A chain nexthop.";
uses nexthop-list; uses nexthop-list;
} }
} }
case nexthop-replicate { case nexthop-replicate {
if-feature nexthop-replicate; if-feature "nexthop-replicate";
container nexthop-replicate { container nexthop-replicate {
description description
"A replicates nexthop."; "A replicates nexthop.";
uses nexthop-list; uses nexthop-list;
} }
} }
case nexthop-protection { case nexthop-protection {
if-feature nexthop-protection; if-feature "nexthop-protection";
container nexthop-protection { container nexthop-protection {
description description
"A protection nexthop."; "A protection nexthop.";
uses nexthop-list-p; uses nexthop-list-p;
} }
} }
case nexthop-load-balance { case nexthop-load-balance {
if-feature nexthop-load-balance; if-feature "nexthop-load-balance";
container nexthop-lb { container nexthop-lb {
description description
"A load-balance nexthop."; "A load-balance nexthop.";
uses nexthop-list-w; uses nexthop-list-w;
} }
} }
} }
} }
grouping nexthop-base { grouping nexthop-base {
skipping to change at line 1024 skipping to change at line 1024
description description
"Nexthop base type options."; "Nexthop base type options.";
case special-nexthop { case special-nexthop {
leaf special { leaf special {
type special-nexthop-definition; type special-nexthop-definition;
description description
"A special nexthop."; "A special nexthop.";
} }
} }
case egress-interface-nexthop { case egress-interface-nexthop {
leaf outgoing-interface { leaf outgoing-interface {
type if:interface-ref; type if:interface-ref;
mandatory true; mandatory true;
description description
"The nexthop is an outgoing interface."; "The nexthop is an outgoing interface.";
} }
} }
case ipv4-address-nexthop { case ipv4-address-nexthop {
leaf ipv4-address { leaf ipv4-address {
type inet:ipv4-address; type inet:ipv4-address;
mandatory true; mandatory true;
description description
"The nexthop is an IPv4 address."; "The nexthop is an IPv4 address.";
} }
} }
case ipv6-address-nexthop { case ipv6-address-nexthop {
leaf ipv6-address { leaf ipv6-address {
type inet:ipv6-address; type inet:ipv6-address;
mandatory true; mandatory true;
description description
"The nexthop is an IPv6 address."; "The nexthop is an IPv6 address.";
} }
} }
case egress-interface-ipv4-nexthop { case egress-interface-ipv4-nexthop {
container egress-interface-ipv4-address{ container egress-interface-ipv4-address {
leaf outgoing-interface { leaf outgoing-interface {
type if:interface-ref; type if:interface-ref;
mandatory true; mandatory true;
description description
"Name of the outgoing interface."; "Name of the outgoing interface.";
} }
leaf ipv4-address { leaf ipv4-address {
type inet:ipv4-address; type inet:ipv4-address;
mandatory true; mandatory true;
description description
skipping to change at line 1111 skipping to change at line 1111
"The nexthop points to an interface with "The nexthop points to an interface with
a specific MAC address."; a specific MAC address.";
} }
description description
"The egress interface must be an Ethernet "The egress interface must be an Ethernet
interface. Address resolution is not required interface. Address resolution is not required
for this nexthop."; for this nexthop.";
} }
} }
case tunnel-encap-nexthop { case tunnel-encap-nexthop {
if-feature nexthop-tunnel; if-feature "nexthop-tunnel";
container tunnel-encap { container tunnel-encap {
uses tunnel-encap; uses tunnel-encap;
description description
"This can be an encapsulation representing an IP "This can be an encapsulation representing an IP
tunnel, MPLS tunnel, or others as defined in the info tunnel, MPLS tunnel, or others as defined in the info
model. An optional egress interface can be chained model. An optional egress interface can be chained
to the tunnel encapsulation to indicate which to the tunnel encapsulation to indicate which
interface to send the packet out on. The egress interface to send the packet out on. The egress
interface is useful when the network device interface is useful when the network device
contains Ethernet interfaces and one needs to contains Ethernet interfaces and one needs to
perform address resolution for the IP packet."; perform address resolution for the IP packet.";
} }
} }
case tunnel-decapsulation-nexthop { case tunnel-decapsulation-nexthop {
if-feature nexthop-tunnel; if-feature "nexthop-tunnel";
container tunnel-decapsulation { container tunnel-decapsulation {
uses tunnel-decapsulation; uses tunnel-decapsulation;
description description
"This is to specify the decapsulation of a tunnel header."; "This is to specify the decapsulation of a tunnel header.";
} }
} }
case logical-tunnel-nexthop { case logical-tunnel-nexthop {
if-feature nexthop-tunnel; if-feature "nexthop-tunnel";
container logical-tunnel { container logical-tunnel {
uses logical-tunnel; uses logical-tunnel;
description description
"This can be an MPLS Label Switched Path (LSP) "This can be an MPLS Label Switched Path (LSP)
or a GRE tunnel (or others as defined in this or a GRE tunnel (or others as defined in this
document) that is represented by a unique document) that is represented by a unique
identifier (e.g., name)."; identifier (e.g., name).";
} }
} }
case rib-name-nexthop { case rib-name-nexthop {
skipping to change at line 1420 skipping to change at line 1420
- Copy to inner label, or - Copy to inner label, or
- Decrease (the in-label) - Decrease (the in-label)
by 1 and copy to the out-label."; by 1 and copy to the out-label.";
} }
} }
} }
} }
} }
} }
grouping tunnel-encap{ grouping tunnel-encap {
description description
"Tunnel encapsulation information."; "Tunnel encapsulation information.";
choice tunnel-type { choice tunnel-type {
description description
"Tunnel options for nexthops."; "Tunnel options for nexthops.";
case ipv4 { case ipv4 {
if-feature ipv4-tunnel; if-feature "ipv4-tunnel";
container ipv4-header { container ipv4-header {
uses ipv4-header; uses ipv4-header;
description description
"IPv4 header."; "IPv4 header.";
} }
} }
case ipv6 { case ipv6 {
if-feature ipv6-tunnel; if-feature "ipv6-tunnel";
container ipv6-header { container ipv6-header {
uses ipv6-header; uses ipv6-header;
description description
"IPv6 header."; "IPv6 header.";
} }
} }
case mpls { case mpls {
if-feature mpls-tunnel; if-feature "mpls-tunnel";
container mpls-header { container mpls-header {
uses mpls-header; uses mpls-header;
description description
"MPLS header."; "MPLS header.";
} }
} }
case gre { case gre {
if-feature gre-tunnel; if-feature "gre-tunnel";
container gre-header { container gre-header {
uses gre-header; uses gre-header;
description description
"GRE header."; "GRE header.";
} }
} }
case nvgre { case nvgre {
if-feature nvgre-tunnel; if-feature "nvgre-tunnel";
container nvgre-header { container nvgre-header {
uses nvgre-header; uses nvgre-header;
description description
"NVGRE header."; "NVGRE header.";
} }
} }
case vxlan { case vxlan {
if-feature vxlan-tunnel; if-feature "vxlan-tunnel";
container vxlan-header { container vxlan-header {
uses vxlan-header; uses vxlan-header;
description description
"VXLAN header."; "VXLAN header.";
} }
} }
} }
} }
grouping tunnel-decapsulation { grouping tunnel-decapsulation {
description description
"Tunnel decapsulation information."; "Tunnel decapsulation information.";
choice tunnel-type { choice tunnel-type {
description description
"Nexthop tunnel type options."; "Nexthop tunnel type options.";
case ipv4 { case ipv4 {
if-feature ipv4-tunnel; if-feature "ipv4-tunnel";
container ipv4-decapsulation { container ipv4-decapsulation {
description description
"IPv4 decapsulation."; "IPv4 decapsulation.";
leaf ipv4-decapsulation { leaf ipv4-decapsulation {
type tunnel-decapsulation-action-definition; type tunnel-decapsulation-action-definition;
mandatory true; mandatory true;
description description
"IPv4 decapsulation operations."; "IPv4 decapsulation operations.";
} }
leaf ttl-action { leaf ttl-action {
type ttl-action-definition; type ttl-action-definition;
description description
"The ttl actions: "The ttl actions:
no-action or copy to inner header."; no-action or copy to inner header.";
} }
} }
} }
case ipv6 { case ipv6 {
if-feature ipv6-tunnel; if-feature "ipv6-tunnel";
container ipv6-decapsulation { container ipv6-decapsulation {
description description
"IPv6 decapsulation."; "IPv6 decapsulation.";
leaf ipv6-decapsulation { leaf ipv6-decapsulation {
type tunnel-decapsulation-action-definition; type tunnel-decapsulation-action-definition;
mandatory true; mandatory true;
description description
"IPv6 decapsulation operations."; "IPv6 decapsulation operations.";
} }
leaf hop-limit-action { leaf hop-limit-action {
type hop-limit-action-definition; type hop-limit-action-definition;
description description
"The hop limit actions: "The hop limit actions:
no-action or copy to inner header."; no-action or copy to inner header.";
} }
} }
} }
case mpls { case mpls {
if-feature mpls-tunnel; if-feature "mpls-tunnel";
container label-pop { container label-pop {
description description
"MPLS decapsulation."; "MPLS decapsulation.";
leaf label-pop { leaf label-pop {
type mpls-label-action-definition; type mpls-label-action-definition;
mandatory true; mandatory true;
description description
"Pop a label from the label stack."; "Pop a label from the label stack.";
} }
leaf ttl-action { leaf ttl-action {
skipping to change at line 1557 skipping to change at line 1557
mandatory true; mandatory true;
description description
"ROUTE_PREFERENCE: This is a numerical value that "ROUTE_PREFERENCE: This is a numerical value that
allows for comparing routes from different allows for comparing routes from different
protocols. Static configuration is also protocols. Static configuration is also
considered a protocol for the purpose of this considered a protocol for the purpose of this
field. It is also known as administrative-distance. field. It is also known as administrative-distance.
The lower the value, the higher the preference."; The lower the value, the higher the preference.";
} }
leaf local-only { leaf local-only {
type boolean ; type boolean;
mandatory true; mandatory true;
description description
"Indicate whether the attribute is local only."; "Indicate whether the attribute is local only.";
} }
container address-family-route-attributes{ container address-family-route-attributes {
description description
"Address-family-related route attributes."; "Address-family-related route attributes.";
choice route-type { choice route-type {
description description
"Address-family-related route attributes."; "Address-family-related route attributes.";
case ip-route-attributes { case ip-route-attributes;
} case mpls-route-attributes;
case mpls-route-attributes { case ethernet-route-attributes;
}
case ethernet-route-attributes {
}
} }
} }
} }
container routing-instance { container routing-instance {
description description
"A routing instance, in the context of "A routing instance, in the context of
the RIB information model, is a collection the RIB information model, is a collection
of RIBs, interfaces, and routing parameters."; of RIBs, interfaces, and routing parameters.";
leaf name { leaf name {
skipping to change at line 1752 skipping to change at line 1749
description description
"The numbers of the routes that fail "The numbers of the routes that fail
to be added/deleted/updated."; to be added/deleted/updated.";
} }
container failure-detail { container failure-detail {
description description
"The failure detail reflects the reason why a route "The failure detail reflects the reason why a route
operation fails. It is an array that includes the route operation fails. It is an array that includes the route
index and error code of the failed route."; index and error code of the failed route.";
list failed-routes { list failed-routes {
key "route-index"; key "route-index";
description description
"The list of failed routes."; "The list of failed routes.";
leaf route-index { leaf route-index {
type uint32; type uint32;
description description
"The route index of the failed route."; "The route index of the failed route.";
} }
leaf error-code { leaf error-code {
type uint32; type uint32;
description description
"The error code that reflects the failure reason. "The error code that reflects the failure reason.
0 - Reserved; 0 - Reserved;
1 - Trying to add a repeat route; 1 - Trying to add a repeat route;
skipping to change at line 1779 skipping to change at line 1776
} }
} }
} }
rpc route-add { rpc route-add {
description description
"To add a route or a list of routes to a RIB"; "To add a route or a list of routes to a RIB";
input { input {
leaf return-failure-detail { leaf return-failure-detail {
type boolean; type boolean;
default false; default "false";
description description
"Whether to return the failure detail. "Whether to return the failure detail.
true - return the failure detail; true - return the failure detail;
false - do not return the failure detail; false - do not return the failure detail;
the default is false."; the default is false.";
} }
leaf rib-name { leaf rib-name {
type string; type string;
mandatory true; mandatory true;
description description
skipping to change at line 1806 skipping to change at line 1803
key "route-index"; key "route-index";
description description
"The list of routes to be added."; "The list of routes to be added.";
uses route-prefix; uses route-prefix;
container route-attributes { container route-attributes {
uses route-attributes; uses route-attributes;
description description
"The route attributes."; "The route attributes.";
} }
container route-vendor-attributes { container route-vendor-attributes {
if-feature route-vendor-attributes; if-feature "route-vendor-attributes";
uses route-vendor-attributes; uses route-vendor-attributes;
description description
"The route vendor attributes."; "The route vendor attributes.";
} }
container nexthop { container nexthop {
uses nexthop; uses nexthop;
description description
"The nexthop of the added route."; "The nexthop of the added route.";
} }
} }
skipping to change at line 1823 skipping to change at line 1820
description description
"The nexthop of the added route."; "The nexthop of the added route.";
} }
} }
} }
} }
output { output {
uses route-operation-state; uses route-operation-state;
} }
} }
rpc route-delete { rpc route-delete {
description description
"To delete a route or a list of routes from a RIB"; "To delete a route or a list of routes from a RIB";
input { input {
leaf return-failure-detail { leaf return-failure-detail {
type boolean; type boolean;
default false; default "false";
description description
"Whether to return the failure detail. "Whether to return the failure detail.
true - return the failure detail; true - return the failure detail;
false - do not return the failure detail; false - do not return the failure detail;
the default is false."; the default is false.";
} }
leaf rib-name { leaf rib-name {
type string; type string;
mandatory true; mandatory true;
description description
"A reference to the name of a RIB."; "A reference to the name of a RIB.";
} }
container routes { container routes {
description description
"The routes to be added to the RIB."; "The routes to be added to the RIB.";
list route-list{ list route-list {
key "route-index"; key "route-index";
description description
"The list of routes to be deleted."; "The list of routes to be deleted.";
uses route-prefix; uses route-prefix;
} }
} }
} }
output { output {
uses route-operation-state; uses route-operation-state;
} }
skipping to change at line 1914 skipping to change at line 1910
a. new nexthop, a. new nexthop,
b. new route attributes, or b. new route attributes, or
c. nexthop. c. nexthop.
Actions: Actions:
1. update the nexthop 1. update the nexthop
2. update the route attributes 2. update the route attributes
The outputs: The outputs:
success-count - the number of routes updated; success-count - the number of routes updated;
failed-count - the number of routes fail to update failed-count - the number of routes fail to update
failure-detail - the detail failure info. failure-detail - the detail failure info.
"; ";
input { input {
leaf return-failure-detail { leaf return-failure-detail {
type boolean; type boolean;
default false; default "false";
description description
"Whether to return the failure detail. "Whether to return the failure detail.
true - return the failure detail; true - return the failure detail;
false - do not return the failure detail; false - do not return the failure detail;
the default is false."; the default is false.";
} }
leaf rib-name { leaf rib-name {
type string; type string;
mandatory true; mandatory true;
description description
skipping to change at line 1969 skipping to change at line 1965
container update-parametors { container update-parametors {
description description
"Update options: "Update options:
1. update the nexthop; 1. update the nexthop;
2. update the route attributes; or, 2. update the route attributes; or,
3. update the route-vendor-attributes."; 3. update the route-vendor-attributes.";
uses route-update-options; uses route-update-options;
} }
} }
case match-route-vendor-attributes { case match-route-vendor-attributes {
if-feature route-vendor-attributes; if-feature "route-vendor-attributes";
description description
"Update the routes that match the "Update the routes that match the
vendor attributes condition"; vendor attributes condition";
container input-route-vendor-attributes { container input-route-vendor-attributes {
description description
"The vendor route attributes are used for matching."; "The vendor route attributes are used for matching.";
uses route-vendor-attributes; uses route-vendor-attributes;
} }
container update-parameters-vendor { container update-parameters-vendor {
description description
skipping to change at line 2085 skipping to change at line 2079
} }
leaf reason { leaf reason {
type string; type string;
description description
"The specific reason that caused the failure."; "The specific reason that caused the failure.";
} }
} }
} }
/*Notifications*/ /*Notifications*/
notification nexthop-resolution-status-change { notification nexthop-resolution-status-change {
description description
"Nexthop resolution status (resolved/unresolved) "Nexthop resolution status (resolved/unresolved)
notification."; notification.";
container nexthop{ container nexthop {
description description
"The nexthop."; "The nexthop.";
uses nexthop; uses nexthop;
} }
leaf nexthop-state { leaf nexthop-state {
type nexthop-state-definition; type nexthop-state-definition;
mandatory true; mandatory true;
description description
"Nexthop resolution status (resolved/unresolved) "Nexthop resolution status (resolved/unresolved)
notification."; notification.";
 End of changes. 105 change blocks. 
116 lines changed or deleted 112 lines changed or added

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