submodule openconfig-aft-pf {
  belongs-to "openconfig-aft" {
    prefix "oc-aft";
  }

  import openconfig-extensions { prefix "oc-ext"; }
  import openconfig-inet-types { prefix "oc-inet"; }
  import openconfig-yang-types { prefix "oc-yang"; }
  import openconfig-mpls-types { prefix "oc-mplst"; }
  import openconfig-packet-match-types {
    prefix "oc-pkt-match-types";
  }

  // Include common cross-AFT groupings from the common submodule.
  include openconfig-aft-common;

  organization
    "OpenConfig working group";

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

  description
    "Submodule containing definitions of groupings for the abstract
    forwarding table(s) for policy forwarding entries. These are
    defined to be forwarding tables that allow matches on
    fields other than the destination address that is used in
    other forwarding tables.";

  oc-ext:openconfig-version "0.3.0";

  revision 2017-05-10 {
    description
      "Refactor to provide concretised per-AF schemas per AFT.";
    reference "0.3.0";
  }

  grouping aft-pf-structural {
    description
      "Structural grouping defining the schema for the policy
      forwarding abstract forwarding table.";

    list policy-forwarding-entry {
      key "index";

      description
        "List of the policy forwarding entries within the abstract
        forwarding table. Each entry is uniquely identified by an
        index on the system, due to the arbitrary match conditions
        that may be implemented within the policy forwarding AFT.
        The index may change upon changes of the entry if, and only
        if, the device exporting the AFT replaces the entire entry
        by removing the previous entry and replacing it with a
        subsequent updated version.";

      leaf index {
        type leafref {
          path "../config/index";
        }
        description
          "Reference to the arbitary index for the policy forwarding
          AFT entry.";
      }

      container config {
        description
          "Configuration parameters for the Policy forwarding
          AFT entry.";
        uses aft-pf-entry-config;
      }

      container state {
        config false;
        description
          "Operational state parameters for the Policy Forwarding
          AFT entry.";
        uses aft-pf-entry-config;
        uses aft-pf-entry-state;
      }

      uses aft-common-nhop-structural;
    }
  }

  grouping aft-pf-entry-config {
    description
      "Configuration parameters for the Policy Forwarding
      AFT entry.";

    leaf index {
      type uint64;
      description
        "An arbitrary 64-bit index identifying the policy forwarding
        AFT entry.";
    }

    leaf ip-prefix {
      type oc-inet:ip-prefix;
      description
        "The IP prefix that the forwarding entry matches.";
    }

    leaf mac-address {
      type oc-yang:mac-address;
      description
         "The MAC address that the forwarding entry matches. Used for
         Layer 2 forwarding entries, e.g., within a VSI instance.";
    }

    leaf mpls-label {
      type oc-mplst:mpls-label;
      description
        "The MPLS label that the forwarding entry matches. Used for
        MPLS forwarding entries, whereby the local device acts as an
        LSR.";
    }

    leaf mpls-tc {
      type oc-mplst:mpls-tc;
      description
        "The value of the MPLS Traffic Class bits (formerly known as
        the MPLS experimental bits) that are to be matched by the AFT
        entry.";
      reference
        "RFC5462: Multiprotocol Label Switching (MPLS) Label Stack
        Entry: 'EXP' Field Renamed to 'Traffic Class' Field"; }

    leaf ip-dscp {
      type oc-inet:dscp;
      description
        "The value of the differentiated services code point (DSCP) to
        be matched for the forwarding entry. The value is specified in
        cases where specific class-based forwarding based on IP is
        implemented by the device.";
    }

    leaf ip-protocol {
      type oc-pkt-match-types:ip-protocol-type;
      description
        "The value of the IP protocol field of an IPv4 packet, or the
        next-header field of an IPv6 packet which is to be matched by
        the AFT entry. This field is utilised where forwarding is
        performed based on L4 information.";
    }

    leaf l4-src-port {
      type oc-inet:port-number;
      description
        "The value of the source port field of the transport header
        that is to be matched by the AFT entry.";
    }

    leaf l4-dst-port {
      type oc-inet:port-number;
      description
        "The value of the destination port field of the transport
        header that is to be matched by the AFT entry.";
    }
  }

  grouping aft-pf-entry-state {
    description
      "Operational state parameters for the Policy Forwarding
      AFT entry.";
    uses aft-common-entry-state;    
  }
}