| module ietf-ipv6-unicast-routing { |
| yang-version "1.1"; |
| namespace |
| "urn:ietf:params:xml:ns:yang:ietf-ipv6-unicast-routing"; |
| prefix "v6ur"; |
| |
| import ietf-routing { |
| prefix "rt"; |
| description |
| "An 'ietf-routing' module version that is compatible with |
| the Network Management Datastore Architecture (NMDA) |
| is required."; |
| } |
| |
| import ietf-inet-types { |
| prefix "inet"; |
| description |
| "An 'ietf-interfaces' module version that is compatible with |
| the Network Management Datastore Architecture (NMDA) |
| is required."; |
| } |
| |
| include ietf-ipv6-router-advertisements { |
| revision-date 2018-03-13; |
| } |
| organization |
| "IETF NETMOD (Network Modeling) Working Group"; |
| contact |
| "WG Web: <https://datatracker.ietf.org/wg/netmod/> |
| WG List: <mailto:rtgwg@ietf.org> |
| |
| Editor: Ladislav Lhotka |
| <mailto:lhotka@nic.cz> |
| Acee Lindem |
| <mailto:acee@cisco.com> |
| Yingzhen Qu |
| <mailto:yingzhen.qu@huawei.com>"; |
| |
| description |
| "This YANG module augments the 'ietf-routing' module with basic |
| parameters for IPv6 unicast routing. The model fully conforms |
| to the Network Management Datastore Architecture (NMDA). |
| |
| Copyright (c) 2018 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 |
| (https://trustee.ietf.org/license-info). |
| |
| This version of this YANG module is part of RFC 8349; see |
| the RFC itself for full legal notices."; |
| |
| revision 2018-03-13 { |
| description |
| "Network Management Datastore Architecture (NMDA) revision."; |
| reference |
| "RFC 8349: A YANG Data Model for Routing Management |
| (NMDA Version)"; |
| } |
| |
| /* Identities */ |
| |
| revision 2016-11-04 { |
| description |
| "Initial revision."; |
| reference |
| "RFC 8022: A YANG Data Model for Routing Management"; |
| } |
| |
| identity ipv6-unicast { |
| base rt:ipv6; |
| description |
| "This identity represents the IPv6 unicast address family."; |
| } |
| |
| augment "/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route" { |
| when "derived-from-or-self(../../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/rt:ribs/rt:rib/rt:routes/rt:route/" |
| + "rt:next-hop/rt:next-hop-options/rt:simple-next-hop" { |
| when "derived-from-or-self(../../../rt:address-family, " |
| + "'v6ur:ipv6-unicast')" { |
| description |
| "This augment is valid only for IPv6 unicast."; |
| } |
| description |
| "Augments the 'simple-next-hop' case in IPv6 unicast routes."; |
| leaf next-hop-address { |
| type inet:ipv6-address; |
| description |
| "IPv6 address of the next hop."; |
| } |
| } |
| |
| augment "/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route/" |
| + "rt:next-hop/rt:next-hop-options/rt:next-hop-list/" |
| + "rt:next-hop-list/rt:next-hop" { |
| when "derived-from-or-self(../../../../../rt:address-family, " |
| + "'v6ur:ipv6-unicast')" { |
| description |
| "This augment is valid only for IPv6 unicast."; |
| } |
| 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."; |
| } |
| } |
| |
| augment |
| "/rt:routing/rt:ribs/rt:rib/rt:active-route/rt:input" { |
| when "derived-from-or-self(../rt:address-family, " |
| + "'v6ur:ipv6-unicast')" { |
| description |
| "This augment is valid only for IPv6 unicast RIBs."; |
| } |
| description |
| "This augment adds the input parameter of the 'active-route' |
| action."; |
| leaf destination-address { |
| type inet:ipv6-address; |
| description |
| "IPv6 destination address."; |
| } |
| } |
| |
| augment "/rt:routing/rt:ribs/rt:rib/rt:active-route/" |
| + "rt:output/rt:route" { |
| when "derived-from-or-self(../../rt:address-family, " |
| + "'v6ur:ipv6-unicast')" { |
| description |
| "This augment is valid only for IPv6 unicast."; |
| } |
| description |
| "This augment adds the destination prefix to the reply of the |
| 'active-route' action."; |
| leaf destination-prefix { |
| type inet:ipv6-prefix; |
| description |
| "IPv6 destination prefix."; |
| } |
| } |
| |
| augment "/rt:routing/rt:ribs/rt:rib/rt:active-route/" |
| + "rt:output/rt:route/rt:next-hop/rt:next-hop-options/" |
| + "rt:simple-next-hop" { |
| when "derived-from-or-self(../../../rt:address-family, " |
| + "'v6ur:ipv6-unicast')" { |
| description |
| "This augment is valid only for IPv6 unicast."; |
| } |
| description |
| "Augments the 'simple-next-hop' case in the reply to the |
| 'active-route' action."; |
| leaf next-hop-address { |
| type inet:ipv6-address; |
| description |
| "IPv6 address of the next hop."; |
| } |
| } |
| |
| augment "/rt:routing/rt:ribs/rt:rib/rt:active-route/" |
| + "rt:output/rt:route/rt:next-hop/rt:next-hop-options/" |
| + "rt:next-hop-list/rt:next-hop-list/rt:next-hop" { |
| when "derived-from-or-self(../../../../../rt:address-family, " |
| + "'v6ur:ipv6-unicast')" { |
| description |
| "This augment is valid only for IPv6 unicast."; |
| } |
| description |
| "Augments the 'next-hop-list' case in the reply to the |
| 'active-route' action."; |
| leaf next-hop-address { |
| type inet:ipv6-address; |
| description |
| "IPv6 address of the next hop."; |
| } |
| } |
| |
| /* Data node augmentations */ |
| |
| augment "/rt:routing/rt:control-plane-protocols/" |
| + "rt:control-plane-protocol/rt:static-routes" { |
| description |
| "This augment defines the 'static' pseudo-protocol |
| with data specific to IPv6 unicast."; |
| container ipv6 { |
| description |
| "Support for a 'static' pseudo-protocol instance |
| consists of a list of routes."; |
| list route { |
| key "destination-prefix"; |
| description |
| "A list of static routes."; |
| leaf destination-prefix { |
| type inet:ipv6-prefix; |
| mandatory true; |
| description |
| "IPv6 destination prefix."; |
| } |
| leaf description { |
| type string; |
| description |
| "Textual description of the route."; |
| } |
| container next-hop { |
| description |
| "Next hop for the route."; |
| uses rt:next-hop-content { |
| augment "next-hop-options/simple-next-hop" { |
| description |
| "Augments the 'simple-next-hop' case in IPv6 static |
| routes."; |
| leaf next-hop-address { |
| type inet:ipv6-address; |
| description |
| "IPv6 address of the next hop."; |
| } |
| } |
| augment "next-hop-options/next-hop-list/next-hop-list/" |
| + "next-hop" { |
| description |
| "Augments the 'next-hop-list' case in IPv6 static |
| routes."; |
| leaf next-hop-address { |
| type inet:ipv6-address; |
| description |
| "IPv6 address of the next hop."; |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| /* |
| * The subsequent data nodes are obviated and obsoleted |
| * by the Network Management Datastore Architecture |
| * as described in RFC 8342. |
| */ |
| augment "/rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route" { |
| when "derived-from-or-self(../../rt:address-family, |
| 'v6ur:ipv6-unicast')" { |
| description |
| "This augment is valid only for IPv6 unicast."; |
| } |
| status obsolete; |
| description |
| "This leaf augments an IPv6 unicast route."; |
| leaf destination-prefix { |
| type inet:ipv6-prefix; |
| status obsolete; |
| description |
| "IPv6 destination prefix."; |
| } |
| } |
| augment "/rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route/" |
| + "rt:next-hop/rt:next-hop-options/rt:simple-next-hop" { |
| when "derived-from-or-self(../../../rt:address-family, |
| 'v6ur:ipv6-unicast')" { |
| description |
| "This augment is valid only for IPv6 unicast."; |
| } |
| status obsolete; |
| description |
| "Augments the 'simple-next-hop' case in IPv6 unicast routes."; |
| leaf next-hop-address { |
| type inet:ipv6-address; |
| status obsolete; |
| description |
| "IPv6 address of the next hop."; |
| } |
| } |
| augment "/rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route/" |
| + "rt:next-hop/rt:next-hop-options/rt:next-hop-list/" |
| + "rt:next-hop-list/rt:next-hop" { |
| when "derived-from-or-self(../../../../../rt:address-family, |
| 'v6ur:ipv6-unicast')" { |
| description |
| "This augment is valid only for IPv6 unicast."; |
| } |
| status obsolete; |
| description |
| "This leaf augments the 'next-hop-list' case of IPv6 unicast |
| routes."; |
| leaf address { |
| type inet:ipv6-address; |
| status obsolete; |
| description |
| "IPv6 address of the next hop."; |
| } |
| } |
| augment "/rt:routing-state/rt:ribs/rt:rib/" |
| + "rt:active-route/rt:input" { |
| when "derived-from-or-self(../rt:address-family, |
| 'v6ur:ipv6-unicast')" { |
| description |
| "This augment is valid only for IPv6 unicast RIBs."; |
| } |
| status obsolete; |
| description |
| "This augment adds the input parameter of the 'active-route' |
| action."; |
| leaf destination-address { |
| type inet:ipv6-address; |
| status obsolete; |
| description |
| "IPv6 destination address."; |
| } |
| } |
| augment "/rt:routing-state/rt:ribs/rt:rib/rt:active-route/" |
| + "rt:output/rt:route" { |
| when "derived-from-or-self(../../rt:address-family, |
| 'v6ur:ipv6-unicast')" { |
| description |
| "This augment is valid only for IPv6 unicast."; |
| } |
| status obsolete; |
| description |
| "This augment adds the destination prefix to the reply of the |
| 'active-route' action."; |
| leaf destination-prefix { |
| type inet:ipv6-prefix; |
| status obsolete; |
| description |
| "IPv6 destination prefix."; |
| } |
| } |
| augment "/rt:routing-state/rt:ribs/rt:rib/rt:active-route/" |
| + "rt:output/rt:route/rt:next-hop/rt:next-hop-options/" |
| + "rt:simple-next-hop" { |
| when "derived-from-or-self(../../../rt:address-family, |
| 'v6ur:ipv6-unicast')" { |
| description |
| "This augment is valid only for IPv6 unicast."; |
| } |
| status obsolete; |
| description |
| "Augments the 'simple-next-hop' case in the reply to the |
| 'active-route' action."; |
| leaf next-hop-address { |
| type inet:ipv6-address; |
| status obsolete; |
| description |
| "IPv6 address of the next hop."; |
| } |
| } |
| augment "/rt:routing-state/rt:ribs/rt:rib/rt:active-route/" |
| + "rt:output/rt:route/rt:next-hop/rt:next-hop-options/" |
| + "rt:next-hop-list/rt:next-hop-list/rt:next-hop" { |
| when "derived-from-or-self(../../../../../rt:address-family, |
| 'v6ur:ipv6-unicast')" { |
| description |
| "This augment is valid only for IPv6 unicast."; |
| } |
| status obsolete; |
| description |
| "Augments the 'next-hop-list' case in the reply to the |
| 'active-route' action."; |
| leaf next-hop-address { |
| type inet:ipv6-address; |
| status obsolete; |
| description |
| "IPv6 address of the next hop."; |
| } |
| } |
| } |