/*
 * This module has been generated by smidump 0.4.8:
 *
 *      smidump -f yang --yang-smi-extensions IP-MIB
 *
 * Do not edit. Edit the source file instead!
 */

module IP-MIB {

  /*** NAMESPACE / PREFIX DEFINITION ***/

  namespace "urn:ietf:params:xml:ns:yang:smiv2:IP-MIB";
  prefix "ip-mib";

  /*** LINKAGE (IMPORTS / INCLUDES) ***/

  import IF-MIB           { prefix "if-mib"; }
  import INET-ADDRESS-MIB { prefix "inet-address"; }
  import SNMPv2-TC        { prefix "smiv2"; }
  import ietf-inet-types  { prefix "inet"; }
  import yang-smi         { prefix "smi"; }
  import ietf-yang-types  { prefix "yang"; }

  /*** META INFORMATION ***/

  organization
   "IETF IPv6 MIB Revision Team";

  contact
   "Editor:

    Shawn A. Routhier
    Interworking Labs
    108 Whispering Pines Dr. Suite 235
    Scotts Valley, CA 95066
    USA
    EMail: <sar@iwl.com>";

  description
   "The MIB module for managing IP and ICMP implementations, but
    excluding their management of IP routes.

    Copyright (C) The Internet Society (2006).  This version of
    this MIB module is part of RFC 4293; see the RFC itself for
    full legal notices.";

  revision "2006-02-02" {
    description
     "The IP version neutral revision with added IPv6 objects for
      ND, default routers, and router advertisements.  As well as
      being the successor to RFC 2011, this MIB is also the
      successor to RFCs 2465 and 2466.  Published as RFC 4293.";
  }
  revision "1994-11-01" {
    description
     "A separate MIB module (IP-MIB) for IP and ICMP management
      objects.  Published as RFC 2011.";
  }
  revision "1991-03-31" {
    description
     "The initial revision of this MIB module was part of MIB-II,
      which was published as RFC 1213.";
  }

  /*** TYPE DEFINITIONS ***/

  typedef IpAddressOriginTC {
    type enumeration {
      enum other     { value 1; }
      enum manual    { value 2; }
      enum dhcp      { value 4; }
      enum linklayer { value 5; }
      enum random    { value 6; }
    }
    description
     "The origin of the address.

      manual(2) indicates that the address was manually configured
      to a specified address, e.g., by user configuration.

      dhcp(4) indicates an address that was assigned to this
      system by a DHCP server.

      linklayer(5) indicates an address created by IPv6 stateless

      auto-configuration.

      random(6) indicates an address chosen by the system at
      random, e.g., an IPv4 address within 169.254/16, or an RFC
      3041 privacy address.";
  }

  typedef IpAddressStatusTC {
    type enumeration {
      enum preferred    { value 1; }
      enum deprecated   { value 2; }
      enum invalid      { value 3; }
      enum inaccessible { value 4; }
      enum unknown      { value 5; }
      enum tentative    { value 6; }
      enum duplicate    { value 7; }
      enum optimistic   { value 8; }
    }
    description
     "The status of an address.  Most of the states correspond to
      states from the IPv6 Stateless Address Autoconfiguration
      protocol.

      The preferred(1) state indicates that this is a valid
      address that can appear as the destination or source address
      of a packet.

      The deprecated(2) state indicates that this is a valid but
      deprecated address that should no longer be used as a source
      address in new communications, but packets addressed to such
      an address are processed as expected.

      The invalid(3) state indicates that this isn't a valid
      address and it shouldn't appear as the destination or source
      address of a packet.

      The inaccessible(4) state indicates that the address is not
      accessible because the interface to which this address is
      assigned is not operational.

      The unknown(5) state indicates that the status cannot be
      determined for some reason.

      The tentative(6) state indicates that the uniqueness of the
      address on the link is being verified.  Addresses in this
      state should not be used for general communication and
      should only be used to determine the uniqueness of the
      address.

      The duplicate(7) state indicates the address has been
      determined to be non-unique on the link and so must not be

      used.

      The optimistic(8) state indicates the address is available
      for use, subject to restrictions, while its uniqueness on
      a link is being verified.

      In the absence of other information, an IPv4 address is
      always preferred(1).";
    reference
     "RFC 2462";
  }

  typedef IpAddressPrefixOriginTC {
    type enumeration {
      enum other     { value 1; }
      enum manual    { value 2; }
      enum wellknown { value 3; }
      enum dhcp      { value 4; }
      enum routeradv { value 5; }
    }
    description
     "The origin of this prefix.

      manual(2) indicates a prefix that was manually configured.

      wellknown(3) indicates a well-known prefix, e.g., 169.254/16
      for IPv4 auto-configuration or fe80::/10 for IPv6 link-local
      addresses.  Well known prefixes may be assigned by IANA,
      the address registries, or by specification in a standards
      track RFC.

      dhcp(4) indicates a prefix that was assigned by a DHCP
      server.

      routeradv(5) indicates a prefix learned from a router
      advertisement.

      Note: while IpAddressOriginTC and IpAddressPrefixOriginTC
      are similar, they are not identical.  The first defines how
      an address was created, while the second defines how a
      prefix was found.";
  }

  typedef Ipv6AddressIfIdentifierTC {
    type string {
      length "0..8";
      pattern "(((([0-9A-Fa-f]{2})){0,7}([0-9A-Fa-f]{2}))){0,1}";
    }
    description
     "This data type is used to model IPv6 address
      interface identifiers.  This is a binary string
      of up to 8 octets in network byte-order.";
    smi:display-hint "2x:";
  }

