summaryrefslogtreecommitdiffstats
path: root/routing/routing-api/src/main/yang/ietf-ipv6-unicast-routing.yang
diff options
context:
space:
mode:
authorJan Srnicek <jsrnicek@cisco.com>2016-11-10 09:48:40 +0100
committerMaros Marsalek <mmarsale@cisco.com>2016-11-10 09:11:50 +0000
commitaa7e652e6105a6972d6c41ff0738cd9e31ce0188 (patch)
tree14e5247b9a702723ff10177677078f232213f75c /routing/routing-api/src/main/yang/ietf-ipv6-unicast-routing.yang
parentbe5cfe7728f780e08aa466d69259d8f1e3a45be3 (diff)
HONEYCOMB-58 - Routing Api
Change-Id: Id887c12bea1983c0d185689c633902b691cf52f6 Signed-off-by: Jan Srnicek <jsrnicek@cisco.com>
Diffstat (limited to 'routing/routing-api/src/main/yang/ietf-ipv6-unicast-routing.yang')
-rw-r--r--routing/routing-api/src/main/yang/ietf-ipv6-unicast-routing.yang822
1 files changed, 822 insertions, 0 deletions
diff --git a/routing/routing-api/src/main/yang/ietf-ipv6-unicast-routing.yang b/routing/routing-api/src/main/yang/ietf-ipv6-unicast-routing.yang
new file mode 100644
index 000000000..93de395d6
--- /dev/null
+++ b/routing/routing-api/src/main/yang/ietf-ipv6-unicast-routing.yang
@@ -0,0 +1,822 @@
+module ietf-ipv6-unicast-routing {
+
+ namespace "urn:ietf:params:xml:ns:yang:ietf-ipv6-unicast-routing";
+
+ prefix "v6ur";
+
+ import ietf-routing {
+ prefix "rt";
+ }
+
+ import ietf-inet-types {
+ prefix "inet";
+ }
+
+ import ietf-interfaces {
+ prefix "if";
+ }
+
+ import ietf-ip {
+ prefix "ip";
+ }
+
+ //TODO modification needed because of yangtools bug(unable to proceed augmentation in separate model of augmentation in this model)
+ import vpp-routing {
+ prefix vpp-r;
+ }
+
+ organization
+ "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+
+ contact
+ "WG Web: <http://tools.ietf.org/wg/netmod/>
+ WG List: <mailto:netmod@ietf.org>
+
+ WG Chair: Thomas Nadeau
+ <mailto:tnadeau@lucidvision.com>
+
+ WG Chair: Juergen Schoenwaelder
+ <mailto:j.schoenwaelder@jacobs-university.de>
+
+ Editor: Ladislav Lhotka
+ <mailto:lhotka@nic.cz>";
+
+ description
+ "This YANG module augments the 'ietf-routing' module with basic
+ configuration and operational state data for IPv6 unicast
+ routing.
+
+ Copyright (c) 2014 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject to
+ the license terms contained in, the Simplified BSD License set
+ forth in Section 4.c of the IETF Trust's Legal Provisions
+ Relating to IETF Documents
+ (http://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC XXXX; see the
+ RFC itself for full legal notices.";
+
+ revision 2014-05-25 {
+ description
+ "Initial revision.";
+ reference
+ "RFC XXXX: A YANG Data Model for Routing Management";
+ }
+
+ /* Identities */
+
+ identity ipv6-unicast {
+ base rt:ipv6;
+ description
+ "This identity represents the IPv6 unicast address family.";
+ }
+
+ /* Operational state data */
+
+ augment "/rt:routing-state/rt:routing-instance/rt:interfaces/"
+ + "rt:interface" {
+ description
+ "IPv6-specific parameters of router interfaces.";
+ container ipv6-router-advertisements {
+ description
+ "Parameters of IPv6 Router Advertisements.";
+ leaf send-advertisements {
+ type boolean;
+ description
+ "A flag indicating whether or not the router sends periodic
+ Router Advertisements and responds to Router
+ Solicitations.";
+ }
+ leaf max-rtr-adv-interval {
+ type uint16 {
+ range "4..1800";
+ }
+ units "seconds";
+ description
+ "The maximum time allowed between sending unsolicited
+ multicast Router Advertisements from the interface.";
+ }
+ leaf min-rtr-adv-interval {
+ type uint16 {
+ range "3..1350";
+ }
+ units "seconds";
+ description
+ "The minimum time allowed between sending unsolicited
+ multicast Router Advertisements from the interface.";
+ }
+ leaf managed-flag {
+ type boolean;
+ description
+ "The value that is placed in the 'Managed address
+ configuration' flag field in the Router Advertisement.";
+ }
+ leaf other-config-flag {
+ type boolean;
+ description
+ "The value that is placed in the 'Other configuration' flag
+ field in the Router Advertisement.";
+ }
+ leaf link-mtu {
+ type uint32;
+ description
+ "The value that is placed in MTU options sent by the
+ router. A value of zero indicates that no MTU options are
+ sent.";
+ }
+ leaf reachable-time {
+ type uint32 {
+ range "0..3600000";
+ }
+ units "milliseconds";
+ description
+ "The value that is placed in the Reachable Time field in
+ the Router Advertisement messages sent by the router. A
+ value of zero means unspecified (by this router).";
+ }
+ leaf retrans-timer {
+ type uint32;
+ units "milliseconds";
+ description
+ "The value that is placed in the Retrans Timer field in the
+ Router Advertisement messages sent by the router. A value
+ of zero means unspecified (by this router).";
+ }
+ leaf cur-hop-limit {
+ type uint8;
+ description
+ "The value that is placed in the Cur Hop Limit field in the
+ Router Advertisement messages sent by the router. A value
+ of zero means unspecified (by this router).";
+ }
+ leaf default-lifetime {
+ type uint16 {
+ range "0..9000";
+ }
+ units "seconds";
+ description
+ "The value that is placed in the Router Lifetime field of
+ Router Advertisements sent from the interface, in seconds.
+ A value of zero indicates that the router is not to be
+ used as a default router.";
+ }
+ container prefix-list {
+ description
+ "A list of prefixes that are placed in Prefix Information
+ options in Router Advertisement messages sent from the
+ interface.
+
+ By default, these are all prefixes that the router
+ advertises via routing protocols as being on-link for the
+ interface from which the advertisement is sent.";
+ list prefix {
+ key "prefix-spec";
+ description
+ "Advertised prefix entry and its parameters.";
+ leaf prefix-spec {
+ type inet:ipv6-prefix;
+ description
+ "IPv6 address prefix.";
+ }
+ leaf valid-lifetime {
+ type uint32;
+ units "seconds";
+ description
+ "The value that is placed in the Valid Lifetime in the
+ Prefix Information option. The designated value of all
+ 1's (0xffffffff) represents infinity.";
+ }
+ leaf on-link-flag {
+ type boolean;
+ description
+ "The value that is placed in the on-link flag ('L-bit')
+ field in the Prefix Information option.";
+ }
+ leaf preferred-lifetime {
+ type uint32;
+ units "seconds";
+ description
+ "The value that is placed in the Preferred Lifetime in
+ the Prefix Information option, in seconds. The
+ designated value of all 1's (0xffffffff) represents
+ infinity.";
+ }
+ leaf autonomous-flag {
+ type boolean;
+ description
+ "The value that is placed in the Autonomous Flag field
+ in the Prefix Information option.";
+ }
+ }
+ }
+ }
+ }
+
+ augment "/rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route" {
+ when "../../rt:address-family = 'v6ur:ipv6-unicast'" {
+ description
+ "This augment is valid only for IPv6 unicast.";
+ }
+ description
+ "This leaf augments an IPv6 unicast route.";
+ leaf destination-prefix {
+ type inet:ipv6-prefix;
+ description
+ "IPv6 destination prefix.";
+ }
+ }
+
+ augment "/rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route/"
+ + "rt:next-hop-options/rt:simple-next-hop" {
+ when "../../rt:address-family = 'v6ur:ipv6-unicast'" {
+ description
+ "This augment is valid only for IPv6 unicast.";
+ }
+ description
+ "This leaf augments the 'simple-next-hop' case of IPv6 unicast
+ routes.";
+ leaf next-hop {
+ type inet:ipv6-address;
+ description
+ "IPv6 address of the next-hop.";
+ }
+ }
+
+ augment "/rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route/"
+ + "rt:next-hop-options/rt:next-hop-list/rt:next-hop-list/"
+ + "rt:next-hop" {
+ when "../../../../rt:address-family = 'v6ur:ipv6-unicast'" {
+ description
+ "This augment is valid only for IPv6 unicast.";
+ }
+ if-feature rt:multipath-routes;
+ description
+ "This leaf augments the 'next-hop-list' case of IPv6 unicast
+ routes.";
+ leaf address {
+ type inet:ipv6-address;
+ description
+ "IPv6 address of the next-hop.";
+ }
+ }
+
+ /* Configuration data */
+
+ augment
+ "/rt:routing/rt:routing-instance/rt:interfaces/rt:interface" {
+ when "/if:interfaces/if:interface[if:name=current()/rt:name]/"
+ + "ip:ipv6/ip:enabled='true'" {
+ description
+ "This augment is only valid for router interfaces with
+ enabled IPv6.";
+ }
+ description
+ "Configuration of IPv6-specific parameters of router
+ interfaces.";
+ container ipv6-router-advertisements {
+ description
+ "Configuration of IPv6 Router Advertisements.";
+ leaf send-advertisements {
+ type boolean;
+ default "false";
+ description
+ "A flag indicating whether or not the router sends periodic
+ Router Advertisements and responds to Router
+ Solicitations.";
+ reference
+ "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) -
+ AdvSendAdvertisements.";
+ }
+ leaf max-rtr-adv-interval {
+ type uint16 {
+ range "4..1800";
+ }
+ units "seconds";
+ default "600";
+ description
+ "The maximum time allowed between sending unsolicited
+ multicast Router Advertisements from the interface.";
+ reference
+ "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) -
+ MaxRtrAdvInterval.";
+ }
+ leaf min-rtr-adv-interval {
+ type uint16 {
+ range "3..1350";
+ }
+ units "seconds";
+ must ". <= 0.75 * ../max-rtr-adv-interval" {
+ description
+ "The value MUST NOT be greater than 75 % of
+ 'max-rtr-adv-interval'.";
+ }
+ description
+ "The minimum time allowed between sending unsolicited
+ multicast Router Advertisements from the interface.
+
+ The default value to be used operationally if this leaf is
+ not configured is determined as follows:
+
+ - if max-rtr-adv-interval >= 9 seconds, the default value
+ is 0.33 * max-rtr-adv-interval;
+
+ - otherwise it is 0.75 * max-rtr-adv-interval.";
+ reference
+ "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) -
+ MinRtrAdvInterval.";
+ }
+ leaf managed-flag {
+ type boolean;
+ default "false";
+ description
+ "The value to be placed in the 'Managed address
+ configuration' flag field in the Router Advertisement.";
+ reference
+ "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) -
+ AdvManagedFlag.";
+ }
+ leaf other-config-flag {
+ type boolean;
+ default "false";
+ description
+ "The value to be placed in the 'Other configuration' flag
+ field in the Router Advertisement.";
+ reference
+ "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) -
+ AdvOtherConfigFlag.";
+ }
+ leaf link-mtu {
+ type uint32;
+ default "0";
+ description
+ "The value to be placed in MTU options sent by the router.
+ A value of zero indicates that no MTU options are sent.";
+ reference
+ "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) -
+ AdvLinkMTU.";
+ }
+ leaf reachable-time {
+ type uint32 {
+ range "0..3600000";
+ }
+ units "milliseconds";
+ default "0";
+ description
+ "The value to be placed in the Reachable Time field in the
+ Router Advertisement messages sent by the router. A value
+ of zero means unspecified (by this router).";
+ reference
+ "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) -
+ AdvReachableTime.";
+ }
+ leaf retrans-timer {
+ type uint32;
+ units "milliseconds";
+ default "0";
+ description
+ "The value to be placed in the Retrans Timer field in the
+ Router Advertisement messages sent by the router. A value
+ of zero means unspecified (by this router).";
+ reference
+ "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) -
+ AdvRetransTimer.";
+ }
+ leaf cur-hop-limit {
+ type uint8;
+ description
+ "The value to be placed in the Cur Hop Limit field in the
+ Router Advertisement messages sent by the router. A value
+ of zero means unspecified (by this router).
+
+ If this parameter is not configured, the device SHOULD use
+ the value specified in IANA Assigned Numbers that was in
+ effect at the time of implementation.";
+ reference
+ "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) -
+ AdvCurHopLimit.
+
+ IANA: IP Parameters,
+ http://www.iana.org/assignments/ip-parameters";
+ }
+ leaf default-lifetime {
+ type uint16 {
+ range "0..9000";
+ }
+ units "seconds";
+ description
+ "The value to be placed in the Router Lifetime field of
+ Router Advertisements sent from the interface, in seconds.
+ It MUST be either zero or between max-rtr-adv-interval and
+ 9000 seconds. A value of zero indicates that the router is
+ not to be used as a default router. These limits may be
+ overridden by specific documents that describe how IPv6
+ operates over different link layers.
+
+ If this parameter is not configured, the device SHOULD use
+ a value of 3 * max-rtr-adv-interval.";
+ reference
+ "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) -
+ AdvDefaultLifeTime.";
+ }
+ container prefix-list {
+ description
+ "Configuration of prefixes to be placed in Prefix
+ Information options in Router Advertisement messages sent
+ from the interface.
+
+ Prefixes that are advertised by default but do not have
+ their entries in the child 'prefix' list are advertised
+ with the default values of all parameters.
+
+ The link-local prefix SHOULD NOT be included in the list
+ of advertised prefixes.";
+ reference
+ "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) -
+ AdvPrefixList.";
+ list prefix {
+ key "prefix-spec";
+ description
+ "Configuration of an advertised prefix entry.";
+ leaf prefix-spec {
+ type inet:ipv6-prefix;
+ description
+ "IPv6 address prefix.";
+ }
+ choice control-adv-prefixes {
+ default "advertise";
+ description
+ "The prefix either may be explicitly removed from the
+ set of advertised prefixes, or parameters with which
+ it is advertised may be specified (default case).";
+ leaf no-advertise {
+ type empty;
+ description
+ "The prefix will not be advertised.
+
+ This can be used for removing the prefix from the
+ default set of advertised prefixes.";
+ }
+ case advertise {
+ leaf valid-lifetime {
+ type uint32;
+ units "seconds";
+ default "2592000";
+ description
+ "The value to be placed in the Valid Lifetime in
+ the Prefix Information option. The designated
+ value of all 1's (0xffffffff) represents
+ infinity.";
+ reference
+ "RFC 4861: Neighbor Discovery for IP version 6
+ (IPv6) - AdvValidLifetime.";
+ }
+ leaf on-link-flag {
+ type boolean;
+ default "true";
+ description
+ "The value to be placed in the on-link flag
+ ('L-bit') field in the Prefix Information
+ option.";
+ reference
+ "RFC 4861: Neighbor Discovery for IP version 6
+ (IPv6) - AdvOnLinkFlag.";
+ }
+ leaf preferred-lifetime {
+ type uint32;
+ units "seconds";
+ must ". <= ../valid-lifetime" {
+ description
+ "This value MUST NOT be greater than
+ valid-lifetime.";
+ }
+ default "604800";
+ description
+ "The value to be placed in the Preferred Lifetime
+ in the Prefix Information option. The designated
+ value of all 1's (0xffffffff) represents
+ infinity.";
+ reference
+ "RFC 4861: Neighbor Discovery for IP version 6
+ (IPv6) - AdvPreferredLifetime.";
+ }
+ leaf autonomous-flag {
+ type boolean;
+ default "true";
+ description
+ "The value to be placed in the Autonomous Flag
+ field in the Prefix Information option.";
+ reference
+ "RFC 4861: Neighbor Discovery for IP version 6
+ (IPv6) - AdvAutonomousFlag.";
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ //NOTE - added same augmentation for operational state
+
+ augment "/rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/rt:static-routes" {
+ description
+ "This augment defines the configuration of the 'static'
+ pseudo-protocol with data specific to IPv6 unicast.";
+ container ipv6 {
+ description
+ "Configuration of a 'static' pseudo-protocol instance
+ consists of a list of routes.";
+ list route {
+ key "id";
+ ordered-by "user";
+ description
+ "A user-ordered list of static routes.";
+ leaf id {
+ type uint32 {
+ //WARNING - range changed from 1..max to be mappable on vpp table ids
+ range "0..max";
+ }
+ description
+ "Unique numeric identifier of the route.
+
+ This value is unrelated to system-assigned 'id'
+ parameters of routes in RIBs.";
+ }
+ leaf description {
+ type string;
+ description
+ "Textual description of the route.";
+ }
+ leaf destination-prefix {
+ type inet:ipv6-prefix;
+ mandatory "true";
+ description
+ "IPv6 destination prefix.";
+ }
+ choice next-hop-options {
+ mandatory "true";
+ description
+ "Options for expressing the next-hop in static routes.";
+ case special-next-hop {
+ //WARNING - changed, see ietf-routing.yang
+ uses rt:special-next-hop-grouping;
+ }
+ case simple-next-hop {
+ leaf next-hop {
+ type inet:ipv6-address;
+ description
+ "IPv6 address of the next-hop.";
+ }
+ //TODO - temporarily set to absolute path until https://bugs.opendaylight.org/show_bug.cgi?id=6881 is resolved
+ leaf outgoing-interface {
+ type leafref {
+ path "/rt:routing/rt:routing-instance/rt:interfaces/rt:interface/"
+ + "rt:name";
+ }
+ description
+ "Name of the outgoing interface.
+
+ Only interfaces configured for the ancestor routing
+ instance can be given.";
+ }
+ }
+ case next-hop-list {
+ if-feature rt:multipath-routes;
+ container next-hop-list {
+ description
+ "Configuration of multiple next-hops.";
+ list next-hop {
+ key "id";
+ description
+ "An entry of a next-hop list.";
+ leaf id {
+ type uint32;
+ description
+ "Unique numeric identifier of the entry.
+
+ This value is unrelated to system-assigned 'id'
+ parameters of next-hops in RIBs.";
+ }
+ leaf address {
+ type inet:ipv6-address;
+ description
+ "IPv6 address of the next-hop.";
+ }
+ //TODO - temporarily set to absolute path until https://bugs.opendaylight.org/show_bug.cgi?id=6881 is resolved
+ leaf outgoing-interface {
+ type leafref {
+ path "/rt:routing/rt:routing-instance/rt:interfaces/rt:interface/"
+ + "rt:name";
+ }
+ description
+ "Name of the outgoing interface.
+
+ Only interfaces configured for the ancestor
+ routing instance can be given.";
+ }
+ uses rt:next-hop-classifiers {
+ refine "priority" {
+ default "primary";
+ }
+ refine "weight" {
+ default "0";
+ }
+ }
+ }
+ }
+ }
+ }
+
+ //TODO modification needed because of yangtools bug(unable to proceed augmentation in separate model of augmentation in this model)
+ container vpp-ipv6-route-state{
+ uses vpp-r:vpp-routing-state-attributes;
+ }
+ }
+ }
+ }
+
+ augment "/rt:routing/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/rt:static-routes" {
+ description
+ "This augment defines the configuration of the 'static'
+ pseudo-protocol with data specific to IPv6 unicast.";
+ container ipv6 {
+ description
+ "Configuration of a 'static' pseudo-protocol instance
+ consists of a list of routes.";
+ list route {
+ key "id";
+ ordered-by "user";
+ description
+ "A user-ordered list of static routes.";
+ leaf id {
+ type uint32 {
+ //WARNING - range changed from 1..max to be mappable on vpp table ids
+ range "0..max";
+ }
+ description
+ "Unique numeric identifier of the route.
+
+ This value is unrelated to system-assigned 'id'
+ parameters of routes in RIBs.";
+ }
+ leaf description {
+ type string;
+ description
+ "Textual description of the route.";
+ }
+ leaf destination-prefix {
+ type inet:ipv6-prefix;
+ mandatory "true";
+ description
+ "IPv6 destination prefix.";
+ }
+ choice next-hop-options {
+ mandatory "true";
+ description
+ "Options for expressing the next-hop in static routes.";
+ case special-next-hop {
+ //WARNING - changed, see ietf-routing.yang
+ uses rt:special-next-hop-grouping;
+ }
+ case simple-next-hop {
+ leaf next-hop {
+ type inet:ipv6-address;
+ description
+ "IPv6 address of the next-hop.";
+ }
+ //TODO - temporarily set to absolute path until https://bugs.opendaylight.org/show_bug.cgi?id=6881 is resolved
+ leaf outgoing-interface {
+ type leafref {
+ path "/rt:routing/rt:routing-instance/rt:interfaces/rt:interface/"
+ + "rt:name";
+ }
+ description
+ "Name of the outgoing interface.
+
+ Only interfaces configured for the ancestor routing
+ instance can be given.";
+ }
+ }
+ case next-hop-list {
+ if-feature rt:multipath-routes;
+ container next-hop-list {
+ description
+ "Configuration of multiple next-hops.";
+ list next-hop {
+ key "id";
+ description
+ "An entry of a next-hop list.";
+ leaf id {
+ type uint32;
+ description
+ "Unique numeric identifier of the entry.
+
+ This value is unrelated to system-assigned 'id'
+ parameters of next-hops in RIBs.";
+ }
+ leaf address {
+ type inet:ipv6-address;
+ description
+ "IPv6 address of the next-hop.";
+ }
+ //TODO - temporarily set to absolute path until https://bugs.opendaylight.org/show_bug.cgi?id=6881 is resolved
+ leaf outgoing-interface {
+ type leafref {
+ path "/rt:routing/rt:routing-instance/rt:interfaces/rt:interface/"
+ + "rt:name";
+ }
+ description
+ "Name of the outgoing interface.
+
+ Only interfaces configured for the ancestor
+ routing instance can be given.";
+ }
+ uses rt:next-hop-classifiers {
+ refine "priority" {
+ default "primary";
+ }
+ refine "weight" {
+ default "0";
+ }
+ }
+ }
+ }
+ }
+ }
+
+ //TODO modification needed because of yangtools bug(unable to proceed augmentation in separate model of augmentation in this model)
+ container vpp-ipv6-route{
+ uses vpp-r:vpp-routing-attributes;
+ }
+ }
+ }
+ }
+
+ /* RPC methods */
+
+ augment "/rt:active-route/rt:input/rt:destination-address" {
+ when "rt:address-family='v6ur:ipv6-unicast'" {
+ description
+ "This augment is valid only for IPv6 unicast.";
+ }
+ description
+ "This leaf augments the 'rt:destination-address' parameter of
+ the 'rt:active-route' operation.";
+ leaf address {
+ type inet:ipv6-address;
+ description
+ "IPv6 destination address.";
+ }
+ }
+
+ augment "/rt:active-route/rt:output/rt:route" {
+ when "rt:address-family='v6ur:ipv6-unicast'" {
+ description
+ "This augment is valid only for IPv6 unicast.";
+ }
+ description
+ "This leaf augments the reply to the 'rt:active-route'
+ operation.";
+ leaf destination-prefix {
+ type inet:ipv6-prefix;
+ description
+ "IPv6 destination prefix.";
+ }
+ }
+
+ augment "/rt:active-route/rt:output/rt:route/rt:next-hop-options/"
+ + "rt:simple-next-hop" {
+ when "rt:address-family='v6ur:ipv6-unicast'" {
+ description
+ "This augment is valid only for IPv6 unicast.";
+ }
+ description
+ "This leaf augments the 'simple-next-hop' case in the reply to
+ the 'rt:active-route' operation.";
+ leaf next-hop {
+ type inet:ipv6-address;
+ description
+ "IPv6 address of the next-hop.";
+ }
+ }
+
+ augment "/rt:active-route/rt:output/rt:route/rt:next-hop-options/"
+ + "rt:next-hop-list/rt:next-hop-list/rt:next-hop" {
+ when "../../rt:address-family='v6ur:ipv6-unicast'" {
+ description
+ "This augment is valid only for IPv6 unicast.";
+ }
+ if-feature rt:multipath-routes;
+ description
+ "This leaf augments the 'next-hop-list' case in the reply to
+ the 'rt:active-route' operation.";
+ leaf address {
+ type inet:ipv6-address;
+ description
+ "IPv6 address of the next-hop.";
+ }
+ }
+} \ No newline at end of file