module openconfig-if-ip-ext {

  yang-version "1";

  // namespace
  namespace "http://openconfig.net/yang/interfaces/ip-ext";

  prefix "oc-ip-ext";

  import openconfig-interfaces { prefix oc-if; }
  import openconfig-if-ip { prefix oc-ip; }
  import openconfig-extensions { prefix oc-ext; }


  // meta
  organization "OpenConfig working group";

  contact
    "OpenConfig working group
    www.openconfig.net";

  description
    "This module adds extensions to the base IP configuration and
    operational state model to support additional use cases.";

  oc-ext:openconfig-version "2.0.0";

  revision "2017-07-14" {
    description
      "Added Ethernet/IP state data; Add dhcp-client;
      migrate to OpenConfig types modules; Removed or
      renamed opstate values";
    reference "2.0.0";
  }

  revision "2016-12-22" {
    description
      "Fixes to Ethernet interfaces model";
    reference "1.1.0";
  }


  // grouping statements

  grouping ipv6-autoconf-config {
    description
      "Configuration data for IPv6 address autoconfiguration";

    leaf create-global-addresses {
      type boolean;
      default true;
      description
        "[adapted from IETF IP model RFC 7277]

        If enabled, the host creates global addresses as
        described in RFC 4862.";
      reference
        "RFC 4862: IPv6 Stateless Address Autoconfiguration
                  Section 5.5";
    }
    leaf create-temporary-addresses {
      type boolean;
      default false;
      description
      "[adapted from IETF IP model RFC 7277]

      If enabled, the host creates temporary addresses as
      described in RFC 4941.";
      reference
        "RFC 4941: Privacy Extensions for Stateless Address
                  Autoconfiguration in IPv6";
    }

    leaf temporary-valid-lifetime {
      type uint32;
      units "seconds";
      default 604800;
      description
        "[adapted from IETF IP model RFC 7277]

        The time period during which the temporary address
        is valid.";
      reference
        "RFC 4941: Privacy Extensions for Stateless Address
                  Autoconfiguration in IPv6
                  - TEMP_VALID_LIFETIME";
    }

    leaf temporary-preferred-lifetime {
      type uint32;
      units "seconds";
      default 86400;
      description
        "[adapted from IETF IP model RFC 7277]

        The time period during which the temporary address is
        preferred.";
      reference
        "RFC 4941: Privacy Extensions for Stateless Address
                  Autoconfiguration in IPv6
                  - TEMP_PREFERRED_LIFETIME";
    }
  }

  grouping ipv6-autoconf-state {
    description
      "Operational state data for IPv6 address autoconfiguration";

    //TODO: placeholder for additional opstate for IPv6 autoconf
  }

  grouping ipv6-autoconf-top {
    description
      "Top-level grouping for IPv6 address autoconfiguration";

    container autoconf {
      description
        "Top-level container for IPv6 autoconf";

      container config {
        description
          "[adapted from IETF IP model RFC 7277]

          Parameters to control the autoconfiguration of IPv6
          addresses, as described in RFC 4862.";
        reference
          "RFC 4862: IPv6 Stateless Address Autoconfiguration";

        uses ipv6-autoconf-config;
      }

      container state {

        config false;

        description
          "Operational state data ";

        uses ipv6-autoconf-config;
        uses ipv6-autoconf-state;
      }
    }
  }

  // data definition statements

  // augment statements

  augment "/oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/" +
    "oc-if:subinterface/oc-ip:ipv6" {
      description
        "Adds address autoconfiguration to the base IP model";

      uses ipv6-autoconf-top;
    }

}