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

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

  prefix "oc-pf";

  import openconfig-extensions { prefix "oc-ext"; }

  // Include submodules.
  include openconfig-pf-forwarding-policies;
  include openconfig-pf-path-groups;
  include openconfig-pf-interfaces;

  organization
    "OpenConfig working group";

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

  description
    "This module defines configuration and operational state data
    relating to policy-based forwarding. Policy-based forwarding is
    utilised when a system chooses how to forward packets (including
    applying data-plane operations such as encapsulation or
    decapsulation) based on policies other than destination L2 or L3
    header. Typically, systems may implement:

     - IP policy-based routing, where routing may be done based on the
       source plus destination of an IP packet; information within the
       L4 header; or some combination of both.
     - Encapsulation or decapsulation based on certain policy
       information - for example, matching particular IP destinations
       and decapsulating GRE headers.
     - Class-based selection of egress routes - such as class-based
       selection of an egress MPLS path.

    The policies that are defined in this model are applied to a
    particular ingress context of a network element (e.g., interface)
    and are defined to apply following other interface policy such as
    QoS classification and access control lists.

    This module defines:

     - policy-forwarding
    |
    |--- policies
    |    |-- policy
    |        |-- [match criteria]    How packets are defined to
    |        |                       match policy.
    |        |-- [forwarding-action] How packets matching should
    |                                 be forwarded.
    |--- interfaces
    |    |-- interfaces
    |        | -- apply-forwarding-policy  Forwarding policy to
    |                                      used on the interface.
    |--- path-selection-groups
         |-- path-selection-group     A group of forwarding resources
                                      that are grouped for purposes
                                      of next-hop selection.

    A forwarding-policy specifies the match criteria that it intends
    to use to determine the packets that it reroutes - this may
    consist of a number of criteria, such as DSCP. The action of the
    policy results in a forwarding action being applied to matching
    packets. For example, decapsulating the packet from a GRE header.
    In order to enact the policy based on particular interfaces - the
    forwarding-policy is applied to an interface via referencing it
    within an 'apply-forwarding-policy' statement associated with an
    interface.

    In some cases (e.g., Class-Based Tunnel Selection) the forwarding
    action does not resolve to a single egress action, and rather
    normal forwarding rules are to be applied but considering a subset
    of forwarding resources. In these cases, a path-selection-group
    can be created, referencing the subset of forwarding paths that
    should be used for the egress selection. In the case that a subset
    of MPLS LSPs are eligible for, say, DSCP 46 marked packets, a
    path-selection-group is created, referencing the subset of LSPs.
    The forwarding action of the corresponding policy is set to
    PATH_GROUP and references the configured group of LSPs.";

  oc-ext:openconfig-version "0.2.0";

  revision "2017-06-21" {
    description
      "Amend policy forwarding model based on ACL changes.";
    reference "0.2.0";
  }

  revision "2017-02-28" {
    description
      "Initial public release of policy forwarding.";
    reference "0.1.0";
  }

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


  grouping policy-forwarding-top {
    description
      "Top-level grouping for Policy Forwarding";

    container policy-forwarding {
      description
        "Configuration and operational state relating to policy-forwarding within
        a network instance.";

      uses pf-forwarding-policy-structural;
      uses pf-interfaces-structural;
      uses pf-path-groups-structural;
    }
  }
}
