Adding OpenConfig YANG models.

Change-Id: I0a2fdd5826e80933cf4b9ae939ff3051acec02aa
diff --git a/models/openconfig/src/main/yang/isis/openconfig-isis-types.yang b/models/openconfig/src/main/yang/isis/openconfig-isis-types.yang
new file mode 100644
index 0000000..fc474c9
--- /dev/null
+++ b/models/openconfig/src/main/yang/isis/openconfig-isis-types.yang
@@ -0,0 +1,330 @@
+module openconfig-isis-types {
+
+  yang-version "1";
+
+  // namespace
+  namespace "http://openconfig.net/yang/isis-types";
+
+  prefix "oc-isis-types";
+
+  import openconfig-extensions { prefix oc-ext; }
+
+  // meta
+  organization "OpenConfig working group";
+
+  contact
+    "OpenConfig working group
+    www.openconfig.net";
+
+  description
+    "This module contains general data definitions for use in ISIS YANG
+    model.";
+
+  oc-ext:openconfig-version "0.3.2";
+
+  revision "2017-07-26" {
+    description
+      "Update LSDB and fix bugs.";
+    reference "0.3.2";
+  }
+
+  revision "2017-05-15" {
+    description
+      "Refactor LSDB.";
+    reference "0.3.0";
+  }
+
+  revision "2017-01-13" {
+    description
+      "Remove top-level /isis container";
+    reference "0.2.1";
+  }
+
+  revision "2016-12-15" {
+    description
+      "Add segment routing to IS-IS module";
+    reference "0.2.0";
+  }
+
+  revision "2016-10-18" {
+    description
+      "Initial revision of IS-IS models.";
+    reference "0.1.0";
+  }
+
+  // identity statements
+  identity OVERLOAD_RESET_TRIGGER_TYPE {
+    description
+      "Base identify type for triggers that reset Overload Bit";
+  }
+
+  identity WAIT_FOR_BGP {
+    base OVERLOAD_RESET_TRIGGER_TYPE;
+    description
+      "Base identity type for resetting Overload Bit when BGP has converged. ";
+  }
+
+  identity WAIT_FOR_SYSTEM {
+    base OVERLOAD_RESET_TRIGGER_TYPE;
+    description
+      "Base identity type for resetting Overload Bit when system resources have
+      been restored. ";
+  }
+
+  identity MT_TYPE {
+    description
+      "Base identify type for multi-topology";
+  }
+
+  identity SAFI_TYPE {
+    description
+      "Base identify type for SAFI";
+  }
+
+  identity AFI_TYPE {
+    description
+      "Base identify type for AFI";
+  }
+
+  identity AFI_SAFI_TYPE {
+    description
+      "Base identify type for AFI/SAFI";
+  }
+
+  identity IPV4_UNICAST {
+    base AFI_SAFI_TYPE;
+    description
+      "Base identify type for IPv4 Unicast address family";
+  }
+
+  identity IPV6_MULTICAST {
+    base AFI_SAFI_TYPE;
+    description
+      "Base identify type for IPv6 multicast address family";
+  }
+
+  identity IPV4_MULTICAST {
+    base AFI_SAFI_TYPE;
+    description
+      "Base identify type for IPv4 multicast address family";
+  }
+
+  identity IPV6_UNICAST {
+    base AFI_SAFI_TYPE;
+    description
+      "Base identify type for IPv6 unicast address family";
+  }
+
+  identity UNICAST {
+    base SAFI_TYPE;
+    description
+      "Base identify type for IPv4 Unicast address family";
+  }
+
+  identity MULTICAST {
+    base SAFI_TYPE;
+    description
+      "Base identify type for IPv6 multicast address family";
+  }
+
+  identity IPV4 {
+    base AFI_TYPE;
+    description
+      "Base identify type for IPv4 address family";
+  }
+
+  identity IPV6 {
+    base AFI_TYPE;
+    description
+      "Base identify type for IPv6 address family";
+  }
+
+  // typedef statements
+  typedef level-type {
+    type enumeration {
+      enum LEVEL_1 {
+        description "This enum describes ISIS level 1";
+      }
+      enum LEVEL_2 {
+        description "This enum describes ISIS level 2";
+      }
+      enum LEVEL_1_2 {
+        description "This enum describes ISIS level 1-2";
+      }
+    }
+    description
+        "This type defines ISIS level types";
+  }
+
+  typedef level-number {
+    type uint8 {
+      range "1..2";
+    }
+    description
+        "This type defines ISIS level.";
+  }
+
+  typedef adaptive-timer-type {
+    type enumeration {
+      enum LINEAR {
+        description "This enum describes linear algorithm timer";
+      }
+      enum EXPONENTIAL {
+        description "This enum describes exponential algorithm timer";
+      }
+    }
+    description
+        "This type defines ISIS adaptive timer types";
+  }
+
+  typedef hello-padding-type {
+    type enumeration {
+      enum STRICT {
+        description "This enum describes strict padding";
+      }
+      enum LOOSE {
+        description "This enum describes loose padding";
+      }
+      enum ADAPTIVE {
+        description "This enum describes adaptive padding";
+      }
+      enum DISABLE {
+        description "This enum disables padding";
+      }
+    }
+    description
+        "This type defines ISIS hello padding type";
+  }
+
+  typedef circuit-type {
+    type enumeration {
+      enum POINT_TO_POINT {
+        description "This enum describes a point-to-point interface";
+      }
+      enum BROADCAST {
+        description "This enum describes a broadcast interface";
+      }
+    }
+    description
+        "This type defines ISIS interface types ";
+  }
+
+  typedef metric-type {
+    type enumeration {
+      enum INTERNAL {
+        description "This enum describes internal route type";
+      }
+      enum EXTERNAL {
+        description "This enum describes external route type";
+      }
+    }
+    description
+      "This type defines ISIS metric type";
+  }
+
+  typedef wide-metric {
+    type uint32 {
+      range "1..16777215";
+    }
+    description
+        "This type defines ISIS wide metric.";
+  }
+
+  typedef narrow-metric {
+    type uint8 {
+      range "1..63";
+    }
+    description
+        "This type defines ISIS narrow metric.";
+  }
+
+  typedef metric-style {
+    type enumeration {
+      enum NARROW_METRIC {
+        description
+                "This enum describes narrow metric style";
+        reference "RFC1195";
+      }
+      enum WIDE_METRIC {
+        description
+                "This enum describes wide metric style";
+        reference "RFC5305";
+      }
+    }
+    description
+        "This type defines ISIS metric styles";
+  }
+
+  typedef isis-interface-adj-state {
+    type enumeration {
+      enum UP {
+        description
+          "This state describes that adjacency is established.";
+      }
+      enum DOWN {
+        description
+          "This state describes that adjacency is NOT established.";
+      }
+      enum INIT {
+        description
+          "This state describes that adjacency is establishing.";
+      }
+      enum FAILED {
+        description
+          "This state describes that adjacency is failed.";
+      }
+    }
+    description
+      "This type defines the state of the interface.";
+  }
+
+  typedef net {
+    type string {
+      pattern '^[a-fA-F0-9]{2}(\.[a-fA-F0-9]{4}){3,9}\.[a-fA-F0-9]{2}$';
+    }
+    description
+      "This type defines OSI NET address. A NET should should be in
+      the form xx.yyyy.yyyy.yyyy.00 with up to 9 sets of yyyy.";
+  }
+
+  typedef area-address {
+    type string {
+      pattern '^[0-9A-Fa-f]{2}\.([0-9A-Fa-f]{4}\.){0,3}$';
+    }
+    description
+        "This type defines the ISIS area address.";
+  }
+
+  typedef system-id {
+    type string {
+      pattern '^[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}$';
+    }
+    description
+      "This type defines ISIS system id using pattern, system id looks
+       like : 0143.0438.AeF0";
+  }
+
+  typedef extended-circuit-id {
+    type uint32;
+    description
+      "This type defines interface circuit ID.";
+  }
+
+  typedef lsp-id {
+    type string {
+      pattern
+            '^[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]'
+      +      '{4}\.[0-9][0-9]-[0-9][0-9]$';
+    }
+    description
+      "This type defines ISIS LSP ID. ISIS LSP ID type should be in
+      the form of xxxx.xxxx.xxxx.xx-xx";
+  }
+  typedef snpa {
+    type string {
+      length "0 .. 20";
+    }
+    description
+      "This type defines Subnetwork Point of Attachment format.";
+  }
+}