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