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.";
  }
}
