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.";
    }
  }
}
