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