  container ip {

    leaf ipForwarding {
      type enumeration {
        enum forwarding    { value 1; }
        enum notForwarding { value 2; }
      }
      config true;
      description
       "The indication of whether this entity is acting as an IPv4
        router in respect to the forwarding of datagrams received
        by, but not addressed to, this entity.  IPv4 routers forward
        datagrams.  IPv4 hosts do not (except those source-routed
        via the host).

        When this object is written, the entity should save the
        change to non-volatile storage and restore the object from
        non-volatile storage upon re-initialization of the system.
        Note: a stronger requirement is not used because this object
        was previously defined.";
      smi:oid "1.3.6.1.2.1.4.1";
    }

    leaf ipDefaultTTL {
      type int32 {
        range "1..255";
      }
      config true;
      description
       "The default value inserted into the Time-To-Live field of
        the IPv4 header of datagrams originated at this entity,
        whenever a TTL value is not supplied by the transport layer

        protocol.

        When this object is written, the entity should save the
        change to non-volatile storage and restore the object from
        non-volatile storage upon re-initialization of the system.
        Note: a stronger requirement is not used because this object
        was previously defined.";
      smi:oid "1.3.6.1.2.1.4.2";
    }

    leaf ipInReceives {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The total number of input datagrams received from
        interfaces, including those received in error.

        This object has been deprecated, as a new IP version-neutral

        table has been added.  It is loosely replaced by
        ipSystemStatsInRecieves.";
      smi:oid "1.3.6.1.2.1.4.3";
    }

    leaf ipInHdrErrors {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of input datagrams discarded due to errors in
        their IPv4 headers, including bad checksums, version number
        mismatch, other format errors, time-to-live exceeded, errors
        discovered in processing their IPv4 options, etc.

        This object has been deprecated as a new IP version-neutral
        table has been added.  It is loosely replaced by
        ipSystemStatsInHdrErrors.";
      smi:oid "1.3.6.1.2.1.4.4";
    }

    leaf ipInAddrErrors {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of input datagrams discarded because the IPv4
        address in their IPv4 header's destination field was not a
        valid address to be received at this entity.  This count
        includes invalid addresses (e.g., 0.0.0.0) and addresses of
        unsupported Classes (e.g., Class E).  For entities which are
        not IPv4 routers, and therefore do not forward datagrams,
        this counter includes datagrams discarded because the
        destination address was not a local address.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by
        ipSystemStatsInAddrErrors.";
      smi:oid "1.3.6.1.2.1.4.5";
    }

    leaf ipForwDatagrams {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of input datagrams for which this entity was not
        their final IPv4 destination, as a result of which an
        attempt was made to find a route to forward them to that
        final destination.  In entities which do not act as IPv4
        routers, this counter will include only those packets which

        were Source-Routed via this entity, and the Source-Route
        option processing was successful.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by
        ipSystemStatsInForwDatagrams.";
      smi:oid "1.3.6.1.2.1.4.6";
    }

    leaf ipInUnknownProtos {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of locally-addressed datagrams received
        successfully but discarded because of an unknown or
        unsupported protocol.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by
        ipSystemStatsInUnknownProtos.";
      smi:oid "1.3.6.1.2.1.4.7";
    }

    leaf ipInDiscards {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of input IPv4 datagrams for which no problems
        were encountered to prevent their continued processing, but
        which were discarded (e.g., for lack of buffer space).  Note
        that this counter does not include any datagrams discarded
        while awaiting re-assembly.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by
        ipSystemStatsInDiscards.";
      smi:oid "1.3.6.1.2.1.4.8";
    }

    leaf ipInDelivers {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The total number of input datagrams successfully delivered
        to IPv4 user-protocols (including ICMP).

        This object has been deprecated as a new IP version neutral
        table has been added.  It is loosely replaced by

        ipSystemStatsIndelivers.";
      smi:oid "1.3.6.1.2.1.4.9";
    }

    leaf ipOutRequests {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The total number of IPv4 datagrams which local IPv4 user
        protocols (including ICMP) supplied to IPv4 in requests for
        transmission.  Note that this counter does not include any
        datagrams counted in ipForwDatagrams.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by
        ipSystemStatsOutRequests.";
      smi:oid "1.3.6.1.2.1.4.10";
    }

    leaf ipOutDiscards {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of output IPv4 datagrams for which no problem was
        encountered to prevent their transmission to their
        destination, but which were discarded (e.g., for lack of
        buffer space).  Note that this counter would include
        datagrams counted in ipForwDatagrams if any such packets met
        this (discretionary) discard criterion.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by
        ipSystemStatsOutDiscards.";
      smi:oid "1.3.6.1.2.1.4.11";
    }

    leaf ipOutNoRoutes {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of IPv4 datagrams discarded because no route
        could be found to transmit them to their destination.  Note
        that this counter includes any packets counted in
        ipForwDatagrams which meet this `no-route' criterion.  Note
        that this includes any datagrams which a host cannot route
        because all of its default routers are down.

        This object has been deprecated, as a new IP version-neutral

        table has been added.  It is loosely replaced by
        ipSystemStatsOutNoRoutes.";
      smi:oid "1.3.6.1.2.1.4.12";
    }

    leaf ipReasmTimeout {
      type int32;
      units "seconds";
      config false;
      description
       "The maximum number of seconds that received fragments are
        held while they are awaiting reassembly at this entity.";
      smi:oid "1.3.6.1.2.1.4.13";
    }

    leaf ipReasmReqds {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of IPv4 fragments received which needed to be
        reassembled at this entity.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by
        ipSystemStatsReasmReqds.";
      smi:oid "1.3.6.1.2.1.4.14";
    }

    leaf ipReasmOKs {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of IPv4 datagrams successfully re-assembled.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by
        ipSystemStatsReasmOKs.";
      smi:oid "1.3.6.1.2.1.4.15";
    }

    leaf ipReasmFails {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of failures detected by the IPv4 re-assembly
        algorithm (for whatever reason: timed out, errors, etc).
        Note that this is not necessarily a count of discarded IPv4
        fragments since some algorithms (notably the algorithm in
        RFC 815) can lose track of the number of fragments by
        combining them as they are received.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by
        ipSystemStatsReasmFails.";
      smi:oid "1.3.6.1.2.1.4.16";
    }

    leaf ipFragOKs {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of IPv4 datagrams that have been successfully
        fragmented at this entity.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by
        ipSystemStatsOutFragOKs.";
      smi:oid "1.3.6.1.2.1.4.17";
    }

    leaf ipFragFails {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of IPv4 datagrams that have been discarded
        because they needed to be fragmented at this entity but
        could not be, e.g., because their Don't Fragment flag was
        set.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by
        ipSystemStatsOutFragFails.";
      smi:oid "1.3.6.1.2.1.4.18";
    }

    leaf ipFragCreates {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of IPv4 datagram fragments that have been
        generated as a result of fragmentation at this entity.

        This object has been deprecated as a new IP version neutral
        table has been added.  It is loosely replaced by
        ipSystemStatsOutFragCreates.";
      smi:oid "1.3.6.1.2.1.4.19";
    }


    /* XXX table comments here XXX */

    list ipAddrEntry {

      config false;

      key "ipAdEntAddr";
      status deprecated;
      description
       "The addressing information for one of this entity's IPv4
        addresses.";
      smi:oid "1.3.6.1.2.1.4.20.1";


      leaf ipAdEntAddr {
        type inet:ipv4-address;
        config false;
        status deprecated;
        description
         "The IPv4 address to which this entry's addressing
          information pertains.";
        smi:oid "1.3.6.1.2.1.4.20.1.1";
      }

      leaf ipAdEntIfIndex {
        type int32 {
          range "1..2147483647";
        }
        config false;
        status deprecated;
        description
         "The index value which uniquely identifies the interface to
          which this entry is applicable.  The interface identified by
          a particular value of this index is the same interface as
          identified by the same value of the IF-MIB's ifIndex.";
        smi:oid "1.3.6.1.2.1.4.20.1.2";
      }

      leaf ipAdEntNetMask {
        type inet:ipv4-address;
        config false;
        status deprecated;
        description
         "The subnet mask associated with the IPv4 address of this
          entry.  The value of the mask is an IPv4 address with all
          the network bits set to 1 and all the hosts bits set to 0.";
        smi:oid "1.3.6.1.2.1.4.20.1.3";
      }

      leaf ipAdEntBcastAddr {
        type int32 {
          range "0..1";
        }
        config false;
        status deprecated;
        description
         "The value of the least-significant bit in the IPv4 broadcast
          address used for sending datagrams on the (logical)
          interface associated with the IPv4 address of this entry.
          For example, when the Internet standard all-ones broadcast
          address is used, the value will be 1.  This value applies to
          both the subnet and network broadcast addresses used by the
          entity on this (logical) interface.";
        smi:oid "1.3.6.1.2.1.4.20.1.4";
      }

      leaf ipAdEntReasmMaxSize {
        type int32 {
          range "0..65535";
        }
        config false;
        status deprecated;
        description
         "The size of the largest IPv4 datagram which this entity can
          re-assemble from incoming IPv4 fragmented datagrams received
          on this interface.";
        smi:oid "1.3.6.1.2.1.4.20.1.5";
      }
    }


    /* XXX table comments here XXX */

    list ipNetToMediaEntry {

      key "ipNetToMediaIfIndex ipNetToMediaNetAddress";
      status deprecated;
      description
       "Each entry contains one IpAddress to `physical' address
        equivalence.";
      smi:oid "1.3.6.1.2.1.4.22.1";


      leaf ipNetToMediaIfIndex {
        type int32 {
          range "1..2147483647";
        }
        config true;
        status deprecated;
        description
         "The interface on which this entry's equivalence is
          effective.  The interface identified by a particular value
          of this index is the same interface as identified by the

          same value of the IF-MIB's ifIndex.

          This object predates the rule limiting index objects to a
          max access value of 'not-accessible' and so continues to use
          a value of 'read-create'.";
        smi:oid "1.3.6.1.2.1.4.22.1.1";
      }

      leaf ipNetToMediaPhysAddress {
        type yang:phys-address {
          length "0..65535";
        }
        config true;
        status deprecated;
        description
         "The media-dependent `physical' address.  This object should
          return 0 when this entry is in the 'incomplete' state.

          As the entries in this table are typically not persistent
          when this object is written the entity should not save the
          change to non-volatile storage.  Note: a stronger
          requirement is not used because this object was previously
          defined.";
        smi:oid "1.3.6.1.2.1.4.22.1.2";
      }

      leaf ipNetToMediaNetAddress {
        type inet:ipv4-address;
        config true;
        status deprecated;
        description
         "The IpAddress corresponding to the media-dependent
          `physical' address.

          This object predates the rule limiting index objects to a
          max access value of 'not-accessible' and so continues to use
          a value of 'read-create'.";
        smi:oid "1.3.6.1.2.1.4.22.1.3";
      }

      leaf ipNetToMediaType {
        type enumeration {
          enum other   { value 1; }
          enum invalid { value 2; }
          enum dynamic { value 3; }
          enum static  { value 4; }
        }
        config true;
        status deprecated;
        description
         "The type of mapping.

          Setting this object to the value invalid(2) has the effect

          of invalidating the corresponding entry in the
          ipNetToMediaTable.  That is, it effectively dis-associates
          the interface identified with said entry from the mapping
          identified with said entry.  It is an implementation-
          specific matter as to whether the agent removes an
          invalidated entry from the table.  Accordingly, management
          stations must be prepared to receive tabular information
          from agents that corresponds to entries not currently in
          use.  Proper interpretation of such entries requires
          examination of the relevant ipNetToMediaType object.

          As the entries in this table are typically not persistent
          when this object is written the entity should not save the
          change to non-volatile storage.  Note: a stronger
          requirement is not used because this object was previously
          defined.";
        smi:oid "1.3.6.1.2.1.4.22.1.4";
      }
    }

    leaf ipRoutingDiscards {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of routing entries which were chosen to be
        discarded even though they are valid.  One possible reason
        for discarding such an entry could be to free-up buffer
        space for other routing entries.

        This object was defined in pre-IPv6 versions of the IP MIB.
        It was implicitly IPv4 only, but the original specifications
        did not indicate this protocol restriction.  In order to
        clarify the specifications, this object has been deprecated
        and a similar, but more thoroughly clarified, object has
        been added to the IP-FORWARD-MIB.";
      smi:oid "1.3.6.1.2.1.4.23";
    }

    leaf ipv6IpForwarding {
      type enumeration {
        enum forwarding    { value 1; }
        enum notForwarding { value 2; }
      }
      config true;
      description
       "The indication of whether this entity is acting as an IPv6
        router on any interface in respect to the forwarding of
        datagrams received by, but not addressed to, this entity.
        IPv6 routers forward datagrams.  IPv6 hosts do not (except
        those source-routed via the host).

        When this object is written, the entity SHOULD save the
        change to non-volatile storage and restore the object from
        non-volatile storage upon re-initialization of the system.";
      smi:oid "1.3.6.1.2.1.4.25";
    }

    leaf ipv6IpDefaultHopLimit {
      type int32 {
        range "0..255";
      }
      config true;
      description
       "The default value inserted into the Hop Limit field of the
        IPv6 header of datagrams originated at this entity whenever
        a Hop Limit value is not supplied by the transport layer
        protocol.

        When this object is written, the entity SHOULD save the
        change to non-volatile storage and restore the object from
        non-volatile storage upon re-initialization of the system.";
      reference
       "RFC 2461 Section 6.3.2";
      smi:oid "1.3.6.1.2.1.4.26";
    }

    leaf ipv4InterfaceTableLastChange {
      type yang:timestamp;
      config false;
      description
       "The value of sysUpTime on the most recent occasion at which
        a row in the ipv4InterfaceTable was added or deleted, or
        when an ipv4InterfaceReasmMaxSize or an
        ipv4InterfaceEnableStatus object was modified.

        If new objects are added to the ipv4InterfaceTable that
        require the ipv4InterfaceTableLastChange to be updated when
        they are modified, they must specify that requirement in
        their description clause.";
      smi:oid "1.3.6.1.2.1.4.27";
    }


    /* XXX table comments here XXX */

    list ipv4InterfaceEntry {

      config false;

      key "ipv4InterfaceIfIndex";
      description
       "An entry containing IPv4-specific information for a specific
        interface.";
      smi:oid "1.3.6.1.2.1.4.28.1";


      leaf ipv4InterfaceIfIndex {
        type if-mib:InterfaceIndex;
        config false;
        description
         "The index value that uniquely identifies the interface to
          which this entry is applicable.  The interface identified by
          a particular value of this index is the same interface as
          identified by the same value of the IF-MIB's ifIndex.";
        smi:oid "1.3.6.1.2.1.4.28.1.1";
      }

      leaf ipv4InterfaceReasmMaxSize {
        type int32 {
          range "0..65535";
        }
        config false;
        description
         "The size of the largest IPv4 datagram that this entity can
          re-assemble from incoming IPv4 fragmented datagrams received
          on this interface.";
        smi:oid "1.3.6.1.2.1.4.28.1.2";
      }

      leaf ipv4InterfaceEnableStatus {
        type enumeration {
          enum up   { value 1; }
          enum down { value 2; }
        }
        config false;
        description
         "The indication of whether IPv4 is enabled (up) or disabled
          (down) on this interface.  This object does not affect the
          state of the interface itself, only its connection to an
          IPv4 stack.  The IF-MIB should be used to control the state
          of the interface.";
        smi:oid "1.3.6.1.2.1.4.28.1.3";
      }

      leaf ipv4InterfaceRetransmitTime {
        type uint32;
        units "milliseconds";
        config false;
        description
         "The time between retransmissions of ARP requests to a
          neighbor when resolving the address or when probing the
          reachability of a neighbor.";
        reference
         "RFC 1122";
        smi:default "1000";
        smi:oid "1.3.6.1.2.1.4.28.1.4";
      }
    }

    leaf ipv6InterfaceTableLastChange {
      type yang:timestamp;
      config false;
      description
       "The value of sysUpTime on the most recent occasion at which
        a row in the ipv6InterfaceTable was added or deleted or when
        an ipv6InterfaceReasmMaxSize, ipv6InterfaceIdentifier,
        ipv6InterfaceEnableStatus, ipv6InterfaceReachableTime,
        ipv6InterfaceRetransmitTime, or ipv6InterfaceForwarding
        object was modified.

        If new objects are added to the ipv6InterfaceTable that
        require the ipv6InterfaceTableLastChange to be updated when
        they are modified, they must specify that requirement in
        their description clause.";
      smi:oid "1.3.6.1.2.1.4.29";
    }


    /* XXX table comments here XXX */

    list ipv6InterfaceEntry {

      config false;

      key "ipv6InterfaceIfIndex";
      description
       "An entry containing IPv6-specific information for a given
        interface.";
      smi:oid "1.3.6.1.2.1.4.30.1";


      leaf ipv6InterfaceIfIndex {
        type if-mib:InterfaceIndex;
        config false;
        description
         "The index value that uniquely identifies the interface to
          which this entry is applicable.  The interface identified by
          a particular value of this index is the same interface as
          identified by the same value of the IF-MIB's ifIndex.";
        smi:oid "1.3.6.1.2.1.4.30.1.1";
      }

      leaf ipv6InterfaceReasmMaxSize {
        type uint32 {
          range "1500..65535";
        }
        units "octets";
        config false;
        description
         "The size of the largest IPv6 datagram that this entity can
          re-assemble from incoming IPv6 fragmented datagrams received
          on this interface.";
        smi:oid "1.3.6.1.2.1.4.30.1.2";
      }

      leaf ipv6InterfaceIdentifier {
        type ip-mib:Ipv6AddressIfIdentifierTC;
        config false;
        description
         "The Interface Identifier for this interface.  The Interface
          Identifier is combined with an address prefix to form an
          interface address.

          By default, the Interface Identifier is auto-configured
          according to the rules of the link type to which this
          interface is attached.

          A zero length identifier may be used where appropriate.  One
          possible example is a loopback interface.";
        smi:oid "1.3.6.1.2.1.4.30.1.3";
      }

      leaf ipv6InterfaceEnableStatus {
        type enumeration {
          enum up   { value 1; }
          enum down { value 2; }
        }
        config false;
        description
         "The indication of whether IPv6 is enabled (up) or disabled
          (down) on this interface.  This object does not affect the
          state of the interface itself, only its connection to an
          IPv6 stack.  The IF-MIB should be used to control the state
          of the interface.

          When this object is written, the entity SHOULD save the
          change to non-volatile storage and restore the object from
          non-volatile storage upon re-initialization of the system.";
        smi:oid "1.3.6.1.2.1.4.30.1.5";
      }

      leaf ipv6InterfaceReachableTime {
        type uint32;
        units "milliseconds";
        config false;
        description
         "The time a neighbor is considered reachable after receiving
          a reachability confirmation.";
        reference
         "RFC 2461, Section 6.3.2";
        smi:oid "1.3.6.1.2.1.4.30.1.6";
      }

      leaf ipv6InterfaceRetransmitTime {
        type uint32;
        units "milliseconds";
        config false;
        description
         "The time between retransmissions of Neighbor Solicitation
          messages to a neighbor when resolving the address or when
          probing the reachability of a neighbor.";
        reference
         "RFC 2461, Section 6.3.2";
        smi:oid "1.3.6.1.2.1.4.30.1.7";
      }

      leaf ipv6InterfaceForwarding {
        type enumeration {
          enum forwarding    { value 1; }
          enum notForwarding { value 2; }
        }
        config false;
        description
         "The indication of whether this entity is acting as an IPv6
          router on this interface with respect to the forwarding of
          datagrams received by, but not addressed to, this entity.
          IPv6 routers forward datagrams.  IPv6 hosts do not (except
          those source-routed via the host).

          This object is constrained by ipv6IpForwarding and is
          ignored if ipv6IpForwarding is set to notForwarding.  Those
          systems that do not provide per-interface control of the
          forwarding function should set this object to forwarding for
          all interfaces and allow the ipv6IpForwarding object to
          control the forwarding capability.

          When this object is written, the entity SHOULD save the
          change to non-volatile storage and restore the object from
          non-volatile storage upon re-initialization of the system.";
        smi:oid "1.3.6.1.2.1.4.30.1.8";
      }
    }



    /* XXX table comments here XXX */

    list ipAddressPrefixEntry {

      config false;

      key "ipAddressPrefixIfIndex ipAddressPrefixType
           ipAddressPrefixPrefix ipAddressPrefixLength";
      description
       "An entry in the ipAddressPrefixTable.";
      smi:oid "1.3.6.1.2.1.4.32.1";


      leaf ipAddressPrefixIfIndex {
        type if-mib:InterfaceIndex;
        config false;
        description
         "The index value that uniquely identifies the interface on
          which this prefix is configured.  The interface identified
          by a particular value of this index is the same interface as
          identified by the same value of the IF-MIB's ifIndex.";
        smi:oid "1.3.6.1.2.1.4.32.1.1";
      }

      leaf ipAddressPrefixType {
        type inet-address:InetAddressType;
        config false;
        description
         "The address type of ipAddressPrefix.";
        smi:oid "1.3.6.1.2.1.4.32.1.2";
      }

      leaf ipAddressPrefixPrefix {
        type inet-address:InetAddress;
        config false;
        description
         "The address prefix.  The address type of this object is
          specified in ipAddressPrefixType.  The length of this object
          is the standard length for objects of that type (4 or 16
          bytes).  Any bits after ipAddressPrefixLength must be zero.

          Implementors need to be aware that, if the size of
          ipAddressPrefixPrefix exceeds 114 octets, then OIDS of
          instances of columns in this row will have more than 128
          sub-identifiers and cannot be accessed using SNMPv1,
          SNMPv2c, or SNMPv3.";
        smi:oid "1.3.6.1.2.1.4.32.1.3";
      }

      leaf ipAddressPrefixLength {
        type inet-address:InetAddressPrefixLength;
        config false;
        description
         "The prefix length associated with this prefix.

          The value 0 has no special meaning for this object.  It
          simply refers to address '::/0'.";
        smi:oid "1.3.6.1.2.1.4.32.1.4";
      }

      leaf ipAddressPrefixOrigin {
        type ip-mib:IpAddressPrefixOriginTC;
        config false;
        description
         "The origin of this prefix.";
        smi:oid "1.3.6.1.2.1.4.32.1.5";
      }

      leaf ipAddressPrefixOnLinkFlag {
        type smiv2:TruthValue;
        config false;
        description
         "This object has the value 'true(1)', if this prefix can be
          used for on-link determination; otherwise, the value is
          'false(2)'.

          The default for IPv4 prefixes is 'true(1)'.";
        reference
         "For IPv6 RFC 2461, especially sections 2 and 4.6.2 and
          RFC 2462";
        smi:oid "1.3.6.1.2.1.4.32.1.6";
      }

      leaf ipAddressPrefixAutonomousFlag {
        type smiv2:TruthValue;
        config false;
        description
         "Autonomous address configuration flag.  When true(1),
          indicates that this prefix can be used for autonomous
          address configuration (i.e., can be used to form a local
          interface address).  If false(2), it is not used to auto-
          configure a local interface address.

          The default for IPv4 prefixes is 'false(2)'.";
        reference
         "For IPv6 RFC 2461, especially sections 2 and 4.6.2 and
          RFC 2462";
        smi:oid "1.3.6.1.2.1.4.32.1.7";
      }

      leaf ipAddressPrefixAdvPreferredLifetime {
        type uint32;
        units "seconds";
        config false;
        description
         "The remaining length of time, in seconds, that this prefix
          will continue to be preferred, i.e., time until deprecation.

          A value of 4,294,967,295 represents infinity.

          The address generated from a deprecated prefix should no
          longer be used as a source address in new communications,
          but packets received on such an interface are processed as
          expected.

          The default for IPv4 prefixes is 4,294,967,295 (infinity).";
        reference
         "For IPv6 RFC 2461, especially sections 2 and 4.6.2 and
          RFC 2462";
        smi:oid "1.3.6.1.2.1.4.32.1.8";
      }

      leaf ipAddressPrefixAdvValidLifetime {
        type uint32;
        units "seconds";
        config false;
        description
         "The remaining length of time, in seconds, that this prefix
          will continue to be valid, i.e., time until invalidation.  A
          value of 4,294,967,295 represents infinity.

          The address generated from an invalidated prefix should not
          appear as the destination or source address of a packet.

          The default for IPv4 prefixes is 4,294,967,295 (infinity).";
        reference
         "For IPv6 RFC 2461, especially sections 2 and 4.6.2 and
          RFC 2462";
        smi:oid "1.3.6.1.2.1.4.32.1.9";
      }
    }

    leaf ipAddressSpinLock {
      type smiv2:TestAndIncr;
      config true;
      description
       "An advisory lock used to allow cooperating SNMP managers to
        coordinate their use of the set operation in creating or
        modifying rows within this table.

        In order to use this lock to coordinate the use of set
        operations, managers should first retrieve
        ipAddressTableSpinLock.  They should then determine the
        appropriate row to create or modify.  Finally, they should
        issue the appropriate set command, including the retrieved
        value of ipAddressSpinLock.  If another manager has altered
        the table in the meantime, then the value of
        ipAddressSpinLock will have changed, and the creation will
        fail as it will be specifying an incorrect value for
        ipAddressSpinLock.  It is suggested, but not required, that
        the ipAddressSpinLock be the first var bind for each set of
        objects representing a 'row' in a PDU.";
      smi:oid "1.3.6.1.2.1.4.33";
    }


    /* XXX table comments here XXX */

    list ipAddressEntry {

      config false;

      key "ipAddressAddrType ipAddressAddr";
      description
       "An address mapping for a particular interface.";
      smi:oid "1.3.6.1.2.1.4.34.1";


      leaf ipAddressAddrType {
        type inet-address:InetAddressType;
        config false;
        description
         "The address type of ipAddressAddr.";
        smi:oid "1.3.6.1.2.1.4.34.1.1";
      }

      leaf ipAddressAddr {
        type inet-address:InetAddress;
        config false;
        description
         "The IP address to which this entry's addressing information

          pertains.  The address type of this object is specified in
          ipAddressAddrType.

          Implementors need to be aware that if the size of
          ipAddressAddr exceeds 116 octets, then OIDS of instances of
          columns in this row will have more than 128 sub-identifiers
          and cannot be accessed using SNMPv1, SNMPv2c, or SNMPv3.";
        smi:oid "1.3.6.1.2.1.4.34.1.2";
      }

      leaf ipAddressIfIndex {
        type if-mib:InterfaceIndex;
        config false;
        description
         "The index value that uniquely identifies the interface to
          which this entry is applicable.  The interface identified by
          a particular value of this index is the same interface as
          identified by the same value of the IF-MIB's ifIndex.";
        smi:oid "1.3.6.1.2.1.4.34.1.3";
      }

      leaf ipAddressType {
        type enumeration {
          enum unicast   { value 1; }
          enum anycast   { value 2; }
          enum broadcast { value 3; }
        }
        config false;
        description
         "The type of address.  broadcast(3) is not a valid value for
          IPv6 addresses (RFC 3513).";
        smi:default "unicast";
        smi:oid "1.3.6.1.2.1.4.34.1.4";
      }

      leaf ipAddressPrefix {
        type smiv2:RowPointer;
        config false;
        description
         "A pointer to the row in the prefix table to which this
          address belongs.  May be { 0 0 } if there is no such row.";
        smi:default "zeroDotZero";
        smi:oid "1.3.6.1.2.1.4.34.1.5";
      }

      leaf ipAddressOrigin {
        type ip-mib:IpAddressOriginTC;
        config false;
        description
         "The origin of the address.";
        smi:oid "1.3.6.1.2.1.4.34.1.6";
      }

      leaf ipAddressStatus {
        type ip-mib:IpAddressStatusTC;
        config false;
        description
         "The status of the address, describing if the address can be
          used for communication.

          In the absence of other information, an IPv4 address is
          always preferred(1).";
        smi:default "preferred";
        smi:oid "1.3.6.1.2.1.4.34.1.7";
      }

      leaf ipAddressCreated {
        type yang:timestamp;
        config false;
        description
         "The value of sysUpTime at the time this entry was created.
          If this entry was created prior to the last re-
          initialization of the local network management subsystem,
          then this object contains a zero value.";
        smi:oid "1.3.6.1.2.1.4.34.1.8";
      }

      leaf ipAddressLastChanged {
        type yang:timestamp;
        config false;
        description
         "The value of sysUpTime at the time this entry was last
          updated.  If this entry was updated prior to the last re-
          initialization of the local network management subsystem,
          then this object contains a zero value.";
        smi:oid "1.3.6.1.2.1.4.34.1.9";
      }

      leaf ipAddressRowStatus {
        type smiv2:RowStatus;
        config false;
        description
         "The status of this conceptual row.

          The RowStatus TC requires that this DESCRIPTION clause
          states under which circumstances other objects in this row

          can be modified.  The value of this object has no effect on
          whether other objects in this conceptual row can be
          modified.

          A conceptual row can not be made active until the
          ipAddressIfIndex has been set to a valid index.";
        smi:oid "1.3.6.1.2.1.4.34.1.10";
      }

      leaf ipAddressStorageType {
        type smiv2:StorageType;
        config false;
        description
         "The storage type for this conceptual row.  If this object
          has a value of 'permanent', then no other objects are
          required to be able to be modified.";
        smi:default "volatile";
        smi:oid "1.3.6.1.2.1.4.34.1.11";
      }
    }


    /* XXX table comments here XXX */

    list ipNetToPhysicalEntry {

      config false;

      key "ipNetToPhysicalIfIndex ipNetToPhysicalNetAddressType
           ipNetToPhysicalNetAddress";
      description
       "Each entry contains one IP address to `physical' address
        equivalence.";
      smi:oid "1.3.6.1.2.1.4.35.1";


      leaf ipNetToPhysicalIfIndex {
        type if-mib:InterfaceIndex;
        config false;
        description
         "The index value that uniquely identifies the interface to
          which this entry is applicable.  The interface identified by
          a particular value of this index is the same interface as
          identified by the same value of the IF-MIB's ifIndex.";
        smi:oid "1.3.6.1.2.1.4.35.1.1";
      }

      leaf ipNetToPhysicalNetAddressType {
        type inet-address:InetAddressType;
        config false;
        description
         "The type of ipNetToPhysicalNetAddress.";
        smi:oid "1.3.6.1.2.1.4.35.1.2";
      }

      leaf ipNetToPhysicalNetAddress {
        type inet-address:InetAddress;
        config false;
        description
         "The IP Address corresponding to the media-dependent
          `physical' address.  The address type of this object is
          specified in ipNetToPhysicalAddressType.

          Implementors need to be aware that if the size of

          ipNetToPhysicalNetAddress exceeds 115 octets, then OIDS of
          instances of columns in this row will have more than 128
          sub-identifiers and cannot be accessed using SNMPv1,
          SNMPv2c, or SNMPv3.";
        smi:oid "1.3.6.1.2.1.4.35.1.3";
      }

      leaf ipNetToPhysicalPhysAddress {
        type yang:phys-address {
          length "0..65535";
        }
        config false;
        description
         "The media-dependent `physical' address.

          As the entries in this table are typically not persistent
          when this object is written the entity SHOULD NOT save the
          change to non-volatile storage.";
        smi:oid "1.3.6.1.2.1.4.35.1.4";
      }

      leaf ipNetToPhysicalLastUpdated {
        type yang:timestamp;
        config false;
        description
         "The value of sysUpTime at the time this entry was last
          updated.  If this entry was updated prior to the last re-
          initialization of the local network management subsystem,
          then this object contains a zero value.";
        smi:oid "1.3.6.1.2.1.4.35.1.5";
      }

      leaf ipNetToPhysicalType {
        type enumeration {
          enum other   { value 1; }
          enum invalid { value 2; }
          enum dynamic { value 3; }
          enum static  { value 4; }
          enum local   { value 5; }
        }
        config false;
        description
         "The type of mapping.

          Setting this object to the value invalid(2) has the effect
          of invalidating the corresponding entry in the
          ipNetToPhysicalTable.  That is, it effectively dis-
          associates the interface identified with said entry from the
          mapping identified with said entry.  It is an
          implementation-specific matter as to whether the agent

          removes an invalidated entry from the table.  Accordingly,
          management stations must be prepared to receive tabular
          information from agents that corresponds to entries not
          currently in use.  Proper interpretation of such entries
          requires examination of the relevant ipNetToPhysicalType
          object.

          The 'dynamic(3)' type indicates that the IP address to
          physical addresses mapping has been dynamically resolved
          using e.g., IPv4 ARP or the IPv6 Neighbor Discovery
          protocol.

          The 'static(4)' type indicates that the mapping has been
          statically configured.  Both of these refer to entries that
          provide mappings for other entities addresses.

          The 'local(5)' type indicates that the mapping is provided
          for an entity's own interface address.

          As the entries in this table are typically not persistent
          when this object is written the entity SHOULD NOT save the
          change to non-volatile storage.";
        smi:default "static";
        smi:oid "1.3.6.1.2.1.4.35.1.6";
      }

      leaf ipNetToPhysicalState {
        type enumeration {
          enum reachable  { value 1; }
          enum stale      { value 2; }
          enum delay      { value 3; }
          enum probe      { value 4; }
          enum invalid    { value 5; }
          enum unknown    { value 6; }
          enum incomplete { value 7; }
        }
        config false;
        description
         "The Neighbor Unreachability Detection state for the
          interface when the address mapping in this entry is used.
          If Neighbor Unreachability Detection is not in use (e.g. for
          IPv4), this object is always unknown(6).";
        reference
         "RFC 2461";
        smi:oid "1.3.6.1.2.1.4.35.1.7";
      }

      leaf ipNetToPhysicalRowStatus {
        type smiv2:RowStatus;
        config false;
        description
         "The status of this conceptual row.

          The RowStatus TC requires that this DESCRIPTION clause
          states under which circumstances other objects in this row
          can be modified.  The value of this object has no effect on
          whether other objects in this conceptual row can be
          modified.

          A conceptual row can not be made active until the
          ipNetToPhysicalPhysAddress object has been set.

          Note that if the ipNetToPhysicalType is set to 'invalid',
          the managed node may delete the entry independent of the
          state of this object.";
        smi:oid "1.3.6.1.2.1.4.35.1.8";
      }
    }


    /* XXX table comments here XXX */

    list ipv6ScopeZoneIndexEntry {

      config false;

      key "ipv6ScopeZoneIndexIfIndex";
      description
       "Each entry contains the list of scope identifiers on a given
        interface.";
      smi:oid "1.3.6.1.2.1.4.36.1";


      leaf ipv6ScopeZoneIndexIfIndex {
        type if-mib:InterfaceIndex;
        config false;
        description
         "The index value that uniquely identifies the interface to
          which these scopes belong.  The interface identified by a
          particular value of this index is the same interface as
          identified by the same value of the IF-MIB's ifIndex.";
        smi:oid "1.3.6.1.2.1.4.36.1.1";
      }

      leaf ipv6ScopeZoneIndexLinkLocal {
        type inet-address:InetZoneIndex;
        config false;
        description
         "The zone index for the link-local scope on this interface.";
        smi:oid "1.3.6.1.2.1.4.36.1.2";
      }

      leaf ipv6ScopeZoneIndex3 {
        type inet-address:InetZoneIndex;
        config false;
        description
         "The zone index for scope 3 on this interface.";
        smi:oid "1.3.6.1.2.1.4.36.1.3";
      }

      leaf ipv6ScopeZoneIndexAdminLocal {
        type inet-address:InetZoneIndex;
        config false;
        description
         "The zone index for the admin-local scope on this interface.";
        smi:oid "1.3.6.1.2.1.4.36.1.4";
      }

      leaf ipv6ScopeZoneIndexSiteLocal {
        type inet-address:InetZoneIndex;
        config false;
        description
         "The zone index for the site-local scope on this interface.";
        smi:oid "1.3.6.1.2.1.4.36.1.5";
      }

      leaf ipv6ScopeZoneIndex6 {
        type inet-address:InetZoneIndex;
        config false;
        description
         "The zone index for scope 6 on this interface.";
        smi:oid "1.3.6.1.2.1.4.36.1.6";
      }

      leaf ipv6ScopeZoneIndex7 {
        type inet-address:InetZoneIndex;
        config false;
        description
         "The zone index for scope 7 on this interface.";
        smi:oid "1.3.6.1.2.1.4.36.1.7";
      }

      leaf ipv6ScopeZoneIndexOrganizationLocal {
        type inet-address:InetZoneIndex;
        config false;
        description
         "The zone index for the organization-local scope on this
          interface.";
        smi:oid "1.3.6.1.2.1.4.36.1.8";
      }

      leaf ipv6ScopeZoneIndex9 {
        type inet-address:InetZoneIndex;
        config false;
        description
         "The zone index for scope 9 on this interface.";
        smi:oid "1.3.6.1.2.1.4.36.1.9";
      }

      leaf ipv6ScopeZoneIndexA {
        type inet-address:InetZoneIndex;
        config false;
        description
         "The zone index for scope A on this interface.";
        smi:oid "1.3.6.1.2.1.4.36.1.10";
      }

      leaf ipv6ScopeZoneIndexB {
        type inet-address:InetZoneIndex;
        config false;
        description
         "The zone index for scope B on this interface.";
        smi:oid "1.3.6.1.2.1.4.36.1.11";
      }

      leaf ipv6ScopeZoneIndexC {
        type inet-address:InetZoneIndex;
        config false;
        description
         "The zone index for scope C on this interface.";
        smi:oid "1.3.6.1.2.1.4.36.1.12";
      }

      leaf ipv6ScopeZoneIndexD {
        type inet-address:InetZoneIndex;
        config false;
        description
         "The zone index for scope D on this interface.";
        smi:oid "1.3.6.1.2.1.4.36.1.13";
      }
    }


    /* XXX table comments here XXX */

    list ipDefaultRouterEntry {

      config false;

      key "ipDefaultRouterAddressType ipDefaultRouterAddress
           ipDefaultRouterIfIndex";
      description
       "Each entry contains information about a default router known
        to this entity.";
      smi:oid "1.3.6.1.2.1.4.37.1";


      leaf ipDefaultRouterAddressType {
        type inet-address:InetAddressType;
        config false;
        description
         "The address type for this row.";
        smi:oid "1.3.6.1.2.1.4.37.1.1";
      }

      leaf ipDefaultRouterAddress {
        type inet-address:InetAddress;
        config false;
        description
         "The IP address of the default router represented by this
          row.  The address type of this object is specified in
          ipDefaultRouterAddressType.

          Implementers need to be aware that if the size of
          ipDefaultRouterAddress exceeds 115 octets, then OIDS of
          instances of columns in this row will have more than 128
          sub-identifiers and cannot be accessed using SNMPv1,
          SNMPv2c, or SNMPv3.";
        smi:oid "1.3.6.1.2.1.4.37.1.2";
      }

      leaf ipDefaultRouterIfIndex {
        type if-mib:InterfaceIndex;
        config false;
        description
         "The index value that uniquely identifies the interface by
          which the router can be reached.  The interface identified
          by a particular value of this index is the same interface as
          identified by the same value of the IF-MIB's ifIndex.";
        smi:oid "1.3.6.1.2.1.4.37.1.3";
      }

      leaf ipDefaultRouterLifetime {
        type uint32 {
          range "0..65535";
        }
        units "seconds";
        config false;
        description
         "The remaining length of time, in seconds, that this router
          will continue to be useful as a default router.  A value of
          zero indicates that it is no longer useful as a default
          router.  It is left to the implementer of the MIB as to
          whether a router with a lifetime of zero is removed from the
          list.

          For IPv6, this value should be extracted from the router
          advertisement messages.";
        reference
         "For IPv6 RFC 2462 sections 4.2 and 6.3.4";
        smi:oid "1.3.6.1.2.1.4.37.1.4";
      }

      leaf ipDefaultRouterPreference {
        type enumeration {
          enum reserved { value -2; }
          enum low      { value -1; }
          enum medium   { value 0; }
          enum high     { value 1; }
        }
        config false;
        description
         "An indication of preference given to this router as a
          default router as described in he Default Router
          Preferences document.  Treating the value as a
          2 bit signed integer allows for simple arithmetic
          comparisons.

          For IPv4 routers or IPv6 routers that are not using the
          updated router advertisement format, this object is set to
          medium (0).";
        reference
         "RFC 4291, section 2.1";
        smi:oid "1.3.6.1.2.1.4.37.1.5";
      }
    }

    leaf ipv6RouterAdvertSpinLock {
      type smiv2:TestAndIncr;
      config true;
      description
       "An advisory lock used to allow cooperating SNMP managers to
        coordinate their use of the set operation in creating or
        modifying rows within this table.

        In order to use this lock to coordinate the use of set
        operations, managers should first retrieve
        ipv6RouterAdvertSpinLock.  They should then determine the
        appropriate row to create or modify.  Finally, they should
        issue the appropriate set command including the retrieved
        value of ipv6RouterAdvertSpinLock.  If another manager has
        altered the table in the meantime, then the value of
        ipv6RouterAdvertSpinLock will have changed and the creation
        will fail as it will be specifying an incorrect value for
        ipv6RouterAdvertSpinLock.  It is suggested, but not
        required, that the ipv6RouterAdvertSpinLock be the first var
        bind for each set of objects representing a 'row' in a PDU.";
      smi:oid "1.3.6.1.2.1.4.38";
    }


    /* XXX table comments here XXX */

    list ipv6RouterAdvertEntry {

      key "ipv6RouterAdvertIfIndex";
      description
       "An entry containing information used to construct router
        advertisements.

        Information in this table is persistent, and when this
        object is written, the entity SHOULD save the change to
        non-volatile storage.";
      smi:oid "1.3.6.1.2.1.4.39.1";


      leaf ipv6RouterAdvertIfIndex {
        type if-mib:InterfaceIndex;
        config true;
        description
         "The index value that uniquely identifies the interface on
          which router advertisements constructed with this
          information will be transmitted.  The interface identified
          by a particular value of this index is the same interface as
          identified by the same value of the IF-MIB's ifIndex.";
        smi:oid "1.3.6.1.2.1.4.39.1.1";
      }

      leaf ipv6RouterAdvertSendAdverts {
        type smiv2:TruthValue;
        config true;
        description
         "A flag indicating whether the router sends periodic
          router advertisements and responds to router solicitations
          on this interface.";
        reference
         "RFC 2461 Section 6.2.1";
        smi:default "false";
        smi:oid "1.3.6.1.2.1.4.39.1.2";
      }

      leaf ipv6RouterAdvertMaxInterval {
        type uint32 {
          range "4..1800";
        }
        units "seconds";
        config true;
        description
         "The maximum time allowed between sending unsolicited router

          advertisements from this interface.";
        reference
         "RFC 2461 Section 6.2.1";
        smi:default "600";
        smi:oid "1.3.6.1.2.1.4.39.1.3";
      }

      leaf ipv6RouterAdvertMinInterval {
        type uint32 {
          range "3..1350";
        }
        units "seconds";
        config true;
        description
         "The minimum time allowed between sending unsolicited router
          advertisements from this interface.

          The default is 0.33 * ipv6RouterAdvertMaxInterval, however,
          in the case of a low value for ipv6RouterAdvertMaxInterval,
          the minimum value for this object is restricted to 3.";
        reference
         "RFC 2461 Section 6.2.1";
        smi:oid "1.3.6.1.2.1.4.39.1.4";
      }

      leaf ipv6RouterAdvertManagedFlag {
        type smiv2:TruthValue;
        config true;
        description
         "The true/false value to be placed into the 'managed address
          configuration' flag field in router advertisements sent from
          this interface.";
        reference
         "RFC 2461 Section 6.2.1";
        smi:default "false";
        smi:oid "1.3.6.1.2.1.4.39.1.5";
      }

      leaf ipv6RouterAdvertOtherConfigFlag {
        type smiv2:TruthValue;
        config true;
        description
         "The true/false value to be placed into the 'other stateful
          configuration' flag field in router advertisements sent from
          this interface.";
        reference
         "RFC 2461 Section 6.2.1";
        smi:default "false";
        smi:oid "1.3.6.1.2.1.4.39.1.6";
      }

      leaf ipv6RouterAdvertLinkMTU {
        type uint32;
        config true;
        description
         "The value to be placed in MTU options sent by the router on
          this interface.

          A value of zero indicates that no MTU options are sent.";
        reference
         "RFC 2461 Section 6.2.1";
        smi:default "0";
        smi:oid "1.3.6.1.2.1.4.39.1.7";
      }

      leaf ipv6RouterAdvertReachableTime {
        type uint32 {
          range "0..3600000";
        }
        units "milliseconds";
        config true;
        description
         "The value to be placed in the reachable time field in router
          advertisement messages sent from this interface.

          A value of zero in the router advertisement indicates that
          the advertisement isn't specifying a value for reachable
          time.";
        reference
         "RFC 2461 Section 6.2.1";
        smi:default "0";
        smi:oid "1.3.6.1.2.1.4.39.1.8";
      }

      leaf ipv6RouterAdvertRetransmitTime {
        type uint32;
        units "milliseconds";
        config true;
        description
         "The value to be placed in the retransmit timer field in
          router advertisements sent from this interface.

          A value of zero in the router advertisement indicates that
          the advertisement isn't specifying a value for retrans
          time.";
        reference
         "RFC 2461 Section 6.2.1";
        smi:default "0";
        smi:oid "1.3.6.1.2.1.4.39.1.9";
      }

      leaf ipv6RouterAdvertCurHopLimit {
        type uint32 {
          range "0..255";
        }
        config true;
        description
         "The default value to be placed in the current hop limit
          field in router advertisements sent from this interface.

          The value should be set to the current diameter of the
          Internet.

          A value of zero in the router advertisement indicates that
          the advertisement isn't specifying a value for curHopLimit.

          The default should be set to the value specified in the IANA
          web pages (www.iana.org) at the time of implementation.";
        reference
         "RFC 2461 Section 6.2.1";
        smi:oid "1.3.6.1.2.1.4.39.1.10";
      }

      leaf ipv6RouterAdvertDefaultLifetime {
        type uint32 {
          range "0 | 4..9000";
        }
        units "seconds";
        config true;
        description
         "The value to be placed in the router lifetime field of
          router advertisements sent from this interface.  This value
          MUST be either 0 or between ipv6RouterAdvertMaxInterval and
          9000 seconds.

          A value of zero indicates that the router is not to be used
          as a default router.

          The default is 3 * ipv6RouterAdvertMaxInterval.";
        reference
         "RFC 2461 Section 6.2.1";
        smi:oid "1.3.6.1.2.1.4.39.1.11";
      }

      leaf ipv6RouterAdvertRowStatus {
        type smiv2:RowStatus;
        config true;
        description
         "The status of this conceptual row.

          As all objects in this conceptual row have default values, a
          row can be created and made active by setting this object
          appropriately.

          The RowStatus TC requires that this DESCRIPTION clause
          states under which circumstances other objects in this row
          can be modified.  The value of this object has no effect on
          whether other objects in this conceptual row can be
          modified.";
        smi:oid "1.3.6.1.2.1.4.39.1.12";
      }
    }
    smi:oid "1.3.6.1.2.1.4";
  }

  container ipTrafficStats {


    /* XXX table comments here XXX */

    list ipSystemStatsEntry {

      config false;

      key "ipSystemStatsIPVersion";
      description
       "A statistics entry containing system-wide objects for a
        particular IP version.";
      smi:oid "1.3.6.1.2.1.4.31.1.1";


      leaf ipSystemStatsIPVersion {
        type inet-address:InetVersion;
        config false;
        description
         "The IP version of this row.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.1";
      }

      leaf ipSystemStatsInReceives {
        type yang:counter32;
        config false;
        description
         "The total number of input IP datagrams received, including
          those received in error.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.3";
      }

      leaf ipSystemStatsHCInReceives {
        type yang:counter64;
        config false;
        description
         "The total number of input IP datagrams received, including
          those received in error.  This object counts the same
          datagrams as ipSystemStatsInReceives, but allows for larger
          values.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.4";
      }

      leaf ipSystemStatsInOctets {
        type yang:counter32;
        config false;
        description
         "The total number of octets received in input IP datagrams,
          including those received in error.  Octets from datagrams
          counted in ipSystemStatsInReceives MUST be counted here.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.5";
      }

      leaf ipSystemStatsHCInOctets {
        type yang:counter64;
        config false;
        description
         "The total number of octets received in input IP datagrams,
          including those received in error.  This object counts the
          same octets as ipSystemStatsInOctets, but allows for larger

          values.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.6";
      }

      leaf ipSystemStatsInHdrErrors {
        type yang:counter32;
        config false;
        description
         "The number of input IP datagrams discarded due to errors in
          their IP headers, including version number mismatch, other
          format errors, hop count exceeded, errors discovered in
          processing their IP options, etc.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.7";
      }

      leaf ipSystemStatsInNoRoutes {
        type yang:counter32;
        config false;
        description
         "The number of input IP datagrams discarded because no route
          could be found to transmit them to their destination.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.8";
      }

      leaf ipSystemStatsInAddrErrors {
        type yang:counter32;
        config false;
        description
         "The number of input IP datagrams discarded because the IP
          address in their IP header's destination field was not a
          valid address to be received at this entity.  This count
          includes invalid addresses (e.g., ::0).  For entities
          that are not IP routers and therefore do not forward

          datagrams, this counter includes datagrams discarded
          because the destination address was not a local address.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.9";
      }

      leaf ipSystemStatsInUnknownProtos {
        type yang:counter32;
        config false;
        description
         "The number of locally-addressed IP datagrams received
          successfully but discarded because of an unknown or
          unsupported protocol.

          When tracking interface statistics, the counter of the
          interface to which these datagrams were addressed is
          incremented.  This interface might not be the same as the
          input interface for some of the datagrams.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.10";
      }

      leaf ipSystemStatsInTruncatedPkts {
        type yang:counter32;
        config false;
        description
         "The number of input IP datagrams discarded because the
          datagram frame didn't carry enough data.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.11";
      }

      leaf ipSystemStatsInForwDatagrams {
        type yang:counter32;
        config false;
        description
         "The number of input datagrams for which this entity was not
          their final IP destination and for which this entity
          attempted to find a route to forward them to that final
          destination.  In entities that do not act as IP routers,
          this counter will include only those datagrams that were
          Source-Routed via this entity, and the Source-Route
          processing was successful.

          When tracking interface statistics, the counter of the
          incoming interface is incremented for each datagram.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.12";
      }

      leaf ipSystemStatsHCInForwDatagrams {
        type yang:counter64;
        config false;
        description
         "The number of input datagrams for which this entity was not
          their final IP destination and for which this entity
          attempted to find a route to forward them to that final
          destination.  This object counts the same packets as
          ipSystemStatsInForwDatagrams, but allows for larger values.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.13";
      }

      leaf ipSystemStatsReasmReqds {
        type yang:counter32;
        config false;
        description
         "The number of IP fragments received that needed to be
          reassembled at this interface.

          When tracking interface statistics, the counter of the
          interface to which these fragments were addressed is
          incremented.  This interface might not be the same as the
          input interface for some of the fragments.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.14";
      }

      leaf ipSystemStatsReasmOKs {
        type yang:counter32;
        config false;
        description
         "The number of IP datagrams successfully reassembled.

          When tracking interface statistics, the counter of the
          interface to which these datagrams were addressed is
          incremented.  This interface might not be the same as the
          input interface for some of the datagrams.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.15";
      }

      leaf ipSystemStatsReasmFails {
        type yang:counter32;
        config false;
        description
         "The number of failures detected by the IP re-assembly
          algorithm (for whatever reason: timed out, errors, etc.).
          Note that this is not necessarily a count of discarded IP
          fragments since some algorithms (notably the algorithm in
          RFC 815) can lose track of the number of fragments by
          combining them as they are received.

          When tracking interface statistics, the counter of the
          interface to which these fragments were addressed is
          incremented.  This interface might not be the same as the
          input interface for some of the fragments.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.16";
      }

      leaf ipSystemStatsInDiscards {
        type yang:counter32;
        config false;
        description
         "The number of input IP datagrams for which no problems were
          encountered to prevent their continued processing, but
          were discarded (e.g., for lack of buffer space).  Note that
          this counter does not include any datagrams discarded while
          awaiting re-assembly.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.17";
      }

      leaf ipSystemStatsInDelivers {
        type yang:counter32;
        config false;
        description
         "The total number of datagrams successfully delivered to IP
          user-protocols (including ICMP).

          When tracking interface statistics, the counter of the
          interface to which these datagrams were addressed is
          incremented.  This interface might not be the same as the
          input interface for some of the datagrams.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.18";
      }

      leaf ipSystemStatsHCInDelivers {
        type yang:counter64;
        config false;
        description
         "The total number of datagrams successfully delivered to IP
          user-protocols (including ICMP).  This object counts the
          same packets as ipSystemStatsInDelivers, but allows for
          larger values.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.19";
      }

      leaf ipSystemStatsOutRequests {
        type yang:counter32;
        config false;
        description
         "The total number of IP datagrams that local IP user-
          protocols (including ICMP) supplied to IP in requests for
          transmission.  Note that this counter does not include any
          datagrams counted in ipSystemStatsOutForwDatagrams.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.20";
      }

      leaf ipSystemStatsHCOutRequests {
        type yang:counter64;
        config false;
        description
         "The total number of IP datagrams that local IP user-
          protocols (including ICMP) supplied to IP in requests for
          transmission.  This object counts the same packets as
          ipSystemStatsOutRequests, but allows for larger values.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.21";
      }

      leaf ipSystemStatsOutNoRoutes {
        type yang:counter32;
        config false;
        description
         "The number of locally generated IP datagrams discarded
          because no route could be found to transmit them to their
          destination.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.22";
      }

      leaf ipSystemStatsOutForwDatagrams {
        type yang:counter32;
        config false;
        description
         "The number of datagrams for which this entity was not their
          final IP destination and for which it was successful in
          finding a path to their final destination.  In entities
          that do not act as IP routers, this counter will include
          only those datagrams that were Source-Routed via this
          entity, and the Source-Route processing was successful.

          When tracking interface statistics, the counter of the
          outgoing interface is incremented for a successfully
          forwarded datagram.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.23";
      }

      leaf ipSystemStatsHCOutForwDatagrams {
        type yang:counter64;
        config false;
        description
         "The number of datagrams for which this entity was not their
          final IP destination and for which it was successful in
          finding a path to their final destination.  This object
          counts the same packets as ipSystemStatsOutForwDatagrams,
          but allows for larger values.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.24";
      }

      leaf ipSystemStatsOutDiscards {
        type yang:counter32;
        config false;
        description
         "The number of output IP datagrams for which no problem was
          encountered to prevent their transmission to their
          destination, but were discarded (e.g., for lack of
          buffer space).  Note that this counter would include

          datagrams counted in ipSystemStatsOutForwDatagrams if any
          such datagrams met this (discretionary) discard criterion.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.25";
      }

      leaf ipSystemStatsOutFragReqds {
        type yang:counter32;
        config false;
        description
         "The number of IP datagrams that would require fragmentation
          in order to be transmitted.

          When tracking interface statistics, the counter of the
          outgoing interface is incremented for a successfully
          fragmented datagram.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.26";
      }

      leaf ipSystemStatsOutFragOKs {
        type yang:counter32;
        config false;
        description
         "The number of IP datagrams that have been successfully
          fragmented.

          When tracking interface statistics, the counter of the
          outgoing interface is incremented for a successfully
          fragmented datagram.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.27";
      }

      leaf ipSystemStatsOutFragFails {
        type yang:counter32;
        config false;
        description
         "The number of IP datagrams that have been discarded because
          they needed to be fragmented but could not be.  This
          includes IPv4 packets that have the DF bit set and IPv6
          packets that are being forwarded and exceed the outgoing
          link MTU.

          When tracking interface statistics, the counter of the
          outgoing interface is incremented for an unsuccessfully
          fragmented datagram.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.28";
      }

      leaf ipSystemStatsOutFragCreates {
        type yang:counter32;
        config false;
        description
         "The number of output datagram fragments that have been
          generated as a result of IP fragmentation.

          When tracking interface statistics, the counter of the
          outgoing interface is incremented for a successfully
          fragmented datagram.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.29";
      }

      leaf ipSystemStatsOutTransmits {
        type yang:counter32;
        config false;
        description
         "The total number of IP datagrams that this entity supplied
          to the lower layers for transmission.  This includes
          datagrams generated locally and those forwarded by this
          entity.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.30";
      }

      leaf ipSystemStatsHCOutTransmits {
        type yang:counter64;
        config false;
        description
         "The total number of IP datagrams that this entity supplied
          to the lower layers for transmission.  This object counts
          the same datagrams as ipSystemStatsOutTransmits, but allows
          for larger values.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.31";
      }

      leaf ipSystemStatsOutOctets {
        type yang:counter32;
        config false;
        description
         "The total number of octets in IP datagrams delivered to the
          lower layers for transmission.  Octets from datagrams
          counted in ipSystemStatsOutTransmits MUST be counted here.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.32";
      }

      leaf ipSystemStatsHCOutOctets {
        type yang:counter64;
        config false;
        description
         "The total number of octets in IP datagrams delivered to the
          lower layers for transmission.  This objects counts the same
          octets as ipSystemStatsOutOctets, but allows for larger
          values.

          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

          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.33";
      }

      leaf ipSystemStatsInMcastPkts {
        type yang:counter32;
        config false;
        description
         "The number of IP multicast datagrams received.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.34";
      }

      leaf ipSystemStatsHCInMcastPkts {
        type yang:counter64;
        config false;
        description
         "The number of IP multicast datagrams received.  This object
          counts the same datagrams as ipSystemStatsInMcastPkts but
          allows for larger values.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.35";
      }

      leaf ipSystemStatsInMcastOctets {
        type yang:counter32;
        config false;
        description
         "The total number of octets received in IP multicast
          datagrams.  Octets from datagrams counted in
          ipSystemStatsInMcastPkts MUST be counted here.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.36";
      }

      leaf ipSystemStatsHCInMcastOctets {
        type yang:counter64;
        config false;
        description
         "The total number of octets received in IP multicast
          datagrams.  This object counts the same octets as
          ipSystemStatsInMcastOctets, but allows for larger values.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.37";
      }

      leaf ipSystemStatsOutMcastPkts {
        type yang:counter32;
        config false;
        description
         "The number of IP multicast datagrams transmitted.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.38";
      }

      leaf ipSystemStatsHCOutMcastPkts {
        type yang:counter64;
        config false;
        description
         "The number of IP multicast datagrams transmitted.  This
          object counts the same datagrams as
          ipSystemStatsOutMcastPkts, but allows for larger values.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.39";
      }

      leaf ipSystemStatsOutMcastOctets {
        type yang:counter32;
        config false;
        description
         "The total number of octets transmitted in IP multicast
          datagrams.  Octets from datagrams counted in

          ipSystemStatsOutMcastPkts MUST be counted here.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.40";
      }

      leaf ipSystemStatsHCOutMcastOctets {
        type yang:counter64;
        config false;
        description
         "The total number of octets transmitted in IP multicast
          datagrams.  This object counts the same octets as
          ipSystemStatsOutMcastOctets, but allows for larger values.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.41";
      }

      leaf ipSystemStatsInBcastPkts {
        type yang:counter32;
        config false;
        description
         "The number of IP broadcast datagrams received.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.42";
      }

      leaf ipSystemStatsHCInBcastPkts {
        type yang:counter64;
        config false;
        description
         "The number of IP broadcast datagrams received.  This object
          counts the same datagrams as ipSystemStatsInBcastPkts but
          allows for larger values.

          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

          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.43";
      }

      leaf ipSystemStatsOutBcastPkts {
        type yang:counter32;
        config false;
        description
         "The number of IP broadcast datagrams transmitted.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.44";
      }

      leaf ipSystemStatsHCOutBcastPkts {
        type yang:counter64;
        config false;
        description
         "The number of IP broadcast datagrams transmitted.  This
          object counts the same datagrams as
          ipSystemStatsOutBcastPkts, but allows for larger values.

          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
          ipSystemStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.45";
      }

      leaf ipSystemStatsDiscontinuityTime {
        type yang:timestamp;
        config false;
        description
         "The value of sysUpTime on the most recent occasion at which
          any one or more of this entry's counters suffered a
          discontinuity.

          If no such discontinuities have occurred since the last re-
          initialization of the local management subsystem, then this
          object contains a zero value.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.46";
      }

      leaf ipSystemStatsRefreshRate {
        type uint32;
        units "milli-seconds";
        config false;
        description
         "The minimum reasonable polling interval for this entry.
          This object provides an indication of the minimum amount of
          time required to update the counters in this entry.";
        smi:oid "1.3.6.1.2.1.4.31.1.1.47";
      }
    }

    leaf ipIfStatsTableLastChange {
      type yang:timestamp;
      config false;
      description
       "The value of sysUpTime on the most recent occasion at which
        a row in the ipIfStatsTable was added or deleted.

        If new objects are added to the ipIfStatsTable that require
        the ipIfStatsTableLastChange to be updated when they are
        modified, they must specify that requirement in their
        description clause.";
      smi:oid "1.3.6.1.2.1.4.31.2";
    }


    /* XXX table comments here XXX */

    list ipIfStatsEntry {

      config false;

      key "ipIfStatsIPVersion ipIfStatsIfIndex";
      description
       "An interface statistics entry containing objects for a
        particular interface and version of IP.";
      smi:oid "1.3.6.1.2.1.4.31.3.1";


      leaf ipIfStatsIPVersion {
        type inet-address:InetVersion;
        config false;
        description
         "The IP version of this row.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.1";
      }

      leaf ipIfStatsIfIndex {
        type if-mib:InterfaceIndex;
        config false;
        description
         "The index value that uniquely identifies the interface to
          which this entry is applicable.  The interface identified by
          a particular value of this index is the same interface as
          identified by the same value of the IF-MIB's ifIndex.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.2";
      }

      leaf ipIfStatsInReceives {
        type yang:counter32;
        config false;
        description
         "The total number of input IP datagrams received, including
          those received in error.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.3";
      }

      leaf ipIfStatsHCInReceives {
        type yang:counter64;
        config false;
        description
         "The total number of input IP datagrams received, including
          those received in error.  This object counts the same
          datagrams as ipIfStatsInReceives, but allows for larger
          values.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.4";
      }

      leaf ipIfStatsInOctets {
        type yang:counter32;
        config false;
        description
         "The total number of octets received in input IP datagrams,
          including those received in error.  Octets from datagrams
          counted in ipIfStatsInReceives MUST be counted here.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.5";
      }

      leaf ipIfStatsHCInOctets {
        type yang:counter64;
        config false;
        description
         "The total number of octets received in input IP datagrams,
          including those received in error.  This object counts the
          same octets as ipIfStatsInOctets, but allows for larger
          values.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.6";
      }

      leaf ipIfStatsInHdrErrors {
        type yang:counter32;
        config false;
        description
         "The number of input IP datagrams discarded due to errors in
          their IP headers, including version number mismatch, other
          format errors, hop count exceeded, errors discovered in
          processing their IP options, etc.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.7";
      }

      leaf ipIfStatsInNoRoutes {
        type yang:counter32;
        config false;
        description
         "The number of input IP datagrams discarded because no route
          could be found to transmit them to their destination.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.8";
      }

      leaf ipIfStatsInAddrErrors {
        type yang:counter32;
        config false;
        description
         "The number of input IP datagrams discarded because the IP
          address in their IP header's destination field was not a
          valid address to be received at this entity.  This count
          includes invalid addresses (e.g., ::0).  For entities that
          are not IP routers and therefore do not forward datagrams,
          this counter includes datagrams discarded because the
          destination address was not a local address.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.9";
      }

      leaf ipIfStatsInUnknownProtos {
        type yang:counter32;
        config false;
        description
         "The number of locally-addressed IP datagrams received
          successfully but discarded because of an unknown or
          unsupported protocol.

          When tracking interface statistics, the counter of the
          interface to which these datagrams were addressed is
          incremented.  This interface might not be the same as the
          input interface for some of the datagrams.

          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

          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.10";
      }

      leaf ipIfStatsInTruncatedPkts {
        type yang:counter32;
        config false;
        description
         "The number of input IP datagrams discarded because the
          datagram frame didn't carry enough data.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.11";
      }

      leaf ipIfStatsInForwDatagrams {
        type yang:counter32;
        config false;
        description
         "The number of input datagrams for which this entity was not
          their final IP destination and for which this entity
          attempted to find a route to forward them to that final
          destination.  In entities that do not act as IP routers,
          this counter will include only those datagrams that were
          Source-Routed via this entity, and the Source-Route
          processing was successful.

          When tracking interface statistics, the counter of the
          incoming interface is incremented for each datagram.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.12";
      }

      leaf ipIfStatsHCInForwDatagrams {
        type yang:counter64;
        config false;
        description
         "The number of input datagrams for which this entity was not
          their final IP destination and for which this entity
          attempted to find a route to forward them to that final
          destination.  This object counts the same packets as

          ipIfStatsInForwDatagrams, but allows for larger values.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.13";
      }

      leaf ipIfStatsReasmReqds {
        type yang:counter32;
        config false;
        description
         "The number of IP fragments received that needed to be
          reassembled at this interface.

          When tracking interface statistics, the counter of the
          interface to which these fragments were addressed is
          incremented.  This interface might not be the same as the
          input interface for some of the fragments.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.14";
      }

      leaf ipIfStatsReasmOKs {
        type yang:counter32;
        config false;
        description
         "The number of IP datagrams successfully reassembled.

          When tracking interface statistics, the counter of the
          interface to which these datagrams were addressed is
          incremented.  This interface might not be the same as the
          input interface for some of the datagrams.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.15";
      }

      leaf ipIfStatsReasmFails {
        type yang:counter32;
        config false;
        description
         "The number of failures detected by the IP re-assembly
          algorithm (for whatever reason: timed out, errors, etc.).
          Note that this is not necessarily a count of discarded IP
          fragments since some algorithms (notably the algorithm in
          RFC 815) can lose track of the number of fragments by
          combining them as they are received.

          When tracking interface statistics, the counter of the
          interface to which these fragments were addressed is
          incremented.  This interface might not be the same as the
          input interface for some of the fragments.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.16";
      }

      leaf ipIfStatsInDiscards {
        type yang:counter32;
        config false;
        description
         "The number of input IP datagrams for which no problems were
          encountered to prevent their continued processing, but
          were discarded (e.g., for lack of buffer space).  Note that
          this counter does not include any datagrams discarded while
          awaiting re-assembly.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.17";
      }

      leaf ipIfStatsInDelivers {
        type yang:counter32;
        config false;
        description
         "The total number of datagrams successfully delivered to IP
          user-protocols (including ICMP).

          When tracking interface statistics, the counter of the
          interface to which these datagrams were addressed is
          incremented.  This interface might not be the same as the

          input interface for some of the datagrams.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.18";
      }

      leaf ipIfStatsHCInDelivers {
        type yang:counter64;
        config false;
        description
         "The total number of datagrams successfully delivered to IP
          user-protocols (including ICMP).  This object counts the
          same packets as ipIfStatsInDelivers, but allows for larger
          values.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.19";
      }

      leaf ipIfStatsOutRequests {
        type yang:counter32;
        config false;
        description
         "The total number of IP datagrams that local IP user-
          protocols (including ICMP) supplied to IP in requests for
          transmission.  Note that this counter does not include any
          datagrams counted in ipIfStatsOutForwDatagrams.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.20";
      }

      leaf ipIfStatsHCOutRequests {
        type yang:counter64;
        config false;
        description
         "The total number of IP datagrams that local IP user-
          protocols (including ICMP) supplied to IP in requests for
          transmission.  This object counts the same packets as

          ipIfStatsOutRequests, but allows for larger values.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.21";
      }

      leaf ipIfStatsOutForwDatagrams {
        type yang:counter32;
        config false;
        description
         "The number of datagrams for which this entity was not their
          final IP destination and for which it was successful in
          finding a path to their final destination.  In entities
          that do not act as IP routers, this counter will include
          only those datagrams that were Source-Routed via this
          entity, and the Source-Route processing was successful.

          When tracking interface statistics, the counter of the
          outgoing interface is incremented for a successfully
          forwarded datagram.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.23";
      }

      leaf ipIfStatsHCOutForwDatagrams {
        type yang:counter64;
        config false;
        description
         "The number of datagrams for which this entity was not their
          final IP destination and for which it was successful in
          finding a path to their final destination.  This object
          counts the same packets as ipIfStatsOutForwDatagrams, but
          allows for larger values.

          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

          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.24";
      }

      leaf ipIfStatsOutDiscards {
        type yang:counter32;
        config false;
        description
         "The number of output IP datagrams for which no problem was
          encountered to prevent their transmission to their
          destination, but were discarded (e.g., for lack of
          buffer space).  Note that this counter would include
          datagrams counted in ipIfStatsOutForwDatagrams if any such
          datagrams met this (discretionary) discard criterion.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.25";
      }

      leaf ipIfStatsOutFragReqds {
        type yang:counter32;
        config false;
        description
         "The number of IP datagrams that would require fragmentation
          in order to be transmitted.

          When tracking interface statistics, the counter of the
          outgoing interface is incremented for a successfully
          fragmented datagram.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.26";
      }

      leaf ipIfStatsOutFragOKs {
        type yang:counter32;
        config false;
        description
         "The number of IP datagrams that have been successfully
          fragmented.

          When tracking interface statistics, the counter of the

          outgoing interface is incremented for a successfully
          fragmented datagram.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.27";
      }

      leaf ipIfStatsOutFragFails {
        type yang:counter32;
        config false;
        description
         "The number of IP datagrams that have been discarded because
          they needed to be fragmented but could not be.  This
          includes IPv4 packets that have the DF bit set and IPv6
          packets that are being forwarded and exceed the outgoing
          link MTU.

          When tracking interface statistics, the counter of the
          outgoing interface is incremented for an unsuccessfully
          fragmented datagram.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.28";
      }

      leaf ipIfStatsOutFragCreates {
        type yang:counter32;
        config false;
        description
         "The number of output datagram fragments that have been
          generated as a result of IP fragmentation.

          When tracking interface statistics, the counter of the
          outgoing interface is incremented for a successfully
          fragmented datagram.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.29";
      }

      leaf ipIfStatsOutTransmits {
        type yang:counter32;
        config false;
        description
         "The total number of IP datagrams that this entity supplied
          to the lower layers for transmission.  This includes
          datagrams generated locally and those forwarded by this
          entity.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.30";
      }

      leaf ipIfStatsHCOutTransmits {
        type yang:counter64;
        config false;
        description
         "The total number of IP datagrams that this entity supplied
          to the lower layers for transmission.  This object counts
          the same datagrams as ipIfStatsOutTransmits, but allows for
          larger values.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.31";
      }

      leaf ipIfStatsOutOctets {
        type yang:counter32;
        config false;
        description
         "The total number of octets in IP datagrams delivered to the
          lower layers for transmission.  Octets from datagrams
          counted in ipIfStatsOutTransmits MUST be counted here.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.32";
      }

      leaf ipIfStatsHCOutOctets {
        type yang:counter64;
        config false;
        description
         "The total number of octets in IP datagrams delivered to the
          lower layers for transmission.  This objects counts the same
          octets as ipIfStatsOutOctets, but allows for larger values.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.33";
      }

      leaf ipIfStatsInMcastPkts {
        type yang:counter32;
        config false;
        description
         "The number of IP multicast datagrams received.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.34";
      }

      leaf ipIfStatsHCInMcastPkts {
        type yang:counter64;
        config false;
        description
         "The number of IP multicast datagrams received.  This object
          counts the same datagrams as ipIfStatsInMcastPkts, but
          allows for larger values.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.35";
      }

      leaf ipIfStatsInMcastOctets {
        type yang:counter32;
        config false;
        description
         "The total number of octets received in IP multicast

          datagrams.  Octets from datagrams counted in
          ipIfStatsInMcastPkts MUST be counted here.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.36";
      }

      leaf ipIfStatsHCInMcastOctets {
        type yang:counter64;
        config false;
        description
         "The total number of octets received in IP multicast
          datagrams.  This object counts the same octets as
          ipIfStatsInMcastOctets, but allows for larger values.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.37";
      }

      leaf ipIfStatsOutMcastPkts {
        type yang:counter32;
        config false;
        description
         "The number of IP multicast datagrams transmitted.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.38";
      }

      leaf ipIfStatsHCOutMcastPkts {
        type yang:counter64;
        config false;
        description
         "The number of IP multicast datagrams transmitted.  This
          object counts the same datagrams as ipIfStatsOutMcastPkts,
          but allows for larger values.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.39";
      }

      leaf ipIfStatsOutMcastOctets {
        type yang:counter32;
        config false;
        description
         "The total number of octets transmitted in IP multicast
          datagrams.  Octets from datagrams counted in
          ipIfStatsOutMcastPkts MUST be counted here.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.40";
      }

      leaf ipIfStatsHCOutMcastOctets {
        type yang:counter64;
        config false;
        description
         "The total number of octets transmitted in IP multicast
          datagrams.  This object counts the same octets as
          ipIfStatsOutMcastOctets, but allows for larger values.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.41";
      }

      leaf ipIfStatsInBcastPkts {
        type yang:counter32;
        config false;
        description
         "The number of IP broadcast datagrams received.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.42";
      }

      leaf ipIfStatsHCInBcastPkts {
        type yang:counter64;
        config false;
        description
         "The number of IP broadcast datagrams received.  This object
          counts the same datagrams as ipIfStatsInBcastPkts, but
          allows for larger values.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.43";
      }

      leaf ipIfStatsOutBcastPkts {
        type yang:counter32;
        config false;
        description
         "The number of IP broadcast datagrams transmitted.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.44";
      }

      leaf ipIfStatsHCOutBcastPkts {
        type yang:counter64;
        config false;
        description
         "The number of IP broadcast datagrams transmitted.  This
          object counts the same datagrams as ipIfStatsOutBcastPkts,
          but allows for larger values.

          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
          ipIfStatsDiscontinuityTime.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.45";
      }

      leaf ipIfStatsDiscontinuityTime {
        type yang:timestamp;
        config false;
        description
         "The value of sysUpTime on the most recent occasion at which

          any one or more of this entry's counters suffered a
          discontinuity.

          If no such discontinuities have occurred since the last re-
          initialization of the local management subsystem, then this
          object contains a zero value.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.46";
      }

      leaf ipIfStatsRefreshRate {
        type uint32;
        units "milli-seconds";
        config false;
        description
         "The minimum reasonable polling interval for this entry.
          This object provides an indication of the minimum amount of
          time required to update the counters in this entry.";
        smi:oid "1.3.6.1.2.1.4.31.3.1.47";
      }
    }
    smi:oid "1.3.6.1.2.1.4.31";
  }

  container icmp {

    leaf icmpInMsgs {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The total number of ICMP messages which the entity received.
        Note that this counter includes all those counted by
        icmpInErrors.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by
        icmpStatsInMsgs.";
      smi:oid "1.3.6.1.2.1.5.1";
    }

    leaf icmpInErrors {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of ICMP messages which the entity received but
        determined as having ICMP-specific errors (bad ICMP
        checksums, bad length, etc.).

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by
        icmpStatsInErrors.";
      smi:oid "1.3.6.1.2.1.5.2";
    }

    leaf icmpInDestUnreachs {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of ICMP Destination Unreachable messages
        received.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by a column in
        the icmpMsgStatsTable.";
      smi:oid "1.3.6.1.2.1.5.3";
    }

    leaf icmpInTimeExcds {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of ICMP Time Exceeded messages received.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by a column in
        the icmpMsgStatsTable.";
      smi:oid "1.3.6.1.2.1.5.4";
    }

    leaf icmpInParmProbs {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of ICMP Parameter Problem messages received.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by a column in
        the icmpMsgStatsTable.";
      smi:oid "1.3.6.1.2.1.5.5";
    }

    leaf icmpInSrcQuenchs {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of ICMP Source Quench messages received.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by a column in
        the icmpMsgStatsTable.";
      smi:oid "1.3.6.1.2.1.5.6";
    }

    leaf icmpInRedirects {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of ICMP Redirect messages received.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by a column in
        the icmpMsgStatsTable.";
      smi:oid "1.3.6.1.2.1.5.7";
    }

    leaf icmpInEchos {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of ICMP Echo (request) messages received.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by a column in
        the icmpMsgStatsTable.";
      smi:oid "1.3.6.1.2.1.5.8";
    }

    leaf icmpInEchoReps {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of ICMP Echo Reply messages received.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by a column in
        the icmpMsgStatsTable.";
      smi:oid "1.3.6.1.2.1.5.9";
    }

    leaf icmpInTimestamps {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of ICMP Timestamp (request) messages received.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by a column in
        the icmpMsgStatsTable.";
      smi:oid "1.3.6.1.2.1.5.10";
    }

    leaf icmpInTimestampReps {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of ICMP Timestamp Reply messages received.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by a column in
        the icmpMsgStatsTable.";
      smi:oid "1.3.6.1.2.1.5.11";
    }

    leaf icmpInAddrMasks {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of ICMP Address Mask Request messages received.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by a column in
        the icmpMsgStatsTable.";
      smi:oid "1.3.6.1.2.1.5.12";
    }

    leaf icmpInAddrMaskReps {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of ICMP Address Mask Reply messages received.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by a column in
        the icmpMsgStatsTable.";
      smi:oid "1.3.6.1.2.1.5.13";
    }

    leaf icmpOutMsgs {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The total number of ICMP messages which this entity
        attempted to send.  Note that this counter includes all
        those counted by icmpOutErrors.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by
        icmpStatsOutMsgs.";
      smi:oid "1.3.6.1.2.1.5.14";
    }

    leaf icmpOutErrors {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of ICMP messages which this entity did not send
        due to problems discovered within ICMP, such as a lack of
        buffers.  This value should not include errors discovered
        outside the ICMP layer, such as the inability of IP to route
        the resultant datagram.  In some implementations, there may
        be no types of error which contribute to this counter's
        value.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by
        icmpStatsOutErrors.";
      smi:oid "1.3.6.1.2.1.5.15";
    }

    leaf icmpOutDestUnreachs {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of ICMP Destination Unreachable messages sent.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by a column in
        the icmpMsgStatsTable.";
      smi:oid "1.3.6.1.2.1.5.16";
    }

    leaf icmpOutTimeExcds {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of ICMP Time Exceeded messages sent.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by a column in
        the icmpMsgStatsTable.";
      smi:oid "1.3.6.1.2.1.5.17";
    }

    leaf icmpOutParmProbs {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of ICMP Parameter Problem messages sent.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by a column in
        the icmpMsgStatsTable.";
      smi:oid "1.3.6.1.2.1.5.18";
    }

    leaf icmpOutSrcQuenchs {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of ICMP Source Quench messages sent.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by a column in
        the icmpMsgStatsTable.";
      smi:oid "1.3.6.1.2.1.5.19";
    }

    leaf icmpOutRedirects {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of ICMP Redirect messages sent.  For a host, this
        object will always be zero, since hosts do not send
        redirects.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by a column in
        the icmpMsgStatsTable.";
      smi:oid "1.3.6.1.2.1.5.20";
    }

    leaf icmpOutEchos {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of ICMP Echo (request) messages sent.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by a column in
        the icmpMsgStatsTable.";
      smi:oid "1.3.6.1.2.1.5.21";
    }

    leaf icmpOutEchoReps {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of ICMP Echo Reply messages sent.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by a column in
        the icmpMsgStatsTable.";
      smi:oid "1.3.6.1.2.1.5.22";
    }

    leaf icmpOutTimestamps {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of ICMP Timestamp (request) messages sent.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by a column in
        the icmpMsgStatsTable.";
      smi:oid "1.3.6.1.2.1.5.23";
    }

    leaf icmpOutTimestampReps {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of ICMP Timestamp Reply messages sent.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by a column in
        the icmpMsgStatsTable.";
      smi:oid "1.3.6.1.2.1.5.24";
    }

    leaf icmpOutAddrMasks {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of ICMP Address Mask Request messages sent.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by a column in
        the icmpMsgStatsTable.";
      smi:oid "1.3.6.1.2.1.5.25";
    }

    leaf icmpOutAddrMaskReps {
      type yang:counter32;
      config false;
      status deprecated;
      description
       "The number of ICMP Address Mask Reply messages sent.

        This object has been deprecated, as a new IP version-neutral
        table has been added.  It is loosely replaced by a column in
        the icmpMsgStatsTable.";
      smi:oid "1.3.6.1.2.1.5.26";
    }


    /* XXX table comments here XXX */

    list icmpStatsEntry {

      config false;

      key "icmpStatsIPVersion";
      description
       "A conceptual row in the icmpStatsTable.";
      smi:oid "1.3.6.1.2.1.5.29.1";


      leaf icmpStatsIPVersion {
        type inet-address:InetVersion;
        config false;
        description
         "The IP version of the statistics.";
        smi:oid "1.3.6.1.2.1.5.29.1.1";
      }

      leaf icmpStatsInMsgs {
        type yang:counter32;
        config false;
        description
         "The total number of ICMP messages that the entity received.
          Note that this counter includes all those counted by
          icmpStatsInErrors.";
        smi:oid "1.3.6.1.2.1.5.29.1.2";
      }

      leaf icmpStatsInErrors {
        type yang:counter32;
        config false;
        description
         "The number of ICMP messages that the entity received but
          determined as having ICMP-specific errors (bad ICMP
          checksums, bad length, etc.).";
        smi:oid "1.3.6.1.2.1.5.29.1.3";
      }

      leaf icmpStatsOutMsgs {
        type yang:counter32;
        config false;
        description
         "The total number of ICMP messages that the entity attempted
          to send.  Note that this counter includes all those counted
          by icmpStatsOutErrors.";
        smi:oid "1.3.6.1.2.1.5.29.1.4";
      }

      leaf icmpStatsOutErrors {
        type yang:counter32;
        config false;
        description
         "The number of ICMP messages that this entity did not send
          due to problems discovered within ICMP, such as a lack of
          buffers.  This value should not include errors discovered
          outside the ICMP layer, such as the inability of IP to route
          the resultant datagram.  In some implementations, there may
          be no types of error that contribute to this counter's
          value.";
        smi:oid "1.3.6.1.2.1.5.29.1.5";
      }
    }


    /* XXX table comments here XXX */

    list icmpMsgStatsEntry {

      config false;

      key "icmpMsgStatsIPVersion icmpMsgStatsType";
      description
       "A conceptual row in the icmpMsgStatsTable.

        The system should track each ICMP type value, even if that
        ICMP type is not supported by the system.  However, a
        given row need not be instantiated unless a message of that
        type has been processed, i.e., the row for
        icmpMsgStatsType=X MAY be instantiated before but MUST be
        instantiated after the first message with Type=X is
        received or transmitted.  After receiving or transmitting
        any succeeding messages with Type=X, the relevant counter
        must be incremented.";
      smi:oid "1.3.6.1.2.1.5.30.1";


      leaf icmpMsgStatsIPVersion {
        type inet-address:InetVersion;
        config false;
        description
         "The IP version of the statistics.";
        smi:oid "1.3.6.1.2.1.5.30.1.1";
      }

      leaf icmpMsgStatsType {
        type int32 {
          range "0..255";
        }
        config false;
        description
         "The ICMP type field of the message type being counted by
          this row.

          Note that ICMP message types are scoped by the address type
          in use.";
        reference
         "http://www.iana.org/assignments/icmp-parameters and
          http://www.iana.org/assignments/icmpv6-parameters";
        smi:oid "1.3.6.1.2.1.5.30.1.2";
      }

      leaf icmpMsgStatsInPkts {
        type yang:counter32;
        config false;
        description
         "The number of input packets for this AF and type.";
        smi:oid "1.3.6.1.2.1.5.30.1.3";
      }

      leaf icmpMsgStatsOutPkts {
        type yang:counter32;
        config false;
        description
         "The number of output packets for this AF and type.";
        smi:oid "1.3.6.1.2.1.5.30.1.4";
      }
    }
    smi:oid "1.3.6.1.2.1.5";
  }

} /* end of module IP-MIB */
