module openconfig-extensions {

  yang-version "1";

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

  prefix "oc-ext";

  // meta
  organization "OpenConfig working group";

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

  description
    "This module provides extensions to the YANG language to allow
    OpenConfig specific functionality and meta-data to be defined.";

  revision "2017-04-11" {
    description
      "rename password type to 'hashed' and clarify description";
    reference "0.3.0";
  }

  revision "2017-01-29" {
    description
      "Added extension for annotating encrypted values.";
    reference "0.2.0";
  }

  revision "2015-10-09" {
    description
      "Initial OpenConfig public release";
    reference "0.1.0";
  }


  // extension statements
  extension openconfig-version {
    argument "semver" {
      yin-element false;
    }
    description
      "The OpenConfig version number for the module. This is
      expressed as a semantic version number of the form:
        x.y.z
      where:
        * x corresponds to the major version,
        * y corresponds to a minor version,
        * z corresponds to a patch version.
      This version corresponds to the model file within which it is
      defined, and does not cover the whole set of OpenConfig models.
      Where several modules are used to build up a single block of
      functionality, the same module version is specified across each
      file that makes up the module.

      A major version number of 0 indicates that this model is still
      in development (whether within OpenConfig or with industry
      partners), and is potentially subject to change.

      Following a release of major version 1, all modules will
      increment major revision number where backwards incompatible
      changes to the model are made.

      The minor version is changed when features are added to the
      model that do not impact current clients use of the model.

      The patch-level version is incremented when non-feature changes
      (such as bugfixes or clarifications to human-readable
      descriptions that do not impact model functionality) are made
      that maintain backwards compatibility.

      The version number is stored in the module meta-data.";
  }

  extension openconfig-hashed-value {
    description
      "This extension provides an annotation on schema nodes to
      indicate that the corresponding value should be stored and
      reported in hashed form.

      Hash algorithms are by definition not reversible. Clients
      reading the configuration or applied configuration for the node
      should expect to receive only the hashed value. Values written
      in cleartext will be hashed. This annotation may be used on
      nodes such as secure passwords in which the device never reports
      a cleartext value, even if the input is provided as cleartext.";
  }
}
