module openconfig-ospf-policy {
  yang-version "1";

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

  prefix "oc-ospf-pol";

  import openconfig-routing-policy { prefix "oc-rpol"; }
  import openconfig-extensions { prefix "oc-ext"; }
  import openconfig-ospf-types { prefix "oc-ospf-types"; }

  organization
    "OpenConfig working group";

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

  description
    "This module defines extensions to the OpenConfig policy
    model to add extensions for OSPF. This module is intended
    to be generic for both OSPFv2 and OSPFv3.";

  oc-ext:openconfig-version "0.0.1";

  revision "2016-08-22" {
    description
      "Initial revision";
    reference "0.0.1";
  }

  grouping ospf-match-config {
    description
      "Configuration parameters for OSPF match conditions";

    leaf area-eq {
      type oc-ospf-types:ospf-area-identifier;
      description
        "Match prefixes which are within a particular OSPF area";
    }
  }

  grouping ospf-match-conditions {
    description
      "Match conditions that are added by OSPF";

    container ospf-conditions {
      description
        "Match conditions specific to OSPF";

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

        uses ospf-match-config;
      }

      container state {
        config false;
        description
          "Operational state parameters relating to OSPF match conditions";

        uses ospf-match-config;
      }
    }
  }

  grouping ospf-actions-config {
    description
      "Configuration parameters for OSPF policy actions";

    leaf set-area {
      type oc-ospf-types:ospf-area-identifier;
      description
        "Set the area for the matched route. This action is typically
        used when importing prefixes into OSPF, such that a route can
        be imported into a specific area within the instance.";
    }
  }

  grouping ospf-actions-set-metric-config { 
    description
      "Configuration parameters relating to setting the OSPF metric";

    leaf metric-type {
      type enumeration {
        enum EXTERNAL_TYPE_1 {
          description
            "Set the external type 1 metric";
        }
        enum EXTERNAL_TYPE_2 {
          description
            "Set the external type 2 metric";
        }
      }
      default "EXTERNAL_TYPE_2";
      description
        "Specify the type of metric which is to be set by the policy";
    }

    leaf metric {
      type oc-ospf-types:ospf-metric;
      description
        "Set the metric of the routes matching the policy to the value
        specified by this leaf.";
    }
  }

  grouping ospf-actions {
    description
      "Actions that are added by OSPF to the action framework";

    container ospf-actions {
      description
        "Actions specific to OSPF";

      container config {
        description
          "Configuration parameters for OSPF actions";

        uses ospf-actions-config;
      }

      container state {
        config false;
        description
          "Operational state parameters for OSPF actions";

        uses ospf-actions-config;
      }

      container set-metric {
        description
          "Configuration and state parameters relating to manipulating
          the OSPF metric";

        container config {
          description
            "Configuration parameters relating to setting the OSPF metric";
          uses ospf-actions-set-metric-config;
        }

        container state {
          config false;
          description
            "Operational state parameters relating to setting the OSPF
            metric";

          uses ospf-actions-set-metric-config;
        }
      }
    }
  }

  // augment the groupings into the routing policy model

  // TODO: discuss whether igp-actions should be used or whether this should 
  // be removed.

  augment "/oc-rpol:routing-policy/oc-rpol:policy-definitions/" +
            "oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/" +
            "oc-rpol:conditions" {
    description
      "Add OSPF specific match conditions to the routing policy model";
    uses ospf-match-conditions;
  }

  augment "/oc-rpol:routing-policy/oc-rpol:policy-definitions/" +
            "oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/" +
            "oc-rpol:actions" {
    description
      "Add OSPF specific actions to the routing policy model";
    uses ospf-actions;
  }

}