Adding OpenConfig YANG models.

Change-Id: I0a2fdd5826e80933cf4b9ae939ff3051acec02aa
diff --git a/models/openconfig/src/main/yang/aft/openconfig-aft-mpls.yang b/models/openconfig/src/main/yang/aft/openconfig-aft-mpls.yang
new file mode 100644
index 0000000..38e5cc0
--- /dev/null
+++ b/models/openconfig/src/main/yang/aft/openconfig-aft-mpls.yang
@@ -0,0 +1,89 @@
+submodule openconfig-aft-mpls {
+  belongs-to "openconfig-aft" {
+    prefix "oc-aft";
+  }
+
+  import openconfig-extensions { prefix "oc-ext"; }
+  import openconfig-mpls-types { prefix "oc-mpls-types"; }
+
+  // Include common cross-AFT groupings from the common submodule.
+  include openconfig-aft-common;
+
+  oc-ext:openconfig-version "0.3.0";
+
+  organization
+    "OpenConfig working group";
+
+  contact
+    "OpenConfig working group
+    www.openconfig.net";
+
+  description
+    "Submodule containing definitions of groupings for the abstract
+    forwarding table for MPLS label forwarding.";
+
+  revision 2017-05-10 {
+    description
+      "Refactor to provide concretised per-AF schemas per AFT.";
+    reference "0.3.0";
+  }
+
+  grouping aft-mpls-structural {
+    description
+      "Structural grouping defining the schema for the MPLS
+      abstract forwarding table.";
+
+    list label-entry {
+      key "label";
+
+      description
+        "List of the MPLS entries within the abstract
+        forwarding table. This list is keyed by the top-most MPLS
+        label.";
+
+      leaf label {
+        type leafref {
+          path "../config/label";
+        }
+        description
+          "Reference to the top-most MPLS label matched by the
+          entry.";
+      }
+
+      container config {
+        description
+          "Configuration parameters for the MPLS AFT entry.";
+        uses aft-mpls-entry-config;
+      }
+
+      container state {
+        config false;
+        description
+          "Operational state parameters for the MPLS AFT
+          entry.";
+        uses aft-mpls-entry-config;
+        uses aft-mpls-entry-state;
+      }
+
+      uses aft-common-nhop-structural;
+    }
+  }
+
+  grouping aft-mpls-entry-config {
+    description
+      "Configuration parameters for the MPLS entry.";
+
+    leaf label {
+        type oc-mpls-types:mpls-label;
+        description
+          "The top-most MPLS label that should be matched to
+          utilise the AFT entry.";
+    }
+  }
+
+  grouping aft-mpls-entry-state {
+    description
+      "Operational state parameters for the MPLS entry.";
+    uses aft-common-entry-state;    
+  }
+}
\ No newline at end of file