module openconfig-isis-policy {

  yang-version "1";

  // namespace
  namespace "http://openconfig.net/yang/openconfig-isis-policy";

  prefix "oc-isis-pol";

  // import some basic types
  import openconfig-routing-policy {prefix rpol; }
  import openconfig-extensions { prefix oc-ext; }
  import openconfig-isis-types { prefix isis-types; }


  // meta
  organization
    "OpenConfig working group";

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

  description
    "This module contains data definitions for ISIS routing policy.
    It augments the base routing-policy module with BGP-specific
    options for conditions and actions.";

  oc-ext:openconfig-version "0.3.2";

  revision "2017-07-26" {
    description
      "Update LSDB and fix bugs.";
    reference "0.3.2";
  }

  revision "2017-05-15" {
    description
      "Refactor LSDB.";
    reference "0.3.0";
  }

  revision "2017-01-13" {
    description
      "Remove top-level /isis container";
    reference "0.2.1";
  }

  revision "2016-12-15" {
    description
      "Add segment routing to IS-IS module";
    reference "0.2.0";
  }

  revision "2016-10-18" {
    description
      "Initial revision of IS-IS models.";
    reference "0.1.0";
  }

  // extension statements

  // feature statements

  // identity statements

  // typedef statements

  // grouping statements

   grouping isis-match-conditions {
    description
      "Criteria used to match IS-IS routes within the policy";

    container isis-conditions {
      description
        "Match conditions relating to the IS-IS protocol";

      container config {
        description
          "Configuration parameters relating to IS-IS match
          conditions";

        uses isis-match-conditions-config;
      }

      container state {
        config false;
        description
          "Operational state parameters relating to IS-IS match
          conditions";
        uses isis-match-conditions-config;
      }
    }
  }

  grouping isis-match-conditions-config {
    description
      "Match conditions for IS-IS";

    leaf level-eq {
      type isis-types:level-number;
      description
        "Match the level that the IS-IS prefix is within. This can
        be used in the case that import or export policies refer
        to an IS-IS instance that has multiple levels configured
        within it";
    }
  }

  grouping isis-actions {
    description
      "Actions supplied by the IS-IS protocol to be set on a
      route within the policy";

    container isis-actions {
      description
        "Actions that can be performed by IS-IS within a policy";

      container config {
        description
          "Configuration parameters relating to IS-IS actions";

        uses isis-actions-config;
      }

      container state {
        config false;
        description
          "Operational state associated with IS-IS actions";

        uses isis-actions-config;
      }
    }
  }

  grouping isis-actions-config {
    description
      "Actions for IS-IS";

    leaf set-level {
      type isis-types:level-number;
      description
        "Set the level that a prefix is to be imported into.";
    }

    leaf set-metric-type {
      type isis-types:level-number;
      description
        "Set the type of metric that is to be specified when the
        set metric leaf is specified";
    }

    leaf set-metric {
      type isis-types:wide-metric;
      description
        "Set the metric of the IS-IS prefix";
    }
  }

  // augment statements
 augment "/rpol:routing-policy/rpol:policy-definitions/" +
    "rpol:policy-definition/rpol:statements/rpol:statement/" +
    "rpol:actions" {
    description "This augments igp-actions with ISIS conditions";
    uses isis-actions;

  }

  augment "/rpol:routing-policy/rpol:policy-definitions/" +
    "rpol:policy-definition/rpol:statements/rpol:statement/" +
    "rpol:conditions" {
    description "This augments igp-conditions with ISIS conditions";
    uses isis-match-conditions;
  }

  // rpc statements

  // notification statements
}
