Isolate IETF models in OpenConfig to own bundle

Change-Id: I15fff358582dd7b361d015c2d30c981a703fd1be
diff --git a/models/openconfig/BUCK b/models/openconfig/BUCK
index 60f7572..5905528 100644
--- a/models/openconfig/BUCK
+++ b/models/openconfig/BUCK
@@ -1,5 +1,10 @@
 COMPILE_DEPS = [
     '//lib:CORE_DEPS',
+    '//models/ietf:onos-models-ietf',
+]
+
+APPS = [
+    'org.onosproject.models.ietf',
 ]
 
 yang_model(
@@ -7,4 +12,5 @@
   title = 'OpenConfig YANG Models',
   custom_registrator = True,
   deps = COMPILE_DEPS,
+  required_apps = APPS,
 )
diff --git a/models/openconfig/pom.xml b/models/openconfig/pom.xml
index d81422b..cfa6354 100644
--- a/models/openconfig/pom.xml
+++ b/models/openconfig/pom.xml
@@ -47,6 +47,12 @@
             <version>${project.version}</version>
         </dependency>
 
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-models-ietf</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
     </dependencies>
 
     <build>
diff --git a/models/openconfig/src/main/yang/comm/ietf-inet-types@2013-07-15.yang b/models/openconfig/src/main/yang/comm/ietf-inet-types@2013-07-15.yang
deleted file mode 100644
index 2b7ed38..0000000
--- a/models/openconfig/src/main/yang/comm/ietf-inet-types@2013-07-15.yang
+++ /dev/null
@@ -1,454 +0,0 @@
-  module ietf-inet-types {
-
-    yang-version 1;
-
-    namespace
-      "urn:ietf:params:xml:ns:yang:ietf-inet-types";
-
-    prefix inet;
-
-    organization
-      "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
-
-    contact
-      "WG Web:   <http://tools.ietf.org/wg/netmod/>
-    WG List:  <mailto:netmod@ietf.org>
-
-    WG Chair: David Kessens
-              <mailto:david.kessens@nsn.com>
-
-    WG Chair: Juergen Schoenwaelder
-              <mailto:j.schoenwaelder@jacobs-university.de>
-
-    Editor:   Juergen Schoenwaelder
-              <mailto:j.schoenwaelder@jacobs-university.de>";
-
-    description
-      "This module contains a collection of generally useful derived
-    YANG data types for Internet addresses and related things.
-
-    Copyright (c) 2013 IETF Trust and the persons identified as
-    authors of the code.  All rights reserved.
-
-    Redistribution and use in source and binary forms, with or
-    without modification, is permitted pursuant to, and subject
-    to the license terms contained in, the Simplified BSD License
-    set forth in Section 4.c of the IETF Trust's Legal Provisions
-    Relating to IETF Documents
-    (http://trustee.ietf.org/license-info).
-
-    This version of this YANG module is part of RFC 6991; see
-    the RFC itself for full legal notices.";
-
-    revision "2013-07-15" {
-      description
-        "This revision adds the following new data types:
-      - ip-address-no-zone
-      - ipv4-address-no-zone
-      - ipv6-address-no-zone";
-      reference
-        "RFC 6991: Common YANG Data Types";
-
-    }
-
-    revision "2010-09-24" {
-      description "Initial revision.";
-      reference
-        "RFC 6021: Common YANG Data Types";
-
-    }
-
-
-    typedef ip-version {
-      type enumeration {
-        enum "unknown" {
-          value 0;
-          description
-            "An unknown or unspecified version of the Internet
-          protocol.";
-        }
-        enum "ipv4" {
-          value 1;
-          description
-            "The IPv4 protocol as defined in RFC 791.";
-        }
-        enum "ipv6" {
-          value 2;
-          description
-            "The IPv6 protocol as defined in RFC 2460.";
-        }
-      }
-      description
-        "This value represents the version of the IP protocol.
-
-      In the value set and its semantics, this type is equivalent
-      to the InetVersion textual convention of the SMIv2.";
-      reference
-        "RFC  791: Internet Protocol
-         RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
-         RFC 4001: Textual Conventions for Internet Network Addresses";
-
-    }
-
-    typedef dscp {
-      type uint8 {
-        range "0..63";
-      }
-      description
-        "The dscp type represents a Differentiated Services Code Point
-      that may be used for marking packets in a traffic stream.
-      In the value set and its semantics, this type is equivalent
-      to the Dscp textual convention of the SMIv2.";
-      reference
-        "RFC 3289: Management Information Base for the Differentiated
-        	  Services Architecture
-         RFC 2474: Definition of the Differentiated Services Field
-        	  (DS Field) in the IPv4 and IPv6 Headers
-         RFC 2780: IANA Allocation Guidelines For Values In
-        	  the Internet Protocol and Related Headers";
-
-    }
-
-    typedef ipv6-flow-label {
-      type uint32 {
-        range "0..1048575";
-      }
-      description
-        "The ipv6-flow-label type represents the flow identifier or Flow
-      Label in an IPv6 packet header that may be used to
-      discriminate traffic flows.
-
-      In the value set and its semantics, this type is equivalent
-      to the IPv6FlowLabel textual convention of the SMIv2.";
-      reference
-        "RFC 3595: Textual Conventions for IPv6 Flow Label
-         RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
-
-    }
-
-    typedef port-number {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "The port-number type represents a 16-bit port number of an
-      Internet transport-layer protocol such as UDP, TCP, DCCP, or
-      SCTP.  Port numbers are assigned by IANA.  A current list of
-      all assignments is available from <http://www.iana.org/>.
-
-      Note that the port number value zero is reserved by IANA.  In
-      situations where the value zero does not make sense, it can
-      be excluded by subtyping the port-number type.
-      In the value set and its semantics, this type is equivalent
-      to the InetPortNumber textual convention of the SMIv2.";
-      reference
-        "RFC  768: User Datagram Protocol
-         RFC  793: Transmission Control Protocol
-         RFC 4960: Stream Control Transmission Protocol
-         RFC 4340: Datagram Congestion Control Protocol (DCCP)
-         RFC 4001: Textual Conventions for Internet Network Addresses";
-
-    }
-
-    typedef as-number {
-      type uint32;
-      description
-        "The as-number type represents autonomous system numbers
-      which identify an Autonomous System (AS).  An AS is a set
-      of routers under a single technical administration, using
-      an interior gateway protocol and common metrics to route
-      packets within the AS, and using an exterior gateway
-      protocol to route packets to other ASes.  IANA maintains
-      the AS number space and has delegated large parts to the
-      regional registries.
-
-      Autonomous system numbers were originally limited to 16
-      bits.  BGP extensions have enlarged the autonomous system
-      number space to 32 bits.  This type therefore uses an uint32
-      base type without a range restriction in order to support
-      a larger autonomous system number space.
-
-      In the value set and its semantics, this type is equivalent
-      to the InetAutonomousSystemNumber textual convention of
-      the SMIv2.";
-      reference
-        "RFC 1930: Guidelines for creation, selection, and registration
-        	  of an Autonomous System (AS)
-         RFC 4271: A Border Gateway Protocol 4 (BGP-4)
-         RFC 4001: Textual Conventions for Internet Network Addresses
-         RFC 6793: BGP Support for Four-Octet Autonomous System (AS)
-        	  Number Space";
-
-    }
-
-    typedef ip-address {
-      type union {
-        type ipv4-address;
-        type ipv6-address;
-      }
-      description
-        "The ip-address type represents an IP address and is IP
-      version neutral.  The format of the textual representation
-      implies the IP version.  This type supports scoped addresses
-      by allowing zone identifiers in the address format.";
-      reference
-        "RFC 4007: IPv6 Scoped Address Architecture";
-
-    }
-
-    typedef ipv4-address {
-      type string {
-        pattern
-          '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\p{N}\p{L}]+)?';
-      }
-      description
-        "The ipv4-address type represents an IPv4 address in
-       dotted-quad notation.  The IPv4 address may include a zone
-       index, separated by a % sign.
-
-       The zone index is used to disambiguate identical address
-       values.  For link-local addresses, the zone index will
-       typically be the interface index number or the name of an
-       interface.  If the zone index is not present, the default
-       zone of the device will be used.
-
-       The canonical format for the zone index is the numerical
-       format";
-    }
-
-    typedef ipv6-address {
-      type string {
-        pattern
-          '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\p{N}\p{L}]+)?';
-        pattern
-          '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(%.+)?';
-      }
-      description
-        "The ipv6-address type represents an IPv6 address in full,
-      mixed, shortened, and shortened-mixed notation.  The IPv6
-      address may include a zone index, separated by a % sign.
-
-      The zone index is used to disambiguate identical address
-      values.  For link-local addresses, the zone index will
-      typically be the interface index number or the name of an
-      interface.  If the zone index is not present, the default
-      zone of the device will be used.
-
-
-
-      The canonical format of IPv6 addresses uses the textual
-      representation defined in Section 4 of RFC 5952.  The
-      canonical format for the zone index is the numerical
-      format as described in Section 11.2 of RFC 4007.";
-      reference
-        "RFC 4291: IP Version 6 Addressing Architecture
-         RFC 4007: IPv6 Scoped Address Architecture
-         RFC 5952: A Recommendation for IPv6 Address Text
-        	  Representation";
-
-    }
-
-    typedef ip-address-no-zone {
-      type union {
-        type ipv4-address-no-zone;
-        type ipv6-address-no-zone;
-      }
-      description
-        "The ip-address-no-zone type represents an IP address and is
-      IP version neutral.  The format of the textual representation
-      implies the IP version.  This type does not support scoped
-      addresses since it does not allow zone identifiers in the
-      address format.";
-      reference
-        "RFC 4007: IPv6 Scoped Address Architecture";
-
-    }
-
-    typedef ipv4-address-no-zone {
-      type ipv4-address {
-        pattern '[0-9\.]*';
-      }
-      description
-        "An IPv4 address without a zone index.  This type, derived from
-       ipv4-address, may be used in situations where the zone is
-       known from the context and hence no zone index is needed.";
-    }
-
-    typedef ipv6-address-no-zone {
-      type ipv6-address {
-        pattern '[0-9a-fA-F:\.]*';
-      }
-      description
-        "An IPv6 address without a zone index.  This type, derived from
-       ipv6-address, may be used in situations where the zone is
-       known from the context and hence no zone index is needed.";
-      reference
-        "RFC 4291: IP Version 6 Addressing Architecture
-         RFC 4007: IPv6 Scoped Address Architecture
-         RFC 5952: A Recommendation for IPv6 Address Text
-        	  Representation";
-
-    }
-
-    typedef ip-prefix {
-      type union {
-        type ipv4-prefix;
-        type ipv6-prefix;
-      }
-      description
-        "The ip-prefix type represents an IP prefix and is IP
-      version neutral.  The format of the textual representations
-      implies the IP version.";
-    }
-
-    typedef ipv4-prefix {
-      type string {
-        pattern
-          '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])/(([0-9])|([1-2][0-9])|(3[0-2]))';
-      }
-      description
-        "The ipv4-prefix type represents an IPv4 address prefix.
-      The prefix length is given by the number following the
-      slash character and must be less than or equal to 32.
-
-      A prefix length value of n corresponds to an IP address
-      mask that has n contiguous 1-bits from the most
-      significant bit (MSB) and all other bits set to 0.
-
-      The canonical format of an IPv4 prefix has all bits of
-      the IPv4 address set to zero that are not part of the
-      IPv4 prefix.";
-    }
-
-    typedef ipv6-prefix {
-      type string {
-        pattern
-          '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))';
-        pattern
-          '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(/.+)';
-      }
-      description
-        "The ipv6-prefix type represents an IPv6 address prefix.
-      The prefix length is given by the number following the
-      slash character and must be less than or equal to 128.
-
-      A prefix length value of n corresponds to an IP address
-      mask that has n contiguous 1-bits from the most
-      significant bit (MSB) and all other bits set to 0.
-
-      The IPv6 address should have all bits that do not belong
-      to the prefix set to zero.
-
-      The canonical format of an IPv6 prefix has all bits of
-      the IPv6 address set to zero that are not part of the
-      IPv6 prefix.  Furthermore, the IPv6 address is represented
-      as defined in Section 4 of RFC 5952.";
-      reference
-        "RFC 5952: A Recommendation for IPv6 Address Text
-        	  Representation";
-
-    }
-
-    typedef domain-name {
-      type string {
-        length "1..253";
-        pattern
-          '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)|\.';
-      }
-      description
-        "The domain-name type represents a DNS domain name.  The
-      name SHOULD be fully qualified whenever possible.
-
-      Internet domain names are only loosely specified.  Section
-      3.5 of RFC 1034 recommends a syntax (modified in Section
-      2.1 of RFC 1123).  The pattern above is intended to allow
-      for current practice in domain name use, and some possible
-      future expansion.  It is designed to hold various types of
-      domain names, including names used for A or AAAA records
-      (host names) and other records, such as SRV records.  Note
-      that Internet host names have a stricter syntax (described
-      in RFC 952) than the DNS recommendations in RFCs 1034 and
-      1123, and that systems that want to store host names in
-      schema nodes using the domain-name type are recommended to
-      adhere to this stricter standard to ensure interoperability.
-
-      The encoding of DNS names in the DNS protocol is limited
-      to 255 characters.  Since the encoding consists of labels
-      prefixed by a length bytes and there is a trailing NULL
-      byte, only 253 characters can appear in the textual dotted
-      notation.
-
-      The description clause of schema nodes using the domain-name
-      type MUST describe when and how these names are resolved to
-      IP addresses.  Note that the resolution of a domain-name value
-      may require to query multiple DNS records (e.g., A for IPv4
-      and AAAA for IPv6).  The order of the resolution process and
-      which DNS record takes precedence can either be defined
-      explicitly or may depend on the configuration of the
-      resolver.
-
-      Domain-name values use the US-ASCII encoding.  Their canonical
-      format uses lowercase US-ASCII characters.  Internationalized
-      domain names MUST be A-labels as per RFC 5890.";
-      reference
-        "RFC  952: DoD Internet Host Table Specification
-         RFC 1034: Domain Names - Concepts and Facilities
-         RFC 1123: Requirements for Internet Hosts -- Application
-        	  and Support
-         RFC 2782: A DNS RR for specifying the location of services
-        	  (DNS SRV)
-         RFC 5890: Internationalized Domain Names in Applications
-        	  (IDNA): Definitions and Document Framework";
-
-    }
-
-    typedef host {
-      type union {
-        type ip-address;
-        type domain-name;
-      }
-      description
-        "The host type represents either an IP address or a DNS
-      domain name.";
-    }
-
-    typedef uri {
-      type string;
-      description
-        "The uri type represents a Uniform Resource Identifier
-      (URI) as defined by STD 66.
-
-      Objects using the uri type MUST be in US-ASCII encoding,
-      and MUST be normalized as described by RFC 3986 Sections
-      6.2.1, 6.2.2.1, and 6.2.2.2.  All unnecessary
-      percent-encoding is removed, and all case-insensitive
-      characters are set to lowercase except for hexadecimal
-      digits, which are normalized to uppercase as described in
-      Section 6.2.2.1.
-
-      The purpose of this normalization is to help provide
-      unique URIs.  Note that this normalization is not
-      sufficient to provide uniqueness.  Two URIs that are
-      textually distinct after this normalization may still be
-      equivalent.
-
-      Objects using the uri type may restrict the schemes that
-      they permit.  For example, 'data:' and 'urn:' schemes
-      might not be appropriate.
-
-      A zero-length URI is not a valid URI.  This can be used to
-      express 'URI absent' where required.
-
-      In the value set and its semantics, this type is equivalent
-      to the Uri SMIv2 textual convention defined in RFC 5017.";
-      reference
-        "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
-         RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
-        	  Group: Uniform Resource Identifiers (URIs), URLs,
-        	  and Uniform Resource Names (URNs): Clarifications
-        	  and Recommendations
-         RFC 5017: MIB Textual Conventions for Uniform Resource
-        	  Identifiers (URIs)";
-
-    }
-  }  // module ietf-inet-types
diff --git a/models/openconfig/src/main/yang/comm/ietf-interfaces@2014-05-08.yang b/models/openconfig/src/main/yang/comm/ietf-interfaces@2014-05-08.yang
deleted file mode 100644
index d02aca2..0000000
--- a/models/openconfig/src/main/yang/comm/ietf-interfaces@2014-05-08.yang
+++ /dev/null
@@ -1,703 +0,0 @@
-module ietf-interfaces {
-
-     namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
-     prefix if;
-
-     import ietf-yang-types {
-       prefix yang;
-     }
-
-     organization
-       "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
-
-     contact
-       "WG Web:   <http://tools.ietf.org/wg/netmod/>
-        WG List:  <mailto:netmod@ietf.org>
-
-        WG Chair: Thomas Nadeau
-                  <mailto:tnadeau@lucidvision.com>
-
-        WG Chair: Juergen Schoenwaelder
-                  <mailto:j.schoenwaelder@jacobs-university.de>
-
-        Editor:   Martin Bjorklund
-                  <mailto:mbj@tail-f.com>";
-
-     description
-       "This module contains a collection of YANG definitions for
-        managing network interfaces.
-
-        Copyright (c) 2014 IETF Trust and the persons identified as
-        authors of the code.  All rights reserved.
-
-        Redistribution and use in source and binary forms, with or
-        without modification, is permitted pursuant to, and subject
-        to the license terms contained in, the Simplified BSD License
-        set forth in Section 4.c of the IETF Trust's Legal Provisions
-        Relating to IETF Documents
-        (http://trustee.ietf.org/license-info).
-
-        This version of this YANG module is part of RFC 7223; see
-        the RFC itself for full legal notices.";
-
-     revision 2014-05-08 {
-       description
-         "Initial revision.";
-       reference
-         "RFC 7223: A YANG Data Model for Interface Management";
-     }
-
-     /*
-      * Typedefs
-      */
-
-     typedef interface-ref {
-       type leafref {
-         path "/if:interfaces/if:interface/if:name";
-       }
-       description
-         "This type is used by data models that need to reference
-          configured interfaces.";
-     }
-
-     typedef interface-state-ref {
-       type leafref {
-         path "/if:interfaces-state/if:interface/if:name";
-       }
-       description
-         "This type is used by data models that need to reference
-          the operationally present interfaces.";
-     }
-
-     /*
-      * Identities
-      */
-
-     identity interface-type {
-       description
-         "Base identity from which specific interface types are
-          derived.";
-     }
-
-     /*
-      * Features
-      */
-
-     feature arbitrary-names {
-       description
-         "This feature indicates that the device allows user-controlled
-          interfaces to be named arbitrarily.";
-     }
-
-
-     feature pre-provisioning {
-       description
-         "This feature indicates that the device supports
-          pre-provisioning of interface configuration, i.e., it is
-          possible to configure an interface whose physical interface
-          hardware is not present on the device.";
-     }
-
-     feature if-mib {
-       description
-         "This feature indicates that the device implements
-          the IF-MIB.";
-       reference
-         "RFC 2863: The Interfaces Group MIB";
-     }
-
-     /*
-      * Configuration data nodes
-      */
-
-     container interfaces {
-       description
-         "Interface configuration parameters.";
-
-       list interface {
-         key "name";
-
-         description
-           "The list of configured interfaces on the device.
-
-            The operational state of an interface is available in the
-            /interfaces-state/interface list.  If the configuration of a
-            system-controlled interface cannot be used by the system
-            (e.g., the interface hardware present does not match the
-            interface type), then the configuration is not applied to
-            the system-controlled interface shown in the
-            /interfaces-state/interface list.  If the configuration
-            of a user-controlled interface cannot be used by the system,
-            the configured interface is not instantiated in the
-            /interfaces-state/interface list.";
-
-        leaf name {
-           type string;
-           description
-             "The name of the interface.
-
-              A device MAY restrict the allowed values for this leaf,
-              possibly depending on the type of the interface.
-
-
-              For system-controlled interfaces, this leaf is the
-              device-specific name of the interface.  The 'config false'
-              list /interfaces-state/interface contains the currently
-              existing interfaces on the device.
-
-              If a client tries to create configuration for a
-              system-controlled interface that is not present in the
-              /interfaces-state/interface list, the server MAY reject
-              the request if the implementation does not support
-              pre-provisioning of interfaces or if the name refers to
-              an interface that can never exist in the system.  A
-              NETCONF server MUST reply with an rpc-error with the
-              error-tag 'invalid-value' in this case.
-
-              If the device supports pre-provisioning of interface
-              configuration, the 'pre-provisioning' feature is
-              advertised.
-
-              If the device allows arbitrarily named user-controlled
-              interfaces, the 'arbitrary-names' feature is advertised.
-
-              When a configured user-controlled interface is created by
-              the system, it is instantiated with the same name in the
-              /interface-state/interface list.";
-         }
-
-         leaf description {
-           type string;
-           description
-             "A textual description of the interface.
-
-              A server implementation MAY map this leaf to the ifAlias
-              MIB object.  Such an implementation needs to use some
-              mechanism to handle the differences in size and characters
-              allowed between this leaf and ifAlias.  The definition of
-              such a mechanism is outside the scope of this document.
-
-              Since ifAlias is defined to be stored in non-volatile
-              storage, the MIB implementation MUST map ifAlias to the
-              value of 'description' in the persistently stored
-              datastore.
-
-              Specifically, if the device supports ':startup', when
-              ifAlias is read the device MUST return the value of
-              'description' in the 'startup' datastore, and when it is
-              written, it MUST be written to the 'running' and 'startup'
-              datastores.  Note that it is up to the implementation to
-
-              decide whether to modify this single leaf in 'startup' or
-              perform an implicit copy-config from 'running' to
-              'startup'.
-
-              If the device does not support ':startup', ifAlias MUST
-              be mapped to the 'description' leaf in the 'running'
-              datastore.";
-           reference
-             "RFC 2863: The Interfaces Group MIB - ifAlias";
-         }
-
-         leaf type {
-           type identityref {
-             base interface-type;
-           }
-           mandatory true;
-           description
-             "The type of the interface.
-
-              When an interface entry is created, a server MAY
-              initialize the type leaf with a valid value, e.g., if it
-              is possible to derive the type from the name of the
-              interface.
-
-              If a client tries to set the type of an interface to a
-              value that can never be used by the system, e.g., if the
-              type is not supported or if the type does not match the
-              name of the interface, the server MUST reject the request.
-              A NETCONF server MUST reply with an rpc-error with the
-              error-tag 'invalid-value' in this case.";
-           reference
-             "RFC 2863: The Interfaces Group MIB - ifType";
-         }
-
-         leaf enabled {
-           type boolean;
-           default "true";
-           description
-             "This leaf contains the configured, desired state of the
-              interface.
-
-              Systems that implement the IF-MIB use the value of this
-              leaf in the 'running' datastore to set
-              IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
-              has been initialized, as described in RFC 2863.
-
-              Changes in this leaf in the 'running' datastore are
-              reflected in ifAdminStatus, but if ifAdminStatus is
-              changed over SNMP, this leaf is not affected.";
-           reference
-             "RFC 2863: The Interfaces Group MIB - ifAdminStatus";
-         }
-
-         leaf link-up-down-trap-enable {
-           if-feature if-mib;
-           type enumeration {
-             enum enabled {
-               value 1;
-             }
-             enum disabled {
-               value 2;
-             }
-           }
-           description
-             "Controls whether linkUp/linkDown SNMP notifications
-              should be generated for this interface.
-
-              If this node is not configured, the value 'enabled' is
-              operationally used by the server for interfaces that do
-              not operate on top of any other interface (i.e., there are
-              no 'lower-layer-if' entries), and 'disabled' otherwise.";
-           reference
-             "RFC 2863: The Interfaces Group MIB -
-                        ifLinkUpDownTrapEnable";
-         }
-       }
-     }
-
-     /*
-      * Operational state data nodes
-      */
-
-     container interfaces-state {
-       config false;
-       description
-         "Data nodes for the operational state of interfaces.";
-
-       list interface {
-         key "name";
-
-         description
-           "The list of interfaces on the device.
-
-            System-controlled interfaces created by the system are
-            always present in this list, whether they are configured or
-            not.";
-
-         leaf name {
-           type string;
-           description
-             "The name of the interface.
-
-              A server implementation MAY map this leaf to the ifName
-              MIB object.  Such an implementation needs to use some
-              mechanism to handle the differences in size and characters
-              allowed between this leaf and ifName.  The definition of
-              such a mechanism is outside the scope of this document.";
-           reference
-             "RFC 2863: The Interfaces Group MIB - ifName";
-         }
-
-         leaf type {
-           type identityref {
-             base interface-type;
-           }
-           mandatory true;
-           description
-             "The type of the interface.";
-           reference
-             "RFC 2863: The Interfaces Group MIB - ifType";
-         }
-
-         leaf admin-status {
-           if-feature if-mib;
-           type enumeration {
-             enum up {
-               value 1;
-               description
-                 "Ready to pass packets.";
-             }
-             enum down {
-               value 2;
-               description
-                 "Not ready to pass packets and not in some test mode.";
-             }
-
-             enum testing {
-               value 3;
-               description
-                 "In some test mode.";
-             }
-           }
-           mandatory true;
-           description
-             "The desired state of the interface.
-
-              This leaf has the same read semantics as ifAdminStatus.";
-           reference
-             "RFC 2863: The Interfaces Group MIB - ifAdminStatus";
-         }
-
-         leaf oper-status {
-           type enumeration {
-             enum up {
-               value 1;
-               description
-                 "Ready to pass packets.";
-             }
-             enum down {
-               value 2;
-               description
-                 "The interface does not pass any packets.";
-             }
-             enum testing {
-               value 3;
-               description
-                 "In some test mode.  No operational packets can
-                  be passed.";
-             }
-             enum unknown {
-               value 4;
-               description
-                 "Status cannot be determined for some reason.";
-             }
-             enum dormant {
-               value 5;
-               description
-                 "Waiting for some external event.";
-             }
-             enum not-present {
-               value 6;
-               description
-                 "Some component (typically hardware) is missing.";
-             }
-
-             enum lower-layer-down {
-               value 7;
-               description
-                 "Down due to state of lower-layer interface(s).";
-             }
-           }
-           mandatory true;
-           description
-             "The current operational state of the interface.
-
-              This leaf has the same semantics as ifOperStatus.";
-           reference
-             "RFC 2863: The Interfaces Group MIB - ifOperStatus";
-         }
-
-         leaf last-change {
-           type yang:date-and-time;
-           description
-             "The time the interface entered its current operational
-              state.  If the current state was entered prior to the
-              last re-initialization of the local network management
-              subsystem, then this node is not present.";
-           reference
-             "RFC 2863: The Interfaces Group MIB - ifLastChange";
-         }
-
-         leaf if-index {
-           if-feature if-mib;
-           type int32 {
-             range "1..2147483647";
-           }
-           mandatory true;
-           description
-             "The ifIndex value for the ifEntry represented by this
-              interface.";
-           reference
-             "RFC 2863: The Interfaces Group MIB - ifIndex";
-         }
-
-         leaf phys-address {
-           type yang:phys-address;
-           description
-             "The interface's address at its protocol sub-layer.  For
-              example, for an 802.x interface, this object normally
-              contains a Media Access Control (MAC) address.  The
-              interface's media-specific modules must define the bit
-
-
-              and byte ordering and the format of the value of this
-              object.  For interfaces that do not have such an address
-              (e.g., a serial line), this node is not present.";
-           reference
-             "RFC 2863: The Interfaces Group MIB - ifPhysAddress";
-         }
-
-         leaf-list higher-layer-if {
-           type interface-state-ref;
-           description
-             "A list of references to interfaces layered on top of this
-              interface.";
-           reference
-             "RFC 2863: The Interfaces Group MIB - ifStackTable";
-         }
-
-         leaf-list lower-layer-if {
-           type interface-state-ref;
-           description
-             "A list of references to interfaces layered underneath this
-              interface.";
-           reference
-             "RFC 2863: The Interfaces Group MIB - ifStackTable";
-         }
-
-         leaf speed {
-           type yang:gauge64;
-           units "bits/second";
-           description
-               "An estimate of the interface's current bandwidth in bits
-                per second.  For interfaces that do not vary in
-                bandwidth or for those where no accurate estimation can
-                be made, this node should contain the nominal bandwidth.
-                For interfaces that have no concept of bandwidth, this
-                node is not present.";
-           reference
-             "RFC 2863: The Interfaces Group MIB -
-                        ifSpeed, ifHighSpeed";
-         }
-
-
-         container statistics {
-           description
-             "A collection of interface-related statistics objects.";
-
-           leaf discontinuity-time {
-             type yang:date-and-time;
-             mandatory true;
-             description
-               "The time on the most recent occasion at which any one or
-                more of this interface's counters suffered a
-                discontinuity.  If no such discontinuities have occurred
-                since the last re-initialization of the local management
-                subsystem, then this node contains the time the local
-                management subsystem re-initialized itself.";
-           }
-
-           leaf in-octets {
-             type yang:counter64;
-             description
-               "The total number of octets received on the interface,
-                including framing characters.
-
-                Discontinuities in the value of this counter can occur
-                at re-initialization of the management system, and at
-                other times as indicated by the value of
-                'discontinuity-time'.";
-             reference
-               "RFC 2863: The Interfaces Group MIB - ifHCInOctets";
-           }
-
-           leaf in-unicast-pkts {
-             type yang:counter64;
-             description
-               "The number of packets, delivered by this sub-layer to a
-                higher (sub-)layer, that were not addressed to a
-                multicast or broadcast address at this sub-layer.
-
-                Discontinuities in the value of this counter can occur
-                at re-initialization of the management system, and at
-                other times as indicated by the value of
-                'discontinuity-time'.";
-             reference
-               "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
-           }
-
-           leaf in-broadcast-pkts {
-             type yang:counter64;
-             description
-               "The number of packets, delivered by this sub-layer to a
-                higher (sub-)layer, that were addressed to a broadcast
-                address at this sub-layer.
-
-                Discontinuities in the value of this counter can occur
-                at re-initialization of the management system, and at
-                other times as indicated by the value of
-                'discontinuity-time'.";
-             reference
-               "RFC 2863: The Interfaces Group MIB -
-                          ifHCInBroadcastPkts";
-           }
-
-           leaf in-multicast-pkts {
-             type yang:counter64;
-             description
-               "The number of packets, delivered by this sub-layer to a
-                higher (sub-)layer, that were addressed to a multicast
-                address at this sub-layer.  For a MAC-layer protocol,
-                this includes both Group and Functional addresses.
-
-                Discontinuities in the value of this counter can occur
-                at re-initialization of the management system, and at
-                other times as indicated by the value of
-                'discontinuity-time'.";
-             reference
-               "RFC 2863: The Interfaces Group MIB -
-                          ifHCInMulticastPkts";
-           }
-
-           leaf in-discards {
-             type yang:counter32;
-             description
-               "The number of inbound packets that were chosen to be
-                discarded even though no errors had been detected to
-                prevent their being deliverable to a higher-layer
-                protocol.  One possible reason for discarding such a
-                packet could be to free up buffer space.
-
-                Discontinuities in the value of this counter can occur
-                at re-initialization of the management system, and at
-                other times as indicated by the value of
-                'discontinuity-time'.";
-
-             reference
-               "RFC 2863: The Interfaces Group MIB - ifInDiscards";
-           }
-
-           leaf in-errors {
-             type yang:counter32;
-             description
-               "For packet-oriented interfaces, the number of inbound
-                packets that contained errors preventing them from being
-                deliverable to a higher-layer protocol.  For character-
-                oriented or fixed-length interfaces, the number of
-                inbound transmission units that contained errors
-                preventing them from being deliverable to a higher-layer
-                protocol.
-
-                Discontinuities in the value of this counter can occur
-                at re-initialization of the management system, and at
-                other times as indicated by the value of
-                'discontinuity-time'.";
-             reference
-               "RFC 2863: The Interfaces Group MIB - ifInErrors";
-           }
-
-           leaf in-unknown-protos {
-             type yang:counter32;
-             description
-               "For packet-oriented interfaces, the number of packets
-                received via the interface that were discarded because
-                of an unknown or unsupported protocol.  For
-                character-oriented or fixed-length interfaces that
-                support protocol multiplexing, the number of
-                transmission units received via the interface that were
-                discarded because of an unknown or unsupported protocol.
-                For any interface that does not support protocol
-                multiplexing, this counter is not present.
-
-                Discontinuities in the value of this counter can occur
-                at re-initialization of the management system, and at
-                other times as indicated by the value of
-                'discontinuity-time'.";
-             reference
-               "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
-           }
-
-           leaf out-octets {
-             type yang:counter64;
-             description
-               "The total number of octets transmitted out of the
-                interface, including framing characters.
-
-                Discontinuities in the value of this counter can occur
-                at re-initialization of the management system, and at
-                other times as indicated by the value of
-                'discontinuity-time'.";
-             reference
-               "RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
-           }
-
-           leaf out-unicast-pkts {
-             type yang:counter64;
-             description
-               "The total number of packets that higher-level protocols
-                requested be transmitted, and that were not addressed
-                to a multicast or broadcast address at this sub-layer,
-                including those that were discarded or not sent.
-
-                Discontinuities in the value of this counter can occur
-                at re-initialization of the management system, and at
-                other times as indicated by the value of
-                'discontinuity-time'.";
-             reference
-               "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
-           }
-
-           leaf out-broadcast-pkts {
-             type yang:counter64;
-             description
-               "The total number of packets that higher-level protocols
-                requested be transmitted, and that were addressed to a
-                broadcast address at this sub-layer, including those
-                that were discarded or not sent.
-
-                Discontinuities in the value of this counter can occur
-                at re-initialization of the management system, and at
-                other times as indicated by the value of
-                'discontinuity-time'.";
-             reference
-               "RFC 2863: The Interfaces Group MIB -
-                          ifHCOutBroadcastPkts";
-           }
-
-           leaf out-multicast-pkts {
-             type yang:counter64;
-             description
-               "The total number of packets that higher-level protocols
-                requested be transmitted, and that were addressed to a
-                multicast address at this sub-layer, including those
-                that were discarded or not sent.  For a MAC-layer
-                protocol, this includes both Group and Functional
-                addresses.
-
-                Discontinuities in the value of this counter can occur
-                at re-initialization of the management system, and at
-                other times as indicated by the value of
-                'discontinuity-time'.";
-             reference
-               "RFC 2863: The Interfaces Group MIB -
-                          ifHCOutMulticastPkts";
-           }
-
-           leaf out-discards {
-             type yang:counter32;
-             description
-               "The number of outbound packets that were chosen to be
-                discarded even though no errors had been detected to
-                prevent their being transmitted.  One possible reason
-                for discarding such a packet could be to free up buffer
-                space.
-
-                Discontinuities in the value of this counter can occur
-                at re-initialization of the management system, and at
-                other times as indicated by the value of
-                'discontinuity-time'.";
-             reference
-               "RFC 2863: The Interfaces Group MIB - ifOutDiscards";
-           }
-
-           leaf out-errors {
-             type yang:counter32;
-             description
-               "For packet-oriented interfaces, the number of outbound
-                packets that could not be transmitted because of errors.
-                For character-oriented or fixed-length interfaces, the
-                number of outbound transmission units that could not be
-                transmitted because of errors.
-
-                Discontinuities in the value of this counter can occur
-                at re-initialization of the management system, and at
-                other times as indicated by the value of
-                'discontinuity-time'.";
-             reference
-               "RFC 2863: The Interfaces Group MIB - ifOutErrors";
-           }
-         }
-       }
-     }
-   }
diff --git a/models/openconfig/src/main/yang/comm/ietf-yang-types@2013-07-15.yang b/models/openconfig/src/main/yang/comm/ietf-yang-types@2013-07-15.yang
deleted file mode 100644
index 9a543fa..0000000
--- a/models/openconfig/src/main/yang/comm/ietf-yang-types@2013-07-15.yang
+++ /dev/null
@@ -1,490 +0,0 @@
-  module ietf-yang-types {
-
-    yang-version 1;
-
-    namespace
-      "urn:ietf:params:xml:ns:yang:ietf-yang-types";
-
-    prefix yang;
-
-    organization
-      "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
-
-    contact
-      "WG Web:   <http://tools.ietf.org/wg/netmod/>
-    WG List:  <mailto:netmod@ietf.org>
-
-    WG Chair: David Kessens
-              <mailto:david.kessens@nsn.com>
-
-    WG Chair: Juergen Schoenwaelder
-              <mailto:j.schoenwaelder@jacobs-university.de>
-
-    Editor:   Juergen Schoenwaelder
-              <mailto:j.schoenwaelder@jacobs-university.de>";
-
-    description
-      "This module contains a collection of generally useful derived
-    YANG data types.
-
-    Copyright (c) 2013 IETF Trust and the persons identified as
-    authors of the code.  All rights reserved.
-
-    Redistribution and use in source and binary forms, with or
-    without modification, is permitted pursuant to, and subject
-    to the license terms contained in, the Simplified BSD License
-    set forth in Section 4.c of the IETF Trust's Legal Provisions
-    Relating to IETF Documents
-    (http://trustee.ietf.org/license-info).
-
-    This version of this YANG module is part of RFC 6991; see
-    the RFC itself for full legal notices.";
-
-    revision "2013-07-15" {
-      description
-        "This revision adds the following new data types:
-      - yang-identifier
-      - hex-string
-      - uuid
-      - dotted-quad";
-      reference
-        "RFC 6991: Common YANG Data Types";
-
-    }
-
-    revision "2010-09-24" {
-      description "Initial revision.";
-      reference
-        "RFC 6021: Common YANG Data Types";
-
-    }
-
-
-    typedef counter32 {
-      type uint32;
-      description
-        "The counter32 type represents a non-negative integer
-      that monotonically increases until it reaches a
-      maximum value of 2^32-1 (4294967295 decimal), when it
-      wraps around and starts increasing again from zero.
-
-      Counters have no defined 'initial' value, and thus, a
-      single value of a counter has (in general) no information
-      content.  Discontinuities in the monotonically increasing
-      value normally occur at re-initialization of the
-      management system, and at other times as specified in the
-      description of a schema node using this type.  If such
-      other times can occur, for example, the creation of
-      a schema node of type counter32 at times other than
-      re-initialization, then a corresponding schema node
-      should be defined, with an appropriate type, to indicate
-      the last discontinuity.
-
-      The counter32 type should not be used for configuration
-      schema nodes.  A default statement SHOULD NOT be used in
-      combination with the type counter32.
-
-      In the value set and its semantics, this type is equivalent
-      to the Counter32 type of the SMIv2.";
-      reference
-        "RFC 2578: Structure of Management Information Version 2
-        	  (SMIv2)";
-
-    }
-
-    typedef zero-based-counter32 {
-      type counter32;
-      default "0";
-      description
-        "The zero-based-counter32 type represents a counter32
-      that has the defined 'initial' value zero.
-
-      A schema node of this type will be set to zero (0) on creation
-      and will thereafter increase monotonically until it reaches
-      a maximum value of 2^32-1 (4294967295 decimal), when it
-      wraps around and starts increasing again from zero.
-
-      Provided that an application discovers a new schema node
-      of this type within the minimum time to wrap, it can use the
-      'initial' value as a delta.  It is important for a management
-      station to be aware of this minimum time and the actual time
-      between polls, and to discard data if the actual time is too
-      long or there is no defined minimum time.
-
-      In the value set and its semantics, this type is equivalent
-      to the ZeroBasedCounter32 textual convention of the SMIv2.";
-      reference
-        "RFC 4502: Remote Network Monitoring Management Information
-        	  Base Version 2";
-
-    }
-
-    typedef counter64 {
-      type uint64;
-      description
-        "The counter64 type represents a non-negative integer
-      that monotonically increases until it reaches a
-      maximum value of 2^64-1 (18446744073709551615 decimal),
-      when it wraps around and starts increasing again from zero.
-
-      Counters have no defined 'initial' value, and thus, a
-      single value of a counter has (in general) no information
-      content.  Discontinuities in the monotonically increasing
-      value normally occur at re-initialization of the
-      management system, and at other times as specified in the
-      description of a schema node using this type.  If such
-      other times can occur, for example, the creation of
-      a schema node of type counter64 at times other than
-      re-initialization, then a corresponding schema node
-      should be defined, with an appropriate type, to indicate
-      the last discontinuity.
-
-      The counter64 type should not be used for configuration
-      schema nodes.  A default statement SHOULD NOT be used in
-      combination with the type counter64.
-
-      In the value set and its semantics, this type is equivalent
-      to the Counter64 type of the SMIv2.";
-      reference
-        "RFC 2578: Structure of Management Information Version 2
-        	  (SMIv2)";
-
-    }
-
-    typedef zero-based-counter64 {
-      type counter64;
-      default "0";
-      description
-        "The zero-based-counter64 type represents a counter64 that
-      has the defined 'initial' value zero.
-
-
-
-
-      A schema node of this type will be set to zero (0) on creation
-      and will thereafter increase monotonically until it reaches
-      a maximum value of 2^64-1 (18446744073709551615 decimal),
-      when it wraps around and starts increasing again from zero.
-
-      Provided that an application discovers a new schema node
-      of this type within the minimum time to wrap, it can use the
-      'initial' value as a delta.  It is important for a management
-      station to be aware of this minimum time and the actual time
-      between polls, and to discard data if the actual time is too
-      long or there is no defined minimum time.
-
-      In the value set and its semantics, this type is equivalent
-      to the ZeroBasedCounter64 textual convention of the SMIv2.";
-      reference
-        "RFC 2856: Textual Conventions for Additional High Capacity
-        	  Data Types";
-
-    }
-
-    typedef gauge32 {
-      type uint32;
-      description
-        "The gauge32 type represents a non-negative integer, which
-      may increase or decrease, but shall never exceed a maximum
-      value, nor fall below a minimum value.  The maximum value
-      cannot be greater than 2^32-1 (4294967295 decimal), and
-      the minimum value cannot be smaller than 0.  The value of
-      a gauge32 has its maximum value whenever the information
-      being modeled is greater than or equal to its maximum
-      value, and has its minimum value whenever the information
-      being modeled is smaller than or equal to its minimum value.
-      If the information being modeled subsequently decreases
-      below (increases above) the maximum (minimum) value, the
-      gauge32 also decreases (increases).
-
-      In the value set and its semantics, this type is equivalent
-      to the Gauge32 type of the SMIv2.";
-      reference
-        "RFC 2578: Structure of Management Information Version 2
-        	  (SMIv2)";
-
-    }
-
-    typedef gauge64 {
-      type uint64;
-      description
-        "The gauge64 type represents a non-negative integer, which
-      may increase or decrease, but shall never exceed a maximum
-      value, nor fall below a minimum value.  The maximum value
-      cannot be greater than 2^64-1 (18446744073709551615), and
-      the minimum value cannot be smaller than 0.  The value of
-      a gauge64 has its maximum value whenever the information
-      being modeled is greater than or equal to its maximum
-      value, and has its minimum value whenever the information
-      being modeled is smaller than or equal to its minimum value.
-      If the information being modeled subsequently decreases
-      below (increases above) the maximum (minimum) value, the
-      gauge64 also decreases (increases).
-
-      In the value set and its semantics, this type is equivalent
-      to the CounterBasedGauge64 SMIv2 textual convention defined
-      in RFC 2856";
-      reference
-        "RFC 2856: Textual Conventions for Additional High Capacity
-        	  Data Types";
-
-    }
-
-    typedef object-identifier {
-      type string {
-        pattern
-          '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))(\.(0|([1-9]\d*)))*';
-      }
-      description
-        "The object-identifier type represents administratively
-      assigned names in a registration-hierarchical-name tree.
-
-      Values of this type are denoted as a sequence of numerical
-      non-negative sub-identifier values.  Each sub-identifier
-      value MUST NOT exceed 2^32-1 (4294967295).  Sub-identifiers
-      are separated by single dots and without any intermediate
-      whitespace.
-
-      The ASN.1 standard restricts the value space of the first
-      sub-identifier to 0, 1, or 2.  Furthermore, the value space
-      of the second sub-identifier is restricted to the range
-      0 to 39 if the first sub-identifier is 0 or 1.  Finally,
-      the ASN.1 standard requires that an object identifier
-      has always at least two sub-identifiers.  The pattern
-      captures these restrictions.
-
-      Although the number of sub-identifiers is not limited,
-      module designers should realize that there may be
-      implementations that stick with the SMIv2 limit of 128
-      sub-identifiers.
-
-      This type is a superset of the SMIv2 OBJECT IDENTIFIER type
-      since it is not restricted to 128 sub-identifiers.  Hence,
-      this type SHOULD NOT be used to represent the SMIv2 OBJECT
-      IDENTIFIER type; the object-identifier-128 type SHOULD be
-      used instead.";
-      reference
-        "ISO9834-1: Information technology -- Open Systems
-        Interconnection -- Procedures for the operation of OSI
-        Registration Authorities: General procedures and top
-        arcs of the ASN.1 Object Identifier tree";
-
-    }
-
-    typedef object-identifier-128 {
-      type object-identifier {
-        pattern '\d*(\.\d*){1,127}';
-      }
-      description
-        "This type represents object-identifiers restricted to 128
-      sub-identifiers.
-
-      In the value set and its semantics, this type is equivalent
-      to the OBJECT IDENTIFIER type of the SMIv2.";
-      reference
-        "RFC 2578: Structure of Management Information Version 2
-        	  (SMIv2)";
-
-    }
-
-    typedef yang-identifier {
-      type string {
-        length "1..max";
-        pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*';
-        pattern
-          '.|..|[^xX].*|.[^mM].*|..[^lL].*';
-      }
-      description
-        "A YANG identifier string as defined by the 'identifier'
-       rule in Section 12 of RFC 6020.  An identifier must
-       start with an alphabetic character or an underscore
-       followed by an arbitrary sequence of alphabetic or
-       numeric characters, underscores, hyphens, or dots.
-
-       A YANG identifier MUST NOT start with any possible
-       combination of the lowercase or uppercase character
-       sequence 'xml'.";
-      reference
-        "RFC 6020: YANG - A Data Modeling Language for the Network
-        	  Configuration Protocol (NETCONF)";
-
-    }
-
-    typedef date-and-time {
-      type string {
-        pattern
-          '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[\+\-]\d{2}:\d{2})';
-      }
-      description
-        "The date-and-time type is a profile of the ISO 8601
-      standard for representation of dates and times using the
-      Gregorian calendar.  The profile is defined by the
-      date-time production in Section 5.6 of RFC 3339.
-
-      The date-and-time type is compatible with the dateTime XML
-      schema type with the following notable exceptions:
-
-      (a) The date-and-time type does not allow negative years.
-
-      (b) The date-and-time time-offset -00:00 indicates an unknown
-          time zone (see RFC 3339) while -00:00 and +00:00 and Z
-          all represent the same time zone in dateTime.
-
-      (c) The canonical format (see below) of data-and-time values
-          differs from the canonical format used by the dateTime XML
-          schema type, which requires all times to be in UTC using
-          the time-offset 'Z'.
-
-      This type is not equivalent to the DateAndTime textual
-      convention of the SMIv2 since RFC 3339 uses a different
-      separator between full-date and full-time and provides
-      higher resolution of time-secfrac.
-
-      The canonical format for date-and-time values with a known time
-      zone uses a numeric time zone offset that is calculated using
-      the device's configured known offset to UTC time.  A change of
-      the device's offset to UTC time will cause date-and-time values
-      to change accordingly.  Such changes might happen periodically
-      in case a server follows automatically daylight saving time
-      (DST) time zone offset changes.  The canonical format for
-      date-and-time values with an unknown time zone (usually
-      referring to the notion of local time) uses the time-offset
-      -00:00.";
-      reference
-        "RFC 3339: Date and Time on the Internet: Timestamps
-         RFC 2579: Textual Conventions for SMIv2
-        XSD-TYPES: XML Schema Part 2: Datatypes Second Edition";
-
-    }
-
-    typedef timeticks {
-      type uint32;
-      description
-        "The timeticks type represents a non-negative integer that
-      represents the time, modulo 2^32 (4294967296 decimal), in
-      hundredths of a second between two epochs.  When a schema
-      node is defined that uses this type, the description of
-      the schema node identifies both of the reference epochs.
-
-      In the value set and its semantics, this type is equivalent
-      to the TimeTicks type of the SMIv2.";
-      reference
-        "RFC 2578: Structure of Management Information Version 2
-        	  (SMIv2)";
-
-    }
-
-    typedef timestamp {
-      type timeticks;
-      description
-        "The timestamp type represents the value of an associated
-      timeticks schema node at which a specific occurrence
-      happened.  The specific occurrence must be defined in the
-      description of any schema node defined using this type.  When
-      the specific occurrence occurred prior to the last time the
-      associated timeticks attribute was zero, then the timestamp
-      value is zero.  Note that this requires all timestamp values
-      to be reset to zero when the value of the associated timeticks
-      attribute reaches 497+ days and wraps around to zero.
-
-      The associated timeticks schema node must be specified
-      in the description of any schema node using this type.
-
-      In the value set and its semantics, this type is equivalent
-      to the TimeStamp textual convention of the SMIv2.";
-      reference
-        "RFC 2579: Textual Conventions for SMIv2";
-
-    }
-
-    typedef phys-address {
-      type string {
-        pattern
-          '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
-      }
-      description
-        "Represents media- or physical-level addresses represented
-      as a sequence octets, each octet represented by two hexadecimal
-      numbers.  Octets are separated by colons.  The canonical
-      representation uses lowercase characters.
-
-      In the value set and its semantics, this type is equivalent
-      to the PhysAddress textual convention of the SMIv2.";
-      reference
-        "RFC 2579: Textual Conventions for SMIv2";
-
-    }
-
-    typedef mac-address {
-      type string {
-        pattern
-          '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
-      }
-      description
-        "The mac-address type represents an IEEE 802 MAC address.
-      The canonical representation uses lowercase characters.
-
-      In the value set and its semantics, this type is equivalent
-      to the MacAddress textual convention of the SMIv2.";
-      reference
-        "IEEE 802: IEEE Standard for Local and Metropolitan Area
-        	  Networks: Overview and Architecture
-         RFC 2579: Textual Conventions for SMIv2";
-
-    }
-
-    typedef xpath1.0 {
-      type string;
-      description
-        "This type represents an XPATH 1.0 expression.
-
-      When a schema node is defined that uses this type, the
-      description of the schema node MUST specify the XPath
-      context in which the XPath expression is evaluated.";
-      reference
-        "XPATH: XML Path Language (XPath) Version 1.0";
-
-    }
-
-    typedef hex-string {
-      type string {
-        pattern
-          '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
-      }
-      description
-        "A hexadecimal string with octets represented as hex digits
-      separated by colons.  The canonical representation uses
-      lowercase characters.";
-    }
-
-    typedef uuid {
-      type string {
-        pattern
-          '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}';
-      }
-      description
-        "A Universally Unique IDentifier in the string representation
-      defined in RFC 4122.  The canonical representation uses
-      lowercase characters.
-
-      The following is an example of a UUID in string representation:
-      f81d4fae-7dec-11d0-a765-00a0c91e6bf6
-      ";
-      reference
-        "RFC 4122: A Universally Unique IDentifier (UUID) URN
-        	  Namespace";
-
-    }
-
-    typedef dotted-quad {
-      type string {
-        pattern
-          '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
-      }
-      description
-        "An unsigned 32-bit number expressed in the dotted-quad
-       notation, i.e., four octets written as decimal numbers
-       and separated with the '.' (full stop) character.";
-    }
-  }  // module ietf-yang-types
-