| module ietf-ipv4-unicast-routing { |
| yang-version "1.1"; |
| namespace |
| "urn:ietf:params:xml:ns:yang:ietf-ipv4-unicast-routing"; |
| prefix "v4ur"; |
| |
| 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"; |
| } |
| 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 IPv4 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)"; |
| } |
| |
| revision 2016-11-04 { |
| description |
| "Initial revision."; |
| reference |
| "RFC 8022: A YANG Data Model for Routing Management"; |
| } |
| |
| /* Identities */ |
| |
| identity ipv4-unicast { |
| base rt:ipv4; |
| description |
| "This identity represents the IPv4 unicast address family."; |
| } |
| |
| augment "/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route" { |
| when "derived-from-or-self(../../rt:address-family, " |
| + "'v4ur:ipv4-unicast')" { |
| description |
| "This augment is valid only for IPv4 unicast."; |
| } |
| description |
| "This leaf augments an IPv4 unicast route."; |
| leaf destination-prefix { |
| type inet:ipv4-prefix; |
| description |
| "IPv4 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, " |
| + "'v4ur:ipv4-unicast')" { |
| description |
| "This augment is valid only for IPv4 unicast."; |
| } |
| description |
| "Augments the 'simple-next-hop' case in IPv4 unicast routes."; |
| leaf next-hop-address { |
| type inet:ipv4-address; |
| description |
| "IPv4 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, " |
| + "'v4ur:ipv4-unicast')" { |
| description |
| "This augment is valid only for IPv4 unicast."; |
| } |
| description |
| "This leaf augments the 'next-hop-list' case of IPv4 unicast |
| routes."; |
| leaf address { |
| type inet:ipv4-address; |
| description |
| "IPv4 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, " |
| + "'v4ur:ipv4-unicast')" { |
| description |
| "This augment is valid only for IPv4 unicast RIBs."; |
| } |
| description |
| "This augment adds the input parameter of the 'active-route' |
| action."; |
| leaf destination-address { |
| type inet:ipv4-address; |
| description |
| "IPv4 destination address."; |
| } |
| } |
| |
| augment "/rt:routing/rt:ribs/rt:rib/rt:active-route/" |
| + "rt:output/rt:route" { |
| when "derived-from-or-self(../../rt:address-family, " |
| + "'v4ur:ipv4-unicast')" { |
| description |
| "This augment is valid only for IPv4 unicast."; |
| } |
| description |
| "This augment adds the destination prefix to the reply of the |
| 'active-route' action."; |
| leaf destination-prefix { |
| type inet:ipv4-prefix; |
| description |
| "IPv4 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, " |
| + "'v4ur:ipv4-unicast')" { |
| description |
| "This augment is valid only for IPv4 unicast."; |
| } |
| description |
| "Augments the 'simple-next-hop' case in the reply to the |
| 'active-route' action."; |
| leaf next-hop-address { |
| type inet:ipv4-address; |
| description |
| "IPv4 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, " |
| + "'v4ur:ipv4-unicast')" { |
| description |
| "This augment is valid only for IPv4 unicast."; |
| } |
| description |
| "Augments the 'next-hop-list' case in the reply to the |
| 'active-route' action."; |
| leaf next-hop-address { |
| type inet:ipv4-address; |
| description |
| "IPv4 address of the next hop."; |
| } |
| } |
| |
| 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 IPv4 unicast."; |
| container ipv4 { |
| 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:ipv4-prefix; |
| mandatory true; |
| description |
| "IPv4 destination prefix."; |
| } |
| leaf description { |
| type string; |
| description |
| "Textual description of the route."; |
| } |
| container next-hop { |
| description |
| "Support for next-hop."; |
| uses rt:next-hop-content { |
| augment "next-hop-options/simple-next-hop" { |
| description |
| "Augments the 'simple-next-hop' case in IPv4 static |
| routes."; |
| leaf next-hop-address { |
| type inet:ipv4-address; |
| description |
| "IPv4 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 IPv4 static |
| routes."; |
| leaf next-hop-address { |
| type inet:ipv4-address; |
| description |
| "IPv4 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, " |
| + "'v4ur:ipv4-unicast')" { |
| description |
| "This augment is valid only for IPv4 unicast."; |
| } |
| status obsolete; |
| description |
| "This leaf augments an IPv4 unicast route."; |
| leaf destination-prefix { |
| type inet:ipv4-prefix; |
| status obsolete; |
| description |
| "IPv4 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, 'v4ur:ipv4-unicast')" { |
| description |
| "This augment is valid only for IPv4 unicast."; |
| } |
| status obsolete; |
| description |
| "Augments the 'simple-next-hop' case in IPv4 unicast routes."; |
| leaf next-hop-address { |
| type inet:ipv4-address; |
| status obsolete; |
| description |
| "IPv4 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, |
| 'v4ur:ipv4-unicast')" { |
| description |
| "This augment is valid only for IPv4 unicast."; |
| } |
| status obsolete; |
| description |
| "This leaf augments the 'next-hop-list' case of IPv4 unicast |
| routes."; |
| leaf address { |
| type inet:ipv4-address; |
| status obsolete; |
| description |
| "IPv4 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, |
| 'v4ur:ipv4-unicast')" { |
| description |
| "This augment is valid only for IPv4 unicast RIBs."; |
| } |
| status obsolete; |
| description |
| "This augment adds the input parameter of the 'active-route' |
| action."; |
| leaf destination-address { |
| type inet:ipv4-address; |
| status obsolete; |
| description |
| "IPv4 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, |
| 'v4ur:ipv4-unicast')" { |
| description |
| "This augment is valid only for IPv4 unicast."; |
| } |
| status obsolete; |
| description |
| "This augment adds the destination prefix to the reply of the |
| 'active-route' action."; |
| leaf destination-prefix { |
| type inet:ipv4-prefix; |
| status obsolete; |
| description |
| "IPv4 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, |
| 'v4ur:ipv4-unicast')" { |
| description |
| "This augment is valid only for IPv4 unicast."; |
| } |
| status obsolete; |
| description |
| "Augments the 'simple-next-hop' case in the reply to the |
| 'active-route' action."; |
| leaf next-hop-address { |
| type inet:ipv4-address; |
| status obsolete; |
| description |
| "IPv4 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, |
| 'v4ur:ipv4-unicast')" { |
| description |
| "This augment is valid only for IPv4 unicast."; |
| } |
| status obsolete; |
| description |
| "Augments the 'next-hop-list' case in the reply to the |
| 'active-route' action."; |
| leaf next-hop-address { |
| type inet:ipv4-address; |
| status obsolete; |
| description |
| "IPv4 address of the next hop."; |
| } |
| } |
| } |