Adding OpenConfig YANG models.

Change-Id: I0a2fdd5826e80933cf4b9ae939ff3051acec02aa
diff --git a/models/openconfig/src/main/yang/ospf/openconfig-ospfv2-area.yang b/models/openconfig/src/main/yang/ospf/openconfig-ospfv2-area.yang
new file mode 100644
index 0000000..5624a49
--- /dev/null
+++ b/models/openconfig/src/main/yang/ospf/openconfig-ospfv2-area.yang
@@ -0,0 +1,157 @@
+submodule openconfig-ospfv2-area {
+
+  belongs-to openconfig-ospfv2 {
+    prefix "oc-ospfv2";
+  }
+
+  import openconfig-extensions { prefix "oc-ext"; }
+  import openconfig-ospf-types { prefix "oc-ospf-types"; }
+  import ietf-inet-types { prefix "inet"; }
+
+  // include other required submodules
+  include openconfig-ospfv2-area-interface;
+  include openconfig-ospfv2-lsdb;
+
+  // meta
+  organization "OpenConfig working group";
+
+  contact
+    "OpenConfig working group
+    www.openconfig.net";
+
+  description
+    "This submodule provides OSPFv2 configuration and operational
+    state parameters that are specific to the area context";
+
+  oc-ext:openconfig-version "0.1.0";
+
+  revision "2017-02-28"{
+    description
+      "Initial public release of OSPFv2";
+    reference "0.1.0";
+  }
+
+  revision "2016-06-24" {
+    description
+      "Initial revision";
+    reference "0.0.1";
+  }
+
+  grouping ospfv2-area-config {
+    description
+      "Configuration parameters relating to an OSPF area";
+
+    leaf identifier {
+      type oc-ospf-types:ospf-area-identifier;
+      description
+        "An identifier for the OSPFv2 area - described as either a
+        32-bit unsigned integer, or a dotted-quad";
+    }
+  }
+
+  grouping ospfv2-area-mpls-config {
+    description
+      "Configuration parameters relating to OSPFv2 extensions for
+      MPLS";
+
+    leaf traffic-engineering-enabled {
+      type boolean;
+      description
+        "Specifies whether traffic engineering extensions should be
+        advertised within the area";
+    }
+  }
+
+  grouping ospfv2-area-virtual-link-config {
+    description
+      "Configuration parameters relating to a virtual-link within
+      the OSPF area";
+
+    leaf remote-router-id {
+      type inet:ipv4-address-no-zone;
+      description
+        "The router ID of the device which terminates the remote end
+        of the virtual link";
+    }
+  }
+
+  grouping ospfv2-area-structure {
+    description
+      "Structural grouping for configuration and operational state
+      parameters that relate to an individual area";
+
+    container config {
+      description
+        "Configuration parameters relating to an OSPFv2 area";
+
+      uses ospfv2-area-config;
+    }
+
+    container state {
+      config false;
+      description
+        "Operational state parameters relating to an OSPFv2 area";
+      uses ospfv2-area-config;
+    }
+
+    container mpls {
+      description
+        "Configuration and operational state parameters for OSPFv2
+        extensions relating to MPLS";
+
+      container config {
+        description
+          "Configuration parameters relating to MPLS extensions for
+          OSPFv2";
+        uses ospfv2-area-mpls-config;
+      }
+
+      container state {
+        config false;
+        description
+          "Operational state parameters relating to MPLS extensions
+          for OSPFv2";
+        uses ospfv2-area-mpls-config;
+      }
+    }
+
+    uses ospfv2-lsdb-structure;
+    uses ospfv2-area-interfaces-structure;
+
+    container virtual-links {
+      description
+        "Configuration and state parameters relating to virtual
+        links from the source area to a remote router";
+
+      list virtual-link {
+        key "remote-router-id";
+
+        description
+          "Configuration and state parameters relating to a
+          virtual link";
+
+        leaf remote-router-id {
+          type leafref {
+            path "../config/remote-router-id";
+          }
+          description
+            "Reference to the remote router ID";
+        }
+
+        container config {
+          description
+            "Configuration parameters relating to the OSPF virtual link";
+          uses ospfv2-area-virtual-link-config;
+        }
+
+        container state {
+          config false;
+          description
+            "State parameters relating to the OSPF virtual link";
+          uses ospfv2-area-virtual-link-config;
+          uses ospfv2-area-interface-neighbor-state;
+        }
+      }
+    }
+  }
+}