RFC1155-SMI DEFINITIONS ::= BEGIN;
    nullOID       OBJECT IDENTIFIER ::= { ccitt 0 }
    internet      OBJECT IDENTIFIER ::= { iso org(3) dod(6) 1 }
    directory     OBJECT IDENTIFIER ::= { internet 1 }
    mgmt          OBJECT IDENTIFIER ::= { internet 2 }
    experimental  OBJECT IDENTIFIER ::= { internet 3 }
    private       OBJECT IDENTIFIER ::= { internet 4 }
    enterprises   OBJECT IDENTIFIER ::= { private 1 }
END

RFC1213-MIB DEFINITIONS ::= BEGIN

          IMPORTS
                  mgmt, NetworkAddress, IpAddress, Counter, Gauge,
                          TimeTicks
                      FROM RFC1155-SMI
                  OBJECT-TYPE
                          FROM RFC-1212;

          --  This MIB module uses the extended OBJECT-TYPE macro as
          --  defined in [14];

          --  MIB-II (same prefix as MIB-I)

          mib-2      OBJECT IDENTIFIER ::= { mgmt 1 }

          -- textual conventions

          DisplayString ::=
              OCTET STRING
          -- This data type is used to model textual information taken
          -- from the NVT ASCII character set.  By convention, objects
          -- with this syntax are declared as having


          --
          --      SIZE (0..255)

          PhysAddress ::=
              OCTET STRING
          -- This data type is used to model media addresses.  For many
          -- types of media, this will be in a binary representation.
          -- For example, an ethernet address would be represented as
          -- a string of 6 octets.

          -- groups in MIB-II

          system       OBJECT IDENTIFIER ::= { mib-2 1 }

          interfaces   OBJECT IDENTIFIER ::= { mib-2 2 }

          at           OBJECT IDENTIFIER ::= { mib-2 3 }

          ip           OBJECT IDENTIFIER ::= { mib-2 4 }

          icmp         OBJECT IDENTIFIER ::= { mib-2 5 }

          tcp          OBJECT IDENTIFIER ::= { mib-2 6 }

          udp          OBJECT IDENTIFIER ::= { mib-2 7 }

          egp          OBJECT IDENTIFIER ::= { mib-2 8 }

          -- historical (some say hysterical)
          -- cmot      OBJECT IDENTIFIER ::= { mib-2 9 }

          transmission OBJECT IDENTIFIER ::= { mib-2 10 }

          snmp         OBJECT IDENTIFIER ::= { mib-2 11 }

          -- the System group

          -- Implementation of the System group is mandatory for all
          -- systems.  If an agent is not configured to have a value
          -- for any of these variables, a string of length 0 is
          -- returned.

          sysDescr OBJECT-TYPE
              SYNTAX  DisplayString (SIZE (0..255))
              ACCESS  read-only
              STATUS  mandatory


              DESCRIPTION
                      "A textual description of the entity.  This value
                      should include the full name and version
                      identification of the system's hardware type,
                      software operating-system, and networking
                      software.  It is mandatory that this only contain
                      printable ASCII characters."
              ::= { system 1 }

          sysObjectID OBJECT-TYPE
              SYNTAX  OBJECT IDENTIFIER
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The vendor's authoritative identification of the
                      network management subsystem contained in the
                      entity.  This value is allocated within the SMI
                      enterprises subtree (1.3.6.1.4.1) and provides an
                      easy and unambiguous means for determining `what
                      kind of box' is being managed.  For example, if
                      vendor `Flintstones, Inc.' was assigned the
                      subtree 1.3.6.1.4.1.4242, it could assign the
                      identifier 1.3.6.1.4.1.4242.1.1 to its `Fred
                      Router'."
              ::= { system 2 }

          sysUpTime OBJECT-TYPE
              SYNTAX  TimeTicks
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The time (in hundredths of a second) since the
                      network management portion of the system was last
                      re-initialized."
              ::= { system 3 }

          sysContact OBJECT-TYPE
              SYNTAX  DisplayString (SIZE (0..255))
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "The textual identification of the contact person
                      for this managed node, together with information
                      on how to contact this person."
              ::= { system 4 }

          sysName OBJECT-TYPE
              SYNTAX  DisplayString (SIZE (0..255))


              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "An administratively-assigned name for this
                      managed node.  By convention, this is the node's
                      fully-qualified domain name."
              ::= { system 5 }

          sysLocation OBJECT-TYPE
              SYNTAX  DisplayString (SIZE (0..255))
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "The physical location of this node (e.g.,
                      `telephone closet, 3rd floor')."
              ::= { system 6 }

          sysServices OBJECT-TYPE
              SYNTAX  INTEGER (0..127)
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "A value which indicates the set of services that
                      this entity primarily offers.

                      The value is a sum.  This sum initially takes the
                      value zero, Then, for each layer, L, in the range
                      1 through 7, that this node performs transactions
                      for, 2 raised to (L - 1) is added to the sum.  For
                      example, a node which performs primarily routing
                      functions would have a value of 4 (2^(3-1)).  In
                      contrast, a node which is a host offering
                      application services would have a value of 72
                      (2^(4-1) + 2^(7-1)).  Note that in the context of
                      the Internet suite of protocols, values should be
                      calculated accordingly:

                           layer  functionality
                               1  physical (e.g., repeaters)
                               2  datalink/subnetwork (e.g., bridges)
                               3  internet (e.g., IP gateways)
                               4  end-to-end  (e.g., IP hosts)
                               7  applications (e.g., mail relays)

                      For systems including OSI protocols, layers 5 and
                      6 may also be counted."
              ::= { system 7 }


          -- the Interfaces group

          -- Implementation of the Interfaces group is mandatory for
          -- all systems.

          ifNumber OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of network interfaces (regardless of
                      their current state) present on this system."
              ::= { interfaces 1 }

          -- the Interfaces table

          -- The Interfaces table contains information on the entity's
          -- interfaces.  Each interface is thought of as being
          -- attached to a `subnetwork'.  Note that this term should
          -- not be confused with `subnet' which refers to an
          -- addressing partitioning scheme used in the Internet suite
          -- of protocols.

          ifTable OBJECT-TYPE
              SYNTAX  SEQUENCE OF IfEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "A list of interface entries.  The number of
                      entries is given by the value of ifNumber."
              ::= { interfaces 2 }

          ifEntry OBJECT-TYPE
              SYNTAX  IfEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "An interface entry containing objects at the
                      subnetwork layer and below for a particular
                      interface."
              INDEX   { ifIndex }
              ::= { ifTable 1 }

          IfEntry ::=
              SEQUENCE {
                  ifIndex
                      INTEGER,


                  ifDescr
                      DisplayString,
                  ifType
                      INTEGER,
                  ifMtu
                      INTEGER,
                  ifSpeed
                      Gauge,
                  ifPhysAddress
                      PhysAddress,
                  ifAdminStatus
                      INTEGER,
                  ifOperStatus
                      INTEGER,
                  ifLastChange
                      TimeTicks,
                  ifInOctets
                      Counter,
                  ifInUcastPkts
                      Counter,
                  ifInNUcastPkts
                      Counter,
                  ifInDiscards
                      Counter,
                  ifInErrors
                      Counter,
                  ifInUnknownProtos
                      Counter,
                  ifOutOctets
                      Counter,
                  ifOutUcastPkts
                      Counter,
                  ifOutNUcastPkts
                      Counter,
                  ifOutDiscards
                      Counter,
                  ifOutErrors
                      Counter,
                  ifOutQLen
                      Gauge,
                  ifSpecific
                      OBJECT IDENTIFIER
              }

          ifIndex OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-only
              STATUS  mandatory


              DESCRIPTION
                      "A unique value for each interface.  Its value
                      ranges between 1 and the value of ifNumber.  The
                      value for each interface must remain constant at
                      least from one re-initialization of the entity's
                      network management system to the next re-
                      initialization."
              ::= { ifEntry 1 }

          ifDescr OBJECT-TYPE
              SYNTAX  DisplayString (SIZE (0..255))
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "A textual string containing information about the
                      interface.  This string should include the name of
                      the manufacturer, the product name and the version
                      of the hardware interface."
              ::= { ifEntry 2 }

          ifType OBJECT-TYPE
              SYNTAX  INTEGER {
                          other(1),          -- none of the following
                          regular1822(2),
                          hdh1822(3),
                          ddn-x25(4),
                          rfc877-x25(5),
                          ethernet-csmacd(6),
                          iso88023-csmacd(7),
                          iso88024-tokenBus(8),
                          iso88025-tokenRing(9),
                          iso88026-man(10),
                          starLan(11),
                          proteon-10Mbit(12),
                          proteon-80Mbit(13),
                          hyperchannel(14),
                          fddi(15),
                          lapb(16),
                          sdlc(17),
                          ds1(18),           -- T-1
                          e1(19),            -- european equiv. of T-1
                          basicISDN(20),
                          primaryISDN(21),   -- proprietary serial
                          propPointToPointSerial(22),
                          ppp(23),
                          softwareLoopback(24),
                          eon(25),            -- CLNP over IP [11]
                          ethernet-3Mbit(26),


                          nsip(27),           -- XNS over IP
                          slip(28),           -- generic SLIP
                          ultra(29),          -- ULTRA technologies
                          ds3(30),            -- T-3
                          sip(31),            -- SMDS
                          frame-relay(32)
                      }
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The type of interface, distinguished according to
                      the physical/link protocol(s) immediately `below'
                      the network layer in the protocol stack."
              ::= { ifEntry 3 }

          ifMtu OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The size of the largest datagram which can be
                      sent/received on the interface, specified in
                      octets.  For interfaces that are used for
                      transmitting network datagrams, this is the size
                      of the largest network datagram that can be sent
                      on the interface."
              ::= { ifEntry 4 }

          ifSpeed OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "An estimate of the interface's current bandwidth
                      in bits per second.  For interfaces which do not
                      vary in bandwidth or for those where no accurate
                      estimation can be made, this object should contain
                      the nominal bandwidth."
              ::= { ifEntry 5 }

          ifPhysAddress OBJECT-TYPE
              SYNTAX  PhysAddress
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The interface's address at the protocol layer
                      immediately `below' the network layer in the
                      protocol stack.  For interfaces which do not have


                      such an address (e.g., a serial line), this object
                      should contain an octet string of zero length."
              ::= { ifEntry 6 }

          ifAdminStatus OBJECT-TYPE
              SYNTAX  INTEGER {
                          up(1),       -- ready to pass packets
                          down(2),
                          testing(3)   -- in some test mode
                      }
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "The desired state of the interface.  The
                      testing(3) state indicates that no operational
                      packets can be passed."
              ::= { ifEntry 7 }

          ifOperStatus OBJECT-TYPE
              SYNTAX  INTEGER {
                          up(1),       -- ready to pass packets
                          down(2),
                          testing(3)   -- in some test mode
                      }
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The current operational state of the interface.
                      The testing(3) state indicates that no operational
                      packets can be passed."
              ::= { ifEntry 8 }

          ifLastChange OBJECT-TYPE
              SYNTAX  TimeTicks
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The value of sysUpTime at the time the interface
                      entered its current operational state.  If the
                      current state was entered prior to the last re-
                      initialization of the local network management
                      subsystem, then this object contains a zero
                      value."
              ::= { ifEntry 9 }

          ifInOctets OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only


              STATUS  mandatory
              DESCRIPTION
                      "The total number of octets received on the
                      interface, including framing characters."
              ::= { ifEntry 10 }

          ifInUcastPkts OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of subnetwork-unicast packets
                      delivered to a higher-layer protocol."
              ::= { ifEntry 11 }

          ifInNUcastPkts OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of non-unicast (i.e., subnetwork-
                      broadcast or subnetwork-multicast) packets
                      delivered to a higher-layer protocol."
              ::= { ifEntry 12 }

          ifInDiscards OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of inbound packets which were chosen
                      to be discarded even though no errors had been
                      detected to prevent their being deliverable to a
                      higher-layer protocol.  One possible reason for
                      discarding such a packet could be to free up
                      buffer space."
              ::= { ifEntry 13 }

          ifInErrors OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of inbound packets that contained
                      errors preventing them from being deliverable to a
                      higher-layer protocol."
              ::= { ifEntry 14 }


          ifInUnknownProtos OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of packets received via the interface
                      which were discarded because of an unknown or
                      unsupported protocol."
              ::= { ifEntry 15 }

          ifOutOctets OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of octets transmitted out of the
                      interface, including framing characters."
              ::= { ifEntry 16 }

          ifOutUcastPkts OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of packets that higher-level
                      protocols requested be transmitted to a
                      subnetwork-unicast address, including those that
                      were discarded or not sent."
              ::= { ifEntry 17 }

          ifOutNUcastPkts OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of packets that higher-level
                      protocols requested be transmitted to a non-
                      unicast (i.e., a subnetwork-broadcast or
                      subnetwork-multicast) address, including those
                      that were discarded or not sent."
              ::= { ifEntry 18 }

          ifOutDiscards OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of outbound packets which were chosen


                      to be discarded even though no errors had been
                      detected to prevent their being transmitted.  One
                      possible reason for discarding such a packet could
                      be to free up buffer space."
              ::= { ifEntry 19 }

          ifOutErrors OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of outbound packets that could not be
                      transmitted because of errors."
              ::= { ifEntry 20 }

          ifOutQLen OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The length of the output packet queue (in
                      packets)."
              ::= { ifEntry 21 }

          ifSpecific OBJECT-TYPE
              SYNTAX  OBJECT IDENTIFIER
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "A reference to MIB definitions specific to the
                      particular media being used to realize the
                      interface.  For example, if the interface is
                      realized by an ethernet, then the value of this
                      object refers to a document defining objects
                      specific to ethernet.  If this information is not
                      present, its value should be set to the OBJECT
                      IDENTIFIER { 0 0 }, which is a syntatically valid
                      object identifier, and any conformant
                      implementation of ASN.1 and BER must be able to
                      generate and recognize this value."
              ::= { ifEntry 22 }

          -- the Address Translation group

          -- Implementation of the Address Translation group is
          -- mandatory for all systems.  Note however that this group
          -- is deprecated by MIB-II. That is, it is being included


          -- solely for compatibility with MIB-I nodes, and will most
          -- likely be excluded from MIB-III nodes.  From MIB-II and
          -- onwards, each network protocol group contains its own
          -- address translation tables.

          -- The Address Translation group contains one table which is
          -- the union across all interfaces of the translation tables
          -- for converting a NetworkAddress (e.g., an IP address) into
          -- a subnetwork-specific address.  For lack of a better term,
          -- this document refers to such a subnetwork-specific address
          -- as a `physical' address.

          -- Examples of such translation tables are: for broadcast
          -- media where ARP is in use, the translation table is
          -- equivalent to the ARP cache; or, on an X.25 network where
          -- non-algorithmic translation to X.121 addresses is
          -- required, the translation table contains the
          -- NetworkAddress to X.121 address equivalences.

          atTable OBJECT-TYPE
              SYNTAX  SEQUENCE OF AtEntry
              ACCESS  not-accessible
              STATUS  deprecated
              DESCRIPTION
                      "The Address Translation tables contain the
                      NetworkAddress to `physical' address equivalences.
                      Some interfaces do not use translation tables for
                      determining address equivalences (e.g., DDN-X.25
                      has an algorithmic method); if all interfaces are
                      of this type, then the Address Translation table
                      is empty, i.e., has zero entries."
              ::= { at 1 }

          atEntry OBJECT-TYPE
              SYNTAX  AtEntry
              ACCESS  not-accessible
              STATUS  deprecated
              DESCRIPTION
                      "Each entry contains one NetworkAddress to
                      `physical' address equivalence."
              INDEX   { atIfIndex,
                        atNetAddress }
              ::= { atTable 1 }

          AtEntry ::=
              SEQUENCE {
                  atIfIndex
                      INTEGER,


                  atPhysAddress
                      PhysAddress,
                  atNetAddress
                      NetworkAddress
              }

          atIfIndex OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-write
              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
                      ifIndex."
              ::= { atEntry 1 }

          atPhysAddress OBJECT-TYPE
              SYNTAX  PhysAddress
              ACCESS  read-write
              STATUS  deprecated
              DESCRIPTION
                      "The media-dependent `physical' address.

                      Setting this object to a null string (one of zero
                      length) has the effect of invaliding the
                      corresponding entry in the atTable object.  That
                      is, it effectively dissasociates 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 atPhysAddress object."
              ::= { atEntry 2 }

          atNetAddress OBJECT-TYPE
              SYNTAX  NetworkAddress
              ACCESS  read-write
              STATUS  deprecated
              DESCRIPTION
                      "The NetworkAddress (e.g., the IP address)
                      corresponding to the media-dependent `physical'
                      address."


              ::= { atEntry 3 }

          -- the IP group

          -- Implementation of the IP group is mandatory for all
          -- systems.

          ipForwarding OBJECT-TYPE
              SYNTAX  INTEGER {
                          forwarding(1),    -- acting as a gateway
                          not-forwarding(2) -- NOT acting as a gateway
                      }
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "The indication of whether this entity is acting
                      as an IP gateway in respect to the forwarding of
                      datagrams received by, but not addressed to, this
                      entity.  IP gateways forward datagrams.  IP hosts
                      do not (except those source-routed via the host).

                      Note that for some managed nodes, this object may
                      take on only a subset of the values possible.
                      Accordingly, it is appropriate for an agent to
                      return a `badValue' response if a management
                      station attempts to change this object to an
                      inappropriate value."
              ::= { ip 1 }

          ipDefaultTTL OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "The default value inserted into the Time-To-Live
                      field of the IP header of datagrams originated at
                      this entity, whenever a TTL value is not supplied
                      by the transport layer protocol."
              ::= { ip 2 }

          ipInReceives OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of input datagrams received from
                      interfaces, including those received in error."


              ::= { ip 3 }

          ipInHdrErrors OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of input datagrams discarded due to
                      errors in their IP headers, including bad
                      checksums, version number mismatch, other format
                      errors, time-to-live exceeded, errors discovered
                      in processing their IP options, etc."
              ::= { ip 4 }

          ipInAddrErrors OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of input 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.0.0.0) and addresses of
                      unsupported Classes (e.g., Class E).  For entities
                      which are not IP Gateways and therefore do not
                      forward datagrams, this counter includes datagrams
                      discarded because the destination address was not
                      a local address."
              ::= { ip 5 }

          ipForwDatagrams OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of input datagrams for which this
                      entity was not their final IP 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 IP Gateways, this
                      counter will include only those packets which were
                      Source-Routed via this entity, and the Source-
                      Route option processing was successful."
              ::= { ip 6 }

          ipInUnknownProtos OBJECT-TYPE
              SYNTAX  Counter


              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of locally-addressed datagrams
                      received successfully but discarded because of an
                      unknown or unsupported protocol."
              ::= { ip 7 }

          ipInDiscards OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of input IP 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."
              ::= { ip 8 }

          ipInDelivers OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of input datagrams successfully
                      delivered to IP user-protocols (including ICMP)."
              ::= { ip 9 }

          ipOutRequests OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of IP datagrams which local IP
                      user-protocols (including ICMP) supplied to IP in
                      requests for transmission.  Note that this counter
                      does not include any datagrams counted in
                      ipForwDatagrams."
              ::= { ip 10 }

          ipOutDiscards OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of output IP 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."
              ::= { ip 11 }

          ipOutNoRoutes OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of IP 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
                      datagarms which a host cannot route because all of
                      its default gateways are down."
              ::= { ip 12 }

          ipReasmTimeout OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The maximum number of seconds which received
                      fragments are held while they are awaiting
                      reassembly at this entity."
              ::= { ip 13 }

          ipReasmReqds OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of IP fragments received which needed
                      to be reassembled at this entity."
              ::= { ip 14 }

          ipReasmOKs OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of IP datagrams successfully re-
                      assembled."


              ::= { ip 15 }

          ipReasmFails OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              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."
              ::= { ip 16 }

          ipFragOKs OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of IP datagrams that have been
                      successfully fragmented at this entity."
              ::= { ip 17 }

          ipFragFails OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of IP 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."
              ::= { ip 18 }

          ipFragCreates OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of IP datagram fragments that have
                      been generated as a result of fragmentation at
                      this entity."
              ::= { ip 19 }


          -- the IP address table

          -- The IP address table contains this entity's IP addressing
          -- information.

          ipAddrTable OBJECT-TYPE
              SYNTAX  SEQUENCE OF IpAddrEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "The table of addressing information relevant to
                      this entity's IP addresses."
              ::= { ip 20 }

          ipAddrEntry OBJECT-TYPE
              SYNTAX  IpAddrEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "The addressing information for one of this
                      entity's IP addresses."
              INDEX   { ipAdEntAddr }
              ::= { ipAddrTable 1 }

          IpAddrEntry ::=
              SEQUENCE {
                  ipAdEntAddr
                      IpAddress,
                  ipAdEntIfIndex
                      INTEGER,
                  ipAdEntNetMask
                      IpAddress,
                  ipAdEntBcastAddr
                      INTEGER,
                  ipAdEntReasmMaxSize
                      INTEGER (0..65535)
              }

          ipAdEntAddr OBJECT-TYPE
              SYNTAX  IpAddress
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The IP address to which this entry's addressing
                      information pertains."
              ::= { ipAddrEntry 1 }


          ipAdEntIfIndex OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-only
              STATUS  mandatory
              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 ifIndex."
              ::= { ipAddrEntry 2 }

          ipAdEntNetMask OBJECT-TYPE
              SYNTAX  IpAddress
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The subnet mask associated with the IP address of
                      this entry.  The value of the mask is an IP
                      address with all the network bits set to 1 and all
                      the hosts bits set to 0."
              ::= { ipAddrEntry 3 }

          ipAdEntBcastAddr OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The value of the least-significant bit in the IP
                      broadcast address used for sending datagrams on
                      the (logical) interface associated with the IP
                      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 broadcasts addresses
                      used by the entity on this (logical) interface."
              ::= { ipAddrEntry 4 }

          ipAdEntReasmMaxSize OBJECT-TYPE
              SYNTAX  INTEGER (0..65535)
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The size of the largest IP datagram which this
                      entity can re-assemble from incoming IP fragmented
                      datagrams received on this interface."
              ::= { ipAddrEntry 5 }


          -- the IP routing table

          -- The IP routing table contains an entry for each route
          -- presently known to this entity.

          ipRouteTable OBJECT-TYPE
              SYNTAX  SEQUENCE OF IpRouteEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "This entity's IP Routing table."
              ::= { ip 21 }

          ipRouteEntry OBJECT-TYPE
              SYNTAX  IpRouteEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "A route to a particular destination."
              INDEX   { ipRouteDest }
              ::= { ipRouteTable 1 }

          IpRouteEntry ::=
              SEQUENCE {
                  ipRouteDest
                      IpAddress,
                  ipRouteIfIndex
                      INTEGER,
                  ipRouteMetric1
                      INTEGER,
                  ipRouteMetric2
                      INTEGER,
                  ipRouteMetric3
                      INTEGER,
                  ipRouteMetric4
                      INTEGER,
                  ipRouteNextHop
                      IpAddress,
                  ipRouteType
                      INTEGER,
                  ipRouteProto
                      INTEGER,
                  ipRouteAge
                      INTEGER,
                  ipRouteMask
                      IpAddress,
                  ipRouteMetric5
                      INTEGER,


                  ipRouteInfo
                      OBJECT IDENTIFIER
              }

          ipRouteDest OBJECT-TYPE
              SYNTAX  IpAddress
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "The destination IP address of this route.  An
                      entry with a value of 0.0.0.0 is considered a
                      default route.  Multiple routes to a single
                      destination can appear in the table, but access to
                      such multiple entries is dependent on the table-
                      access mechanisms defined by the network
                      management protocol in use."
              ::= { ipRouteEntry 1 }

          ipRouteIfIndex OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "The index value which uniquely identifies the
                      local interface through which the next hop of this
                      route should be reached.  The interface identified
                      by a particular value of this index is the same
                      interface as identified by the same value of
                      ifIndex."
              ::= { ipRouteEntry 2 }

          ipRouteMetric1 OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "The primary routing metric for this route.  The
                      semantics of this metric are determined by the
                      routing-protocol specified in the route's
                      ipRouteProto value.  If this metric is not used,
                      its value should be set to -1."
              ::= { ipRouteEntry 3 }

          ipRouteMetric2 OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION


                      "An alternate routing metric for this route.  The
                      semantics of this metric are determined by the
                      routing-protocol specified in the route's
                      ipRouteProto value.  If this metric is not used,
                      its value should be set to -1."
              ::= { ipRouteEntry 4 }

          ipRouteMetric3 OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "An alternate routing metric for this route.  The
                      semantics of this metric are determined by the
                      routing-protocol specified in the route's
                      ipRouteProto value.  If this metric is not used,
                      its value should be set to -1."
              ::= { ipRouteEntry 5 }

          ipRouteMetric4 OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "An alternate routing metric for this route.  The
                      semantics of this metric are determined by the
                      routing-protocol specified in the route's
                      ipRouteProto value.  If this metric is not used,
                      its value should be set to -1."
              ::= { ipRouteEntry 6 }

          ipRouteNextHop OBJECT-TYPE
              SYNTAX  IpAddress
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "The IP address of the next hop of this route.
                      (In the case of a route bound to an interface
                      which is realized via a broadcast media, the value
                      of this field is the agent's IP address on that
                      interface.)"
              ::= { ipRouteEntry 7 }

          ipRouteType OBJECT-TYPE
              SYNTAX  INTEGER {
                          other(1),        -- none of the following

                          invalid(2),      -- an invalidated route


                                           -- route to directly
                          direct(3),       -- connected (sub-)network

                                           -- route to a non-local
                          indirect(4)      -- host/network/sub-network
                      }
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "The type of route.  Note that the values
                      direct(3) and indirect(4) refer to the notion of
                      direct and indirect routing in the IP
                      architecture.

                      Setting this object to the value invalid(2) has
                      the effect of invalidating the corresponding entry
                      in the ipRouteTable object.  That is, it
                      effectively dissasociates the destination
                      identified with said entry from the route
                      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 ipRouteType object."
              ::= { ipRouteEntry 8 }

          ipRouteProto OBJECT-TYPE
              SYNTAX  INTEGER {
                          other(1),       -- none of the following

                                          -- non-protocol information,
                                          -- e.g., manually configured
                          local(2),       -- entries

                                          -- set via a network
                          netmgmt(3),     -- management protocol

                                          -- obtained via ICMP,
                          icmp(4),        -- e.g., Redirect

                                          -- the remaining values are
                                          -- all gateway routing
                                          -- protocols
                          egp(5),
                          ggp(6),


                          hello(7),
                          rip(8),
                          is-is(9),
                          es-is(10),
                          ciscoIgrp(11),
                          bbnSpfIgp(12),
                          ospf(13),
                          bgp(14)
                      }
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The routing mechanism via which this route was
                      learned.  Inclusion of values for gateway routing
                      protocols is not intended to imply that hosts
                      should support those protocols."
              ::= { ipRouteEntry 9 }

          ipRouteAge OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "The number of seconds since this route was last
                      updated or otherwise determined to be correct.
                      Note that no semantics of `too old' can be implied
                      except through knowledge of the routing protocol
                      by which the route was learned."
              ::= { ipRouteEntry 10 }

          ipRouteMask OBJECT-TYPE
              SYNTAX  IpAddress
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "Indicate the mask to be logical-ANDed with the
                      destination address before being compared to the
                      value in the ipRouteDest field.  For those systems
                      that do not support arbitrary subnet masks, an
                      agent constructs the value of the ipRouteMask by
                      determining whether the value of the correspondent
                      ipRouteDest field belong to a class-A, B, or C
                      network, and then using one of:

                           mask           network
                           255.0.0.0      class-A
                           255.255.0.0    class-B
                           255.255.255.0  class-C


                      If the value of the ipRouteDest is 0.0.0.0 (a
                      default route), then the mask value is also
                      0.0.0.0.  It should be noted that all IP routing
                      subsystems implicitly use this mechanism."
              ::= { ipRouteEntry 11 }

          ipRouteMetric5 OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "An alternate routing metric for this route.  The
                      semantics of this metric are determined by the
                      routing-protocol specified in the route's
                      ipRouteProto value.  If this metric is not used,
                      its value should be set to -1."
              ::= { ipRouteEntry 12 }

          ipRouteInfo OBJECT-TYPE
              SYNTAX  OBJECT IDENTIFIER
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "A reference to MIB definitions specific to the
                      particular routing protocol which is responsible
                      for this route, as determined by the value
                      specified in the route's ipRouteProto value.  If
                      this information is not present, its value should
                      be set to the OBJECT IDENTIFIER { 0 0 }, which is
                      a syntatically valid object identifier, and any
                      conformant implementation of ASN.1 and BER must be
                      able to generate and recognize this value."
              ::= { ipRouteEntry 13 }

          -- the IP Address Translation table

          -- The IP address translation table contain the IpAddress to
          -- `physical' address equivalences.  Some interfaces do not
          -- use translation tables for determining address
          -- equivalences (e.g., DDN-X.25 has an algorithmic method);
          -- if all interfaces are of this type, then the Address
          -- Translation table is empty, i.e., has zero entries.

          ipNetToMediaTable OBJECT-TYPE
              SYNTAX  SEQUENCE OF IpNetToMediaEntry
              ACCESS  not-accessible
              STATUS  mandatory


              DESCRIPTION
                      "The IP Address Translation table used for mapping
                      from IP addresses to physical addresses."
              ::= { ip 22 }

          ipNetToMediaEntry OBJECT-TYPE
              SYNTAX  IpNetToMediaEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "Each entry contains one IpAddress to `physical'
                      address equivalence."
              INDEX   { ipNetToMediaIfIndex,
                        ipNetToMediaNetAddress }
              ::= { ipNetToMediaTable 1 }

          IpNetToMediaEntry ::=
              SEQUENCE {
                  ipNetToMediaIfIndex
                      INTEGER,
                  ipNetToMediaPhysAddress
                      PhysAddress,
                  ipNetToMediaNetAddress
                      IpAddress,
                  ipNetToMediaType
                      INTEGER
              }

          ipNetToMediaIfIndex OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-write
              STATUS  mandatory
              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
                      ifIndex."
              ::= { ipNetToMediaEntry 1 }

          ipNetToMediaPhysAddress OBJECT-TYPE
              SYNTAX  PhysAddress
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "The media-dependent `physical' address."
              ::= { ipNetToMediaEntry 2 }


          ipNetToMediaNetAddress OBJECT-TYPE
              SYNTAX  IpAddress
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "The IpAddress corresponding to the media-
                      dependent `physical' address."
              ::= { ipNetToMediaEntry 3 }

          ipNetToMediaType OBJECT-TYPE
              SYNTAX  INTEGER {
                          other(1),        -- none of the following
                          invalid(2),      -- an invalidated mapping
                          dynamic(3),
                          static(4)
                      }
              ACCESS  read-write
              STATUS  mandatory
              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
                      dissasociates 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."
              ::= { ipNetToMediaEntry 4 }

          -- additional IP objects

          ipRoutingDiscards OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              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."
              ::= { ip 23 }

          -- the ICMP group

          -- Implementation of the ICMP group is mandatory for all
          -- systems.

          icmpInMsgs OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of ICMP messages which the
                      entity received.  Note that this counter includes
                      all those counted by icmpInErrors."
              ::= { icmp 1 }

          icmpInErrors OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of ICMP messages which the entity
                      received but determined as having ICMP-specific
                      errors (bad ICMP checksums, bad length, etc.)."
              ::= { icmp 2 }

          icmpInDestUnreachs OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of ICMP Destination Unreachable
                      messages received."
              ::= { icmp 3 }

          icmpInTimeExcds OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of ICMP Time Exceeded messages
                      received."
              ::= { icmp 4 }


          icmpInParmProbs OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of ICMP Parameter Problem messages
                      received."
              ::= { icmp 5 }

          icmpInSrcQuenchs OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of ICMP Source Quench messages
                      received."
              ::= { icmp 6 }

          icmpInRedirects OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of ICMP Redirect messages received."
              ::= { icmp 7 }

          icmpInEchos OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of ICMP Echo (request) messages
                      received."
              ::= { icmp 8 }

          icmpInEchoReps OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of ICMP Echo Reply messages received."
              ::= { icmp 9 }

          icmpInTimestamps OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION


                      "The number of ICMP Timestamp (request) messages
                      received."
              ::= { icmp 10 }

          icmpInTimestampReps OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of ICMP Timestamp Reply messages
                      received."
              ::= { icmp 11 }

          icmpInAddrMasks OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of ICMP Address Mask Request messages
                      received."
              ::= { icmp 12 }

          icmpInAddrMaskReps OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of ICMP Address Mask Reply messages
                      received."
              ::= { icmp 13 }

          icmpOutMsgs OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of ICMP messages which this
                      entity attempted to send.  Note that this counter
                      includes all those counted by icmpOutErrors."
              ::= { icmp 14 }

          icmpOutErrors OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              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."
              ::= { icmp 15 }

          icmpOutDestUnreachs OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of ICMP Destination Unreachable
                      messages sent."
              ::= { icmp 16 }

          icmpOutTimeExcds OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of ICMP Time Exceeded messages sent."
              ::= { icmp 17 }

          icmpOutParmProbs OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of ICMP Parameter Problem messages
                      sent."
              ::= { icmp 18 }

          icmpOutSrcQuenchs OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of ICMP Source Quench messages sent."
              ::= { icmp 19 }

          icmpOutRedirects OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of ICMP Redirect messages sent.  For a


                      host, this object will always be zero, since hosts
                      do not send redirects."
              ::= { icmp 20 }

          icmpOutEchos OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of ICMP Echo (request) messages sent."
              ::= { icmp 21 }

          icmpOutEchoReps OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of ICMP Echo Reply messages sent."
              ::= { icmp 22 }

          icmpOutTimestamps OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of ICMP Timestamp (request) messages
                      sent."
              ::= { icmp 23 }

          icmpOutTimestampReps OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of ICMP Timestamp Reply messages
                      sent."
              ::= { icmp 24 }

          icmpOutAddrMasks OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of ICMP Address Mask Request messages
                      sent."
              ::= { icmp 25 }


          icmpOutAddrMaskReps OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of ICMP Address Mask Reply messages
                      sent."
              ::= { icmp 26 }

          -- the TCP group

          -- Implementation of the TCP group is mandatory for all
          -- systems that implement the TCP.

          -- Note that instances of object types that represent
          -- information about a particular TCP connection are
          -- transient; they persist only as long as the connection
          -- in question.

          tcpRtoAlgorithm OBJECT-TYPE
              SYNTAX  INTEGER {
                          other(1),    -- none of the following

                          constant(2), -- a constant rto
                          rsre(3),     -- MIL-STD-1778, Appendix B
                          vanj(4)      -- Van Jacobson's algorithm [10]
                      }
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The algorithm used to determine the timeout value
                      used for retransmitting unacknowledged octets."
              ::= { tcp 1 }

          tcpRtoMin OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The minimum value permitted by a TCP
                      implementation for the retransmission timeout,
                      measured in milliseconds.  More refined semantics
                      for objects of this type depend upon the algorithm
                      used to determine the retransmission timeout.  In
                      particular, when the timeout algorithm is rsre(3),
                      an object of this type has the semantics of the
                      LBOUND quantity described in RFC 793."


              ::= { tcp 2 }

          tcpRtoMax OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The maximum value permitted by a TCP
                      implementation for the retransmission timeout,
                      measured in milliseconds.  More refined semantics
                      for objects of this type depend upon the algorithm
                      used to determine the retransmission timeout.  In
                      particular, when the timeout algorithm is rsre(3),
                      an object of this type has the semantics of the
                      UBOUND quantity described in RFC 793."
              ::= { tcp 3 }

          tcpMaxConn OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The limit on the total number of TCP connections
                      the entity can support.  In entities where the
                      maximum number of connections is dynamic, this
                      object should contain the value -1."
              ::= { tcp 4 }

          tcpActiveOpens OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of times TCP connections have made a
                      direct transition to the SYN-SENT state from the
                      CLOSED state."
              ::= { tcp 5 }

          tcpPassiveOpens OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of times TCP connections have made a
                      direct transition to the SYN-RCVD state from the
                      LISTEN state."
              ::= { tcp 6 }


          tcpAttemptFails OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of times TCP connections have made a
                      direct transition to the CLOSED state from either
                      the SYN-SENT state or the SYN-RCVD state, plus the
                      number of times TCP connections have made a direct
                      transition to the LISTEN state from the SYN-RCVD
                      state."
              ::= { tcp 7 }

          tcpEstabResets OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of times TCP connections have made a
                      direct transition to the CLOSED state from either
                      the ESTABLISHED state or the CLOSE-WAIT state."
              ::= { tcp 8 }

          tcpCurrEstab OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of TCP connections for which the
                      current state is either ESTABLISHED or CLOSE-
                      WAIT."
              ::= { tcp 9 }

          tcpInSegs OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of segments received, including
                      those received in error.  This count includes
                      segments received on currently established
                      connections."
              ::= { tcp 10 }

          tcpOutSegs OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory


              DESCRIPTION
                      "The total number of segments sent, including
                      those on current connections but excluding those
                      containing only retransmitted octets."
              ::= { tcp 11 }

          tcpRetransSegs OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of segments retransmitted - that
                      is, the number of TCP segments transmitted
                      containing one or more previously transmitted
                      octets."
              ::= { tcp 12 }

          -- the TCP Connection table

          -- The TCP connection table contains information about this
          -- entity's existing TCP connections.

          tcpConnTable OBJECT-TYPE
              SYNTAX  SEQUENCE OF TcpConnEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "A table containing TCP connection-specific
                      information."
              ::= { tcp 13 }

          tcpConnEntry OBJECT-TYPE
              SYNTAX  TcpConnEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "Information about a particular current TCP
                      connection.  An object of this type is transient,
                      in that it ceases to exist when (or soon after)
                      the connection makes the transition to the CLOSED
                      state."
              INDEX   { tcpConnLocalAddress,
                        tcpConnLocalPort,
                        tcpConnRemAddress,
                        tcpConnRemPort }
              ::= { tcpConnTable 1 }


          TcpConnEntry ::=
              SEQUENCE {
                  tcpConnState
                      INTEGER,
                  tcpConnLocalAddress
                      IpAddress,
                  tcpConnLocalPort
                      INTEGER (0..65535),
                  tcpConnRemAddress
                      IpAddress,
                  tcpConnRemPort
                      INTEGER (0..65535)
              }

          tcpConnState OBJECT-TYPE
              SYNTAX  INTEGER {
                          closed(1),
                          listen(2),
                          synSent(3),
                          synReceived(4),
                          established(5),
                          finWait1(6),
                          finWait2(7),
                          closeWait(8),
                          lastAck(9),
                          closing(10),
                          timeWait(11),
                          deleteTCB(12)
                      }
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "The state of this TCP connection.

                      The only value which may be set by a management
                      station is deleteTCB(12).  Accordingly, it is
                      appropriate for an agent to return a `badValue'
                      response if a management station attempts to set
                      this object to any other value.

                      If a management station sets this object to the
                      value deleteTCB(12), then this has the effect of
                      deleting the TCB (as defined in RFC 793) of the
                      corresponding connection on the managed node,
                      resulting in immediate termination of the
                      connection.

                      As an implementation-specific option, a RST


                      segment may be sent from the managed node to the
                      other TCP endpoint (note however that RST segments
                      are not sent reliably)."
              ::= { tcpConnEntry 1 }

          tcpConnLocalAddress OBJECT-TYPE
              SYNTAX  IpAddress
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The local IP address for this TCP connection.  In
                      the case of a connection in the listen state which
                      is willing to accept connections for any IP
                      interface associated with the node, the value
                      0.0.0.0 is used."
              ::= { tcpConnEntry 2 }

          tcpConnLocalPort OBJECT-TYPE
              SYNTAX  INTEGER (0..65535)
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The local port number for this TCP connection."
              ::= { tcpConnEntry 3 }

          tcpConnRemAddress OBJECT-TYPE
              SYNTAX  IpAddress
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The remote IP address for this TCP connection."
              ::= { tcpConnEntry 4 }

          tcpConnRemPort OBJECT-TYPE
              SYNTAX  INTEGER (0..65535)
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The remote port number for this TCP connection."
              ::= { tcpConnEntry 5 }

          -- additional TCP objects

          tcpInErrs OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory


              DESCRIPTION
                      "The total number of segments received in error
                      (e.g., bad TCP checksums)."
              ::= { tcp 14 }

          tcpOutRsts OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of TCP segments sent containing the
                      RST flag."
              ::= { tcp 15 }

          -- the UDP group

          -- Implementation of the UDP group is mandatory for all
          -- systems which implement the UDP.

          udpInDatagrams OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of UDP datagrams delivered to
                      UDP users."
              ::= { udp 1 }

          udpNoPorts OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of received UDP datagrams for
                      which there was no application at the destination
                      port."
              ::= { udp 2 }

          udpInErrors OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of received UDP datagrams that could
                      not be delivered for reasons other than the lack
                      of an application at the destination port."
              ::= { udp 3 }


          udpOutDatagrams OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of UDP datagrams sent from this
                      entity."
              ::= { udp 4 }

          -- the UDP Listener table

          -- The UDP listener table contains information about this
          -- entity's UDP end-points on which a local application is
          -- currently accepting datagrams.

          udpTable OBJECT-TYPE
              SYNTAX  SEQUENCE OF UdpEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "A table containing UDP listener information."
              ::= { udp 5 }

          udpEntry OBJECT-TYPE
              SYNTAX  UdpEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "Information about a particular current UDP
                      listener."
              INDEX   { udpLocalAddress, udpLocalPort }
              ::= { udpTable 1 }

          UdpEntry ::=
              SEQUENCE {
                  udpLocalAddress
                      IpAddress,
                  udpLocalPort
                      INTEGER (0..65535)
              }

          udpLocalAddress OBJECT-TYPE
              SYNTAX  IpAddress
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The local IP address for this UDP listener.  In


                      the case of a UDP listener which is willing to
                      accept datagrams for any IP interface associated
                      with the node, the value 0.0.0.0 is used."
              ::= { udpEntry 1 }

          udpLocalPort OBJECT-TYPE
              SYNTAX  INTEGER (0..65535)
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The local port number for this UDP listener."
              ::= { udpEntry 2 }

          -- the EGP group

          -- Implementation of the EGP group is mandatory for all
          -- systems which implement the EGP.

          egpInMsgs OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of EGP messages received without
                      error."
              ::= { egp 1 }

          egpInErrors OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of EGP messages received that proved
                      to be in error."
              ::= { egp 2 }

          egpOutMsgs OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of locally generated EGP
                      messages."
              ::= { egp 3 }

          egpOutErrors OBJECT-TYPE
              SYNTAX  Counter


              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of locally generated EGP messages not
                      sent due to resource limitations within an EGP
                      entity."
              ::= { egp 4 }

          -- the EGP Neighbor table

          -- The EGP neighbor table contains information about this
          -- entity's EGP neighbors.

          egpNeighTable OBJECT-TYPE
              SYNTAX  SEQUENCE OF EgpNeighEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "The EGP neighbor table."
              ::= { egp 5 }

          egpNeighEntry OBJECT-TYPE
              SYNTAX  EgpNeighEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "Information about this entity's relationship with
                      a particular EGP neighbor."
              INDEX   { egpNeighAddr }
              ::= { egpNeighTable 1 }

          EgpNeighEntry ::=
              SEQUENCE {
                  egpNeighState
                      INTEGER,
                  egpNeighAddr
                      IpAddress,
                  egpNeighAs
                      INTEGER,
                  egpNeighInMsgs
                      Counter,
                  egpNeighInErrs
                      Counter,
                  egpNeighOutMsgs
                      Counter,
                  egpNeighOutErrs
                      Counter,


                  egpNeighInErrMsgs
                      Counter,
                  egpNeighOutErrMsgs
                      Counter,
                  egpNeighStateUps
                      Counter,
                  egpNeighStateDowns
                      Counter,
                  egpNeighIntervalHello
                      INTEGER,
                  egpNeighIntervalPoll
                      INTEGER,
                  egpNeighMode
                      INTEGER,
                  egpNeighEventTrigger
                      INTEGER
              }

          egpNeighState OBJECT-TYPE
              SYNTAX  INTEGER {
                          idle(1),
                          acquisition(2),
                          down(3),
                          up(4),
                          cease(5)
                      }
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The EGP state of the local system with respect to
                      this entry's EGP neighbor.  Each EGP state is
                      represented by a value that is one greater than
                      the numerical value associated with said state in
                      RFC 904."
              ::= { egpNeighEntry 1 }

          egpNeighAddr OBJECT-TYPE
              SYNTAX  IpAddress
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The IP address of this entry's EGP neighbor."
              ::= { egpNeighEntry 2 }

          egpNeighAs OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-only
              STATUS  mandatory


              DESCRIPTION
                      "The autonomous system of this EGP peer.  Zero
                      should be specified if the autonomous system
                      number of the neighbor is not yet known."
              ::= { egpNeighEntry 3 }

          egpNeighInMsgs OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of EGP messages received without error
                      from this EGP peer."
              ::= { egpNeighEntry 4 }

          egpNeighInErrs OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of EGP messages received from this EGP
                      peer that proved to be in error (e.g., bad EGP
                      checksum)."
              ::= { egpNeighEntry 5 }

          egpNeighOutMsgs OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of locally generated EGP messages to
                      this EGP peer."
              ::= { egpNeighEntry 6 }

          egpNeighOutErrs OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of locally generated EGP messages not
                      sent to this EGP peer due to resource limitations
                      within an EGP entity."
              ::= { egpNeighEntry 7 }

          egpNeighInErrMsgs OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory


              DESCRIPTION
                      "The number of EGP-defined error messages received
                      from this EGP peer."
              ::= { egpNeighEntry 8 }

          egpNeighOutErrMsgs OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of EGP-defined error messages sent to
                      this EGP peer."
              ::= { egpNeighEntry 9 }

          egpNeighStateUps OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of EGP state transitions to the UP
                      state with this EGP peer."
              ::= { egpNeighEntry 10 }

          egpNeighStateDowns OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of EGP state transitions from the UP
                      state to any other state with this EGP peer."
              ::= { egpNeighEntry 11 }

          egpNeighIntervalHello OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The interval between EGP Hello command
                      retransmissions (in hundredths of a second).  This
                      represents the t1 timer as defined in RFC 904."
              ::= { egpNeighEntry 12 }

          egpNeighIntervalPoll OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The interval between EGP poll command


                      retransmissions (in hundredths of a second).  This
                      represents the t3 timer as defined in RFC 904."
              ::= { egpNeighEntry 13 }

          egpNeighMode OBJECT-TYPE
              SYNTAX  INTEGER { active(1), passive(2) }
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The polling mode of this EGP entity, either
                      passive or active."
              ::= { egpNeighEntry 14 }

          egpNeighEventTrigger OBJECT-TYPE
              SYNTAX  INTEGER { start(1), stop(2) }
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "A control variable used to trigger operator-
                      initiated Start and Stop events.  When read, this
                      variable always returns the most recent value that
                      egpNeighEventTrigger was set to.  If it has not
                      been set since the last initialization of the
                      network management subsystem on the node, it
                      returns a value of `stop'.

                      When set, this variable causes a Start or Stop
                      event on the specified neighbor, as specified on
                      pages 8-10 of RFC 904.  Briefly, a Start event
                      causes an Idle peer to begin neighbor acquisition
                      and a non-Idle peer to reinitiate neighbor
                      acquisition.  A stop event causes a non-Idle peer
                      to return to the Idle state until a Start event
                      occurs, either via egpNeighEventTrigger or
                      otherwise."
              ::= { egpNeighEntry 15 }

          -- additional EGP objects

          egpAs OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The autonomous system number of this EGP entity."
              ::= { egp 6 }


          -- the Transmission group

          -- Based on the transmission media underlying each interface
          -- on a system, the corresponding portion of the Transmission
          -- group is mandatory for that system.

          -- When Internet-standard definitions for managing
          -- transmission media are defined, the transmission group is
          -- used to provide a prefix for the names of those objects.

          -- Typically, such definitions reside in the experimental
          -- portion of the MIB until they are "proven", then as a
          -- part of the Internet standardization process, the
          -- definitions are accordingly elevated and a new object
          -- identifier, under the transmission group is defined. By
          -- convention, the name assigned is:
          --
          --     type OBJECT IDENTIFIER    ::= { transmission number }
          --
          -- where "type" is the symbolic value used for the media in
          -- the ifType column of the ifTable object, and "number" is
          -- the actual integer value corresponding to the symbol.

          -- the SNMP group

          -- Implementation of the SNMP group is mandatory for all
          -- systems which support an SNMP protocol entity.  Some of
          -- the objects defined below will be zero-valued in those
          -- SNMP implementations that are optimized to support only
          -- those functions specific to either a management agent or
          -- a management station.  In particular, it should be
          -- observed that the objects below refer to an SNMP entity,
          -- and there may be several SNMP entities residing on a
          -- managed node (e.g., if the node is hosting acting as
          -- a management station).

          snmpInPkts OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of Messages delivered to the
                      SNMP entity from the transport service."
              ::= { snmp 1 }

          snmpOutPkts OBJECT-TYPE
              SYNTAX  Counter


              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of SNMP Messages which were
                      passed from the SNMP protocol entity to the
                      transport service."
              ::= { snmp 2 }

          snmpInBadVersions OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of SNMP Messages which were
                      delivered to the SNMP protocol entity and were for
                      an unsupported SNMP version."
              ::= { snmp 3 }

          snmpInBadCommunityNames OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of SNMP Messages delivered to
                      the SNMP protocol entity which used a SNMP
                      community name not known to said entity."
              ::= { snmp 4 }

          snmpInBadCommunityUses OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of SNMP Messages delivered to
                      the SNMP protocol entity which represented an SNMP
                      operation which was not allowed by the SNMP
                      community named in the Message."
              ::= { snmp 5 }

          snmpInASNParseErrs OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of ASN.1 or BER errors
                      encountered by the SNMP protocol entity when
                      decoding received SNMP Messages."
              ::= { snmp 6 }


          -- { snmp 7 } is not used

          snmpInTooBigs OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of SNMP PDUs which were
                      delivered to the SNMP protocol entity and for
                      which the value of the error-status field is
                      `tooBig'."
              ::= { snmp 8 }

          snmpInNoSuchNames OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of SNMP PDUs which were
                      delivered to the SNMP protocol entity and for
                      which the value of the error-status field is
                      `noSuchName'."
              ::= { snmp 9 }

          snmpInBadValues OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of SNMP PDUs which were
                      delivered to the SNMP protocol entity and for
                      which the value of the error-status field is
                      `badValue'."
              ::= { snmp 10 }

          snmpInReadOnlys OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number valid SNMP PDUs which were
                      delivered to the SNMP protocol entity and for
                      which the value of the error-status field is
                      `readOnly'.  It should be noted that it is a
                      protocol error to generate an SNMP PDU which
                      contains the value `readOnly' in the error-status
                      field, as such this object is provided as a means
                      of detecting incorrect implementations of the


                      SNMP."
              ::= { snmp 11 }

          snmpInGenErrs OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of SNMP PDUs which were
                      delivered to the SNMP protocol entity and for
                      which the value of the error-status field is
                      `genErr'."
              ::= { snmp 12 }

          snmpInTotalReqVars OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of MIB objects which have been
                      retrieved successfully by the SNMP protocol entity
                      as the result of receiving valid SNMP Get-Request
                      and Get-Next PDUs."
              ::= { snmp 13 }

          snmpInTotalSetVars OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of MIB objects which have been
                      altered successfully by the SNMP protocol entity
                      as the result of receiving valid SNMP Set-Request
                      PDUs."
              ::= { snmp 14 }

          snmpInGetRequests OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of SNMP Get-Request PDUs which
                      have been accepted and processed by the SNMP
                      protocol entity."
              ::= { snmp 15 }

          snmpInGetNexts OBJECT-TYPE
              SYNTAX  Counter


              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of SNMP Get-Next PDUs which have
                      been accepted and processed by the SNMP protocol
                      entity."
              ::= { snmp 16 }

          snmpInSetRequests OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of SNMP Set-Request PDUs which
                      have been accepted and processed by the SNMP
                      protocol entity."
              ::= { snmp 17 }

          snmpInGetResponses OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of SNMP Get-Response PDUs which
                      have been accepted and processed by the SNMP
                      protocol entity."
              ::= { snmp 18 }

          snmpInTraps OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of SNMP Trap PDUs which have
                      been accepted and processed by the SNMP protocol
                      entity."
              ::= { snmp 19 }

          snmpOutTooBigs OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of SNMP PDUs which were
                      generated by the SNMP protocol entity and for
                      which the value of the error-status field is
                      `tooBig.'"
              ::= { snmp 20 }


          snmpOutNoSuchNames OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of SNMP PDUs which were
                      generated by the SNMP protocol entity and for
                      which the value of the error-status is
                      `noSuchName'."
              ::= { snmp 21 }

          snmpOutBadValues OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of SNMP PDUs which were
                      generated by the SNMP protocol entity and for
                      which the value of the error-status field is
                      `badValue'."
              ::= { snmp 22 }

          -- { snmp 23 } is not used

          snmpOutGenErrs OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of SNMP PDUs which were
                      generated by the SNMP protocol entity and for
                      which the value of the error-status field is
                      `genErr'."
              ::= { snmp 24 }

          snmpOutGetRequests OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of SNMP Get-Request PDUs which
                      have been generated by the SNMP protocol entity."
              ::= { snmp 25 }

          snmpOutGetNexts OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory


              DESCRIPTION
                      "The total number of SNMP Get-Next PDUs which have
                      been generated by the SNMP protocol entity."
              ::= { snmp 26 }

          snmpOutSetRequests OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of SNMP Set-Request PDUs which
                      have been generated by the SNMP protocol entity."
              ::= { snmp 27 }

          snmpOutGetResponses OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of SNMP Get-Response PDUs which
                      have been generated by the SNMP protocol entity."
              ::= { snmp 28 }

          snmpOutTraps OBJECT-TYPE
              SYNTAX  Counter
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The total number of SNMP Trap PDUs which have
                      been generated by the SNMP protocol entity."
              ::= { snmp 29 }

          snmpEnableAuthenTraps OBJECT-TYPE
              SYNTAX  INTEGER { enabled(1), disabled(2) }
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "Indicates whether the SNMP agent process is
                      permitted to generate authentication-failure
                      traps.  The value of this object overrides any
                      configuration information; as such, it provides a
                      means whereby all authentication-failure traps may
                      be disabled.

                      Note that it is strongly recommended that this
                      object be stored in non-volatile memory so that it
                      remains constant between re-initializations of the
                      network management system."


              ::= { snmp 30 }

END

DEMO-MIB DEFINITIONS ::= BEGIN

EXPORTS -- everything --;

IMPORTS
    OBJECT-TYPE, OBJECT-GROUP, Counter64, Gauge32, NsapAddress
	FROM SMP-SMI
    ifIndex
	FROM RFC1213-MIB;


mtrDemo		OBJECT IDENTIFIER ::=
		    { joint-iso-ccitt mhs(6) group(6) mtr(200) 5 }


mtrDemoGroup OBJECT-GROUP
    OBJECTS { mtrBigNumber, mtrNsapAddress, mtrBitString, mtrColumn }
    DESCRIPTION
	"The demo group."
    ::= { mtrDemo 1 }

mtrBigNumber OBJECT-TYPE
    SYNTAX     Counter64
    MAX-ACCESS read-write
    STATUS     mandatory
    DESCRIPTION
	"A big number.  On startup, the agent initializes this to the value

		18,023,456,790,123,456,789
	"
    ::= { mtrDemoGroup 1 }

mtrNsapAddress OBJECT-TYPE
    SYNTAX     NsapAddress
    MAX-ACCESS read-write
    STATUS     mandatory
    DESCRIPTION
	"An OSI Network Address.  On startup, the agent initializes this to
	 the value

		NS+47000580ffff000000012301230123456789ab01
	"
    ::= { mtrDemoGroup 2 }

mtrBitString OBJECT-TYPE
    SYNTAX     BIT STRING { 
                          rejectA-A(0),
                          rejectA-B(1),
                          rejectA-S(2),
                          rejectA-M(3),
                          rejectB-A(4),
                          rejectB-B(5),
                          rejectB-S(6),
                          rejectB-M(7),
                          rejectS-A(8),
                          rejectS-B(9),
                          rejectS-S(10),
                          rejectS-M(11),
                          rejectM-A(12),
                          rejectM-B(13),
                          rejectM-S(14),
                          rejectM-M(15)
		}
    MAX-ACCESS read-write
    STATUS     mandatory
    DESCRIPTION
	"A string of bits.  On startup, the agent initializes this to the value

		'0000000000000000'B
	"
    ::= { mtrDemoGroup 3 }

mtrTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF MtrEntry
    MAX-ACCESS not-accessible
    STATUS     mandatory
    DESCRIPTION
	"A mtr table used for testing..."
    ::= { mtrDemoGroup 4 }

mtrEntry OBJECT-TYPE
    SYNTAX     MtrEntry
    MAX-ACCESS not-accessible
    STATUS     mandatory
    DESCRIPTION
	"An entry (conceptual row) in the mtrTable."
    INDEX   { mtrIndex }
    ::= { mtrTable 1 }

MtrEntry ::=
    SEQUENCE {
	mtrIndex INTEGER (0..50000),
	mtrColumn Integer32
    }

mtrIndex OBJECT-TYPE
    SYNTAX     INTEGER (0..50000)
    MAX-ACCESS not-accessible
    STATUS     mandatory
    DESCRIPTION
	"The auxilary variable used to identify (conceptual) rows in the 
	 mtrTable."
    ::= { mtrEntry 1 }

mtrColumn OBJECT-TYPE
    SYNTAX     Integer32
    MAX-ACCESS read-only
    STATUS     mandatory
    DESCRIPTION
	"The column."
    ::= { mtrEntry 2 }


END
SNMPv2-SMI DEFINITIONS ::= BEGIN;

          security       OBJECT IDENTIFIER ::= { internet 5 }

          snmpV2         OBJECT IDENTIFIER ::= { internet 6 }

          -- transport domains
          snmpDomains    OBJECT IDENTIFIER ::= { snmpV2 1 }

          -- transport proxies
          snmpProxys     OBJECT IDENTIFIER ::= { snmpV2 2 }

          -- module identities
          snmpModules    OBJECT IDENTIFIER ::= { snmpV2 3 }

END

SNMPv2-TC DEFINITIONS ::= BEGIN

          IMPORTS
              ObjectSyntax, Integer32, TimeTicks
                  FROM SNMPv2-SMI;


          DisplayString ::= TEXTUAL-CONVENTION
              DISPLAY-HINT "255a"
              STATUS       current
              DESCRIPTION
                      "Represents textual information taken from the NVT
                      ASCII character set, as defined in pages 4, 10-11
                      of RFC 854.  Any object defined using this syntax
                      may not exceed 255 characters in length."
              SYNTAX       OCTET STRING (SIZE (0..255))

          PhysAddress ::= TEXTUAL-CONVENTION
              DISPLAY-HINT "1x:"
              STATUS       current
              DESCRIPTION
                      "Represents media- or physical-level addresses."
              SYNTAX       OCTET STRING

          MacAddress ::= TEXTUAL-CONVENTION
              DISPLAY-HINT "1x:"
              STATUS       current
              DESCRIPTION
                      "Represents an 802 MAC address represented in the
                      'canonical' order defined by IEEE 802.1a, i.e., as
                      if it were transmitted least significant bit
                      first, even though 802.5 (in contrast to other
                      802.x protocols) requires MAC addresses to be
                      transmitted most significant bit first."
              SYNTAX       OCTET STRING (SIZE (6))

          TruthValue ::= TEXTUAL-CONVENTION
              STATUS       current
              DESCRIPTION
                      "Represents a boolean value."
              SYNTAX       INTEGER { true(1), false(2) }


          TestAndIncr ::= TEXTUAL-CONVENTION
              STATUS       current
              DESCRIPTION
                      "Represents integer-valued information used for
                      atomic operations.  When the management protocol
                      is used to specify that an object instance having
                      this syntax is to be modified, the new value
                      supplied via the management protocol must
                      precisely match the value presently held by the
                      instance.  If not, the management protocol set
                      operation fails with an error of
                      'inconsistentValue'.  Otherwise, if the current
                      value is the maximum value of 2^31-1 (2147483647
                      decimal), then the value held by the instance is
                      wrapped to zero; otherwise, the value held by the
                      instance is incremented by one.  (Note that
                      regardless of whether the management protocol set
                      operation succeeds, the variable-binding in the
                      request and response PDUs are identical.)

                      The value of the ACCESS clause for objects having
                      this syntax is either 'read-write' or 'read-
                      create'.  When an instance of a columnar object
                      having this syntax is created, any value may be
                      supplied via the management protocol."
              SYNTAX       INTEGER (0..2147483647)


          AutonomousType ::= TEXTUAL-CONVENTION
              STATUS       current
              DESCRIPTION
                      "Represents an independently extensible type
                      identification value.  It may, for example,
                      indicate a particular sub-tree with further MIB
                      definitions, or define a particular type of
                      protocol or hardware."
              SYNTAX       OBJECT IDENTIFIER

          InstancePointer ::= TEXTUAL-CONVENTION
              STATUS       current
              DESCRIPTION
                      "A pointer to a specific instance of a conceptual
                      row of a MIB table in the managed device.  By
                      convention, it is the name of the particular
                      instance of the first columnar object in the
                      conceptual row."
              SYNTAX       OBJECT IDENTIFIER


          RowStatus ::= TEXTUAL-CONVENTION
              STATUS       current
              DESCRIPTION
                      "The RowStatus textual convention is used to
                      manage the creation and deletion of conceptual
                      rows, and is used as the value of the SYNTAX
                      clause for the status column of a conceptual row
                      (as described in Section 7.7.1 of [2].)

                      The status column has six defined values:

                           - 'active', which indicates that the
                           conceptual row is available for use by the
                           managed device;

                           - 'notInService', which indicates that the
                           conceptual row exists in the agent, but is
                           unavailable for use by the managed device
                           (see NOTE below);

                           - 'notReady', which indicates that the
                           conceptual row exists in the agent, but is
                           missing information necessary in order to be
                           available for use by the managed device;

                           - 'createAndGo', which is supplied by a
                           management station wishing to create a new
                           instance of a conceptual row and to have it
                           available for use by the managed device;

                           - 'createAndWait', which is supplied by a
                           management station wishing to create a new
                           instance of a conceptual row but not to have
                           it available for use by the managed device;
                           and,

                           - 'destroy', which is supplied by a
                           management station wishing to delete all of
                           the instances associated with an existing
                           conceptual row.

                      Whereas five of the six values (all except
                      'notReady') may be specified in a management
                      protocol set operation, only three values will be
                      returned in response to a management protocol


                      retrieval operation: 'notReady', 'notInService' or
                      'active'.  That is, when queried, an existing
                      conceptual row has only three states: it is either
                      available for use by the managed device (the
                      status column has value 'active'); it is not
                      available for use by the managed device, though
                      the agent has sufficient information to make it so
                      (the status column has value 'notInService'); or,
                      it is not available for use by the managed device,
                      because the agent lacks sufficient information
                      (the status column has value 'notReady').

                                          NOTE WELL

                           This textual convention may be used for a MIB
                           table, irrespective of whether the values of
                           that table's conceptual rows are able to be
                           modified while it is active, or whether its
                           conceptual rows must be taken out of service
                           in order to be modified.  That is, it is the
                           responsibility of the DESCRIPTION clause of
                           the status column to specify whether the
                           status column must be 'notInService' in order
                           for the value of some other column of the
                           same conceptual row to be modified.


                      To summarize the effect of having a conceptual row
                      with a status column having a SYNTAX clause value
                      of RowStatus, consider the following state
                      diagram:

                                            STATE
                 +--------------+-----------+-------------+-------------
                 |      A       |     B     |      C      |      D
                 |              |status col.|status column|
                 |status column |    is     |      is     |status column
       ACTION    |does not exist|  notReady | notInService|  is active
   --------------+--------------+-----------+-------------+-------------
   set status    |noError    ->D|inconsist- |inconsistent-|inconsistent-
   column to     |       or     |   entValue|        Value|        Value
   createAndGo   |inconsistent- |           |             |
                 |         Value|           |             |
   --------------+--------------+-----------+-------------+-------------
   set status    |noError  see 1|inconsist- |inconsistent-|inconsistent-
   column to     |       or     |   entValue|        Value|        Value
   createAndWait |wrongValue    |           |             |
   --------------+--------------+-----------+-------------+-------------
   set status    |inconsistent- |inconsist- |noError      |noError
   column to     |         Value|   entValue|             |
   active        |              |           |             |
                 |              |     or    |             |
                 |              |           |             |
                 |              |see 2   ->D|          ->D|          ->D
   --------------+--------------+-----------+-------------+-------------
   set status    |inconsistent- |inconsist- |noError      |noError   ->C
   column to     |         Value|   entValue|             |
   notInService  |              |           |             |
                 |              |     or    |             |      or
                 |              |           |             |
                 |              |see 3   ->C|          ->C|wrongValue
   --------------+--------------+-----------+-------------+-------------
   set status    |noError       |noError    |noError      |noError
   column to     |              |           |             |
   destroy       |           ->A|        ->A|          ->A|          ->A
   --------------+--------------+-----------+-------------+-------------
   set any other |see 4         |noError    |noError      |noError
   column to some|              |           |             |
   value         |           ->A|      see 1|          ->C|          ->D
   --------------+--------------+-----------+-------------+-------------


                      (1) goto B or C, depending on information
                      available to the agent.

                      (2) if other variable bindings included in the
                      same PDU, provide values for all columns which are
                      missing but required, then return noError and goto
                      D.

                      (3) if other variable bindings included in the
                      same PDU, provide values for all columns which are
                      missing but required, then return noError and goto
                      C.

                      (4) at the discretion of the agent, either noError
                      or inconsistentValue may be returned.

                      NOTE: Other processing of the set request may
                      result in a response other than noError being
                      returned, e.g., wrongValue, noCreation, etc.

                                   Conceptual Row Creation

                      There are four potential interactions when
                      creating a conceptual row: selecting an instance-
                      identifier which is not in use; creating the
                      conceptual row; initializing any objects for which
                      the agent does not supply a default; and, making
                      the conceptual row available for use by the
                      managed device.

                      Interaction 1: Selecting an Instance-Identifier

                      The algorithm used to select an instance-
                      identifier varies for each conceptual row.  In
                      some cases, the instance-identifier is
                      semantically significant, e.g., the destination
                      address of a route, and a management station
                      selects the instance-identifier according to the
                      semantics.

                      In other cases, the instance-identifier is used
                      solely to distinguish conceptual rows, and a
                      management station without specific knowledge of
                      the conceptual row might examine the instances


                      present in order to determine an unused instance-
                      identifier.  (This approach may be used, but it is
                      often highly sub-optimal; however, it is also a
                      questionable practice for a naive management
                      station to attempt conceptual row creation.)

                      Alternately, the MIB module which defines the
                      conceptual row might provide one or more objects
                      which provide assistance in determining an unused
                      instance-identifier.  For example, if the
                      conceptual row is indexed by an integer-value,
                      then an object having an integer-valued SYNTAX
                      clause might be defined for such a purpose,
                      allowing a management station to issue a
                      management protocol retrieval operation.  In order
                      to avoid unnecessary collisions between competing
                      management stations, 'adjacent' retrievals of this
                      object should be different.

                      Finally, the management station could select a
                      pseudo-random number to use as the index.  In the
                      event that this index was already in use and an
                      inconsistentValue was returned in response to the
                      management protocol set operation, the management
                      station should simply select a new pseudo-random
                      number and retry the operation.

                      A MIB designer should choose between the two
                      latter algorithms based on the size of the table
                      (and therefore the efficiency of each algorithm).
                      For tables in which a large number of entries are
                      expected, it is recommended that a MIB object be
                      defined that returns an acceptable index for
                      creation.  For tables with small numbers of
                      entries, it is recommended that the latter
                      pseudo-random index mechanism be used.

                      Interaction 2: Creating the Conceptual Row

                      Once an unused instance-identifier has been
                      selected, the management station determines if it
                      wishes to create and activate the conceptual row
                      in one transaction or in a negotiated set of
                      interactions.


                      Interaction 2a: Creating and Activating the
                      Conceptual Row

                      The management station must first determine the
                      column requirements, i.e., it must determine those
                      columns for which it must or must not provide
                      values.  Depending on the complexity of the table
                      and the management station's knowledge of the
                      agent's capabilities, this determination can be
                      made locally by the management station.
                      Alternately, the management station issues a
                      management protocol get operation to examine all
                      columns in the conceptual row that it wishes to
                      create.  In response, for each column, there are
                      three possible outcomes:

                           - a value is returned, indicating that some
                           other management station has already created
                           this conceptual row.  We return to
                           interaction 1.

                           - the exception 'noSuchInstance' is returned,
                           indicating that the agent implements the
                           object-type associated with this column, and
                           that this column in at least one conceptual
                           row would be accessible in the MIB view used
                           by the retrieval were it to exist. For those
                           columns to which the agent provides read-
                           create access, the 'noSuchInstance' exception
                           tells the management station that it should
                           supply a value for this column when the
                           conceptual row is to be created.

                           - the exception 'noSuchObject' is returned,
                           indicating that the agent does not implement
                           the object-type associated with this column
                           or that there is no conceptual row for which
                           this column would be accessible in the MIB
                           view used by the retrieval.  As such, the
                           management station can not issue any
                           management protocol set operations to create
                           an instance of this column.

                      Once the column requirements have been determined,
                      a management protocol set operation is accordingly


                      issued.  This operation also sets the new instance
                      of the status column to 'createAndGo'.

                      When the agent processes the set operation, it
                      verifies that it has sufficient information to
                      make the conceptual row available for use by the
                      managed device.  The information available to the
                      agent is provided by two sources: the management
                      protocol set operation which creates the
                      conceptual row, and, implementation-specific
                      defaults supplied by the agent (note that an agent
                      must provide implementation-specific defaults for
                      at least those objects which it implements as
                      read-only).  If there is sufficient information
                      available, then the conceptual row is created, a
                      'noError' response is returned, the status column
                      is set to 'active', and no further interactions
                      are necessary (i.e., interactions 3 and 4 are
                      skipped).  If there is insufficient information,
                      then the conceptual row is not created, and the
                      set operation fails with an error of
                      'inconsistentValue'.  On this error, the
                      management station can issue a management protocol
                      retrieval operation to determine if this was
                      because it failed to specify a value for a
                      required column, or, because the selected instance
                      of the status column already existed.  In the
                      latter case, we return to interaction 1.  In the
                      former case, the management station can re-issue
                      the set operation with the additional information,
                      or begin interaction 2 again using 'createAndWait'
                      in order to negotiate creation of the conceptual
                      row.


                                          NOTE WELL

                           Regardless of the method used to determine
                           the column requirements, it is possible that
                           the management station might deem a column
                           necessary when, in fact, the agent will not
                           allow that particular columnar instance to be
                           created or written.  In this case, the
                           management protocol set operation will fail
                           with an error such as 'noCreation' or
                           'notWritable'.  In this case, the management
                           station decides whether it needs to be able
                           to set a value for that particular columnar
                           instance.  If not, the management station
                           re-issues the management protocol set
                           operation, but without setting a value for
                           that particular columnar instance; otherwise,
                           the management station aborts the row
                           creation algorithm.

                      Interaction 2b: Negotiating the Creation of the
                      Conceptual Row

                      The management station issues a management
                      protocol set operation which sets the desired
                      instance of the status column to 'createAndWait'.
                      If the agent is unwilling to process a request of
                      this sort, the set operation fails with an error
                      of 'wrongValue'.  (As a consequence, such an agent
                      must be prepared to accept a single management
                      protocol set operation, i.e., interaction 2a
                      above, containing all of the columns indicated by
                      its column requirements.) Otherwise, the
                      conceptual row is created, a 'noError' response is
                      returned, and the status column is immediately set
                      to either 'notInService' or 'notReady', depending
                      on whether it has sufficient information to make
                      the conceptual row available for use by the
                      managed device.  If there is sufficient
                      information available, then the status column is
                      set to 'notInService'; otherwise, if there is
                      insufficient information, then the status column
                      is set to 'notReady'.  Regardless, we proceed to
                      interaction 3.


                      Interaction 3: Initializing non-defaulted Objects

                      The management station must now determine the
                      column requirements.  It issues a management
                      protocol get operation to examine all columns in
                      the created conceptual row.  In the response, for
                      each column, there are three possible outcomes:

                           - a value is returned, indicating that the
                           agent implements the object-type associated
                           with this column and had sufficient
                           information to provide a value.  For those
                           columns to which the agent provides read-
                           create access, a value return tells the
                           management station that it may issue
                           additional management protocol set
                           operations, if it desires, in order to change
                           the value associated with this column.

                           - the exception 'noSuchInstance' is returned,
                           indicating that the agent implements the
                           object-type associated with this column, and
                           that this column in at least one conceptual
                           row would be accessible in the MIB view used
                           by the retrieval were it to exist. However,
                           the agent does not have sufficient
                           information to provide a value, and until a
                           value is provided, the conceptual row may not
                           be made available for use by the managed
                           device.  For those columns to which the agent
                           provides read-create access, the
                           'noSuchInstance' exception tells the
                           management station that it must issue
                           additional management protocol set
                           operations, in order to provide a value
                           associated with this column.

                           - the exception 'noSuchObject' is returned,
                           indicating that the agent does not implement
                           the object-type associated with this column
                           or that there is no conceptual row for which
                           this column would be accessible in the MIB
                           view used by the retrieval.  As such, the
                           management station can not issue any
                           management protocol set operations to create


                           an instance of this column.

                      If the value associated with the status column is
                      'notReady', then the management station must first
                      deal with all 'noSuchInstance' columns, if any.
                      Having done so, the value of the status column
                      becomes 'notInService', and we proceed to
                      interaction 4.

                      Interaction 4: Making the Conceptual Row Available

                      Once the management station is satisfied with the
                      values associated with the columns of the
                      conceptual row, it issues a management protocol
                      set operation to set the status column to
                      'active'.  If the agent has sufficient information
                      to make the conceptual row available for use by
                      the managed device, the management protocol set
                      operation succeeds (a 'noError' response is
                      returned).  Otherwise, the management protocol set
                      operation fails with an error of
                      'inconsistentValue'.

                                          NOTE WELL

                           A conceptual row having a status column with
                           value 'notInService' or 'notReady' is
                           unavailable to the managed device.  As such,
                           it is possible for the managed device to
                           create its own instances during the time
                           between the management protocol set operation
                           which sets the status column to
                           'createAndWait' and the management protocol
                           set operation which sets the status column to
                           'active'.  In this case, when the management
                           protocol set operation is issued to set the
                           status column to 'active', the values held in
                           the agent supersede those used by the managed
                           device.

                      If the management station is prevented from
                      setting the status column to 'active' (e.g., due
                      to management station or network failure) the
                      conceptual row will be left in the 'notInService'
                      or 'notReady' state, consuming resources


                      indefinitely.  The agent must detect conceptual
                      rows that have been in either state for an
                      abnormally long period of time and remove them.
                      This period of time should be long enough to allow
                      for human response time (including 'think time')
                      between the creation of the conceptual row and the
                      setting of the status to 'active'.  It is
                      suggested that this period be approximately 5
                      minutes in length.

                                  Conceptual Row Suspension

                      When a conceptual row is 'active', the management
                      station may issue a management protocol set
                      operation which sets the instance of the status
                      column to 'notInService'.  If the agent is
                      unwilling to do so, the set operation fails with
                      an error of 'wrongValue'.  Otherwise, the
                      conceptual row is taken out of service, and a
                      'noError' response is returned.  It is the
                      responsibility of the the DESCRIPTION clause of
                      the status column to indicate under what
                      circumstances the status column should be taken
                      out of service (e.g., in order for the value of
                      some other column of the same conceptual row to be
                      modified).

                                   Conceptual Row Deletion

                      For deletion of conceptual rows, a management
                      protocol set operation is issued which sets the
                      instance of the status column to 'destroy'.  This
                      request may be made regardless of the current
                      value of the status column (e.g., it is possible
                      to delete conceptual rows which are either
                      'notReady', 'notInService' or 'active'.) If the
                      operation succeeds, then all instances associated
                      with the conceptual row are immediately removed."


              SYNTAX       INTEGER {
                               -- the following two values are states:
                               -- these values may be read or written
                               active(1),
                               notInService(2),

                               -- the following value is a state:
                               -- this value may be read, but not written
                               notReady(3),

                               -- the following three values are
                               -- actions: these values may be written,
                               --   but are never read
                               createAndGo(4),
                               createAndWait(5),
                               destroy(6)
                           }


          TimeStamp ::= TEXTUAL-CONVENTION
              STATUS       current
              DESCRIPTION
                      "The value of MIB-II's sysUpTime object at which a
                      specific occurrence happened.  The specific
                      occurrence must be defined in the description of
                      any object defined using this type."
              SYNTAX       TimeTicks

          TimeInterval ::= TEXTUAL-CONVENTION
              STATUS       current
              DESCRIPTION
                      "A period of time, measured in units of 0.01
                      seconds."
              SYNTAX       INTEGER (0..2147483647)


          DateAndTime ::= TEXTUAL-CONVENTION
              DISPLAY-HINT "2d-1d-1d,1d:1d:1d.1d,1a1d:1d"
              STATUS       current
              DESCRIPTION
                      "A date-time specification.

                      field  octets  contents                  range
                      -----  ------  --------                  -----
                        1      1-2   year                      0..65536
                        2       3    month                     1..12
                        3       4    day                       1..31
                        4       5    hour                      0..23
                        5       6    minutes                   0..59
                        6       7    seconds                   0..60
                                     (use 60 for leap-second)
                        7       8    deci-seconds              0..9
                        8       9    direction from UTC        '+' / '-'
                        9      10    hours from UTC            0..11
                       10      11    minutes from UTC          0..59

                      For example, Tuesday May 26, 1992 at 1:30:15 PM
                      EDT would be displayed as:

                                  1992-5-26,13:30:15.0,-4:0

                      Note that if only local time is known, then
                      timezone information (fields 8-10) is not
                      present."
              SYNTAX       OCTET STRING (SIZE (8 | 11))

END
SNMPv2-PARTY-MIB DEFINITIONS ::= BEGIN

          IMPORTS
              MODULE-IDENTITY, OBJECT-TYPE, snmpModules,
                  UInteger32
                  FROM SNMPv2-SMI
              TEXTUAL-CONVENTION, RowStatus, TruthValue
                  FROM SNMPv2-TC
              MODULE-COMPLIANCE, OBJECT-GROUP
                  FROM SNMPv2-CONF;

          partyMIB MODULE-IDENTITY
              LAST-UPDATED "9304010000Z"
              ORGANIZATION "IETF SNMP Security Working Group"
              CONTACT-INFO
                      "        Keith McCloghrie

                       Postal: Hughes LAN Systems
                               1225 Charleston Road
                               Mountain View, CA  94043
                               US

                          Tel: +1 415 966 7934
                          Fax: +1 415 960 3738

                       E-mail: kzm@hls.com"
              DESCRIPTION
                      "The MIB module describing SNMPv2 parties."
              ::= { snmpModules 3 }


          -- textual conventions

          Party ::= TEXTUAL-CONVENTION
              STATUS       current
              DESCRIPTION
                      "Denotes a SNMPv2 party identifier.

                      Note that agents may impose implementation
                      limitations on the length of OIDs used to identify
                      Parties. As such, management stations creating
                      new parties should be aware that using an
                      excessively long OID may result in the agent
                      refusing to perform the set operation and instead
                      returning the appropriate error response, e.g.,
                      noCreation."
              SYNTAX       OBJECT IDENTIFIER

          TAddress ::= TEXTUAL-CONVENTION
              STATUS       current
              DESCRIPTION
                      "Denotes a transport service address.

                      For snmpUDPDomain, a TAddress is 6 octets long,
                      the initial 4 octets containing the IP-address in
                      network-byte order and the last 2 containing the
                      UDP port in network-byte order.  Consult [5] for
                      further information on snmpUDPDomain."
              SYNTAX       OCTET STRING


          Clock ::= TEXTUAL-CONVENTION
              STATUS       current
              DESCRIPTION
                      "A party's authentication clock - a non-negative
                      integer which is incremented as specified/allowed
                      by the party's Authentication Protocol.

                      For noAuth, a party's authentication clock is
                      unused and its value is undefined.

                      For v2md5AuthProtocol, a party's authentication
                      clock is a relative clock with 1-second
                      granularity."
              SYNTAX       UInteger32

          Context ::= TEXTUAL-CONVENTION
              STATUS       current
              DESCRIPTION
                      "Denotes a SNMPv2 context identifier.

                      Note that agents may impose implementation
                      limitations on the length of OIDs used to identify
                      Contexts. As such, management stations creating new
                      contexts should be aware that using an excessively
                      long OID may result in the agent refusing to
                      perform the set operation and instead returning
                      the appropriate error response, e.g., noCreation."
              SYNTAX       OBJECT IDENTIFIER


          StorageType ::= TEXTUAL-CONVENTION
              STATUS       current
              DESCRIPTION
                      "Describes the memory realization of a conceptual
                      row.  A row which is volatile(2) is lost upon
                      reboot.  A row which is nonVolatile(3) is backed
                      up by stable storage.  A row which is permanent(4)
                      cannot be changed nor deleted."
              SYNTAX       INTEGER {
                               other(1),       -- eh?
                               volatile(2),    -- e.g., in RAM
                               nonVolatile(3), -- e.g., in NVRAM
                               permanent(4)    -- e.g., in ROM
                           }


          -- administrative assignments

          partyAdmin     OBJECT IDENTIFIER ::= { partyMIB 1 }

          -- definitions of security protocols

          partyProtocols OBJECT IDENTIFIER ::= { partyAdmin 1 }

          -- the protocol without authentication
          noAuth         OBJECT IDENTIFIER ::= { partyProtocols 1 }

          -- the protocol without privacy
          noPriv         OBJECT IDENTIFIER ::= { partyProtocols 2 }

          -- the DES Privacy Protocol [4]
          desPrivProtocol
                         OBJECT IDENTIFIER ::= { partyProtocols 3 }

          -- the MD5 Authentication Protocol [4]
          v2md5AuthProtocol
                         OBJECT IDENTIFIER ::= { partyProtocols 4 }

          -- definitions of temporal domains

          temporalDomains
                         OBJECT IDENTIFIER ::= { partyAdmin 2 }

          -- this temporal domain refers to management information
          -- at the current time
          currentTime    OBJECT IDENTIFIER ::= { temporalDomains 1 }

          -- this temporal domain refers to management information
          -- upon the next re-initialization of the managed device
          restartTime    OBJECT IDENTIFIER ::= { temporalDomains 2 }

          -- the temporal domain { cacheTime N } refers to management
          -- information that is cached and guaranteed to be at most
          -- N seconds old
          cacheTime      OBJECT IDENTIFIER ::= { temporalDomains 3 }


          -- Definition of Initial Party and Context Identifiers

          -- When devices are installed, they need to be configured
          -- with an initial set of SNMPv2 parties and contexts.  The
          -- configuration of SNMPv2 parties and contexts requires (among
          -- other things) the assignment of several OBJECT IDENTIFIERs.
          -- Any local network administration can obtain the delegated
          -- authority necessary to assign its own OBJECT IDENTIFIERs.
          -- However, to provide for those administrations who have not
          -- obtained the necessary authority, this document allocates a
          -- branch of the naming tree for use with the following
          -- conventions.

          initialPartyId OBJECT IDENTIFIER ::= { partyAdmin 3 }

          initialContextId
                         OBJECT IDENTIFIER ::= { partyAdmin 4 }

          -- Note these are identified as "initial" party and context
          -- identifiers since these allow secure SNMPv2 communication
          -- to proceed, thereby allowing further SNMPv2 parties to be
          -- configured through use of the SNMPv2 itself.

          -- The following definitions identify a party identifier, and
          -- specify the initial values of various object instances
          -- indexed by that identifier.  In addition, the SNMPv2
          -- context, access control policy, and MIB view information
          -- assigned, by convention, are identified.


          -- Party Identifiers for use as initial SNMPv2 parties
          --       at IP address  a.b.c.d

          -- Note that for all OBJECT IDENTIFIERs assigned under
          -- initialPartyId, the four sub-identifiers immediately
          -- following initialPartyId represent the four octets of
          -- an IP address.  Initial party identifiers for other address
          -- families are assigned under a different OBJECT IDENTIFIER,
          -- as defined elsewhere.

          -- Devices which support SNMPv2 as entities acting in an
          -- agent role, and accessed via the snmpUDPDomain transport
          -- domain, are required to be configured with the appropriate
          -- set of the following as implicit assignments as and when
          -- they are configured with an IP address.  The appropriate
          -- set is all those applicable to the authentication and
          -- privacy protocols supported by the device.


          --      a noAuth/noPriv party which executes at the agent
          -- partyIdentity            = { initialPartyId a b c d 1 }
          -- partyIndex               = 1
          -- partyTDomain             = snmpUDPDomain
          -- partyTAddress            = a.b.c.d, 161
          -- partyLocal               = true (in agent's database)
          -- partyAuthProtocol        = noAuth
          -- partyAuthClock           = 0
          -- partyAuthPrivate         = ''H    (the empty string)
          -- partyAuthPublic          = ''H    (the empty string)
          -- partyAuthLifetime        = 0
          -- partyPrivProtocol        = noPriv
          -- partyPrivPrivate         = ''H    (the empty string)
          -- partyPrivPublic          = ''H    (the empty string)

          --      a noAuth/noPriv party which executes at a manager
          -- partyIdentity            = { initialPartyId a b c d 2 }
          -- partyIndex               = 2
          -- partyTDomain             = snmpUDPDomain
          -- partyTAddress            = assigned by local administration
          -- partyLocal               = false (in agent's database)
          -- partyAuthProtocol        = noAuth
          -- partyAuthClock           = 0
          -- partyAuthPrivate         = ''H    (the empty string)
          -- partyAuthPublic          = ''H    (the empty string)
          -- partyAuthLifetime        = 0
          -- partyPrivProtocol        = noPriv
          -- partyPrivPrivate         = ''H    (the empty string)
          -- partyPrivPublic          = ''H    (the empty string)


          --      a md5Auth/noPriv party which executes at the agent
          -- partyIdentity            = { initialPartyId a b c d 3 }
          -- partyIndex               = 3
          -- partyTDomain             = snmpUDPDomain
          -- partyTAddress            = a.b.c.d, 161
          -- partyLocal               = true (in agent's database)
          -- partyAuthProtocol        = v2md5AuthProtocol
          -- partyAuthClock           = 0
          -- partyAuthPrivate         = assigned by local administration
          -- partyAuthPublic          = ''H    (the empty string)
          -- partyAuthLifetime        = 300
          -- partyPrivProtocol        = noPriv
          -- partyPrivPrivate         = ''H    (the empty string)
          -- partyPrivPublic          = ''H    (the empty string)

          --      a md5Auth/noPriv party which executes at a manager
          -- partyIdentity            = { initialPartyId a b c d 4 }
          -- partyIndex               = 4
          -- partyTDomain             = snmpUDPDomain
          -- partyTAddress            = assigned by local administration
          -- partyLocal               = false (in agent's database)
          -- partyAuthProtocol        = v2md5AuthProtocol
          -- partyAuthClock           = 0
          -- partyAuthPrivate         = assigned by local administration
          -- partyAuthPublic          = ''H    (the empty string)
          -- partyAuthLifetime        = 300
          -- partyPrivProtocol        = noPriv
          -- partyPrivPrivate         = ''H    (the empty string)
          -- partyPrivPublic          = ''H    (the empty string)


          --      a md5Auth/desPriv party which executes at the agent
          -- partyIdentity            = { initialPartyId a b c d 5 }
          -- partyIndex               = 5
          -- partyTDomain             = snmpUDPDomain
          -- partyTAddress            = a.b.c.d, 161
          -- partyLocal               = true (in agent's database)
          -- partyAuthProtocol        = v2md5AuthProtocol
          -- partyAuthClock           = 0
          -- partyAuthPrivate         = assigned by local administration
          -- partyAuthPublic          = ''H    (the empty string)
          -- partyAuthLifetime        = 300
          -- partyPrivProtocol        = desPrivProtocol
          -- partyPrivPrivate         = assigned by local administration
          -- partyPrivPublic          = ''H    (the empty string)

          --      a md5Auth/desPriv party which executes at a manager
          -- partyIdentity            = { initialPartyId a b c d 6 }
          -- partyIndex               = 6
          -- partyTDomain             = snmpUDPDomain
          -- partyTAddress            = assigned by local administration
          -- partyLocal               = false (in agent's database)
          -- partyAuthProtocol        = v2md5AuthProtocol
          -- partyAuthClock           = 0
          -- partyAuthPrivate         = assigned by local administration
          -- partyAuthPublic          = ''H    (the empty string)
          -- partyAuthLifetime        = 300
          -- partyPrivProtocol        = desPrivProtocol
          -- partyPrivPrivate         = assigned by local administration
          -- partyPrivPublic          = ''H    (the empty string)


          -- the initial SNMPv2 contexts assigned, by convention, are:

          -- contextIdentity          = { initialContextId a b c d 1 }
          -- contextIndex             = 1
          -- contextLocal             = true (in agent's database)
          -- contextViewIndex         = 1
          -- contextLocalEntity       = ''H    (the empty string)
          -- contextLocalTime         = currentTime
          -- contextProxyDstParty     = { 0 0 }
          -- contextProxySrcParty     = { 0 0 }
          -- contextProxyContext      = { 0 0 }

          -- contextIdentity          = { initialContextId a b c d 2 }
          -- contextIndex             = 2
          -- contextLocal             = true (in agent's database)
          -- contextViewIndex         = 2
          -- contextLocalEntity       = ''H    (the empty string)
          -- contextLocalTime         = currentTime
          -- contextProxyDstParty     = { 0 0 }
          -- contextProxySrcParty     = { 0 0 }
          -- contextProxyContext      = { 0 0 }


       -- The initial access control policy assigned, by
       -- convention, is:

       -- aclTarget                =   1
       -- aclSubject               =   2
       -- aclResources             =   1
       -- aclPrivileges            =  35 (Get, Get-Next & Get-Bulk)

       -- aclTarget                =   2
       -- aclSubject               =   1
       -- aclResources             =   1
       -- aclPrivileges            = 132 (Response & SNMPv2-Trap)

       -- aclTarget                =   3
       -- aclSubject               =   4
       -- aclResources             =   2
       -- aclPrivileges            =  43 (Get, Get-Next, Set & Get-Bulk)

       -- aclTarget                =   4
       -- aclSubject               =   3
       -- aclResources             =   2
       -- aclPrivileges            =   4 (Response)

       -- aclTarget                =   5
       -- aclSubject               =   6
       -- aclResources             =   2
       -- aclPrivileges            =  43 (Get, Get-Next, Set & Get-Bulk)

       -- aclTarget                =   6
       -- aclSubject               =   5
       -- aclResources             =   2
       -- aclPrivileges            =   4 (Response)

       -- Note that the initial context and access control
       -- information assigned above, by default, to the
       -- md5Auth/desPriv parties are identical to those assigned to
       -- the md5Auth/noPriv parties.  However, each administration
       -- may choose to have different authorization policies,
       -- depending on whether privacy is used.


          -- The initial MIB views assigned, by convention, are:

          -- viewIndex                = 1
          -- viewSubtree              = system
          -- viewMask                 = ''H
          -- viewType                 = included

          -- viewIndex                = 1
          -- viewSubtree              = snmpStats
          -- viewMask                 = ''H
          -- viewType                 = included

          -- viewIndex                = 1
          -- viewSubtree              = snmpParties
          -- viewMask                 = ''H
          -- viewType                 = included

          -- viewIndex                = 2
          -- viewSubtree              = internet
          -- viewMask                 = ''H
          -- viewType                 = included

          -- Note that full access to the partyTable, contextTable,
          -- aclTable, and viewTable gives a manager the ability to
          -- configure any parties with any/all capabilities (the
          -- equivalent of "root" access).  A lesser manager can be
          -- given access only to the partyTable so that it can
          -- maintain its own parties, but not increase/decrease
          -- their capabilities.  Such a lesser manager can also
          -- create new parties but they are of no use to it.


          -- object assignments

          partyMIBObjects
                         OBJECT IDENTIFIER ::= { partyMIB 2 }

          -- the SNMPv2 party database group

          snmpParties    OBJECT IDENTIFIER ::= { partyMIBObjects 1 }

          partyTable OBJECT-TYPE
              SYNTAX      SEQUENCE OF PartyEntry
              MAX-ACCESS  not-accessible
              STATUS      current
              DESCRIPTION
                      "The SNMPv2 Party database."
              ::= { snmpParties 1 }

          partyEntry OBJECT-TYPE
              SYNTAX      PartyEntry
              MAX-ACCESS  not-accessible
              STATUS      current
              DESCRIPTION
                      "Locally held information about a particular
                      SNMPv2 party."
              INDEX      { IMPLIED partyIdentity }
              ::= { partyTable 1 }


          PartyEntry ::=
              SEQUENCE {
                  partyIdentity        Party,
                  partyIndex           INTEGER,
                  partyTDomain         OBJECT IDENTIFIER,
                  partyTAddress        TAddress,
                  partyMaxMessageSize  INTEGER,
                  partyLocal           TruthValue,
                  partyAuthProtocol    OBJECT IDENTIFIER,
                  partyAuthClock       Clock,
                  partyAuthPrivate     OCTET STRING,
                  partyAuthPublic      OCTET STRING,
                  partyAuthLifetime    INTEGER,
                  partyPrivProtocol    OBJECT IDENTIFIER,
                  partyPrivPrivate     OCTET STRING,
                  partyPrivPublic      OCTET STRING,
                  partyCloneFrom       Party,
                  partyStorageType     StorageType,
                  partyStatus          RowStatus
              }

          partyIdentity OBJECT-TYPE
              SYNTAX      Party
              MAX-ACCESS  not-accessible
              STATUS      current
              DESCRIPTION
                      "A party identifier uniquely identifying a
                      particular SNMPv2 party."
              ::= { partyEntry 1 }

          partyIndex OBJECT-TYPE
              SYNTAX      INTEGER (1..65535)
              MAX-ACCESS  read-only
              STATUS      current
              DESCRIPTION
                      "A unique value for each SNMPv2 party.  The value
                      for each SNMPv2 party must remain constant at
                      least from one re-initialization of the entity's
                      network management system to the next re-
                      initialization."
              ::= { partyEntry 2 }


          partyTDomain OBJECT-TYPE
              SYNTAX      OBJECT IDENTIFIER
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                      "Indicates the kind of transport service by which
                      the party receives network management traffic."
              DEFVAL      { snmpUDPDomain }
              ::= { partyEntry 3 }

          partyTAddress OBJECT-TYPE
              SYNTAX      TAddress
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                      "The transport service address by which the party
                      receives network management traffic, formatted
                      according to the corresponding value of
                      partyTDomain.  For snmpUDPDomain, partyTAddress is
                      formatted as a 4-octet IP Address concatenated
                      with a 2-octet UDP port number."
              DEFVAL      { '000000000000'H }
              ::= { partyEntry 4 }

          partyMaxMessageSize OBJECT-TYPE
              SYNTAX      INTEGER (484..65507)
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                      "The maximum length in octets of a SNMPv2 message
                      which this party will accept.  For parties which
                      execute at an agent, the agent initializes this
                      object to the maximum length supported by the
                      agent, and does not let the object be set to any
                      larger value.  For parties which do not execute at
                      the agent, the agent must allow the manager to set
                      this object to any legal value, even if it is
                      larger than the agent can generate."
              DEFVAL      { 484 }
              ::= { partyEntry 5 }


          partyLocal OBJECT-TYPE
              SYNTAX      TruthValue
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                      "An indication of whether this party executes at
                      this SNMPv2 entity.  If this object has a value of
                      true(1), then the SNMPv2 entity will listen for
                      SNMPv2 messages on the partyTAddress associated
                      with this party.  If this object has the value
                      false(2), then the SNMPv2 entity will not listen
                      for SNMPv2 messages on the partyTAddress
                      associated with this party."
              DEFVAL      { false }
              ::= { partyEntry 6 }

          partyAuthProtocol OBJECT-TYPE
              SYNTAX      OBJECT IDENTIFIER
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                      "The authentication protocol by which all messages
                      generated by the party are authenticated as to
                      origin and integrity.  The value noAuth signifies
                      that messages generated by the party are not
                      authenticated.

                      Once an instance of this object is created, its
                      value can not be changed."
              DEFVAL      { v2md5AuthProtocol }
              ::= { partyEntry 7 }


          partyAuthClock OBJECT-TYPE
              SYNTAX      Clock
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                      "The authentication clock which represents the
                      local notion of the current time specific to the
                      party.  This value must not be decremented unless
                      the party's private authentication key is changed
                      simultaneously."
              DEFVAL      { 0 }
              ::= { partyEntry 8 }


          partyAuthPrivate OBJECT-TYPE
              SYNTAX      OCTET STRING
                          -- for v2md5AuthProtocol: (SIZE (16))
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                      "An encoding of the party's private authentication
                      key which may be needed to support the
                      authentication protocol.  Although the value of
                      this variable may be altered by a management
                      operation (e.g., a SNMPv2 Set-Request), its value
                      can never be retrieved by a management operation:
                      when read, the value of this variable is the zero
                      length OCTET STRING.

                      The private authentication key is NOT directly
                      represented by the value of this variable, but
                      rather it is represented according to an encoding.
                      This encoding is the bitwise exclusive-OR of the
                      old key with the new key, i.e., of the old private
                      authentication key (prior to the alteration) with
                      the new private authentication key (after the
                      alteration).  Thus, when processing a received
                      protocol Set operation, the new private
                      authentication key is obtained from the value of
                      this variable as the result of a bitwise
                      exclusive-OR of the variable's value and the old
                      private authentication key.  In calculating the
                      exclusive-OR, if the old key is shorter than the
                      new key, zero-valued padding is appended to the
                      old key.  If no value for the old key exists, a
                      zero-length OCTET STRING is used in the
                      calculation."
              DEFVAL      { ''H }     -- the empty string
              ::= { partyEntry 9 }


          partyAuthPublic OBJECT-TYPE
              SYNTAX      OCTET STRING
                          -- for v2md5AuthProtocol: (SIZE (0..16))
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                      "A publically-readable value for the party.

                      Depending on the party's authentication protocol,
                      this value may be needed to support the party's
                      authentication protocol.  Alternatively, it may be
                      used by a manager during the procedure for
                      altering secret information about a party.  (For
                      example, by altering the value of an instance of
                      this object in the same SNMPv2 Set-Request used to
                      update an instance of partyAuthPrivate, a
                      subsequent Get-Request can determine if the Set-
                      Request was successful in the event that no
                      response to the Set-Request is received, see [4].)

                      The length of the value is dependent on the
                      party's authentication protocol.  If not used by
                      the authentication protocol, it is recommended
                      that agents support values of any length up to and
                      including the length of the corresponding
                      partyAuthPrivate object."
              DEFVAL      { ''H }      -- the empty string
              ::= { partyEntry 10 }


          partyAuthLifetime OBJECT-TYPE
              SYNTAX      INTEGER (0..2147483647)
              UNITS       "seconds"
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                      "The lifetime (in units of seconds) which
                      represents an administrative upper bound on
                      acceptable delivery delay for protocol messages
                      generated by the party.

                      Once an instance of this object is created, its
                      value can not be changed."
              DEFVAL      { 300 }
              ::= { partyEntry 11 }

          partyPrivProtocol OBJECT-TYPE
              SYNTAX      OBJECT IDENTIFIER
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                      "The privacy protocol by which all protocol
                      messages received by the party are protected from
                      disclosure.  The value noPriv signifies that
                      messages received by the party are not protected.

                      Once an instance of this object is created, its
                      value can not be changed."
              DEFVAL      { noPriv }
              ::= { partyEntry 12 }


          partyPrivPrivate OBJECT-TYPE
              SYNTAX      OCTET STRING
                          -- for desPrivProtocol: (SIZE (16))
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                      "An encoding of the party's private encryption key
                      which may be needed to support the privacy
                      protocol.  Although the value of this variable may
                      be altered by a management operation (e.g., a
                      SNMPv2 Set-Request), its value can never be
                      retrieved by a management operation: when read,
                      the value of this variable is the zero length
                      OCTET STRING.

                      The private encryption key is NOT directly
                      represented by the value of this variable, but
                      rather it is represented according to an encoding.
                      This encoding is the bitwise exclusive-OR of the
                      old key with the new key, i.e., of the old private
                      encryption key (prior to the alteration) with the
                      new private encryption key (after the alteration).
                      Thus, when processing a received protocol Set
                      operation, the new private encryption key is
                      obtained from the value of this variable as the
                      result of a bitwise exclusive-OR of the variable's
                      value and the old private encryption key.  In
                      calculating the exclusive-OR, if the old key is
                      shorter than the new key, zero-valued padding is
                      appended to the old key.  If no value for the old
                      key exists, a zero-length OCTET STRING is used in
                      the calculation."
              DEFVAL      { ''H }     -- the empty string
              ::= { partyEntry 13 }


          partyPrivPublic OBJECT-TYPE
              SYNTAX      OCTET STRING
                          -- for desPrivProtocol: (SIZE (0..16))
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                      "A publically-readable value for the party.

                      Depending on the party's privacy protocol, this
                      value may be needed to support the party's privacy
                      protocol.  Alternatively, it may be used by a
                      manager as a part of its procedure for altering
                      secret information about a party.  (For example,
                      by altering the value of an instance of this
                      object in the same SNMPv2 Set-Request used to
                      update an instance of partyPrivPrivate, a
                      subsequent Get-Request can determine if the Set-
                      Request was successful in the event that no
                      response to the Set-Request is received, see [4].)

                      The length of the value is dependent on the
                      party's privacy protocol.  If not used by the
                      privacy protocol, it is recommended that agents
                      support values of any length up to and including
                      the length of the corresponding partyPrivPrivate
                      object."
              DEFVAL      { ''H }     -- the empty string
              ::= { partyEntry 14 }


          partyCloneFrom OBJECT-TYPE
              SYNTAX      Party
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                      "The identity of a party to clone authentication
                      and privacy parameters from.  When read, the value
                      { 0 0 } is returned.

                      This value must be written exactly once, when the
                      associated instance of partyStatus either does not
                      exist or has the value `notReady'.  When written,
                      the value identifies a party, the cloning party,
                      whose status column has the value `active'.  The
                      cloning party is used in two ways.

                      One, if instances of the following objects do not
                      exist for the party being created, then they are
                      created with values identical to those of the
                      corresponding objects for the cloning party:

                           partyAuthProtocol
                           partyAuthPublic
                           partyAuthLifetime
                           partyPrivProtocol
                           partyPrivPublic

                      Two, instances of the following objects are
                      updated using the corresponding values of the
                      cloning party:

                           partyAuthPrivate
                           partyPrivPrivate

                      (e.g., the value of the cloning party's instance
                      of the partyAuthPrivate object is XOR'd with the
                      value of the partyAuthPrivate instances of the
                      party being created.)"
              ::= { partyEntry 15 }


          partyStorageType OBJECT-TYPE
              SYNTAX      StorageType
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                      "The storage type for this conceptual row in the
                      partyTable."
              DEFVAL      { nonVolatile }
              ::= { partyEntry 16 }

          partyStatus OBJECT-TYPE
              SYNTAX      RowStatus
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                      "The status of this conceptual row in the
                      partyTable.

                      A party is not qualified for activation until
                      instances of all columns of its partyEntry row
                      have an appropriate value.  In particular:

                        A value must be written to the Party's
                        partyCloneFrom object.

                        If the Party's partyAuthProtocol object has the
                        value md5AuthProtocol, then the corresponding
                        instance of partyAuthPrivate must contain a
                        secret of the appropriate length.  Further, at
                        least one management protocol set operation
                        updating the value of the party's
                        partyAuthPrivate object must be successfully
                        processed, before the partyAuthPrivate column is
                        considered appropriately configured.

                        If the Party's partyPrivProtocol object has the
                        value desPrivProtocol, then the corresponding
                        instance of partyPrivPrivate must contain a
                        secret of the appropriate length.  Further, at
                        least one management protocol set operation
                        updating the value of the party's
                        partyPrivPrivate object must be successfully
                        processed, before the partyPrivPrivate column is
                        considered appropriately configured.


                     Until instances of all corresponding columns are
                     appropriately configured, the value of the
                     corresponding instance of the partyStatus column is
                     `notReady'."
              ::= { partyEntry 17 }


          -- the SNMPv2 contexts database group

          snmpContexts   OBJECT IDENTIFIER ::= { partyMIBObjects 2 }

          contextTable OBJECT-TYPE
              SYNTAX      SEQUENCE OF ContextEntry
              MAX-ACCESS  not-accessible
              STATUS      current
              DESCRIPTION
                      "The SNMPv2 Context database."
              ::= { snmpContexts 1 }

          contextEntry OBJECT-TYPE
              SYNTAX      ContextEntry
              MAX-ACCESS  not-accessible
              STATUS      current
              DESCRIPTION
                      "Locally held information about a particular
                      SNMPv2 context."
              INDEX      { IMPLIED contextIdentity }
              ::= { contextTable 1 }

          ContextEntry ::=
              SEQUENCE {
                  contextIdentity         Context,
                  contextIndex            INTEGER,
                  contextLocal            TruthValue,
                  contextViewIndex        INTEGER,
                  contextLocalEntity      OCTET STRING,
                  contextLocalTime        OBJECT IDENTIFIER,
                  contextProxyDstParty    Party,
                  contextProxySrcParty    Party,
                  contextProxyContext     OBJECT IDENTIFIER,
                  contextStorageType      StorageType,
                  contextStatus           RowStatus
              }


          contextIdentity OBJECT-TYPE
              SYNTAX      Context
              MAX-ACCESS  not-accessible
              STATUS      current
              DESCRIPTION
                      "A context identifier uniquely identifying a
                      particular SNMPv2 context."
              ::= { contextEntry 1 }

          contextIndex OBJECT-TYPE
              SYNTAX      INTEGER (1..65535)
              MAX-ACCESS  read-only
              STATUS      current
              DESCRIPTION
                      "A unique value for each SNMPv2 context.  The
                      value for each SNMPv2 context must remain constant
                      at least from one re-initialization of the
                      entity's network management system to the next
                      re-initialization."
              ::= { contextEntry 2 }

          contextLocal OBJECT-TYPE
              SYNTAX      TruthValue
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                      "An indication of whether this context is realized
                      by this SNMPv2 entity."
              DEFVAL      { true }
              ::= { contextEntry 3 }


          contextViewIndex OBJECT-TYPE
              SYNTAX      INTEGER (0..65535)
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                      "If the value of an instance of this object is
                      zero, then this corresponding conceptual row in
                      the contextTable refers to a SNMPv2 context which
                      identifies a proxy relationship; the values of the
                      corresponding instances of the
                      contextProxyDstParty, contextProxySrcParty, and
                      contextProxyContext objects provide further
                      information on the proxy relationship.

                      Otherwise, if the value of an instance of this
                      object is greater than zero, then this
                      corresponding conceptual row in the contextTable
                      refers to a SNMPv2 context which identifies a MIB
                      view of a locally accessible entity; the value of
                      the instance identifies the particular MIB view
                      which has the same value of viewIndex; and the
                      value of the corresponding instances of the
                      contextLocalEntity and contextLocalTime objects
                      provide further information on the local entity
                      and its temporal domain."
              ::= { contextEntry 4 }


          contextLocalEntity OBJECT-TYPE
              SYNTAX      OCTET STRING
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                      "If the value of the corresponding instance of the
                      contextViewIndex is greater than zero, then the
                      value of an instance of this object identifies the
                      local entity whose management information is in
                      the SNMPv2 context's MIB view.  The empty string
                      indicates that the MIB view contains the SNMPv2
                      entity's own local management information;
                      otherwise, a non-empty string indicates that the
                      MIB view contains management information of some
                      other local entity, e.g., 'Repeater1'."
              DEFVAL      { ''H }     -- the empty string
              ::= { contextEntry 5 }

          contextLocalTime OBJECT-TYPE
              SYNTAX      OBJECT IDENTIFIER
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                      "If the value of the corresponding instance of the
                      contextViewIndex is greater than zero, then the
                      value of an instance of this object identifies the
                      temporal context of the management information in
                      the MIB view."
              DEFVAL      { currentTime }
              ::= { contextEntry 6 }


          contextProxyDstParty OBJECT-TYPE
              SYNTAX      Party
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                      "If the value of the corresponding instance of the
                      contextViewIndex is equal to zero, then the value
                      of an instance of this object identifies a SNMPv2
                      party which is the proxy destination of a proxy
                      relationship.

                      If the value of the corresponding instance of the
                      contextViewIndex is greater than zero, then the
                      value of an instance of this object is { 0 0 }."
              ::= { contextEntry 7 }

          contextProxySrcParty OBJECT-TYPE
              SYNTAX      Party
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                      "If the value of the corresponding instance of the
                      contextViewIndex is equal to zero, then the value
                      of an instance of this object identifies a SNMPv2
                      party which is the proxy source of a proxy
                      relationship.

                      Interpretation of an instance of this object
                      depends upon the value of the transport domain
                      associated with the SNMPv2 party used as the proxy
                      destination in this proxy relationship.

                      If the value of the corresponding instance of the
                      contextViewIndex is greater than zero, then the
                      value of an instance of this object is { 0 0 }."
              ::= { contextEntry 8 }


          contextProxyContext OBJECT-TYPE
              SYNTAX      OBJECT IDENTIFIER
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                      "If the value of the corresponding instance of the
                      contextViewIndex is equal to zero, then the value
                      of an instance of this object identifies the
                      context of a proxy relationship.

                      Interpretation of an instance of this object
                      depends upon the value of the transport domain
                      associated with the SNMPv2 party used as the proxy
                      destination in this proxy relationship.

                      If the value of the corresponding instance of the
                      contextViewIndex is greater than zero, then the
                      value of an instance of this object is { 0 0 }."
              ::= { contextEntry 9 }

          contextStorageType OBJECT-TYPE
              SYNTAX      StorageType
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                      "The storage type for this conceptual row in the
                      contextTable."
              DEFVAL      { nonVolatile }
              ::= { contextEntry 10 }


          contextStatus OBJECT-TYPE
              SYNTAX      RowStatus
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                      "The status of this conceptual row in the
                      contextTable.

                      A context is not qualified for activation until
                      instances of all corresponding columns have the
                      appropriate value.  In  particular, if the
                      context's contextViewIndex is greater than zero,
                      then the viewStatus column of the associated
                      conceptual row(s) in the viewTable must have the
                      value `active'.  Until instances of all
                      corresponding columns are appropriately
                      configured, the value of the corresponding
                      instance of the contextStatus column is
                      `notReady'."
              ::= { contextEntry 11 }


          -- the SNMPv2 access privileges database group

          snmpAccess     OBJECT IDENTIFIER ::= { partyMIBObjects 3 }

          aclTable OBJECT-TYPE
              SYNTAX      SEQUENCE OF AclEntry
              MAX-ACCESS  not-accessible
              STATUS      current
              DESCRIPTION
                      "The access privileges database."
              ::= { snmpAccess 1 }

          aclEntry OBJECT-TYPE
              SYNTAX      AclEntry
              MAX-ACCESS  not-accessible
              STATUS      current
              DESCRIPTION
                      "The access privileges for a particular subject
                      SNMPv2 party when asking a particular target
                      SNMPv2 party to access a particular SNMPv2
                      context."
              INDEX      { aclTarget, aclSubject, aclResources }
              ::= { aclTable 1 }

          AclEntry ::=
              SEQUENCE {
                  aclTarget        INTEGER,
                  aclSubject       INTEGER,
                  aclResources     INTEGER,
                  aclPrivileges    INTEGER,
                  aclStorageType   StorageType,
                  aclStatus        RowStatus
              }


          aclTarget OBJECT-TYPE
              SYNTAX      INTEGER (1..65535)
              MAX-ACCESS  not-accessible
              STATUS      current
              DESCRIPTION
                      "The value of an instance of this object
                      identifies a SNMPv2 party which is the target of
                      an access control policy, and has the same value
                      as the instance of the partyIndex object for that
                      party."
              ::= { aclEntry 1 }

          aclSubject OBJECT-TYPE
              SYNTAX      INTEGER (1..65535)
              MAX-ACCESS  not-accessible
              STATUS      current
              DESCRIPTION
                      "The value of an instance of this object
                      identifies a SNMPv2 party which is the subject of
                      an access control policy, and has the same value
                      as the instance of the partyIndex object for that
                      SNMPv2 party."
              ::= { aclEntry 2 }

          aclResources OBJECT-TYPE
              SYNTAX      INTEGER (1..65535)
              MAX-ACCESS  not-accessible
              STATUS      current
              DESCRIPTION
                      "The value of an instance of this object
                      identifies a SNMPv2 context in an access control
                      policy, and has the same value as the instance of
                      the contextIndex object for that SNMPv2 context."
              ::= { aclEntry 3 }


          aclPrivileges OBJECT-TYPE
              SYNTAX      INTEGER (0..255)
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                      "The access privileges which govern what
                      management operations a particular target party
                      may perform with respect to a particular SNMPv2
                      context when requested by a particular subject
                      party.  These privileges are specified as a sum of
                      values, where each value specifies a SNMPv2 PDU
                      type by which the subject party may request a
                      permitted operation.  The value for a particular
                      PDU type is computed as 2 raised to the value of
                      the ASN.1 context-specific tag for the appropriate
                      SNMPv2 PDU type.  The values (for the tags defined
                      in [5]) are defined in [3] as:

                       Get         :   1
                       GetNext     :   2
                       Response    :   4
                       Set         :   8
                       unused      :  16
                       GetBulk     :  32
                       Inform      :  64
                       SNMPv2-Trap : 128

                      The null set is represented by the value zero."
              DEFVAL      { 35 }      -- Get, Get-Next & Get-Bulk
              ::= { aclEntry 4 }

          aclStorageType OBJECT-TYPE
              SYNTAX      StorageType
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                      "The storage type for this conceptual row in the
                      aclTable."
              DEFVAL      { nonVolatile }
              ::= { aclEntry 5 }


          aclStatus OBJECT-TYPE
              SYNTAX      RowStatus
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                      "The status of this conceptual row in the
                      aclTable."
              ::= { aclEntry 6 }


          -- the MIB view database group

          snmpViews      OBJECT IDENTIFIER ::= { partyMIBObjects 4 }

          viewTable OBJECT-TYPE
              SYNTAX      SEQUENCE OF ViewEntry
              MAX-ACCESS  not-accessible
              STATUS      current
              DESCRIPTION
                      "Locally held information about the MIB views
                      known to this SNMPv2 entity.

                      Each SNMPv2 context which is locally accessible
                      has a single MIB view which is defined by two
                      collections of view subtrees: the included view
                      subtrees, and the excluded view subtrees.  Every
                      such subtree, both included and excluded, is
                      defined in this table.

                      To determine if a particular object instance is in
                      a particular MIB view, compare the object
                      instance's OBJECT IDENTIFIER with each of the MIB
                      view's entries in this table.  If none match, then
                      the object instance is not in the MIB view.  If
                      one or more match, then the object instance is
                      included in, or excluded from, the MIB view
                      according to the value of viewType in the entry
                      whose value of viewSubtree has the most sub-
                      identifiers.  If multiple entries match and have
                      the same number of sub-identifiers, then the
                      lexicographically greatest instance of viewType
                      determines the inclusion or exclusion.

                      An object instance's OBJECT IDENTIFIER X matches
                      an entry in this table when the number of sub-
                      identifiers in X is at least as many as in the
                      value of viewSubtree for the entry, and each sub-
                      identifier in the value of viewSubtree matches its
                      corresponding sub-identifier in X.  Two sub-
                      identifiers match either if the corresponding bit
                      of viewMask is zero (the 'wild card' value), or if
                      they are equal.

                      Due to this 'wild card' capability, we introduce


                      the term, a 'family' of view subtrees, to refer to
                      the set of subtrees defined by a particular
                      combination of values of viewSubtree and viewMask.
                      In the case where no 'wild card' is defined in
                      viewMask, the family of view subtrees reduces to a
                      single view subtree."
              ::= { snmpViews 1 }

          viewEntry OBJECT-TYPE
              SYNTAX      ViewEntry
              MAX-ACCESS  not-accessible
              STATUS      current
              DESCRIPTION
                      "Information on a particular family of view
                      subtrees included in or excluded from a particular
                      SNMPv2 context's MIB view.

                      Implementations must not restrict the number of
                      families of view subtrees for a given MIB view,
                      except as dictated by resource constraints on the
                      overall number of entries in the viewTable."
              INDEX      { viewIndex, IMPLIED viewSubtree }
              ::= { viewTable 1 }

          ViewEntry ::=
              SEQUENCE {
                  viewIndex        INTEGER,
                  viewSubtree      OBJECT IDENTIFIER,
                  viewMask         OCTET STRING,
                  viewType         INTEGER,
                  viewStorageType  StorageType,
                  viewStatus       RowStatus
              }


          viewIndex OBJECT-TYPE
              SYNTAX      INTEGER (1..65535)
              MAX-ACCESS  not-accessible
              STATUS      current
              DESCRIPTION
                      "A unique value for each MIB view.  The value for
                      each MIB view must remain constant at least from
                      one re-initialization of the entity's network
                      management system to the next re-initialization."
              ::= { viewEntry 1 }

          viewSubtree OBJECT-TYPE
              SYNTAX      OBJECT IDENTIFIER
              MAX-ACCESS  not-accessible
              STATUS      current
              DESCRIPTION
                      "A MIB subtree."
              ::= { viewEntry 2 }

          viewMask OBJECT-TYPE
              SYNTAX      OCTET STRING (SIZE (0..16))
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                      "The bit mask which, in combination with the
                      corresponding instance of viewSubtree, defines a
                      family of view subtrees.

                      Each bit of this bit mask corresponds to a sub-
                      identifier of viewSubtree, with the most
                      significant bit of the i-th octet of this octet
                      string value (extended if necessary, see below)
                      corresponding to the (8*i - 7)-th sub-identifier,
                      and the least significant bit of the i-th octet of
                      this octet string corresponding to the (8*i)-th
                      sub-identifier, where i is in the range 1 through
                      16.

                      Each bit of this bit mask specifies whether or not
                      the corresponding sub-identifiers must match when
                      determining if an OBJECT IDENTIFIER is in this
                      family of view subtrees; a '1' indicates that an
                      exact match must occur; a '0' indicates 'wild
                      card', i.e., any sub-identifier value matches.


                      Thus, the OBJECT IDENTIFIER X of an object
                      instance is contained in a family of view subtrees
                      if the following criteria are met:

                           for each sub-identifier of the value of
                           viewSubtree, either:

                                the i-th bit of viewMask is 0, or

                                the i-th sub-identifier of X is equal to
                                the i-th sub-identifier of the value of
                                viewSubtree.

                      If the value of this bit mask is M bits long and
                      there are more than M sub-identifiers in the
                      corresponding instance of viewSubtree, then the
                      bit mask is extended with 1's to be the required
                      length.

                      Note that when the value of this object is the
                      zero-length string, this extension rule results in
                      a mask of all-1's being used (i.e., no 'wild
                      card'), and the family of view subtrees is the one
                      view subtree uniquely identified by the
                      corresponding instance of viewSubtree."
              DEFVAL      { ''H }
              ::= { viewEntry 3 }


          viewType OBJECT-TYPE
              SYNTAX      INTEGER  {
                              included(1),
                              excluded(2)
                          }
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                      "The status of a particular family of view
                      subtrees within the particular SNMPv2 context's
                      MIB view.  The value 'included(1)' indicates that
                      the corresponding instances of viewSubtree and
                      viewMask define a family of view subtrees included
                      in the MIB view.  The  value 'excluded(2)'
                      indicates that the corresponding instances of
                      viewSubtree and viewMask define a family of view
                      subtrees excluded from the MIB view."
              DEFVAL      { included }
              ::= { viewEntry 4 }

          viewStorageType OBJECT-TYPE
              SYNTAX      StorageType
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                      "The storage type for this conceptual row in the
                      viewTable."
              DEFVAL      { nonVolatile }
              ::= { viewEntry 5 }

          viewStatus OBJECT-TYPE
              SYNTAX      RowStatus
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                      "The status of this conceptual row in the
                      viewTable."
              ::= { viewEntry 6 }


          -- conformance information

          partyMIBConformance
                         OBJECT IDENTIFIER ::= { partyMIB 3 }

          partyMIBCompliances
                         OBJECT IDENTIFIER ::= { partyMIBConformance 1 }
          partyMIBGroups
                         OBJECT IDENTIFIER ::= { partyMIBConformance 2 }

          -- compliance statements

          unSecurableCompliance MODULE-COMPLIANCE
              STATUS  current
              DESCRIPTION
                      "The compliance statement for SNMPv2 entities
                      which implement the Party MIB, but do not support
                      any authentication or privacy protocols (i.e.,
                      only the noAuth and noPriv protocols are
                      supported)."
              MODULE  -- this module
                  MANDATORY-GROUPS { partyMIBGroup }
              ::= { partyMIBCompliances 1 }

          partyNoPrivacyCompliance MODULE-COMPLIANCE
              STATUS  current
              DESCRIPTION
                      "The compliance statement for SNMPv2 entities
                      which implement the Party MIB, and support an
                      authentication protocol, but do not support any
                      privacy protocols (i.e., only the noAuth,
                      v2md5AuthProtocol, and noPriv protocols are
                      supported)."
              MODULE  -- this module
                  MANDATORY-GROUPS { partyMIBGroup }
              ::= { partyMIBCompliances 2 }


          partyPrivacyCompliance MODULE-COMPLIANCE
              STATUS  current
              DESCRIPTION
                      "The compliance statement for SNMPv2 entities
                      which implement the Party MIB, support an
                      authentication protocol, and support a privacy
                      protocol ONLY for the purpose of accessing
                      security parameters.

                      For all aclTable entries authorizing a subject
                      and/or target SNMPv2 party whose privacy protocol
                      is desPrivProtocol, to be used in accessing a
                      SNMPv2 context, the MIB view for that SNMPv2
                      context shall include only those objects
                      subordinate to partyMIBObjects, or a subset
                      thereof, e.g.,

                           viewSubtree = { partyMIBObjects }
                           viewMask    = ''H
                           viewType    = { included }

                      Any attempt to configure an entry in the
                      partyTable, the contextTable, the aclTable or the
                      viewTable such that a party using the
                      desPrivProtocol would be authorized for use in
                      accessing objects outside of the partyMIBObjects
                      subtree shall result in the appropriate error
                      response (e.g., wrongValue or inconsistentValue)."
              MODULE  -- this module
                  MANDATORY-GROUPS { partyMIBGroup }
              ::= { partyMIBCompliances 3 }


          fullPrivacyCompliance MODULE-COMPLIANCE
              STATUS  current
              DESCRIPTION
                      "The compliance statement for SNMPv2 entities
                      which implement the Party MIB, support an
                      authentication protocol, and support a privacy
                      protocol without restrictions on its use."
              MODULE  -- this module
                  MANDATORY-GROUPS { partyMIBGroup }
              ::= { partyMIBCompliances 4 }

        -- units of conformance

        partyMIBGroup OBJECT-GROUP
            OBJECTS { partyIndex, partyTDomain, partyTAddress,
                      partyMaxMessageSize, partyLocal,
                      partyAuthProtocol, partyAuthClock,
                      partyAuthPrivate, partyAuthPublic,
                      partyAuthLifetime, partyPrivProtocol,
                      partyPrivPrivate, partyPrivPublic,
                      partyStorageType, partyStatus,
                      partyCloneFrom,
                      contextIndex, contextLocal,
                      contextViewIndex, contextLocalEntity,
                      contextLocalTime, contextStorageType,
                      contextStatus, aclTarget, aclSubject,
                      aclPrivileges, aclStorageType, aclStatus,
                      viewMask, viewType, viewStorageType, viewStatus }
            STATUS  current
            DESCRIPTION
                    "The collection of objects allowing the
                    description and configuration of SNMPv2 parties.

                    Note that objects which support proxy
                    relationships are not included in this conformance
                    group."
            ::= { partyMIBGroups 1 }

END
SNMPv2-MIB DEFINITIONS ::= BEGIN

          IMPORTS
              MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
              ObjectName, Integer32, Counter32, snmpModules
                  FROM SNMPv2-SMI
              TruthValue, DisplayString, TestAndIncr, TimeStamp
                  FROM SNMPv2-TC
              MODULE-COMPLIANCE, OBJECT-GROUP
                  FROM SNMPv2-CONF
              system, ifIndex, egpNeighAddr
                  FROM RFC1213-MIB
              partyEntry
                  FROM SNMPv2-PARTY-MIB;

          snmpMIB MODULE-IDENTITY
              LAST-UPDATED "9304010000Z"
              ORGANIZATION "IETF SNMPv2 Working Group"
              CONTACT-INFO
                      "        Marshall T. Rose

                       Postal: Dover Beach Consulting, Inc.
                               420 Whisman Court
                               Mountain View, CA  94043-2186
                               US

                          Tel: +1 415 968 1052
                          Fax: +1 415 968 2510

                       E-mail: mrose@dbc.mtview.ca.us"
              DESCRIPTION
                      "The MIB module for SNMPv2 entities."
              ::= { snmpModules 1 }

          snmpMIBObjects OBJECT IDENTIFIER ::= { snmpMIB 1 }


          -- the SNMPv2 statistics group
          --
          -- a collection of objects providing basic instrumentation of
          -- the SNMPv2 entity.

          -- A Case diagram[4] relating these objects is:
          --
          --  \v/   transport service
          --   |
          -- ==+==  snmpStatsPackets
          --   |
          --   +==> snmpStats30Something
          --   |
          --   +==> snmpStatsEncodingErrors
          --   |
          --   +==> snmpStatsUnknownDstParties
          --   |
          --   +==> snmpStatsDstPartyMismatches
          --   |
          --   +==> snmpStatsUnknownSrcParties
          --   |
          --   +==> snmpStatsBadAuths
          --   |
          --   +==> snmpStatsNotInLifetimes
          --   |
          --   +==> snmpStatsWrongDigestValues
          --   |
          --   +==> snmpStatsUnknownContexts
          --   |
          --   +==> snmpStatsBadOperations
          --   |
          --   +==> snmpStatsSilentDrops
          --   |
          -- ===== sink

          snmpStats      OBJECT IDENTIFIER ::= { snmpMIBObjects 1 }


          snmpStatsPackets OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     current
              DESCRIPTION
                      "The total number of packets received by the
                      SNMPv2 entity from the transport service."
              REFERENCE
                      "Derived from RFC1213-MIB.snmpInPkts."
              ::= { snmpStats 1 }

          snmpStats30Something OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     current
              DESCRIPTION
                      "The total number of packets which had an initial
                      octet with a value of 30 hexadecimal received by a
                      SNMPv2 entity which does not support SNMPv1.
                      (Such packets are possibly misdirected SNMPv1
                      Messages.)"
              REFERENCE
                      "Derived from RFC1213-MIB.snmpInASNParseErrs."
              ::= { snmpStats 2 }

          snmpStatsEncodingErrors OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     current
              DESCRIPTION
                      "The total number of packets received by the
                      SNMPv2 entity which were improperly encoded or had
                      invalid syntax."
              REFERENCE
                      "Derived from RFC1213-MIB.snmpInASNParseErrs."
              ::= { snmpStats 3 }


          snmpStatsUnknownDstParties OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     current
              DESCRIPTION
                      "The total number of SnmpPrivMsgs delivered to the
                      SNMPv2 entity for which the privDst field was not
                      a known local party."
              ::= { snmpStats 4 }

          snmpStatsDstPartyMismatches OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     current
              DESCRIPTION
                      "The total number of SnmpPrivMsgs delivered to the
                      SNMPv2 entity which contained a SnmpAuthMsg for
                      which the authData.dstParty field did not match
                      the privDst field in the SnmpPrivMsg."
              ::= { snmpStats 5 }

          snmpStatsUnknownSrcParties OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     current
              DESCRIPTION
                      "The total number of SnmpAuthMsgs delivered to the
                      SNMPv2 entity for which the authData.srcParty
                      field was not a known remote party."
              ::= { snmpStats 6 }

          snmpStatsBadAuths OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     current
              DESCRIPTION
                      "The total number of SnmpAuthMsgs delivered to the
                      SNMPv2 entity which contained an authInfo field
                      which was inconsistent with the authentication
                      protocol associated with the source party."
              ::= { snmpStats 7 }


          snmpStatsNotInLifetimes OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     current
              DESCRIPTION
                      "The total number of SnmpAuthMsgs delivered to the
                      SNMPv2 entity which were deemed unauthentic due to
                      their authInfo.authSrcTimestamp field being less
                      than the source party's clock plus lifetime."
              ::= { snmpStats 8 }

          snmpStatsWrongDigestValues OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     current
              DESCRIPTION
                      "The total number of SnmpAuthMsgs delivered to the
                      SNMPv2 entity which were deemed unauthentic due to
                      their authInfo.authDigest field being unequal to
                      the expected digest value."
              ::= { snmpStats 9 }

          snmpStatsUnknownContexts OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     current
              DESCRIPTION
                      "The total number of SnmpMgmtComs delivered to the
                      SNMPv2 entity for which the context field was not
                      a known SNMPv2 context."
              ::= { snmpStats 10 }

          snmpStatsBadOperations OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     current
              DESCRIPTION
                      "The total number of messages delivered to the
                      SNMPv2 entity which were silently dropped because
                      the PDU type referred to an operation not allowed
                      in the aclTable[5]."
              ::= { snmpStats 11 }


          snmpStatsSilentDrops OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     current
              DESCRIPTION
                      "The total number of GetRequest-PDUs,
                      GetNextRequest-PDUs, GetBulkRequest-PDUs,
                      SetRequest-PDUs, and InformRequest-PDUs delivered
                      to the SNMPv2 entity which were silently dropped
                      because the size of an reply containing an
                      alternate Response-PDU with an empty variable-
                      bindings field was greater than either a local
                      constraint or the maximum message size of the
                      request's source party."
              ::= { snmpStats 12 }


          -- the SNMPv1 statistics group
          --
          -- a collection of objects providing basic instrumentation of
          -- a SNMPv2 entity which also implements SNMPv1.

          -- A Case diagram[4] relating these objects
          -- (and those applicable objects in the snmpStats group)
          -- is:
          --
          --  \v/   transport service
          --   |
          -- ==+==  snmpStatsPackets
          --   |
          --   +==> snmpStatsEncodingErrors
          --   |
          --   +==> snmpV1BadCommunityNames
          --   |
          --   +==> snmpV1BadCommunityUses
          --   |
          -- ===== sink

          snmpV1         OBJECT IDENTIFIER ::= { snmpMIBObjects 2 }

          snmpV1BadCommunityNames OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     current
              DESCRIPTION
                      "The total number of SNMPv1 Messages delivered to
                      the SNMPv2 entity which used a community name not
                      known to the SNMPv2 entity."
              REFERENCE
                      "Derived from RFC1213-
                      MIB.snmpInBadCommunityNames."
              ::= { snmpV1 1 }


          snmpV1BadCommunityUses OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     current
              DESCRIPTION
                      "The total number of SNMPv1 Messages delivered to
                      SNMPv2 entity containing an operation which was
                      not allowed for the community named in the
                      Message."
              REFERENCE
                      "Derived from RFC1213-MIB.snmpInBadCommunityUses."
              ::= { snmpV1 2 }


          -- the object resource group
          --
          -- a collection of objects allowing a SNMPv2 entity acting in
          -- an agent role to describe its dynamically-configurable
          -- object resources.

          snmpOR         OBJECT IDENTIFIER ::= { snmpMIBObjects 3 }

          snmpORLastChange OBJECT-TYPE
              SYNTAX     TimeStamp
              MAX-ACCESS read-only
              STATUS     current
              DESCRIPTION
                      "The value of sysUpTime at the time of the most
                      recent change in state or value of any instance of
                      snmpORID."
              ::= { snmpOR 1 }

          snmpORTable OBJECT-TYPE
              SYNTAX     SEQUENCE OF SnmpOREntry
              MAX-ACCESS not-accessible
              STATUS     current
              DESCRIPTION
                      "The (conceptual) table listing the dynamically-
                      configurable object resources in a SNMPv2 entity
                      acting in an agent role.  SNMPv2 entities which do
                      not support dynamically-configurable object
                      resources will never have any instances of the
                      columnar objects in this table."
              ::= { snmpOR 2 }

          snmpOREntry OBJECT-TYPE
              SYNTAX     SnmpOREntry
              MAX-ACCESS not-accessible
              STATUS     current
              DESCRIPTION
                      "An entry (conceptual row) in the snmpORTable."
              INDEX      { snmpORIndex }
              ::= { snmpORTable 1 }


          SnmpOREntry ::= SEQUENCE {
              snmpORIndex                         Integer32,
              snmpORID                            OBJECT IDENTIFIER,
              snmpORDescr                         DisplayString
          }

          snmpORIndex OBJECT-TYPE
              SYNTAX     Integer32
              MAX-ACCESS not-accessible
              STATUS     current
              DESCRIPTION
                      "The auxiliary variable used for identifying
                      instances of the columnar objects in the
                      snmpORTable."
              ::= { snmpOREntry 1 }

          snmpORID OBJECT-TYPE
              SYNTAX     OBJECT IDENTIFIER
              MAX-ACCESS read-only
              STATUS     current
              DESCRIPTION
                      "An authoritative identification of one of the
                      dynamically-configurable object resources in a
                      SNMPv2 entity acting in an agent role.  This is
                      analogous to the sysObjectID object in MIB-II."
              ::= { snmpOREntry 2 }

          snmpORDescr OBJECT-TYPE
              SYNTAX     DisplayString
              MAX-ACCESS read-only
              STATUS     current
              DESCRIPTION
                      "A textual description of one of the dynamically-
                      configurable object resources in a SNMPv2 entity
                      acting in an agent role.  This is analogous to the
                      sysDescr object in MIB-II."
              ::= { snmpOREntry 3 }


          -- the traps group
          --
          -- a collection of objects which allow the SNMPv2 entity, when
          -- acting in an agent role, to be configured to generate
          -- SNMPv2-Trap-PDUs.

          snmpTrap       OBJECT IDENTIFIER ::= { snmpMIBObjects 4 }

          snmpTrapOID OBJECT-TYPE
              SYNTAX     OBJECT IDENTIFIER
              MAX-ACCESS not-accessible
              STATUS     current
              DESCRIPTION
                      "The authoritative identification of the trap
                      currently being sent.  This variable occurs as the
                      second varbind of a SNMPv2-Trap-PDU."
              ::= { snmpTrap 1 }

          snmpTrapTable OBJECT-TYPE
              SYNTAX     SEQUENCE OF SnmpTrapEntry
              MAX-ACCESS not-accessible
              STATUS     current
              DESCRIPTION
                      "A table which keeps track of how many traps have
                      been sent to each SNMPv2 entity."
              ::= { snmpTrap 2 }

          snmpTrapEntry OBJECT-TYPE
              SYNTAX     SnmpTrapEntry
              MAX-ACCESS not-accessible
              STATUS     current
              DESCRIPTION
                      "An entry which keeps track of how many traps have
                      been sent to a particular SNMPv2 entity."
              AUGMENTS   { partyEntry }
              ::= { snmpTrapTable 1 }

          SnmpTrapEntry ::= SEQUENCE {
              snmpTrapNumbers                     Counter32
          }


          snmpTrapNumbers OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     current
              DESCRIPTION
                      "The number of traps which have been sent to a
                      particular SNMPv2 party, since the last
                      initialization of the SNMPv2 entity, or the
                      creation of the SNMPv2 party, whichever occurred
                      most recently."
              ::= { snmpTrapEntry 1 }

          snmpTrapEnterprise OBJECT-TYPE
              SYNTAX     OBJECT IDENTIFIER
              MAX-ACCESS not-accessible
              STATUS     current
              DESCRIPTION
                      "The authoritative identification of the
                      enterprise associated with the trap currently
                      being sent.  When a SNMPv2 proxy agent is mapping
                      an RFC1157 Trap-PDU into a SNMPv2-Trap-PDU, this
                      variable occurs as the last varbind."
              ::= { snmpTrap 3 }


          snmpV2EnableAuthenTraps OBJECT-TYPE
              SYNTAX     TruthValue
              MAX-ACCESS read-write
              STATUS     current
              DESCRIPTION
                      "Indicates whether the SNMPv2 entity, when acting
                      in an agent role, is permitted to generate
                      authenticationFailure traps.  The value of this
                      object overrides any configuration information; as
                      such, it provides a means whereby all
                      authenticationFailure traps may be disabled.

                      Note that it is strongly recommended that this
                      object be stored in non-volatile memory so that it
                      remains constant between re-initializations of the
                      network management system."
              REFERENCE
                      "Derived from RFC1213-MIB.snmpEnableAuthenTraps."
              ::= { snmpTrap 4 }


          -- well-known traps

          snmpTraps      OBJECT IDENTIFIER ::= { snmpMIBObjects 5 }

          coldStart NOTIFICATION-TYPE
              STATUS  current
              DESCRIPTION
                      "A coldStart trap signifies that the SNMPv2
                      entity, acting in an agent role, is reinitializing
                      itself such that its configuration may be
                      altered."
              ::= { snmpTraps 1 }

          warmStart NOTIFICATION-TYPE
              STATUS  current
              DESCRIPTION
                      "A warmStart trap signifies that the SNMPv2
                      entity, acting in an agent role, is reinitializing
                      itself such that its configuration is unaltered."
              ::= { snmpTraps 2 }

          linkDown NOTIFICATION-TYPE
              OBJECTS { ifIndex }
              STATUS  current
              DESCRIPTION
                      "A linkDown trap signifies that the SNMPv2 entity,
                      acting in an agent role, recognizes a failure in
                      one of the communication links represented in its
                      configuration."
              ::= { snmpTraps 3 }

          linkUp NOTIFICATION-TYPE
              OBJECTS { ifIndex }
              STATUS  current
              DESCRIPTION
                      "A linkUp trap signifies that the SNMPv2 entity,
                      acting in an agent role, recognizes that one of
                      the communication links represented in its
                      configuration has come up."
              ::= { snmpTraps 4 }


          authenticationFailure NOTIFICATION-TYPE
              STATUS  current
              DESCRIPTION
                      "An authenticationFailure trap signifies that the
                      SNMPv2 entity, acting in an agent role, has
                      received a protocol message that is not properly
                      authenticated.  While all implementations of the
                      SNMPv2 must be capable of generating this trap,
                      the snmpV2EnableAuthenTraps object indicates
                      whether this trap will be generated."
              ::= { snmpTraps 5 }

          egpNeighborLoss NOTIFICATION-TYPE
              OBJECTS { egpNeighAddr }
              STATUS  current
              DESCRIPTION
                      "An egpNeighborLoss trap signifies that an EGP
                      neighbor has been marked down and the EGP peer
                      relationship no longer obtains."
              ::= { snmpTraps 6 }


          -- the set group
          --
          -- a collection of objects which allow several cooperating
          -- SNMPv2 entities, all acting in a manager role, to
          -- coordinate their use of the SNMPv2 set operation.

          snmpSet        OBJECT IDENTIFIER ::= { snmpMIBObjects 6 }

          snmpSetSerialNo OBJECT-TYPE
              SYNTAX     TestAndIncr
              MAX-ACCESS read-write
              STATUS     current
              DESCRIPTION
                      "An advisory lock used to allow several
                      cooperating SNMPv2 entities, all acting in a
                      manager role, to coordinate their use of the
                      SNMPv2 set operation.

                      This object is used for coarse-grain coordination.
                      To achieve fine-grain coordination, one or more
                      similar objects might be defined within each MIB
                      group, as appropriate."
              ::= { snmpSet 1 }


          -- conformance information

          snmpMIBConformance
                         OBJECT IDENTIFIER ::= { snmpMIB 2 }

          snmpMIBCompliances
                         OBJECT IDENTIFIER ::= { snmpMIBConformance 1 }
          snmpMIBGroups  OBJECT IDENTIFIER ::= { snmpMIBConformance 2 }

          -- compliance statements

          snmpMIBCompliance MODULE-COMPLIANCE
              STATUS  current
              DESCRIPTION
                      "The compliance statement for SNMPv2 entities
                      which implement the SNMPv2 MIB."
              MODULE  RFC1213-MIB
                  MANDATORY-GROUPS { system }

              MODULE  -- this module
                  MANDATORY-GROUPS { snmpStatsGroup, snmpORGroup,
                                     snmpTrapGroup, snmpSetGroup }

                  GROUP   snmpV1Group
                  DESCRIPTION
                      "The snmpV1 group is mandatory only for those
                       SNMPv2 entities which also implement SNMPv1."
              ::= { snmpMIBCompliances 1 }


          -- units of conformance

          snmpStatsGroup OBJECT-GROUP
              OBJECTS { snmpStatsPackets, snmpStats30Something,
                        snmpStatsEncodingErrors,
                        snmpStatsUnknownDstParties,
                        snmpStatsDstPartyMismatches,
                        snmpStatsUnknownSrcParties, snmpStatsBadAuths,
                        snmpStatsNotInLifetimes,
                        snmpStatsWrongDigestValues,
                        snmpStatsUnknownContexts,
                        snmpStatsBadOperations,
                        snmpStatsSilentDrops }
              STATUS  current
              DESCRIPTION
                      "A collection of objects providing basic
                      instrumentation of the SNMPv2 entity."
              ::= { snmpMIBGroups 1 }

          snmpV1Group OBJECT-GROUP
              OBJECTS { snmpV1BadCommunityNames, snmpV1BadCommunityUses }
              STATUS  current
              DESCRIPTION
                      "A collection of objects providing basic
                      instrumentation of a SNMPv2 entity which also
                      implements SNMPv1."
              ::= { snmpMIBGroups 2 }

          snmpORGroup OBJECT-GROUP
              OBJECTS { snmpORLastChange, snmpORID, snmpORDescr }
              STATUS  current
              DESCRIPTION
                      "A collection of objects allowing a SNMPv2 entity
                      acting in an agent role to describe its
                      dynamically-configurable object resources."
              ::= { snmpMIBGroups 3 }


          snmpTrapGroup OBJECT-GROUP
              OBJECTS { snmpTrapNumbers, snmpV2EnableAuthenTraps }
              STATUS  current
              DESCRIPTION
                      "A collection of objects which allow the SNMPv2
                      entity, when acting in an agent role, to be
                      configured to generate SNMPv2-Trap-PDUs."
              ::= { snmpMIBGroups 4 }

          snmpSetGroup OBJECT-GROUP
              OBJECTS { snmpSetSerialNo }
              STATUS  current
              DESCRIPTION
                      "A collection of objects which allow several
                      cooperating SNMPv2 entities, all acting in a
                      manager role, to coordinate their use of the
                      SNMPv2 set operation."
              ::= { snmpMIBGroups 5 }

END
SNMPv2-M2M-MIB DEFINITIONS ::= BEGIN

          IMPORTS
              MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
              Integer32, Counter32, snmpModules
                  FROM SNMPv2-SMI
              DisplayString, InstancePointer, RowStatus, TimeStamp
                  FROM SNMPv2-TC
              MODULE-COMPLIANCE, OBJECT-GROUP
                  FROM SNMPv2-CONF
              contextIdentity
                  FROM SNMPv2-PARTY-MIB;

          snmpM2M MODULE-IDENTITY
              LAST-UPDATED "9304010000Z"
              ORGANIZATION "IETF SNMPv2 Working Group"
              CONTACT-INFO
                      "        Steven Waldbusser

                       Postal: Carnegie Mellon University
                               4910 Forbes Ave
                               Pittsburgh, PA  15213

                          Tel: +1 412 268 6628
                          Fax: +1 412 268 4987

                       E-mail: waldbusser@cmu.edu"
              DESCRIPTION
                      "The Manager-to-Manager MIB module."
              ::= { snmpModules 2 }

          snmpM2MObjects OBJECT IDENTIFIER ::= { snmpM2M 1 }


          -- the alarm group
          --
          -- a collection of objects allowing the description and
          -- configuration of threshold alarms from a SNMPv2 entity
          -- acting in a dual role.

          snmpAlarm      OBJECT IDENTIFIER ::= { snmpM2MObjects 1 }

          -- This Alarm mechanism periodically takes statistical samples
          -- from variables available via SNMPv2 and compares them to
          -- thresholds that have been configured.  The alarm table
          -- stores configuration entries that each define a variable,
          -- polling period, and threshold parameters.  If a sample is
          -- found to cross the threshold values, an event is generated.
          -- Only variables that resolve to an ASN.1 primitive type of
          -- INTEGER (Integer32, Counter32, Gauge32, TimeTicks,
          -- Counter64, or UInteger32) may be monitored in this way.
          --
          -- This function has a hysteresis mechanism to limit the
          -- generation of events.  This mechanism generates one event
          -- as a threshold is crossed in the appropriate direction.  No
          -- more events are generated for that threshold until the
          -- opposite threshold is crossed.
          --
          -- In the case of sampling a deltaValue, an entity may
          -- implement this mechanism with more precision if it takes a
          -- delta sample twice per period, each time comparing the sum
          -- of the latest two samples to the threshold.  This allows
          -- the detection of threshold crossings that span the sampling
          -- boundary.  Note that this does not require any special
          -- configuration of the threshold value.  It is suggested that
          -- entities implement this more precise algorithm.
          --


          snmpAlarmNextIndex OBJECT-TYPE
              SYNTAX     INTEGER (0..65535)
              MAX-ACCESS read-only
              STATUS     current
              DESCRIPTION
                      "The index number of the next appropriate
                      unassigned entry in the snmpAlarmTable.  The value
                      0 indicates that no unassigned entries are
                      available.

                      A management station should create new entries in
                      the snmpAlarmTable using this algorithm: first,
                      issue a management protocol retrieval operation to
                      determine the value of snmpAlarmNextIndex; and,
                      second, issue a management protocol set operation
                      to create an instance of the snmpAlarmStatus
                      object setting its value to `createAndGo' or
                      `createAndWait' (as specified in the description
                      of the RowStatus textual convention)."
              ::= { snmpAlarm 1 }

          snmpAlarmTable OBJECT-TYPE
              SYNTAX     SEQUENCE OF SnmpAlarmEntry
              MAX-ACCESS not-accessible
              STATUS     current
              DESCRIPTION
                      "A list of snmpAlarm entries."
              ::= { snmpAlarm 2 }

          snmpAlarmEntry OBJECT-TYPE
              SYNTAX     SnmpAlarmEntry
              MAX-ACCESS not-accessible
              STATUS     current
              DESCRIPTION
                      "A list of parameters that set up a periodic
                      sampling query to check for alarm conditions.  The
                      contextIdentity included in the INDEX clause is
                      the context to which the sampling queries are
                      directed."
              INDEX      { contextIdentity, snmpAlarmIndex }
              ::= { snmpAlarmTable 1 }


          SnmpAlarmEntry ::= SEQUENCE {
              snmpAlarmIndex                    INTEGER,
              snmpAlarmVariable                 InstancePointer,
              snmpAlarmInterval                 Integer32,
              snmpAlarmSampleType               INTEGER,
              snmpAlarmValue                    Integer32,
              snmpAlarmStartupAlarm             INTEGER,
              snmpAlarmRisingThreshold          Integer32,
              snmpAlarmFallingThreshold         Integer32,
              snmpAlarmRisingEventIndex         INTEGER,
              snmpAlarmFallingEventIndex        INTEGER,
              snmpAlarmUnavailableEventIndex    INTEGER,
              snmpAlarmStatus                   RowStatus
          }

          snmpAlarmIndex OBJECT-TYPE
              SYNTAX     INTEGER (1..65535)
              MAX-ACCESS not-accessible
              STATUS     current
              DESCRIPTION
                      "An index that uniquely identifies an entry in the
                      snmpAlarm table for a particular sampling context.
                      Each such entry defines a diagnostic sample at a
                      particular interval for a variable in the
                      particular context's object resources."
              ::= { snmpAlarmEntry 1 }


          snmpAlarmVariable OBJECT-TYPE
              SYNTAX     InstancePointer
              MAX-ACCESS read-create
              STATUS     current
              DESCRIPTION
                      "The object identifier of the particular variable
                      to be sampled.  Only variables that resolve to an
                      ASN.1 primitive type of INTEGER (Integer32,
                      Counter32, Gauge32, TimeTicks, Counter64, or
                      UInteger32) may be sampled.

                      If it is detected by an error response of
                      authorizationError, noSuchObject, or
                      noSuchInstance that the variable name of an
                      established snmpAlarmEntry is no longer available
                      in the sampling context, a single
                      snmpObjectUnavailableAlarm event is generated and
                      the status of this snmpAlarmEntry is set to
                      `destroy'.  Likewise, if the syntax of the
                      variable retrieved by the query is not Integer32,
                      Counter32, Gauge32, TimeTicks, Counter64, or
                      UInteger32, the same actions will be taken.

                      If the SNMPv2 entity acting in a dual role detects
                      that the sampled value can not be obtained due to
                      lack of response to management queries, it should
                      either:

                           1) Set the status of this snmpAlarmEntry to
                           `destroy', if it is determined that further
                           communication is not possible;

                           or,

                           2) Delete the associated snmpAlarmValue
                           instance (but not the entire conceptual row),
                           and continue to attempt to sample the
                           variable and recreate the associated
                           snmpAlarmValue instance should communication
                           be reestablished.

                      An attempt to modify this object will fail with an
                      `inconsistentValue' error if the associated
                      snmpAlarmStatus object would be equal to `active'
                      both before and after the modification attempt."


              ::= { snmpAlarmEntry 2 }

          snmpAlarmInterval OBJECT-TYPE
              SYNTAX     Integer32
              UNITS      "seconds"
              MAX-ACCESS read-create
              STATUS     current
              DESCRIPTION
                      "The interval in seconds over which the data is
                      sampled and compared with the rising and falling
                      thresholds.  When setting this object and the
                      sampling type is `deltaValue',  care should be
                      taken to ensure that the change during this
                      interval of the variable being sampled will not
                      exceed the (-2^31...2^31-1) range of the
                      snmpAlarmValue.

                      An attempt to modify this object will fail with an
                      `inconsistentValue' error if the associated
                      snmpAlarmStatus object would be equal to `active'
                      both before and after the modification attempt."
              ::= { snmpAlarmEntry 3 }


          snmpAlarmSampleType OBJECT-TYPE
              SYNTAX     INTEGER {
                             absoluteValue(1),
                             deltaValue(2)
                         }
              MAX-ACCESS read-create
              STATUS     current
              DESCRIPTION
                      "The method of sampling the selected variable and
                      calculating the value to be compared against the
                      thresholds.  If the value of this object is
                      `absoluteValue', the value of the selected
                      variable at the end of the sampling interval will
                      be compared directly with both the
                      snmpAlarmRisingThreshold and the
                      snmpAlarmFallingThreshold values.  If the value of
                      this object is `deltaValue', the value of the
                      selected variable at the end of the sampling
                      interval will be subtracted from its value at the
                      end of the previous sampling interval, and the
                      difference compared with both the
                      snmpAlarmRisingThreshold and the
                      snmpAlarmFallingThreshold values.

                      An attempt to modify this object will fail with an
                      `inconsistentValue' error if the associated
                      snmpAlarmStatus object would be equal to `active'
                      both before and after the modification attempt."
              DEFVAL { deltaValue }
              ::= { snmpAlarmEntry 4 }


          snmpAlarmValue OBJECT-TYPE
              SYNTAX     Integer32
              MAX-ACCESS read-only
              STATUS     current
              DESCRIPTION
                      "The value of the statistic during the last
                      sampling period.  The value during the current
                      sampling period is not made available until the
                      period is completed.  If the value of the
                      statistic does not fit in the signed 32 bit
                      representation of this object, it should be
                      truncated in an implementation specific manner.

                      Note that if the associated snmpAlarmSampleType is
                      set to `deltaValue', the value of this object is
                      the difference in the sampled variable since the
                      last sample.

                      This object will be created by the SNMPv2 entity
                      acting in a dual role when this entry is set to
                      `active', and the first sampling period has
                      completed.  It may be created and deleted at other
                      times by the SNMPv2 entity acting in a dual role
                      when the sampled value can not be obtained, as
                      specified in the snmpAlarmVariable object."
              ::= { snmpAlarmEntry 5 }


          snmpAlarmStartupAlarm OBJECT-TYPE
              SYNTAX     INTEGER {
                             risingAlarm(1),
                             fallingAlarm(2),
                             risingOrFallingAlarm(3)
                         }
              MAX-ACCESS read-create
              STATUS     current
              DESCRIPTION
                      "The alarm that may be sent when this entry is
                      first set to `active'.  If the first sample after
                      this entry becomes active is greater than or equal
                      to the risingThreshold and snmpAlarmStartupAlarm
                      is equal to `risingAlarm' or
                      `risingOrFallingAlarm', then a single rising alarm
                      will be generated.  If the first sample after this
                      entry becomes active is less than or equal to the
                      fallingThreshold and snmpAlarmStartupAlarm is
                      equal to `fallingAlarm' or `risingOrFallingAlarm',
                      then a single falling alarm will be generated.
                      Note that a snmpObjectUnavailableAlarm is sent
                      upon startup whenever it is applicable,
                      independent of the setting of
                      snmpAlarmStartupAlarm.

                      An attempt to modify this object will fail with an
                      `inconsistentValue' error if the associated
                      snmpAlarmStatus object would be equal to `active'
                      both before and after the modification attempt."
              DEFVAL { risingOrFallingAlarm }
              ::= { snmpAlarmEntry 6 }


          snmpAlarmRisingThreshold OBJECT-TYPE
              SYNTAX     Integer32
              MAX-ACCESS read-create
              STATUS     current
              DESCRIPTION
                      "A threshold for the sampled statistic.  When the
                      current sampled value is greater than or equal to
                      this threshold, and the value at the last sampling
                      interval was less than this threshold, a single
                      event will be generated.  A single event will also
                      be generated if the first sample after this entry
                      becomes active is greater than or equal to this
                      threshold and the associated snmpAlarmStartupAlarm
                      is equal to `risingAlarm' or
                      `risingOrFallingAlarm'.

                      After a rising event is generated, another such
                      event will not be generated until the sampled
                      value falls below this threshold and reaches the
                      snmpAlarmFallingThreshold.

                      An attempt to modify this object will fail with an
                      `inconsistentValue' error if the associated
                      snmpAlarmStatus object would be equal to `active'
                      both before and after the modification attempt."
              ::= { snmpAlarmEntry 7 }


          snmpAlarmFallingThreshold OBJECT-TYPE
              SYNTAX     Integer32
              MAX-ACCESS read-create
              STATUS     current
              DESCRIPTION
                      "A threshold for the sampled statistic.  When the
                      current sampled value is less than or equal to
                      this threshold, and the value at the last sampling
                      interval was greater than this threshold, a single
                      event will be generated.  A single event will also
                      be generated if the first sample after this entry
                      becomes active is less than or equal to this
                      threshold and the associated snmpAlarmStartupAlarm
                      is equal to `fallingAlarm' or
                      `risingOrFallingAlarm'.

                      After a falling event is generated, another such
                      event will not be generated until the sampled
                      value rises above this threshold and reaches the
                      snmpAlarmRisingThreshold.

                      An attempt to modify this object will fail with an
                      `inconsistentValue' error if the associated
                      snmpAlarmStatus object would be equal to `active'
                      both before and after the modification attempt."
              ::= { snmpAlarmEntry 8 }


          snmpAlarmRisingEventIndex OBJECT-TYPE
              SYNTAX     INTEGER (0..65535)
              MAX-ACCESS read-create
              STATUS     current
              DESCRIPTION
                      "The index of the snmpEventEntry that is used when
                      a rising threshold is crossed.  The snmpEventEntry
                      identified by a particular value of this index is
                      the same as identified by the same value of the
                      snmpEventIndex object.  If there is no
                      corresponding entry in the snmpEventTable, then no
                      association exists.  In particular, if this value
                      is zero, no associated event will be generated, as
                      zero is not a valid snmpEventIndex.

                      An attempt to modify this object will fail with an
                      `inconsistentValue' error if the associated
                      snmpAlarmStatus object would be equal to `active'
                      both before and after the modification attempt."
              ::= { snmpAlarmEntry 9 }


          snmpAlarmFallingEventIndex OBJECT-TYPE
              SYNTAX     INTEGER (0..65535)
              MAX-ACCESS read-create
              STATUS     current
              DESCRIPTION
                      "The index of the snmpEventEntry that is used when
                      a falling threshold is crossed.  The
                      snmpEventEntry identified by a particular value of
                      this index is the same as identified by the same
                      value of the snmpEventIndex object.  If there is
                      no corresponding entry in the snmpEventTable, then
                      no association exists.  In particular, if this
                      value is zero, no associated event will be
                      generated, as zero is not a valid snmpEventIndex.

                      An attempt to modify this object will fail with an
                      `inconsistentValue' error if the associated
                      snmpAlarmStatus object would be equal to `active'
                      both before and after the modification attempt."
              ::= { snmpAlarmEntry 10 }

          snmpAlarmUnavailableEventIndex OBJECT-TYPE
              SYNTAX     INTEGER (0..65535)
              MAX-ACCESS read-create
              STATUS     current
              DESCRIPTION
                      "The index of the snmpEventEntry that is used when
                      a variable becomes unavailable.  The
                      snmpEventEntry identified by a particular value of
                      this index is the same as identified by the same
                      value of the snmpEventIndex object.  If there is
                      no corresponding entry in the snmpEventTable, then
                      no association exists.  In particular, if this
                      value is zero, no associated event will be
                      generated, as zero is not a valid snmpEventIndex.

                      An attempt to modify this object will fail with an
                      `inconsistentValue' error if the associated
                      snmpAlarmStatus object would be equal to `active'
                      both before and after the modification attempt."
              ::= { snmpAlarmEntry 11 }


          snmpAlarmStatus OBJECT-TYPE
              SYNTAX     RowStatus
              MAX-ACCESS read-create
              STATUS     current
              DESCRIPTION
                      "The status of this snmpAlarm entry.  This object
                      may not be set to `active' unless the following
                      columnar objects exist in this row:
                      snmpAlarmVariable, snmpAlarmInterval,
                      snmpAlarmSampleType, snmpAlarmStartupAlarm,
                      snmpAlarmRisingThreshold,
                      snmpAlarmFallingThreshold,
                      snmpAlarmRisingEventIndex,
                      snmpAlarmFallingEventIndex, and
                      snmpAlarmUnavailableEventIndex."
              ::= { snmpAlarmEntry 12 }


          -- alarm-related notifications

          snmpAlarmNotifications
                         OBJECT IDENTIFIER ::= { snmpAlarm 3 }

          snmpRisingAlarm NOTIFICATION-TYPE
              OBJECTS { snmpAlarmVariable, snmpAlarmSampleType,
                        snmpAlarmValue, snmpAlarmRisingThreshold }
              STATUS  current
              DESCRIPTION
                      "An event that is generated when an alarm entry
                      crosses its rising threshold.  The instances of
                      those objects contained within the varbind list
                      are those of the alarm entry which generated this
                      event."
              ::= { snmpAlarmNotifications 1 }

          snmpFallingAlarm NOTIFICATION-TYPE
              OBJECTS { snmpAlarmVariable, snmpAlarmSampleType,
                        snmpAlarmValue, snmpAlarmFallingThreshold }
              STATUS  current
              DESCRIPTION
                      "An event that is generated when an alarm entry
                      crosses its falling threshold.  The instances of
                      those objects contained within the varbind list
                      are those of the alarm entry which generated this
                      event."
              ::= { snmpAlarmNotifications 2 }

          snmpObjectUnavailableAlarm NOTIFICATION-TYPE
              OBJECTS { snmpAlarmVariable }
              STATUS  current
              DESCRIPTION
                      "An event that is generated when a variable
                      monitored by an alarm entry becomes unavailable.
                      The instance of snmpAlarmVariable contained within
                      the varbind list is the one associated with the
                      alarm entry which generated this event."
              ::= { snmpAlarmNotifications 3 }


          -- the event group
          --
          -- a collection of objects allowing the description and
          -- configuration of events from a SNMPv2 entity acting
          -- in a dual role.

          snmpEvent      OBJECT IDENTIFIER ::= { snmpM2MObjects 2 }

          -- The snmpEvent table defines the set of events generated on
          -- a SNMPv2 entity acting in a dual role.  Each entry in the
          -- snmpEventTable associates an event type with the
          -- notification method and associated parameters.  Some
          -- snmpEvent entries are fired by an associated condition in
          -- the snmpAlarmTable.  Others are fired on behalf of
          -- conditions defined in the NOTIFICATION-TYPE macro.  The
          -- snmpNotificationTable defines notifications that should
          -- occur when an associated event is fired.

          snmpEventNextIndex OBJECT-TYPE
              SYNTAX     INTEGER (0..65535)
              MAX-ACCESS read-only
              STATUS     current
              DESCRIPTION
                      "The index number of the next appropriate
                      unassigned entry in the snmpEventTable.  The value
                      0 indicates that no unassigned entries are
                      available.

                      A management station should create new entries in
                      the snmpEventTable using this algorithm: first,
                      issue a management protocol retrieval operation to
                      determine the value of snmpEventNextIndex; and,
                      second, issue a management protocol set operation
                      to create an instance of the snmpEventStatus
                      object setting its value to `createAndWait' or
                      'createAndGo'."
              ::= { snmpEvent 1 }


          snmpEventTable OBJECT-TYPE
              SYNTAX     SEQUENCE OF SnmpEventEntry
              MAX-ACCESS not-accessible
              STATUS     current
              DESCRIPTION
                      "A list of events."
              ::= { snmpEvent 2 }

          snmpEventEntry OBJECT-TYPE
              SYNTAX     SnmpEventEntry
              MAX-ACCESS not-accessible
              STATUS     current
              DESCRIPTION
                      "A set of parameters that describe an event that
                      is generated when certain conditions are met."
              INDEX      { snmpEventIndex }
              ::= { snmpEventTable 1 }

          SnmpEventEntry ::= SEQUENCE {
              snmpEventIndex          INTEGER,
              snmpEventID             OBJECT IDENTIFIER,
              snmpEventDescription    DisplayString,
              snmpEventEvents         Counter32,
              snmpEventLastTimeSent   TimeStamp,
              snmpEventStatus         RowStatus
          }

          snmpEventIndex OBJECT-TYPE
              SYNTAX     INTEGER (1..65535)
              MAX-ACCESS not-accessible
              STATUS     current
              DESCRIPTION
                      "An index that uniquely identifies an entry in the
                      snmpEvent table.  Each such entry defines an event
                      generated when the appropriate conditions occur."
              ::= { snmpEventEntry 1 }


          snmpEventID OBJECT-TYPE
              SYNTAX     OBJECT IDENTIFIER
              MAX-ACCESS read-create
              STATUS     current
              DESCRIPTION
                      "The authoritative identification of the event
                      type generated by this entry.  This variable
                      occurs as the second varbind of an InformRequest-
                      PDU.  If this OBJECT IDENTIFIER maps to a
                      NOTIFICATION-TYPE the sender will place the
                      objects listed in the NOTIFICATION-TYPE in the
                      varbind list."
              ::= { snmpEventEntry 2 }

          snmpEventDescription OBJECT-TYPE
              SYNTAX     DisplayString (SIZE (0..127))
              MAX-ACCESS read-create
              STATUS     current
              DESCRIPTION
                      "A comment describing this snmpEvent entry."
              ::= { snmpEventEntry 3 }

          snmpEventEvents OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     current
              DESCRIPTION
                      "The number of events caused by event generators
                      associated with this snmpEvent entry."
              ::= { snmpEventEntry 4 }


          snmpEventLastTimeSent OBJECT-TYPE
              SYNTAX     TimeStamp
              MAX-ACCESS read-only
              STATUS     current
              DESCRIPTION
                      "The value of sysUpTime at the time this snmpEvent
                      entry last generated an event.  If this entry has
                      not generated any events, this value will be
                      zero."
              DEFVAL { 0 }
              ::= { snmpEventEntry 5 }

          snmpEventStatus OBJECT-TYPE
              SYNTAX     RowStatus
              MAX-ACCESS read-create
              STATUS     current
              DESCRIPTION
                      "The status of this snmpEvent entry.  This object
                      may not be set to `active' unless the following
                      columnar objects exist in this row: snmpEventID,
                      snmpEventDescription, snmpEventEvents, and
                      snmpEventLastTimeSent.

                      Setting an instance of this object to the value
                      'destroy' has the effect of invalidating any/all
                      entries in the snmpEventTable, and the
                      snmpEventNotifyTable which reference the
                      corresponding snmpEventEntry."
              ::= { snmpEventEntry 6 }


          snmpEventNotifyMinInterval OBJECT-TYPE
              SYNTAX     Integer32
              UNITS      "seconds"
              MAX-ACCESS read-only
              STATUS     current
              DESCRIPTION
                      "The minimum interval that the SNMPv2 entity
                      acting in a dual role will wait before
                      retransmitting an InformRequest-PDU.  This object
                      specifies the minimal value supported by the
                      SNMPv2 entity acting in a dual role, based on
                      resource or implementation constraints.

                      For a particular entry in the
                      snmpEventNotifyTable, if the associated
                      snmpEventNotifyIntervalRequested variable is
                      greater than this object, the
                      snmpEventNotifyIntervalRequested value shall be
                      used as the minimum interval for retransmissions
                      of InformRequest-PDUs sent on behalf of that
                      entry."
              ::= { snmpEvent 3 }

          snmpEventNotifyMaxRetransmissions OBJECT-TYPE
              SYNTAX     Integer32
              MAX-ACCESS read-only
              STATUS     current
              DESCRIPTION
                      "The maximum number of time that the SNMPv2 entity
                      acting in a dual role will retransmit an
                      InformRequest-PDU.  This object specifies the
                      maximal value supported by the SNMPv2 entity
                      acting in a dual role, based on resource or
                      implementation constraints.

                      For a particular entry in the
                      snmpEventNotifyTable, if the associated
                      snmpEventNotifyRetransmissionsRequested variable
                      is less than this object, the
                      snmpEventNotifyRetransmissionsRequested value
                      shall be used as the retransmission count for
                      InformRequest-PDUs sent on behalf of that entry."
              ::= { snmpEvent 4 }

          -- The snmpEventNotifyTable is used to configure the


          -- destination and type of notifications sent by a SNMPv2
          -- entity acting in a manager role when a particular event
          -- is triggered.

          snmpEventNotifyTable OBJECT-TYPE
              SYNTAX     SEQUENCE OF SnmpEventNotifyEntry
              MAX-ACCESS not-accessible
              STATUS     current
              DESCRIPTION
                      "A list of protocol configuration entries for
                      event notifications from this entity."
              ::= { snmpEvent 5 }

          snmpEventNotifyEntry OBJECT-TYPE
              SYNTAX     SnmpEventNotifyEntry
              MAX-ACCESS not-accessible
              STATUS     current
              DESCRIPTION
                      "A set of parameters that describe the type and
                      destination of InformRequest-PDUs sent for a
                      particular event.  The snmpEventIndex in this
                      entry's INDEX clause identifies the snmpEventEntry
                      which, when triggered, will generate a
                      notification as configured in this entry.  The
                      contextIdentity in this entry's INDEX clause
                      identifies the context to which a notification
                      will be sent."
              INDEX      { snmpEventIndex, contextIdentity }
              ::= { snmpEventNotifyTable 1 }

          SnmpEventNotifyEntry ::= SEQUENCE {
              snmpEventNotifyIntervalRequested        Integer32,
              snmpEventNotifyRetransmissionsRequested Integer32,
              snmpEventNotifyLifetime                 Integer32,
              snmpEventNotifyStatus                   RowStatus
          }


          snmpEventNotifyIntervalRequested OBJECT-TYPE
              SYNTAX     Integer32
              UNITS      "seconds"
              MAX-ACCESS read-create
              STATUS     current
              DESCRIPTION
                      "The requested interval for retransmission of
                      Inform PDUs generated on the behalf of this entry.

                      This variable will be the actual interval used
                      unless the snmpEventNotifyMinInterval is greater
                      than this object, in which case the interval shall
                      be equal to snmpEventNotifyMinInterval."
              DEFVAL { 30 }
              ::= { snmpEventNotifyEntry 1 }

          snmpEventNotifyRetransmissionsRequested OBJECT-TYPE
              SYNTAX     Integer32
              MAX-ACCESS read-create
              STATUS     current
              DESCRIPTION
                      "The requested number of retransmissions of an
                      InformRequest-PDU generated on behalf of this
                      entry.

                      This variable will be the actual number of
                      retransmissions used unless the
                      snmpEventNotifyMaxRetransmissions is less than
                      this object, in which case the retransmission
                      count shall be equal to
                      snmpEventNotifyMaxRetransmissions."
              DEFVAL { 5 }
              ::= { snmpEventNotifyEntry 2 }


          snmpEventNotifyLifetime OBJECT-TYPE
              SYNTAX     Integer32
              UNITS      "seconds"
              MAX-ACCESS read-create
              STATUS     current
              DESCRIPTION
                      "The number of seconds this entry shall live until
                      the corresponding instance of
                      snmpEventNotifyStatus is set to 'destroy'.  This
                      value shall count down to zero, at which time the
                      corresponding instance of snmpEventNotifyStatus
                      will be set to 'destroy'.  Any management station
                      that is using this entry must periodically refresh
                      this value to ensure the continued delivery of
                      events."
              DEFVAL { 86400 }
              ::= { snmpEventNotifyEntry 3 }

          snmpEventNotifyStatus OBJECT-TYPE
              SYNTAX     RowStatus
              MAX-ACCESS read-create
              STATUS     current
              DESCRIPTION
                      "The state of this snmpEventNotifyEntry.  This
                      object may not be set to `active' unless the
                      following columnar objects exist in this row:
                      snmpEventNotifyIntervalRequested,
                      snmpEventNotifyRetransmissionsRequested, and
                      snmpEventNotifyLifetime."
              ::= { snmpEventNotifyEntry 4 }


          -- conformance information

          snmpM2MConformance
                         OBJECT IDENTIFIER ::= { snmpM2M 2 }

          snmpM2MCompliances
                         OBJECT IDENTIFIER ::= { snmpM2MConformance 1 }
          snmpM2MGroups  OBJECT IDENTIFIER ::= { snmpM2MConformance 2 }

          -- compliance statements

          snmpM2MCompliance MODULE-COMPLIANCE
              STATUS  current
              DESCRIPTION
                      "The compliance statement for SNMPv2 entities
                      which implement the Manager-to-Manager MIB."
              MODULE  -- this module
                  MANDATORY-GROUPS { snmpAlarmGroup, snmpEventGroup }
              ::= { snmpM2MCompliances 1 }

          -- units of conformance

          snmpAlarmGroup OBJECT-GROUP
              OBJECTS { snmpAlarmNextIndex,
                        snmpAlarmVariable, snmpAlarmInterval,
                        snmpAlarmSampleType, snmpAlarmValue,
                        snmpAlarmStartupAlarm, snmpAlarmRisingThreshold,
                        snmpAlarmFallingThreshold,
                        snmpAlarmRisingEventIndex,
                        snmpAlarmFallingEventIndex,
                        snmpAlarmUnavailableEventIndex,
                        snmpAlarmStatus }
              STATUS  current
              DESCRIPTION
                      "A collection of objects allowing the description
                      and configuration of threshold alarms from a
                      SNMPv2 entity acting in a dual role."
              ::= { snmpM2MGroups 1 }


          snmpEventGroup OBJECT-GROUP
              OBJECTS { snmpEventNextIndex,
                        snmpEventID, snmpEventDescription,
                        snmpEventEvents, snmpEventLastTimeSent,
                        snmpEventStatus, snmpEventNotifyMinInterval,
                        snmpEventNotifyMaxRetransmissions,
                        snmpEventNotifyIntervalRequested,
                        snmpEventNotifyRetransmissionsRequested,
                        snmpEventNotifyLifetime, snmpEventNotifyStatus }
              STATUS  current
              DESCRIPTION
                      "A collection of objects allowing the description
                      and configuration of events from a SNMPv2 entity
                      acting in a dual role."
              ::= { snmpM2MGroups 2 }

END

SNMPv2-TM DEFINITIONS ::= BEGIN

          IMPORTS
              snmpDomains, snmpProxys
                  FROM SNMPv2-SMI
              TEXTUAL-CONVENTION
                  FROM SNMPv2-TC;

          -- SNMPv2 over UDP

          snmpUDPDomain  OBJECT IDENTIFIER ::= { snmpDomains 1 }
          -- for a SnmpUDPAddress of length 6:
          --
          -- octets   contents        encoding
          --  1-4     IP-address      network-byte order
          --  5-6     UDP-port        network-byte order
          --
          SnmpUDPAddress ::= TEXTUAL-CONVENTION
              DISPLAY-HINT "1d.1d.1d.1d/2d"
              STATUS       current
              DESCRIPTION
                      "Represents a UDP address."
              SYNTAX       OCTET STRING (SIZE (6))


          -- SNMPv2 over OSI

          snmpCLNSDomain OBJECT IDENTIFIER ::= { snmpDomains 2 }
          snmpCONSDomain OBJECT IDENTIFIER ::= { snmpDomains 3 }
          -- for a SnmpOSIAddress of length m:
          --
          -- octets   contents            encoding
          --    1     length of NSAP      "n" as an unsigned-integer
          --                                (either 0 or from 3 to 20)
          -- 2..(n+1) NSAP                concrete binary representation
          -- (n+2)..m TSEL                string of (up to 64) octets
          --
          SnmpOSIAddress ::= TEXTUAL-CONVENTION
              DISPLAY-HINT "*1x:/1x:"
              STATUS       current
              DESCRIPTION
                      "Represents an OSI transport-address."
              SYNTAX       OCTET STRING (SIZE (1 | 4..85))


          -- SNMPv2 over DDP

          snmpDDPDomain  OBJECT IDENTIFIER ::= { snmpDomains 4 }
          -- for a SnmpNBPAddress of length m:
          --
          --    octets      contents         encoding
          --       1        length of object "n" as an unsigned integer
          --     2..(n+1)   object           string of (up to 32) octets
          --      n+2       length of type   "p" as an unsigned integer
          -- (n+3)..(n+2+p) type             string of (up to 32) octets
          --     n+3+p      length of zone   "q" as an unsigned integer
          -- (n+4+p)..m     zone             string of (up to 32) octets
          --
          -- for comparison purposes, strings are case-insensitive
          --
          -- all strings may contain any octet other than 255 (hex ff)
          --
          SnmpNBPAddress ::= TEXTUAL-CONVENTION
              STATUS       current
              DESCRIPTION
                      "Represents an NBP name."
              SYNTAX       OCTET STRING (SIZE (3..99))

          -- SNMPv2 over IPX

          snmpIPXDomain  OBJECT IDENTIFIER ::= { snmpDomains 5 }
          -- for a SnmpIPXAddress of length 12:
          --
          -- octets   contents            encoding
          --  1-4     network-number      network-byte order
          --  5-10    physical-address    network-byte order
          -- 11-12    socket-number       network-byte order
          --
          SnmpIPXAddress ::= TEXTUAL-CONVENTION
              DISPLAY-HINT "4x.1x:1x:1x:1x:1x:1x.2d"
              STATUS       current
              DESCRIPTION
                      "Represents an IPX address."
              SYNTAX       OCTET STRING (SIZE (12))


          -- for proxy to community-based SNMPv1 (RFC 1157)

          rfc1157Proxy   OBJECT IDENTIFIER ::= { snmpProxys 1 }

          -- uses SnmpUDPAddress
          rfc1157Domain  OBJECT IDENTIFIER ::= { rfc1157Proxy 1 }

          -- the community-based noAuth
          rfc1157noAuth  OBJECT IDENTIFIER ::= { rfc1157Proxy 2 }

END
RFC1271-MIB DEFINITIONS ::= BEGIN

              IMPORTS
                  Counter                              FROM RFC1155-SMI
                  DisplayString                        FROM RFC1158-MIB
                  mib-2                                FROM RFC1213-MIB
                  OBJECT-TYPE                          FROM RFC-1212;

          --  This MIB module uses the extended OBJECT-TYPE macro as
          --  defined in [9].

          --  Remote Network Monitoring MIB

              rmon    OBJECT IDENTIFIER ::= { mib-2 16 }

              -- textual conventions

              OwnerString ::= OCTET STRING
              -- This data type is used to model an administratively
              -- assigned name of the owner of a resource. This
              -- information is taken from the NVT ASCII character set.
              -- It is suggested that this name contain one or more
              -- of the following:
              -- IP address, management station name, network manager's
              -- name, location, or phone number.
              -- In some cases the agent itself will be the owner of
              -- an entry.  In these cases, this string shall be set
              -- to a string starting with 'monitor'.


              --
              -- SNMP access control is articulated entirely in terms of
              -- the contents of MIB views; access to a particular SNMP
              -- object instance depends only upon its presence or
              -- absence in a particular MIB view and never upon its
              -- value or the value of related object instances. Thus,
              -- objects of this type afford resolution of resource
              -- contention only among cooperating managers; they
              -- realize no access control function with respect
              -- to uncooperative parties.
              --
              -- By convention, objects with this syntax are declared
              -- as having
              --
              --      SIZE (0..127)

              EntryStatus ::= INTEGER
                         { valid(1),
                           createRequest(2),
                           underCreation(3),
                           invalid(4)
                         }

              -- The status of a table entry.
              --
              -- Setting this object to the value invalid(4) has the
              -- effect of invalidating the corresponding entry.
              -- That is, it effectively disassociates 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 currently not in use.  Proper
              -- interpretation of such entries requires examination
              -- of the relevant EntryStatus object.
              --
              -- An existing instance of this object cannot be set to
              -- createRequest(2).  This object may only be set to
              -- createRequest(2) when this instance is created.  When
              -- this object is created, the agent may wish to create
              -- supplemental object instances to complete a conceptual
              -- row in this table.  Immediately after completing the
              -- create operation, the agent must set this object to
              -- underCreation(3).
              --
              -- Entries shall exist in the underCreation(3) state until


              -- the management station is finished configuring the
              -- entry and sets this object to valid(1) or aborts,
              -- setting this object to invalid(4).  If the agent
              -- determines that an entry has been in the
              -- underCreation(3) state for an abnormally long time,
              -- it may decide that the management station has
              -- crashed.  If the agent makes this decision,
              -- it may set this object to invalid(4) to reclaim the
              -- entry.  A prudent agent will understand that the
              -- management station may need to wait for human input
              -- and will allow for that possibility in its
              -- determination of this abnormally long period.

              statistics        OBJECT IDENTIFIER ::= { rmon 1 }
              history           OBJECT IDENTIFIER ::= { rmon 2 }
              alarm             OBJECT IDENTIFIER ::= { rmon 3 }
              hosts             OBJECT IDENTIFIER ::= { rmon 4 }
              hostTopN          OBJECT IDENTIFIER ::= { rmon 5 }
              matrix            OBJECT IDENTIFIER ::= { rmon 6 }
              filter            OBJECT IDENTIFIER ::= { rmon 7 }
              capture           OBJECT IDENTIFIER ::= { rmon 8 }
              event             OBJECT IDENTIFIER ::= { rmon 9 }

          -- The Statistics Group
          --
          -- Implementation of the Statistics group is optional.
          --
          -- The statistics group contains statistics measured by the
          -- probe for each monitored interface on this device.  These
          -- statistics take the form of free running counters that
          -- start from zero when a valid entry is created.
          --
          -- This group currently has statistics defined only for
          -- Ethernet interfaces.  Each etherStatsEntry contains
          -- statistics for one Ethernet interface.  The probe must
          -- create one etherStats entry for each monitored Ethernet
          -- interface on the device.

          etherStatsTable OBJECT-TYPE
              SYNTAX SEQUENCE OF EtherStatsEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A list of Ethernet statistics entries."
              ::= { statistics 1 }


          etherStatsEntry OBJECT-TYPE
              SYNTAX EtherStatsEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A collection of statistics kept for a particular
                  Ethernet interface."
              INDEX { etherStatsIndex }
              ::= { etherStatsTable 1 }

          EtherStatsEntry ::= SEQUENCE {
              etherStatsIndex                    INTEGER (1..65535),
              etherStatsDataSource               OBJECT IDENTIFIER,
              etherStatsDropEvents               Counter,
              etherStatsOctets                   Counter,
              etherStatsPkts                     Counter,
              etherStatsBroadcastPkts            Counter,
              etherStatsMulticastPkts            Counter,
              etherStatsCRCAlignErrors           Counter,
              etherStatsUndersizePkts            Counter,
              etherStatsOversizePkts             Counter,
              etherStatsFragments                Counter,
              etherStatsJabbers                  Counter,
              etherStatsCollisions               Counter,
              etherStatsPkts64Octets             Counter,
              etherStatsPkts65to127Octets        Counter,
              etherStatsPkts128to255Octets       Counter,
              etherStatsPkts256to511Octets       Counter,
              etherStatsPkts512to1023Octets      Counter,
              etherStatsPkts1024to1518Octets     Counter,
              etherStatsOwner                    OwnerString,
              etherStatsStatus                   INTEGER
          }

          etherStatsIndex OBJECT-TYPE
              SYNTAX INTEGER (1..65535)
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The value of this object uniquely identifies this
                  etherStats entry."
              ::= { etherStatsEntry 1 }

          etherStatsDataSource OBJECT-TYPE
              SYNTAX OBJECT IDENTIFIER
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION


                  "This object identifies the source of the data that
                  this etherStats entry is configured to analyze.  This
                  source can be any ethernet interface on this device.
                  In order to identify a particular interface, this
                  object shall identify the instance of the ifIndex
                  object, defined in [4,6], for the desired interface.
                  For example, if an entry were to receive data from
                  interface #1, this object would be set to ifIndex.1.

                  The statistics in this group reflect all packets
                  on the local network segment attached to the
                  identified interface.

                  This object may not be modified if the associated
                  etherStatsStatus object is equal to valid(1)."
              ::= { etherStatsEntry 2 }

          etherStatsDropEvents OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The total number of events in which packets
                  were dropped by the probe due to lack of resources.
                  Note that this number is not necessarily the number of
                  packets dropped; it is just the number of times this
                  condition has been detected."
              ::= { etherStatsEntry 3 }

          etherStatsOctets OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The total number of octets of data (including
                  those in bad packets) received on the
                  network (excluding framing bits but including
                  FCS octets)."
              ::= { etherStatsEntry 4 }

          etherStatsPkts OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The total number of packets (including error packets)
                  received."
              ::= { etherStatsEntry 5 }


          etherStatsBroadcastPkts OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The total number of good packets received that were
                  directed to the broadcast address."
              ::= { etherStatsEntry 6 }

          etherStatsMulticastPkts OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The total number of good packets received that were
                  directed to a multicast address.  Note that this
                  number does not include packets directed to the
                  broadcast address."
              ::= { etherStatsEntry 7 }

          etherStatsCRCAlignErrors OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The total number of packets received that
                  had a length (excluding framing bits, but
                  including FCS octets) of between 64 and 1518
                  octets, inclusive, but were not an integral number
                  of octets in length or had a bad Frame Check
                  Sequence (FCS)."
              ::= { etherStatsEntry 8 }

          etherStatsUndersizePkts OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The total number of packets received that were
                  less than 64 octets long (excluding framing bits,
                  but including FCS octets) and were otherwise well
                  formed."
              ::= { etherStatsEntry 9 }

          etherStatsOversizePkts OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory


              DESCRIPTION
                  "The total number of packets received that were
                  longer than 1518 octets (excluding framing bits,
                  but including FCS octets) and were otherwise
                  well formed."
              ::= { etherStatsEntry 10 }

          etherStatsFragments OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The total number of packets received that were not an
                  integral number of octets in length or that had a bad
                  Frame Check Sequence (FCS), and were less than 64
                  octets in length (excluding framing bits but
                  including FCS octets)."
              ::= { etherStatsEntry 11 }

          etherStatsJabbers OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The total number of packets received that were
                  longer than 1518 octets (excluding framing bits,
                  but including FCS octets), and were not an
                  integral number of octets in length or had
                  a bad Frame Check Sequence (FCS)."
              ::= { etherStatsEntry 12 }

          etherStatsCollisions OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The best estimate of the total number of collisions
                  on this Ethernet segment."
              ::= { etherStatsEntry 13 }

          etherStatsPkts64Octets OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The total number of packets (including error
                  packets) received that were 64 octets in length
                  (excluding framing bits but including FCS octets)."


              ::= { etherStatsEntry 14 }

          etherStatsPkts65to127Octets OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The total number of packets (including error
                  packets) received that were between
                  65 and 127 octets in length inclusive
                  (excluding framing bits but including FCS octets)."
              ::= { etherStatsEntry 15 }

          etherStatsPkts128to255Octets OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The total number of packets (including error
                  packets) received that were between
                  128 and 255 octets in length inclusive
                  (excluding framing bits but including FCS octets)."
              ::= { etherStatsEntry 16 }

          etherStatsPkts256to511Octets OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The total number of packets (including error
                  packets) received that were between
                  256 and 511 octets in length inclusive
                  (excluding framing bits but including FCS octets)."
              ::= { etherStatsEntry 17 }

          etherStatsPkts512to1023Octets OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The total number of packets (including error
                  packets) received that were between
                  512 and 1023 octets in length inclusive
                  (excluding framing bits but including FCS octets)."
              ::= { etherStatsEntry 18 }


          etherStatsPkts1024to1518Octets OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The total number of packets (including error
                  packets) received that were between
                  1024 and 1518 octets in length inclusive
                  (excluding framing bits but including FCS octets)."
              ::= { etherStatsEntry 19 }

          etherStatsOwner OBJECT-TYPE
              SYNTAX OwnerString
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The entity that configured this entry and is
                  therefore using the resources assigned to it."
              ::= { etherStatsEntry 20 }

          etherStatsStatus OBJECT-TYPE
              SYNTAX EntryStatus
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The status of this etherStats entry."
              ::= { etherStatsEntry 21 }

          -- The History Group

          -- Implementation of the History group is optional.
          --
          -- The history group records periodic statistical samples from
          -- a network and stores them for later retrieval.  The
          -- historyControl table stores configuration entries that each
          -- define an interface, polling period, and other parameters.
          -- Once samples are taken, their data is stored in an entry
          -- in a media-specific table.  Each such entry defines one
          -- sample, and is associated with the historyControlEntry that
          -- caused the sample to be taken.  Currently the only media-
          -- specific table defined is the etherHistoryTable, for
          -- Ethernet networks.
          --
          -- If the probe keeps track of the time of day, it should
          -- start the first sample of the history at a time such that
          -- when the next hour of the day begins, a sample is
          -- started at that instant.  This tends to make more


          -- user-friendly reports, and enables comparison of reports
          -- from different probes that have relatively accurate time
          -- of day.
          --
          -- The monitor is encouraged to add two history control entries
          -- per monitored interface upon initialization that describe
          -- a short term and a long term polling period.  Suggested
          -- parameters are 30 seconds for the short term polling
          -- period and 30 minutes for the long term period.

          historyControlTable OBJECT-TYPE
              SYNTAX SEQUENCE OF HistoryControlEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A list of history control entries."
              ::= { history 1 }

          historyControlEntry OBJECT-TYPE
              SYNTAX HistoryControlEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A list of parameters that set up a periodic
                  sampling of statistics."
              INDEX { historyControlIndex }
              ::= { historyControlTable 1 }

          HistoryControlEntry ::= SEQUENCE {
              historyControlIndex             INTEGER (1..65535),
              historyControlDataSource        OBJECT IDENTIFIER,
              historyControlBucketsRequested  INTEGER (1..65535),
              historyControlBucketsGranted    INTEGER (1..65535),
              historyControlInterval          INTEGER (1..3600),
              historyControlOwner             OwnerString,
              historyControlStatus            INTEGER
          }

          historyControlIndex OBJECT-TYPE
              SYNTAX INTEGER (1..65535)
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "An index that uniquely identifies an entry in the
                  historyControl table.  Each such entry defines a
                  set of samples at a particular interval for an
                  interface on the device."
              ::= { historyControlEntry 1 }


          historyControlDataSource OBJECT-TYPE
              SYNTAX OBJECT IDENTIFIER
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "This object identifies the source of the data for
                  which historical data was collected and
                  placed in a media-specific table on behalf of this
                  historyControlEntry.  This source can be any
                  interface on this device.  In order to identify
                  a particular interface, this object shall identify
                  the instance of the ifIndex object, defined
                  in [4,6], for the desired interface.  For example,
                  if an entry were to receive data from interface #1,
                  this object would be set to ifIndex.1.

                  The statistics in this group reflect all packets
                  on the local network segment attached to the
                  identified interface.

                  This object may not be modified if the associated
                  historyControlStatus object is equal to valid(1)."
              ::= { historyControlEntry 2 }

          historyControlBucketsRequested OBJECT-TYPE
              SYNTAX INTEGER (1..65535)
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The requested number of discrete time intervals
                  over which data is to be saved in the part of the
                  media-specific table associated with this
                  historyControl entry.

                  When this object is created or modified, the probe
                  should set historyControlBucketsGranted as closely to
                  this object as is possible for the particular probe
                  implementation and available resources."
              DEFVAL { 50 }
              ::= { historyControlEntry 3 }

          historyControlBucketsGranted OBJECT-TYPE
              SYNTAX INTEGER (1..65535)
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of discrete sampling intervals
                  over which data shall be saved in the part of


                  the media-specific table associated with this
                  historyControl entry.

                  When the associated historyControlBucketsRequested
                  object is created or modified, the probe
                  should set this object as closely to the requested
                  value as is possible for the particular
                  probe implementation and available resources.  The
                  probe must not lower this value except as a result
                  of a modification to the associated
                  historyControlBucketsRequested object.

                  There will be times when the actual number of
                  buckets associated with this entry is less than
                  the value of this object.  In this case, at the
                  end of each sampling interval, a new bucket will
                  be added to the media-specific table.

                  When the number of buckets reaches the value of
                  this object and a new bucket is to be added to the
                  media-specific table, the oldest bucket associated
                  with this historyControlEntry shall be deleted by
                  the agent so that the new bucket can be added.

                  When the value of this object changes to a value less
                  than the current value, entries are deleted
                  from the media-specific table associated with this
                  historyControlEntry.  Enough of the oldest of these
                  entries shall be deleted by the agent so that their
                  number remains less than or equal to the new value of
                  this object.

                  When the value of this object changes to a value
                  greater than the current value, the number of
                  associated media-specific entries may be allowed
                  to grow."
              ::= { historyControlEntry 4 }

          historyControlInterval OBJECT-TYPE
              SYNTAX INTEGER (1..3600)
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The interval in seconds over which the data is
                  sampled for each bucket in the part of the
                  media-specific table associated with this
                  historyControl entry.  This interval can
                  be set to any number of seconds between 1 and


                  3600 (1 hour).

                  Because the counters in a bucket may overflow at their
                  maximum value with no indication, a prudent manager
                  will take into account the possibility of overflow
                  in any of the associated counters.  It is important
                  to consider the minimum time in which any counter
                  could overflow on a particular media type and set
                  the historyControlInterval object to a value less
                  than this interval.  This is typically most
                  important for the 'octets' counter in any
                  media-specific table.  For example, on an Ethernet
                  network, the etherHistoryOctets counter could overflow
                  in about one hour at the Ethernet's maximum
                  utilization.

                  This object may not be modified if the associated
                  historyControlStatus object is equal to valid(1)."
              DEFVAL { 1800 }
              ::= { historyControlEntry 5 }

          historyControlOwner OBJECT-TYPE
              SYNTAX OwnerString
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The entity that configured this entry and is therefore
                  using the resources assigned to it."
              ::= { historyControlEntry 6 }

          historyControlStatus OBJECT-TYPE
              SYNTAX EntryStatus
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The status of this historyControl entry.

                  Each instance of the media-specific table associated
                  with this historyControlEntry will be deleted by the
                  agent if this historyControlEntry is not equal to
                  valid(1)."
              ::= { historyControlEntry 7 }

          -- Ether History table

          etherHistoryTable OBJECT-TYPE
              SYNTAX SEQUENCE OF EtherHistoryEntry


              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A list of Ethernet history entries."
              ::= { history 2 }

          etherHistoryEntry OBJECT-TYPE
              SYNTAX EtherHistoryEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "An historical sample of Ethernet statistics on a
                  particular Ethernet interface.  This sample is
                  associated with the historyControlEntry which set
                  up the parameters for a regular collection of these
                  samples."
              INDEX { etherHistoryIndex , etherHistorySampleIndex }
              ::= { etherHistoryTable 1 }

          EtherHistoryEntry ::= SEQUENCE {
              etherHistoryIndex                 INTEGER (1..65535),
              etherHistorySampleIndex           INTEGER,
              etherHistoryIntervalStart         TimeTicks,
              etherHistoryDropEvents            Counter,
              etherHistoryOctets                Counter,
              etherHistoryPkts                  Counter,
              etherHistoryBroadcastPkts         Counter,
              etherHistoryMulticastPkts         Counter,
              etherHistoryCRCAlignErrors        Counter,
              etherHistoryUndersizePkts         Counter,
              etherHistoryOversizePkts          Counter,
              etherHistoryFragments             Counter,
              etherHistoryJabbers               Counter,
              etherHistoryCollisions            Counter,
              etherHistoryUtilization           INTEGER (0..10000)
          }

          etherHistoryIndex OBJECT-TYPE
              SYNTAX INTEGER (1..65535)
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The history of which this entry is a part.  The
                  history identified by a particular value of this
                  index is the same history as identified
                  by the same value of historyControlIndex."
              ::= { etherHistoryEntry 1 }


          etherHistorySampleIndex OBJECT-TYPE
              SYNTAX INTEGER
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "An index that uniquely identifies the particular
                  sample this entry represents among all samples
                  associated with the same historyControlEntry.
                  This index starts at 1 and increases by one
                  as each new sample is taken."
              ::= { etherHistoryEntry 2 }

          etherHistoryIntervalStart OBJECT-TYPE
              SYNTAX TimeTicks
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The value of sysUpTime at the start of the interval
                  over which this sample was measured.  If the probe
                  keeps track of the time of day, it should start
                  the first sample of the history at a time such that
                  when the next hour of the day begins, a sample is
                  started at that instant.  Note that following this
                  rule may require the probe to delay collecting the
                  first sample of the history, as each sample must be
                  of the same interval.  Also note that the sample which
                  is currently being collected is not accessible in this
                  table until the end of its interval."
              ::= { etherHistoryEntry 3 }

          etherHistoryDropEvents OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The total number of events in which packets
                  were dropped by the probe due to lack of resources
                  during this interval.  Note that this number is not
                  necessarily the number of packets dropped, it is just
                  the number of times this condition has been detected."
              ::= { etherHistoryEntry 4 }

          etherHistoryOctets OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The total number of octets of data (including


                  those in bad packets) received on the
                  network (excluding framing bits but including
                  FCS octets)."
              ::= { etherHistoryEntry 5 }

          etherHistoryPkts OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of packets (including error packets)
                  received during this sampling interval."
              ::= { etherHistoryEntry 6 }

          etherHistoryBroadcastPkts OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of good packets received during this
                  sampling interval that were directed to the
                  broadcast address."
              ::= { etherHistoryEntry 7 }

          etherHistoryMulticastPkts OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of good packets received during this
                  sampling interval that were directed to a
                  multicast address.  Note that this number does not
                  include packets addressed to the broadcast address."
              ::= { etherHistoryEntry 8 }

          etherHistoryCRCAlignErrors OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of packets received during this
                  sampling interval that had a length (excluding
                  framing bits but including FCS octets) between
                  64 and 1518 octets, inclusive, but were not an
                  integral number of octets in length or had a
                  bad Frame Check Sequence (FCS)."
              ::= { etherHistoryEntry 9 }


          etherHistoryUndersizePkts OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of packets received during this
                  interval that were less than 64 octets long
                  (excluding framing bits but including FCS
                  octets) and were otherwise well formed."
              ::= { etherHistoryEntry 10 }

          etherHistoryOversizePkts OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of packets received during this
                  interval that were longer than 1518 octets
                  (excluding framing bits but including FCS
                  octets) but were otherwise well formed."
              ::= { etherHistoryEntry 11 }

          etherHistoryFragments OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The total number of packets received during this
                  sampling interval that were not an integral
                  number of octets in length or that
                  had a bad Frame Check Sequence (FCS), and
                  were less than 64 octets in length (excluding
                  framing bits but including FCS octets)."
              ::= { etherHistoryEntry 12 }

          etherHistoryJabbers OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of packets received during this
                  interval that were longer than 1518 octets
                  (excluding framing bits but including FCS octets),
                  and were not an integral number of octets in
                  length or had a bad Frame Check Sequence (FCS)."
              ::= { etherHistoryEntry 13 }


          etherHistoryCollisions OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The best estimate of the total number of collisions
                  on this Ethernet segment during this interval."
              ::= { etherHistoryEntry 14 }

          etherHistoryUtilization OBJECT-TYPE
              SYNTAX INTEGER (0..10000)
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The best estimate of the mean physical layer
                  network utilization on this interface during this
                  interval, in hundredths of a percent."
              ::= { etherHistoryEntry 15 }

          -- The Alarm Group

          -- Implementation of the Alarm group is optional.
          --
          -- The Alarm Group requires the implementation of the Event
          -- group.
          --
          -- The Alarm group periodically takes statistical samples from
          -- variables in the probe and compares them to thresholds
          -- that have been configured.  The alarm table stores
          -- configuration entries that each define a variable,
          -- polling period, and threshold parameters.  If a sample is
          -- found to cross the threshold values, an event is
          -- generated.  Only variables that resolve to an ASN.1
          -- primitive type of INTEGER (INTEGER, Counter,
          -- Gauge, or TimeTicks) may be monitored in this way.
          --
          -- This function has a hysteresis mechanism to limit the
          -- generation of events.  This mechanism generates one event
          -- as a threshold is crossed in the appropriate direction.
          -- No more events are generated for that threshold until the
          -- opposite threshold is crossed.
          --
          -- In the case of a sampling a deltaValue, a probe may
          -- implement this mechanism with more precision if it takes
          -- a delta sample twice per period, each time comparing the
          -- sum of the latest two samples to the threshold.  This
          -- allows the detection of threshold crossings


          -- that span the sampling boundary.  Note that this does not
          -- require any special configuration of the threshold value.
          -- It is suggested that probes implement this more precise
          -- algorithm.

          alarmTable OBJECT-TYPE
              SYNTAX SEQUENCE OF AlarmEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A list of alarm entries."
              ::= { alarm 1 }

          alarmEntry OBJECT-TYPE
              SYNTAX AlarmEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A list of parameters that set up a periodic checking
                  for alarm conditions."
              INDEX { alarmIndex }
              ::= { alarmTable 1 }

          AlarmEntry ::= SEQUENCE {
              alarmIndex                    INTEGER (1..65535),
              alarmInterval                 INTEGER,
              alarmVariable                 OBJECT IDENTIFIER,
              alarmSampleType               INTEGER,
              alarmValue                    INTEGER,
              alarmStartupAlarm             INTEGER,
              alarmRisingThreshold          INTEGER,
              alarmFallingThreshold         INTEGER,
              alarmRisingEventIndex         INTEGER (1..65535),
              alarmFallingEventIndex        INTEGER (1..65535),
              alarmOwner                    OwnerString,
              alarmStatus                   INTEGER
          }

          alarmIndex OBJECT-TYPE
              SYNTAX INTEGER (1..65535)
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "An index that uniquely identifies an entry in the
                  alarm table.  Each such entry defines a
                  diagnostic sample at a particular interval
                  for an object on the device."
              ::= { alarmEntry 1 }


          alarmInterval OBJECT-TYPE
              SYNTAX INTEGER
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The interval in seconds over which the data is
                  sampled and compared with the rising and falling
                  thresholds.  When setting this variable, care
                  should be given to ensure that the variable being
                  monitored will not exceed 2^31 - 1 and roll
                  over the alarmValue object during the interval.

                  This object may not be modified if the associated
                  alarmStatus object is equal to valid(1)."
              ::= { alarmEntry 2 }

          alarmVariable OBJECT-TYPE
              SYNTAX OBJECT IDENTIFIER
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The object identifier of the particular variable to
                  be sampled.  Only variables that resolve to an ASN.1
                  primitive type of INTEGER (INTEGER, Counter, Gauge,
                  or TimeTicks) may be sampled.

                  Because SNMP access control is articulated entirely
                  in terms of the contents of MIB views, no access
                  control mechanism exists that can restrict the value of
                  this object to identify only those objects that exist
                  in a particular MIB view.  Because there is thus no
                  acceptable means of restricting the read access that
                  could be obtained through the alarm mechanism, the
                  probe must only grant write access to this object in
                  those views that have read access to all objects on
                  the probe.

                  During a set operation, if the supplied variable
                  name is not available in the selected MIB view, a
                  badValue error must be returned.  If at any time
                  the variable name of an established alarmEntry is
                  no longer available in the selected MIB view, the
                  probe must change the status of this alarmEntry
                  to invalid(4).

                  This object may not be modified if the associated
                  alarmStatus object is equal to valid(1)."
              ::= { alarmEntry 3 }


          alarmSampleType OBJECT-TYPE
              SYNTAX INTEGER {
                  absoluteValue(1),
                  deltaValue(2)
              }
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The method of sampling the selected variable and
                  calculating the value to be compared against the
                  thresholds.  If the value of this object is
                  absoluteValue(1), the value of the selected variable
                  will be compared directly with the thresholds at the
                  end of the sampling interval.  If the value of this
                  object is deltaValue(2), the value of the selected
                  variable at the last sample will be subtracted from
                  the current value, and the difference compared with
                  the thresholds.

                  This object may not be modified if the associated
                  alarmStatus object is equal to valid(1)."
              ::= { alarmEntry 4 }

          alarmValue OBJECT-TYPE
              SYNTAX INTEGER
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The value of the statistic during the last sampling
                  period.  The value during the current sampling period
                  is not made available until the period is completed."
              ::= { alarmEntry 5 }

          alarmStartupAlarm OBJECT-TYPE
              SYNTAX INTEGER {
                  risingAlarm(1),
                  fallingAlarm(2),
                  risingOrFallingAlarm(3)
              }
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The alarm that may be sent when this entry is first
                  set to valid.  If the first sample after this entry
                  becomes valid is greater than or equal to the
                  risingThreshold and alarmStartupAlarm is equal to
                  risingAlarm(1) or risingOrFallingAlarm(3), then a
                  single rising alarm will be generated.  If the first


                  sample after this entry becomes valid is less than
                  or equal to the fallingThreshold and
                  alarmStartupAlarm is equal to fallingAlarm(2) or
                  risingOrFallingAlarm(3), then a single falling
                  alarm will be generated.

                  This object may not be modified if the associated
                  alarmStatus object is equal to valid(1)."
              ::= { alarmEntry 6 }

          alarmRisingThreshold OBJECT-TYPE
              SYNTAX INTEGER
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "A threshold for the sampled statistic.  When the
                  current sampled value is greater than or equal to
                  this threshold, and the value at the last sampling
                  interval was less than this threshold, a single
                  event will be generated.
                  A single event will also be generated if the first
                  sample after this entry becomes valid is greater
                  than or equal to this threshold and the associated
                  alarmStartupAlarm is equal to risingAlarm(1) or
                  risingOrFallingAlarm(3).

                  After a rising event is generated, another such event
                  will not be generated until the sampled value
                  falls below this threshold and reaches the
                  alarmFallingThreshold.

                  This object may not be modified if the associated
                  alarmStatus object is equal to valid(1)."
              ::= { alarmEntry 7 }

          alarmFallingThreshold OBJECT-TYPE
              SYNTAX INTEGER
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "A threshold for the sampled statistic.  When the
                  current sampled value is less than or equal to
                  this threshold, and the value at the last sampling
                  interval was greater than this threshold, a single
                  event will be generated.
                  A single event will also be generated if the first
                  sample after this entry becomes valid is less than or
                  equal to this threshold and the associated


                  alarmStartupAlarm is equal to fallingAlarm(2) or
                  risingOrFallingAlarm(3).

                  After a falling event is generated, another such event
                  will not be generated until the sampled value
                  rises above this threshold and reaches the
                  alarmRisingThreshold.

                  This object may not be modified if the associated
                  alarmStatus object is equal to valid(1)."
              ::= { alarmEntry 8 }

          alarmRisingEventIndex OBJECT-TYPE
              SYNTAX INTEGER (0..65535)
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The index of the eventEntry that is
                  used when a rising threshold is crossed.  The
                  eventEntry identified by a particular value of
                  this index is the same as identified by the same value
                  of the eventIndex object.  If there is no
                  corresponding entry in the eventTable, then
                  no association exists.  In particular, if this value
                  is zero, no associated event will be generated, as
                  zero is not a valid event index.

                  This object may not be modified if the associated
                  alarmStatus object is equal to valid(1)."
              ::= { alarmEntry 9 }

          alarmFallingEventIndex OBJECT-TYPE
              SYNTAX INTEGER (0..65535)
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The index of the eventEntry that is
                  used when a falling threshold is crossed.  The
                  eventEntry identified by a particular value of
                  this index is the same as identified by the same value
                  of the eventIndex object.  If there is no
                  corresponding entry in the eventTable, then
                  no association exists.  In particular, if this value
                  is zero, no associated event will be generated, as
                  zero is not a valid event index.

                  This object may not be modified if the associated
                  alarmStatus object is equal to valid(1)."


              ::= { alarmEntry 10 }

          alarmOwner OBJECT-TYPE
              SYNTAX OwnerString
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The entity that configured this entry and is
                  therefore using the resources assigned to it."
              ::= { alarmEntry 11 }

          alarmStatus OBJECT-TYPE
              SYNTAX EntryStatus
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The status of this alarm entry."
              ::= { alarmEntry 12 }

          -- The Host Group

          -- Implementation of the Host group is optional.
          --
          -- The host group discovers new hosts on the network by
          -- keeping a list of source and destination MAC Addresses seen
          -- in good packets.  For each of these addresses, the host
          -- group keeps a set of statistics.  The hostControlTable
          -- controls which interfaces this function is performed on,
          -- and contains some information about the process.  On
          -- behalf of each hostControlEntry, data is collected on an
          -- interface and placed both the hostTable and the
          -- hostTimeTable.  If the monitoring device finds itself
          -- short of resources, it may delete entries as needed.  It
          -- is suggested that the device delete the least recently
          -- used entries first.

          -- The hostTable contains entries for each address
          -- discovered on a particular interface.  Each entry
          -- contains statistical data about that host.  This table
          -- is indexed by the MAC address of the host, through
          -- which a random access may be achieved.

          -- The hostTimeTable contains data in the same format as the
          -- hostTable, and must contain the same set of hosts, but is
          -- indexed using hostTimeCreationOrder rather than hostAddress.
          -- The hostTimeCreationOrder is an integer which reflects
          -- the relative order in which a particular entry was


          -- discovered and thus inserted into the table.  As this
          -- order, and thus index, is among those entries currently
          -- in the table, the index for a particular entry may change
          -- if an (earlier) entry is deleted.  Thus the association
          -- between hostTimeCreationOrder and hostTimeEntry may be
          -- broken at any time.

          -- The hostTimeTable has two important uses.  The first is the
          -- fast download of this potentially large table.  Because the
          -- index of this table runs from 1 to the size of the table,
          -- inclusive, its values are predictable.  This allows very
          -- efficient packing of variables into SNMP PDU's and allows
          -- a table transfer to have multiple packets outstanding.
          -- These benefits increase transfer rates tremendously.

          -- The second use of the hostTimeTable is the efficient
          -- discovery by the management station of new entries added
          -- to the table.  After the management station has
          -- downloaded the entire table, it knows that new entries
          -- will be added immediately after the end of the current
          -- table.  It can thus detect new entries there
          -- and retrieve them easily.

          -- Because the association between hostTimeCreationOrder and
          -- hostTimeEntry may be broken at any time, the management
          -- station must monitor the related hostControlLastDeleteTime
          -- object.  When the management station thus detects a deletion,
          -- it must assume that any such associations have been broken,
          -- and invalidate any it has stored locally.  This includes
          -- restarting any download of the hostTimeTable that may have
          -- been in progress, as well as rediscovering the end of the
          -- hostTimeTable so that it may detect new entries.  If the
          -- management station does not detect the broken association,
          -- it may continue to refer to a particular host by its
          -- creationOrder while unwittingly retrieving the data
          -- associated with another host entirely.  If this happens
          -- while downloading the host table, the management station
          -- may fail to download all of the entries in the table.

          hostControlTable OBJECT-TYPE
              SYNTAX SEQUENCE OF HostControlEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A list of host table control entries."
              ::= { hosts 1 }


          hostControlEntry OBJECT-TYPE
              SYNTAX HostControlEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A list of parameters that set up the discovery of
                  hosts on a particular interface and the collection
                  of statistics about these hosts."
              INDEX { hostControlIndex }
              ::= { hostControlTable 1 }

          HostControlEntry ::= SEQUENCE {
              hostControlIndex            INTEGER (1..65535),
              hostControlDataSource       OBJECT IDENTIFIER,
              hostControlTableSize        INTEGER,
              hostControlLastDeleteTime   TimeTicks,
              hostControlOwner            OwnerString,
              hostControlStatus           INTEGER
          }

          hostControlIndex OBJECT-TYPE
              SYNTAX INTEGER (1..65535)
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "An index that uniquely identifies an entry in the
                  hostControl table.  Each such entry defines
                  a function that discovers hosts on a particular
                  interface and places statistics about them in the
                  hostTable and the hostTimeTable on behalf of this
                  hostControlEntry."
              ::= { hostControlEntry 1 }

          hostControlDataSource OBJECT-TYPE
              SYNTAX OBJECT IDENTIFIER
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "This object identifies the source of the data for
                  this instance of the host function.  This source
                  can be any interface on this device.  In order
                  to identify a particular interface, this object shall
                  identify the instance of the ifIndex object, defined
                  in [4,6], for the desired interface.  For example,
                  if an entry were to receive data from interface #1,
                  this object would be set to ifIndex.1.

                  The statistics in this group reflect all packets


                  on the local network segment attached to the
                  identified interface.

                  This object may not be modified if the associated
                  hostControlStatus object is equal to valid(1)."
              ::= { hostControlEntry 2 }

          hostControlTableSize OBJECT-TYPE
              SYNTAX INTEGER
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of hostEntries in the hostTable and the
                  hostTimeTable associated with this hostControlEntry."
              ::= { hostControlEntry 3 }

          hostControlLastDeleteTime OBJECT-TYPE
              SYNTAX TimeTicks
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The value of sysUpTime when the last entry
                  was deleted from the portion of the hostTable
                  associated with this hostControlEntry.  If no
                  deletions have occurred, this value shall be zero."
              ::= { hostControlEntry 4 }

          hostControlOwner OBJECT-TYPE
              SYNTAX OwnerString
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The entity that configured this entry and is
                  therefore using the resources assigned to it."
              ::= { hostControlEntry 5 }

          hostControlStatus OBJECT-TYPE
              SYNTAX EntryStatus
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The status of this hostControl entry.

                  If this object is not equal to valid(1), all
                  associated entries in the hostTable,
                  hostTimeTable, and the hostTopNTable shall be
                  deleted by the agent."
              ::= { hostControlEntry 6 }


          hostTable OBJECT-TYPE
              SYNTAX SEQUENCE OF HostEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A list of host entries."
              ::= { hosts 2 }

          hostEntry OBJECT-TYPE
              SYNTAX HostEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A collection of statistics for a particular host
                  that has been discovered on an interface of this
                  device."
              INDEX { hostIndex, hostAddress }
              ::= { hostTable 1 }

          HostEntry ::= SEQUENCE {
              hostAddress             OCTET STRING,
              hostCreationOrder       INTEGER (1..65535),
              hostIndex               INTEGER (1..65535),
              hostInPkts              Counter,
              hostOutPkts             Counter,
              hostInOctets            Counter,
              hostOutOctets           Counter,
              hostOutErrors           Counter,
              hostOutBroadcastPkts    Counter,
              hostOutMulticastPkts    Counter
          }

          hostAddress OBJECT-TYPE
              SYNTAX OCTET STRING
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The physical address of this host."
              ::= { hostEntry 1 }

          hostCreationOrder OBJECT-TYPE
              SYNTAX INTEGER (1..65535)
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "An index that defines the relative ordering of
                  the creation time of hosts captured for a
                  particular hostControlEntry.  This index shall


                  be between 1 and N, where N is the value of
                  the associated hostControlTableSize.  The ordering
                  of the indexes is based on the order of each entry's
                  insertion into the table, in which entries added
                  earlier have a lower index value than entries added
                  later.

                  It is important to note that the order for a
                  particular entry may change as an (earlier) entry
                  is deleted from the table.  Because this order may
                  change, management stations should make use of the
                  hostControlLastDeleteTime variable in the
                  hostControlEntry associated with the relevant
                  portion of the hostTable.  By observing
                  this variable, the management station may detect
                  the circumstances where a previous association
                  between a value of hostCreationOrder
                  and a hostEntry may no longer hold."
              ::= { hostEntry 2 }

          hostIndex OBJECT-TYPE
              SYNTAX INTEGER (1..65535)
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The set of collected host statistics of which
                  this entry is a part.  The set of hosts
                  identified by a particular value of this
                  index is associated with the hostControlEntry
                  as identified by the same value of hostControlIndex."
              ::= { hostEntry 3 }

          hostInPkts OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of packets without errors transmitted to
                  this address since it was added to the hostTable."
              ::= { hostEntry 4 }

          hostOutPkts OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of packets including errors transmitted
                  by this address since it was added to the hostTable."


              ::= { hostEntry 5 }

          hostInOctets OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of octets transmitted to this address
                  since it was added to the hostTable (excluding
                  framing bits but including FCS octets), except for
                  those octets in packets that contained errors."
              ::= { hostEntry 6 }

          hostOutOctets OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of octets transmitted by this address
                  since it was added to the hostTable (excluding
                  framing bits but including FCS octets), including
                  those octets in packets that contained errors."
              ::= { hostEntry 7 }

          hostOutErrors OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of error packets transmitted by this
                  address since this host was added to the hostTable."
              ::= { hostEntry 8 }

          hostOutBroadcastPkts OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of good packets transmitted by this
                  address that were directed to the broadcast address
                  since this host was added to the hostTable."
              ::= { hostEntry 9 }

          hostOutMulticastPkts OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION


                  "The number of good packets transmitted by this
                  address that were directed to a multicast address
                  since this host was added to the hostTable.
                  Note that this number does not include packets
                  directed to the broadcast address."
              ::= { hostEntry 10 }

          -- host Time Table

          hostTimeTable OBJECT-TYPE
              SYNTAX SEQUENCE OF HostTimeEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A list of time-ordered host table entries."
              ::= { hosts 3 }

          hostTimeEntry OBJECT-TYPE
              SYNTAX HostTimeEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A collection of statistics for a particular host
                  that has been discovered on an interface of this
                  device.  This collection includes the relative
                  ordering of the creation time of this object."
              INDEX { hostTimeIndex, hostTimeCreationOrder }
              ::= { hostTimeTable 1 }

          HostTimeEntry ::= SEQUENCE {
              hostTimeAddress              OCTET STRING,
              hostTimeCreationOrder        INTEGER (1..65535),
              hostTimeIndex                INTEGER (1..65535),
              hostTimeInPkts               Counter,
              hostTimeOutPkts              Counter,
              hostTimeInOctets             Counter,
              hostTimeOutOctets            Counter,
              hostTimeOutErrors            Counter,
              hostTimeOutBroadcastPkts     Counter,
              hostTimeOutMulticastPkts     Counter
          }

          hostTimeAddress OBJECT-TYPE
              SYNTAX OCTET STRING
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION


                  "The physical address of this host."
              ::= { hostTimeEntry 1 }

          hostTimeCreationOrder OBJECT-TYPE
              SYNTAX INTEGER (1..65535)
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "An index that uniquely identifies an entry in
                  the hostTime table among those entries associated
                  with the same hostControlEntry.  This index shall
                  be between 1 and N, where N is the value of
                  the associated hostControlTableSize.  The ordering
                  of the indexes is based on the order of each entry's
                  insertion into the table, in which entries added
                  earlier have a lower index value than entries added
                  later.  Thus the management station has the ability
                  to learn of new entries added to this table without
                  downloading the entire table.

                  It is important to note that the index for a
                  particular entry may change as an (earlier) entry
                  is deleted from the table.  Because this order may
                  change, management stations should make use of the
                  hostControlLastDeleteTime variable in the
                  hostControlEntry associated with the relevant
                  portion of the hostTimeTable.  By observing
                  this variable, the management station may detect
                  the circumstances where a download of the table
                  may have missed entries, and where a previous
                  association between a value of hostTimeCreationOrder
                  and a hostTimeEntry may no longer hold."
              ::= { hostTimeEntry 2 }

          hostTimeIndex OBJECT-TYPE
              SYNTAX INTEGER (1..65535)
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The set of collected host statistics of which
                  this entry is a part.  The set of hosts
                  identified by a particular value of this
                  index is associated with the hostControlEntry
                  as identified by the same value of hostControlIndex."
              ::= { hostTimeEntry 3 }


          hostTimeInPkts OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of packets without errors transmitted to
                  this address since it was added to the hostTimeTable."
              ::= { hostTimeEntry 4 }

          hostTimeOutPkts OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of packets including errors transmitted
                  by this address since it was added to the
                  hostTimeTable."
              ::= { hostTimeEntry 5 }

          hostTimeInOctets OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of octets transmitted to this address
                  since it was added to the hostTimeTable (excluding
                  framing bits but including FCS octets), except for
                  those octets in packets that contained errors."
              ::= { hostTimeEntry 6 }

          hostTimeOutOctets OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of octets transmitted by this address since
                  it was added to the hostTimeTable (excluding framing
                  bits but including FCS octets), including those
                  octets in packets that contained errors."
              ::= { hostTimeEntry 7 }

          hostTimeOutErrors OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of error packets transmitted by this
                  address since this host was added to the


                  hostTimeTable."
              ::= { hostTimeEntry 8 }

          hostTimeOutBroadcastPkts OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of good packets transmitted by this
                  address that were directed to the broadcast address
                  since this host was added to the hostTimeTable."
              ::= { hostTimeEntry 9 }

          hostTimeOutMulticastPkts OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of good packets transmitted by this
                  address that were directed to a multicast address
                  since this host was added to the hostTimeTable.
                  Note that this number does not include packets
                  directed to the broadcast address."
              ::= { hostTimeEntry 10 }

          -- The Host Top "N" Group

          -- Implementation of the Host Top N group is optional.
          --
          -- The Host Top N group requires the implementation of the
          -- host group.
          --
          -- The Host Top N group is used to prepare reports that
          -- describe the hosts that top a list ordered by one of
          -- their statistics.  The available statistics are samples
          -- of one of their base statistics, over an interval
          -- specified by the management station.  Thus, these
          -- statistics are rate based.  The management
          -- station also selects how many such hosts are reported.

          -- The hostTopNControlTable is used to initiate the generation
          -- of such a report.  The management station may select the
          -- parameters of such a report, such as which interface,
          -- which statistic, how many hosts, and the start and stop
          -- times of the sampling.  When the report is prepared,
          -- entries are created in the hostTopNTable associated with
          -- the relevant hostTopNControlEntry.  These entries are


          -- static for each report after it has been prepared.

          hostTopNControlTable OBJECT-TYPE
              SYNTAX SEQUENCE OF HostTopNControlEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A list of top N host control entries."
              ::= { hostTopN 1 }

          hostTopNControlEntry OBJECT-TYPE
              SYNTAX HostTopNControlEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A set of parameters that control the creation of a
                  report of the top N hosts according to several
                  metrics."
              INDEX { hostTopNControlIndex }
              ::= { hostTopNControlTable 1 }

          HostTopNControlEntry ::= SEQUENCE {
              hostTopNControlIndex    INTEGER (1..65535),
              hostTopNHostIndex       INTEGER (1..65535),
              hostTopNRateBase        INTEGER,
              hostTopNTimeRemaining   INTEGER,
              hostTopNDuration        INTEGER,
              hostTopNRequestedSize   INTEGER,
              hostTopNGrantedSize     INTEGER,
              hostTopNStartTime       TimeTicks,
              hostTopNOwner           OwnerString,
              hostTopNStatus          INTEGER
          }

          hostTopNControlIndex OBJECT-TYPE
              SYNTAX INTEGER (1..65535)
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "An index that uniquely identifies an entry
                  in the hostTopNControl table.  Each such
                  entry defines one top N report prepared for
                  one interface."
              ::= { hostTopNControlEntry 1 }

          hostTopNHostIndex OBJECT-TYPE
              SYNTAX INTEGER (1..65535)
              ACCESS read-write


              STATUS mandatory
              DESCRIPTION
                  "The host table for which a top N report will be
                  prepared on behalf of this entry.  The host table
                  identified by a particular value of this index is
                  associated with the same host table as identified
                  by the same value of hostIndex.

                  This object may not be modified if the associated
                  hostTopNStatus object is equal to valid(1)."
              ::= { hostTopNControlEntry 2 }

          hostTopNRateBase OBJECT-TYPE
              SYNTAX INTEGER {
                      hostTopNInPkts(1),
                      hostTopNOutPkts(2),
                      hostTopNInOctets(3),
                      hostTopNOutOctets(4),
                      hostTopNOutErrors(5),
                      hostTopNOutBroadcastPkts(6),
                      hostTopNOutMulticastPkts(7)
              }
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The variable for each host that the hostTopNRate
                  variable is based upon.

                  This object may not be modified if the associated
                  hostTopNStatus object is equal to valid(1)."
              ::= { hostTopNControlEntry 3 }

          hostTopNTimeRemaining OBJECT-TYPE
              SYNTAX INTEGER
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The number of seconds left in the report currently
                  being collected.  When this object is modified by
                  the management station, a new collection is started,
                  possibly aborting a currently running report.  The
                  new value is used as the requested duration of this
                  report, which is loaded into the associated
                  hostTopNDuration object.

                  When this object is set to a non-zero value, any
                  associated hostTopNEntries shall be made
                  inaccessible by the monitor.  While the value of this


                  object is non-zero, it decrements by one per second
                  until it reaches zero.  During this time, all
                  associated hostTopNEntries shall remain
                  inaccessible.  At the time that this object
                  decrements to zero, the report is made
                  accessible in the hostTopNTable.  Thus, the hostTopN
                  table needs to be created only at the end of the
                  collection interval."
              DEFVAL { 0 }
              ::= { hostTopNControlEntry 4 }

          hostTopNDuration OBJECT-TYPE
              SYNTAX INTEGER
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of seconds that this report has collected
                  during the last sampling interval, or if this
                  report is currently being collected, the number
                  of seconds that this report is being collected
                  during this sampling interval.

                  When the associated hostTopNTimeRemaining object is
                  set, this object shall be set by the probe to the
                  same value and shall not be modified until the next
                  time the hostTopNTimeRemaining is set.

                  This value shall be zero if no reports have been
                  requested for this hostTopNControlEntry."
              DEFVAL { 0 }
              ::= { hostTopNControlEntry 5 }

          hostTopNRequestedSize OBJECT-TYPE
              SYNTAX INTEGER
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The maximum number of hosts requested for the top N
                  table.

                  When this object is created or modified, the probe
                  should set hostTopNGrantedSize as closely to this
                  object as is possible for the particular probe
                  implementation and available resources."
              DEFVAL { 10 }
              ::= { hostTopNControlEntry 6 }


          hostTopNGrantedSize OBJECT-TYPE
              SYNTAX INTEGER
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The maximum number of hosts in the top N table.

                  When the associated hostTopNRequestedSize object is
                  created or modified, the probe should set this
                  object as closely to the requested value as is
                  possible for the particular implementation and
                  available resources. The probe must not lower this
                  value except as a result of a set to the associated
                  hostTopNRequestedSize object.

                  Hosts with the highest value of hostTopNRate shall be
                  placed in this table in decreasing order of this rate
                  until there is no more room or until there are no more
                  hosts."
              ::= { hostTopNControlEntry 7 }

          hostTopNStartTime OBJECT-TYPE
              SYNTAX TimeTicks
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The value of sysUpTime when this top N report was
                  last started.  In other words, this is the time that
                  the associated hostTopNTimeRemaining object was
                  modified to start the requested report."
              ::= { hostTopNControlEntry 8 }

          hostTopNOwner OBJECT-TYPE
              SYNTAX OwnerString
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The entity that configured this entry and is
                  therefore using the resources assigned to it."
              ::= { hostTopNControlEntry 9 }

          hostTopNStatus OBJECT-TYPE
              SYNTAX EntryStatus
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The status of this hostTopNControl entry.


                  If this object is not equal to valid(1), all
                  associated hostTopNEntries shall be deleted by
                  the agent."
              ::= { hostTopNControlEntry 10 }

          hostTopNTable OBJECT-TYPE
              SYNTAX SEQUENCE OF HostTopNEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A list of top N host entries."
              ::= { hostTopN 2 }

          hostTopNEntry OBJECT-TYPE
              SYNTAX HostTopNEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A set of statistics for a host that is part of a
                  top N report."
              INDEX { hostTopNReport, hostTopNIndex }
              ::= { hostTopNTable 1 }

          HostTopNEntry ::= SEQUENCE {
              hostTopNReport                INTEGER (1..65535),
              hostTopNIndex                 INTEGER (1..65535),
              hostTopNAddress               OCTET STRING,
              hostTopNRate                  INTEGER
          }

          hostTopNReport OBJECT-TYPE
              SYNTAX INTEGER (1..65535)
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "This object identifies the top N report of which
                  this entry is a part.  The set of hosts
                  identified by a particular value of this
                  object is part of the same report as identified
                  by the same value of the hostTopNControlIndex object."
              ::= { hostTopNEntry 1 }

          hostTopNIndex OBJECT-TYPE
              SYNTAX INTEGER (1..65535)
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "An index that uniquely identifies an entry in


                  the hostTopN table among those in the same report.
                  This index is between 1 and N, where N is the
                  number of entries in this table.  Increasing values
                  of hostTopNIndex shall be assigned to entries with
                  decreasing values of hostTopNRate until index N
                  is assigned to the entry with the lowest value of
                  hostTopNRate or there are no more hostTopNEntries."
              ::= { hostTopNEntry 2 }

          hostTopNAddress OBJECT-TYPE
              SYNTAX OCTET STRING
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The physical address of this host."
              ::= { hostTopNEntry 3 }

          hostTopNRate OBJECT-TYPE
              SYNTAX INTEGER
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The amount of change in the selected variable
                  during this sampling interval.  The selected
                  variable is this host's instance of the object
                  selected by hostTopNRateBase."
              ::= { hostTopNEntry 4 }

          -- The Matrix Group

          -- Implementation of the Matrix group is optional.
          --
          -- The Matrix group consists of the matrixControlTable,
          -- matrixSDTable and the matrixDSTable.  These tables
          -- store statistics for a particular conversation between
          -- two addresses.  As the device detects a new conversation,
          -- including those to a non-unicast address, it creates a
          -- new entry in both of the matrix tables.
          -- It must only create new entries based on information
          -- received in good packets.  If the monitoring device finds
          -- itself short of resources, it may delete entries as needed.
          -- It is suggested that the device delete the least recently
          -- used entries first.

          matrixControlTable OBJECT-TYPE
              SYNTAX SEQUENCE OF MatrixControlEntry
              ACCESS not-accessible


              STATUS mandatory
              DESCRIPTION
                  "A list of information entries for the
                  traffic matrix on each interface."
              ::= { matrix 1 }

          matrixControlEntry OBJECT-TYPE
              SYNTAX MatrixControlEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "Information about a traffic matrix on a
                  particular interface."
              INDEX { matrixControlIndex }
              ::= { matrixControlTable 1 }

          MatrixControlEntry ::= SEQUENCE {
              matrixControlIndex           INTEGER (1..65535),
              matrixControlDataSource      OBJECT IDENTIFIER,
              matrixControlTableSize       INTEGER,
              matrixControlLastDeleteTime  TimeTicks,
              matrixControlOwner           OwnerString,
              matrixControlStatus          INTEGER
          }

          matrixControlIndex OBJECT-TYPE
              SYNTAX INTEGER (1..65535)
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "An index that uniquely identifies an entry in the
                  matrixControl table.  Each such entry defines
                  a function that discovers conversations on a particular
                  interface and places statistics about them in the
                  matrixSDTable and the matrixDSTable on behalf of this
                  matrixControlEntry."
              ::= { matrixControlEntry 1 }

          matrixControlDataSource OBJECT-TYPE
              SYNTAX OBJECT IDENTIFIER
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "This object identifies the source of
                  the data from which this entry creates a traffic matrix.
                  This source can be any interface on this device.  In
                  order to identify a particular interface, this object
                  shall identify the instance of the ifIndex object,


                  defined in [4,6], for the desired interface.  For
                  example, if an entry were to receive data from
                  interface #1, this object would be set to ifIndex.1.

                  The statistics in this group reflect all packets
                  on the local network segment attached to the
                  identified interface.

                  This object may not be modified if the associated
                  matrixControlStatus object is equal to valid(1)."
              ::= { matrixControlEntry 2 }

          matrixControlTableSize OBJECT-TYPE
              SYNTAX INTEGER
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of matrixSDEntries in the matrixSDTable
                  for this interface.  This must also be the value of
                  the number of entries in the matrixDSTable for this
                  interface."
              ::= { matrixControlEntry 3 }

          matrixControlLastDeleteTime OBJECT-TYPE
              SYNTAX TimeTicks
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The value of sysUpTime when the last entry
                  was deleted from the portion of the matrixSDTable
                  or matrixDSTable associated with this
                  matrixControlEntry.
                  If no deletions have occurred, this value shall be
                  zero."
              ::= { matrixControlEntry 4 }

          matrixControlOwner OBJECT-TYPE
              SYNTAX OwnerString
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The entity that configured this entry and is
                  therefore using the resources assigned to it."
              ::= { matrixControlEntry 5 }

          matrixControlStatus OBJECT-TYPE
              SYNTAX EntryStatus
              ACCESS read-write


              STATUS mandatory
              DESCRIPTION
                  "The status of this matrixControl entry.

                  If this object is not equal to valid(1), all
                  associated entries in the matrixSDTable and the
                  matrixDSTable shall be deleted by the agent."
              ::= { matrixControlEntry 6 }

          matrixSDTable OBJECT-TYPE
              SYNTAX SEQUENCE OF MatrixSDEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A list of traffic matrix entries indexed by
                  source and destination MAC address."
              ::= { matrix 2 }

          matrixSDEntry OBJECT-TYPE
              SYNTAX MatrixSDEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A collection of statistics for communications between
                  two addresses on a particular interface."
              INDEX { matrixSDIndex,
                      matrixSDSourceAddress, matrixSDDestAddress }
              ::= { matrixSDTable 1 }

          MatrixSDEntry ::= SEQUENCE {
              matrixSDSourceAddress       OCTET STRING,
              matrixSDDestAddress         OCTET STRING,
              matrixSDIndex               INTEGER (1..65535),
              matrixSDPkts                Counter,
              matrixSDOctets              Counter,
              matrixSDErrors              Counter
          }

          matrixSDSourceAddress OBJECT-TYPE
              SYNTAX OCTET STRING
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The source physical address."
              ::= { matrixSDEntry 1 }


          matrixSDDestAddress OBJECT-TYPE
              SYNTAX OCTET STRING
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The destination physical address."
              ::= { matrixSDEntry 2 }

          matrixSDIndex OBJECT-TYPE
              SYNTAX INTEGER (1..65535)
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The set of collected matrix statistics of which
                  this entry is a part.  The set of matrix statistics
                  identified by a particular value of this index
                  is associated with the same matrixControlEntry
                  as identified by the same value of matrixControlIndex."
              ::= { matrixSDEntry 3 }

          matrixSDPkts OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of packets transmitted from the source
                  address to the destination address (this number
                  includes error packets)."
              ::= { matrixSDEntry 4 }

          matrixSDOctets OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of octets (excluding framing bits but
                  including FCS octets) contained in all packets
                  transmitted from the source address to the
                  destination address."
              ::= { matrixSDEntry 5 }

          matrixSDErrors OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of error packets transmitted from
                  the source address to the destination address."


              ::= { matrixSDEntry 6 }

          -- Traffic matrix tables from destination to source

          matrixDSTable OBJECT-TYPE
              SYNTAX SEQUENCE OF MatrixDSEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A list of traffic matrix entries indexed by
                  destination and source MAC address."
              ::= { matrix 3 }

          matrixDSEntry OBJECT-TYPE
              SYNTAX MatrixDSEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A collection of statistics for communications between
                  two address on a particular interface."
              INDEX { matrixDSIndex,
                      matrixDSDestAddress, matrixDSSourceAddress }
              ::= { matrixDSTable 1 }

          MatrixDSEntry ::= SEQUENCE {
              matrixDSSourceAddress       OCTET STRING,
              matrixDSDestAddress         OCTET STRING,
              matrixDSIndex               INTEGER (1..65535),
              matrixDSPkts                Counter,
              matrixDSOctets              Counter,
              matrixDSErrors              Counter
          }

          matrixDSSourceAddress OBJECT-TYPE
              SYNTAX OCTET STRING
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The source physical address."
              ::= { matrixDSEntry 1 }

          matrixDSDestAddress OBJECT-TYPE
              SYNTAX OCTET STRING
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The destination physical address."


              ::= { matrixDSEntry 2 }

          matrixDSIndex OBJECT-TYPE
              SYNTAX INTEGER (1..65535)
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The set of collected matrix statistics of which
                  this entry is a part.  The set of matrix statistics
                  identified by a particular value of this index
                  is associated with the same matrixControlEntry
                  as identified by the same value of matrixControlIndex."
              ::= { matrixDSEntry 3 }

          matrixDSPkts OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of packets transmitted from the source
                  address to the destination address (this number
                  includes error packets)."
              ::= { matrixDSEntry 4 }

          matrixDSOctets OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of octets (excluding framing bits
                  but including FCS octets) contained in all packets
                  transmitted from the source address to the
                  destination address."
              ::= { matrixDSEntry 5 }

          matrixDSErrors OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of error packets transmitted from
                  the source address to the destination address."
              ::= { matrixDSEntry 6 }

          -- The Filter Group

          -- Implementation of the Filter group is optional.


          --
          -- The Filter group allows packets to be captured with an
          -- arbitrary filter expression.  A logical data and
          -- event stream or "channel" is formed by the packets
          -- that match the filter expression.
          --
          -- This filter mechanism allows the creation of an arbitrary
          -- logical expression with which to filter packets.  Each
          -- filter associated with a channel is OR'ed with the others.
          -- Within a filter, any bits checked in the data and status are
          -- AND'ed with respect to other bits in the same filter.  The
          -- NotMask also allows for checking for inequality.  Finally,
          -- the channelAcceptType object allows for inversion of the
          -- whole equation.
          --
          -- The channel can be turned on or off, and can also
          -- generate events when packets pass through it.

          filterTable OBJECT-TYPE
              SYNTAX SEQUENCE OF FilterEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A list of packet filter entries."
              ::= { filter 1 }

          filterEntry OBJECT-TYPE
              SYNTAX FilterEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A set of parameters for a packet filter applied on a
                  particular interface."
              INDEX { filterIndex }
              ::= { filterTable 1 }

          FilterEntry ::= SEQUENCE {
              filterIndex                 INTEGER (1..65535),
              filterChannelIndex          INTEGER (1..65535),
              filterPktDataOffset         INTEGER,
              filterPktData               OCTET STRING,
              filterPktDataMask           OCTET STRING,
              filterPktDataNotMask        OCTET STRING,
              filterPktStatus             INTEGER,
              filterPktStatusMask         INTEGER,
              filterPktStatusNotMask      INTEGER,
              filterOwner                 OwnerString,
              filterStatus                INTEGER


          }

          filterIndex OBJECT-TYPE
              SYNTAX INTEGER (1..65535)
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "An index that uniquely identifies an entry
                  in the filter table.  Each such entry defines
                  one filter that is to be applied to every packet
                  received on an interface."
              ::= { filterEntry 1 }

          filterChannelIndex OBJECT-TYPE
              SYNTAX INTEGER (1..65535)
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "This object identifies the channel of which this
                  filter is a part.  The filters identified by a
                  particular value of this object are associated
                  with the same channel as identified by the same
                  value of the channelIndex object."
              ::= { filterEntry 2 }

          filterPktDataOffset OBJECT-TYPE
              SYNTAX INTEGER
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The offset from the beginning of each packet where
                  a match of packet data will be attempted.  This offset
                  is measured from the point in the physical layer
                  packet after the framing bits, if any.  For example,
                  in an Ethernet frame, this point is at the beginning
                  of the destination MAC address.

                  This object may not be modified if the associated
                  filterStatus object is equal to valid(1)."
              DEFVAL { 0 }
              ::= { filterEntry 3 }

          filterPktData OBJECT-TYPE
              SYNTAX OCTET STRING
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The data that is to be matched with the input packet.


                  For each packet received, this filter and the
                  accompanying filterPktDataMask and
                  filterPktDataNotMask will be adjusted for the
                  offset.  The only bits relevant to this
                  match algorithm are those that have the corresponding
                  filterPktDataMask bit equal to one.  The following
                  three rules are then applied to every packet:

                  (1) If the packet is too short and does not have data
                      corresponding to part of the filterPktData, the
                      packet will fail this data match.

                  (2) For each relevant bit from the packet with the
                      corresponding filterPktDataNotMask bit set to
                      zero, if the bit from the packet is not equal to
                      the corresponding bit from the filterPktData,
                      then the packet will fail this data match.

                  (3) If for every relevant bit from the packet with the
                      corresponding filterPktDataNotMask bit set to one,
                      the bit from the packet is equal to the
                      corresponding bit from the filterPktData, then
                      the packet will fail this data match.

                  Any packets that have not failed any of the three
                  matches above have passed this data match.

                  This object may not be modified if the associated
                  filterStatus object is equal to valid(1)."
              ::= { filterEntry 4 }

          filterPktDataMask OBJECT-TYPE
              SYNTAX OCTET STRING
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The mask that is applied to the match process.
                  After adjusting this mask for the offset, only those
                  bits in the received packet that correspond to bits
                  set in this mask are relevant for further processing
                  by the match algorithm.  The offset is applied to
                  filterPktDataMask in the same way it is applied to
                  the filter.  For the purposes of the matching
                  algorithm, if the associated filterPktData object
                  is longer than this mask, this mask is conceptually
                  extended with '1' bits until it reaches the
                  length of the filterPktData object.


                  This object may not be modified if the associated
                  filterStatus object is equal to valid(1)."
              ::= { filterEntry 5 }

          filterPktDataNotMask OBJECT-TYPE
              SYNTAX OCTET STRING
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The inversion mask that is applied to the match
                  process.  After adjusting this mask for the offset,
                  those relevant bits in the received packet that
                  correspond to bits cleared in this mask must all
                  be equal to their corresponding bits in the
                  filterPktData object for the packet to be accepted.
                  In addition, at least one of those relevant
                  bits in the received packet that correspond to bits
                  set in this mask must be different to its
                  corresponding bit in the filterPktData object.

                  For the purposes of the matching algorithm, if
                  the associated filterPktData object is longer than
                  this mask, this mask is conceptually extended with
                  '0' bits until it reaches the length of the
                  filterPktData object.

                  This object may not be modified if the associated
                  filterStatus object is equal to valid(1)."
              ::= { filterEntry 6 }

          filterPktStatus OBJECT-TYPE
              SYNTAX INTEGER
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The status that is to be matched with the input
                  packet.  The only bits relevant to this match
                  algorithm are those that have the corresponding
                  filterPktStatusMask bit equal to one.

                  The following two rules are then applied to every
                  packet:

                  (1) For each relevant bit from the packet status
                      with the corresponding filterPktStatusNotMask
                      bit set to zero, if the bit from the packet
                      status is not equal to the corresponding bit
                      from the filterPktStatus, then the packet will


                      fail this status match.

                  (2) If for every relevant bit from the packet status
                      with the corresponding filterPktStatusNotMask
                      bit set to one, the bit from the packet status
                      is equal to the corresponding bit from the
                      filterPktStatus, then the packet will fail
                      this status match.

                  Any packets that have not failed either of the two
                  matches above have passed this status match.

                  The value of the packet status is a sum.  This sum
                  initially takes the value zero.  Then, for each
                  error, E, that has been discovered in this packet,
                  2 raised to a value representing E is added to the sum.
                  The errors and the bits that represent them are
                  dependent on the media type of the interface that
                  this channel is receiving packets from.

                  The errors defined for a packet captured off of an
                  Ethernet interface are as follows:

                      bit #    Error
                          0    Packet is longer than 1518 octets
                          1    Packet is shorter than 64 octets
                          2    Packet experienced a CRC or Alignment
                               error

                  For example, an Ethernet fragment would have a
                  value of 6 (2^1 + 2^2).

                  As this MIB is expanded to new media types, this
                  object will have other media-specific errors defined.

                  For the purposes of this status matching algorithm, if
                  the packet status is longer than this
                  object, filterPktStatus this object is conceptually
                  extended with '0' bits until it reaches the size of
                  the packet status.

                  This object may not be modified if the associated
                  filterStatus object is equal to valid(1)."
              ::= { filterEntry 7 }

          filterPktStatusMask OBJECT-TYPE
              SYNTAX INTEGER
              ACCESS read-write


              STATUS mandatory
              DESCRIPTION
                  "The mask that is applied to the status match process.
                  Only those bits in the received packet that correspond
                  to bits set in this mask are relevant for further
                  processing by the status match algorithm.  For the
                  purposes of the matching algorithm, if the
                  associated filterPktStatus object is longer than
                  this mask, this mask is conceptually extended with
                  '1' bits until it reaches the size of the
                  filterPktStatus.  In addition, if a packet status is
                  longer than this mask, this mask is conceptually
                  extended with '0' bits until it reaches the size of
                  the packet status.

                  This object may not be modified if the associated
                  filterStatus object is equal to valid(1)."
              ::= { filterEntry 8 }

          filterPktStatusNotMask OBJECT-TYPE
              SYNTAX INTEGER
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The inversion mask that is applied to the status match
                  process.  Those relevant bits in the received packet
                  status that correspond to bits cleared in this mask
                  must all be equal to their corresponding bits in the
                  filterPktStatus object for the packet to be accepted.
                  In addition, at least one of those relevant bits in the
                  received packet status that correspond to bits set in
                  this mask must be different to its corresponding bit
                  in the filterPktStatus object for the packet to be
                  accepted.

                  For the purposes of the matching algorithm, if the
                  associated filterPktStatus object or a packet status
                  is longer than this mask, this mask is conceptually
                  extended with '0' bits until it reaches the longer of
                  the lengths of the filterPktStatus object and the
                  packet status.

                  This object may not be modified if the associated
                  filterStatus object is equal to valid(1)."
              ::= { filterEntry 9 }

          filterOwner OBJECT-TYPE
              SYNTAX OwnerString


              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The entity that configured this entry and is
                  therefore using the resources assigned to it."
              ::= { filterEntry 10 }

          filterStatus OBJECT-TYPE
              SYNTAX EntryStatus
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The status of this filter entry."
              ::= { filterEntry 11 }

          channelTable OBJECT-TYPE
              SYNTAX SEQUENCE OF ChannelEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A list of packet channel entries."
              ::= { filter 2 }

          channelEntry OBJECT-TYPE
              SYNTAX ChannelEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A set of parameters for a packet channel applied on a
                  particular interface."
              INDEX { channelIndex }
              ::= { channelTable 1 }

          ChannelEntry ::= SEQUENCE {
              channelIndex                 INTEGER (1..65535),
              channelIfIndex               INTEGER (1..65535),
              channelAcceptType            INTEGER,
              channelDataControl           INTEGER,
              channelTurnOnEventIndex      INTEGER (0..65535),
              channelTurnOffEventIndex     INTEGER (0..65535),
              channelEventIndex            INTEGER (0..65535),
              channelEventStatus           INTEGER,
              channelMatches               Counter,
              channelDescription           DisplayString (SIZE (0..127)),
              channelOwner                 OwnerString,
              channelStatus                INTEGER
          }


          channelIndex OBJECT-TYPE
              SYNTAX INTEGER (1..65535)
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "An index that uniquely identifies an entry
                  in the channel table.  Each such
                  entry defines one channel, a logical data
                  and event stream."
              ::= { channelEntry 1 }

          channelIfIndex OBJECT-TYPE
              SYNTAX INTEGER (1..65535)
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The value of this object uniquely identifies the
                  interface on this remote network monitoring device
                  to which the associated filters are applied to allow
                  data into this channel.  The interface identified by
                  a particular value of this object is the same
                  interface as identified by the same value of the
                  ifIndex object, defined in [4,6].  The filters in
                  this group are applied to all packets on the local
                  network segment attached to the identified
                  interface.

                  This object may not be modified if the associated
                  channelStatus object is equal to valid(1)."
              ::= { channelEntry 2 }

          channelAcceptType OBJECT-TYPE
              SYNTAX INTEGER {
                  acceptMatched(1),
                  acceptFailed(2)
              }
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "This object controls the action of the filters
                  associated with this channel.  If this object is equal
                  to acceptMatched(1), packets will be accepted to this
                  channel if they are accepted by both the packet data
                  and packet status matches of an associated filter. If
                  this object is equal to acceptFailed(2), packets will
                  be accepted to this channel only if they fail either
                  the packet data match or the packet status match of
                  each of the associated filters.


                  This object may not be modified if the associated
                  channelStatus object is equal to valid(1)."
              ::= { channelEntry 3 }

          channelDataControl OBJECT-TYPE
              SYNTAX INTEGER {
                  on(1),
                  off(2)
              }
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "This object controls the flow of data through this
                  channel.  If this object is on(1), data, status and
                  events flow through this channel.  If this object is
                  off(2), data, status and events will not flow through
                  this channel."
              DEFVAL { off }
              ::= { channelEntry 4 }

          channelTurnOnEventIndex OBJECT-TYPE
              SYNTAX INTEGER (0..65535)
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The value of this object identifies the event
                  that is configured to turn the associated
                  channelDataControl from off to on when the event is
                  generated.  The event identified by a particular value
                  of this object is the same event as identified by the
                  same value of the eventIndex object.  If there is no
                  corresponding entry in the eventTable, then no
                  association exists.  In fact, if no event is intended
                  for this channel, channelTurnOnEventIndex must be
                  set to zero, a non-existent event index.

                  This object may not be modified if the associated
                  channelStatus object is equal to valid(1)."
              ::= { channelEntry 5 }

          channelTurnOffEventIndex OBJECT-TYPE
              SYNTAX INTEGER (0..65535)
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The value of this object identifies the event
                  that is configured to turn the associated
                  channelDataControl from on to off when the event is


                  generated.  The event identified by a particular value
                  of this object is the same event as identified by the
                  same value of the eventIndex object.  If there is no
                  corresponding entry in the eventTable, then no
                  association exists.  In fact, if no event is intended
                  for this channel, channelTurnOffEventIndex must be
                  set to zero, a non-existent event index.

                  This object may not be modified if the associated
                  channelStatus object is equal to valid(1)."
              ::= { channelEntry 6 }

          channelEventIndex OBJECT-TYPE
              SYNTAX INTEGER (0..65535)
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The value of this object identifies the event
                  that is configured to be generated when the
                  associated channelDataControl is on and a packet
                  is matched.  The event identified by a particular value
                  of this object is the same event as identified by the
                  same value of the eventIndex object.  If there is no
                  corresponding entry in the eventTable, then no
                  association exists.  In fact, if no event is intended
                  for this channel, channelEventIndex must be
                  set to zero, a non-existent event index.

                  This object may not be modified if the associated
                  channelStatus object is equal to valid(1)."
              ::= { channelEntry 7 }

          channelEventStatus OBJECT-TYPE
              SYNTAX INTEGER {
                  eventReady(1),
                  eventFired(2),
                  eventAlwaysReady(3)
              }
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The event status of this channel.

                  If this channel is configured to generate events
                  when packets are matched, a means of controlling
                  the flow of those events is often needed.  When
                  this object is equal to eventReady(1), a single
                  event may be generated, after which this object


                  will be set by the probe to eventFired(2).  While
                  in the eventFired(2) state, no events will be
                  generated until the object is modified to
                  eventReady(1) (or eventAlwaysReady(3)).  The
                  management station can thus easily respond to a
                  notification of an event by re-enabling this object.

                  If the management station wishes to disable this
                  flow control and allow events to be generated
                  at will, this object may be set to
                  eventAlwaysReady(3).  Disabling the flow control
                  is discouraged as it can result in high network
                  traffic or other performance problems."
              DEFVAL { eventReady }
              ::= { channelEntry 8 }

          channelMatches OBJECT-TYPE
              SYNTAX Counter
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of times this channel has matched a packet.
                  Note that this object is updated even when
                  channelDataControl is set to off."
              ::= { channelEntry 9 }

          channelDescription OBJECT-TYPE
              SYNTAX DisplayString (SIZE (0..127))
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "A comment describing this channel."
              ::= { channelEntry 10 }

          channelOwner OBJECT-TYPE
              SYNTAX OwnerString
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The entity that configured this entry and is therefore
                  using the resources assigned to it."
              ::= { channelEntry 11 }

          channelStatus OBJECT-TYPE
              SYNTAX EntryStatus
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION


                  "The status of this channel entry."
              ::= { channelEntry 12 }

          -- The Packet Capture Group

          -- Implementation of the Packet Capture group is optional.
          --
          -- The Packet Capture Group requires implementation of the
          -- Filter Group.
          --
          -- The Packet Capture group allows packets to be captured
          -- upon a filter match.  The bufferControlTable controls
          -- the captured packets output from a channel that is
          -- associated with it.  The captured packets are placed
          -- in entries in the captureBufferTable.  These entries are
          -- associated with the bufferControlEntry on whose behalf they
          -- were stored.

          bufferControlTable OBJECT-TYPE
              SYNTAX SEQUENCE OF BufferControlEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A list of buffers control entries."
              ::= { capture 1 }

          bufferControlEntry OBJECT-TYPE
              SYNTAX BufferControlEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A set of parameters that control the collection of
                  a stream of packets that have matched filters."
              INDEX { bufferControlIndex }
              ::= { bufferControlTable 1 }

          BufferControlEntry ::= SEQUENCE {
              bufferControlIndex                INTEGER (1..65535),
              bufferControlChannelIndex         INTEGER (1..65535),
              bufferControlFullStatus           INTEGER,
              bufferControlFullAction           INTEGER,
              bufferControlCaptureSliceSize     INTEGER,
              bufferControlDownloadSliceSize    INTEGER,
              bufferControlDownloadOffset       INTEGER,
              bufferControlMaxOctetsRequested   INTEGER,
              bufferControlMaxOctetsGranted     INTEGER,
              bufferControlCapturedPackets      INTEGER,


              bufferControlTurnOnTime           TimeTicks,
              bufferControlOwner                OwnerString,
              bufferControlStatus               INTEGER
          }

          bufferControlIndex OBJECT-TYPE
              SYNTAX INTEGER (1..65535)
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "An index that uniquely identifies an entry
                  in the bufferControl table.  The value of this
                  index shall never be zero.  Each such
                  entry defines one set of packets that is
                  captured and controlled by one or more filters."
              ::= { bufferControlEntry 1 }

          bufferControlChannelIndex OBJECT-TYPE
              SYNTAX INTEGER (1..65535)
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "An index that identifies the channel that is the
                  source of packets for this bufferControl table.
                  The channel identified by a particular value of this
                  index is the same as identified by the same value of
                  the channelIndex object.

                  This object may not be modified if the associated
                  bufferControlStatus object is equal to valid(1)."
              ::= { bufferControlEntry 2 }

          bufferControlFullStatus OBJECT-TYPE
              SYNTAX INTEGER {
                      spaceAvailable(1),
                      full(2)
              }
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "This object shows whether the buffer has room to
                  accept new packets or if it is full.

                  If the status is spaceAvailable(1), the buffer is
                  accepting new packets normally.  If the status is
                  full(2) and the associated bufferControlFullAction
                  object is wrapWhenFull, the buffer is accepting new
                  packets by deleting enough of the oldest packets


                  to make room for new ones as they arrive.  Otherwise,
                  if the status is full(2) and the
                  bufferControlFullAction object is lockWhenFull,
                  then the buffer has stopped collecting packets.

                  When this object is set to full(2) the probe must
                  not later set it to spaceAvailable(1) except in the
                  case of a significant gain in resources such as
                  an increase of bufferControlOctetsGranted.  In
                  particular, the wrap-mode action of deleting old
                  packets to make room for newly arrived packets
                  must not affect the value of this object."
              ::= { bufferControlEntry 3 }

          bufferControlFullAction OBJECT-TYPE
              SYNTAX INTEGER {
                      lockWhenFull(1),
                      wrapWhenFull(2)    -- FIFO
              }
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "Controls the action of the buffer when it
                  reaches the full status.  When in the lockWhenFull(1)
                  state a packet is added to the buffer that
                  fills the buffer, the bufferControlFullStatus will
                  be set to full(2) and this buffer will stop capturing
                  packets."
              ::= { bufferControlEntry 4 }

          bufferControlCaptureSliceSize OBJECT-TYPE
              SYNTAX INTEGER
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The maximum number of octets of each packet
                  that will be saved in this capture buffer.
                  For example, if a 1500 octet packet is received by
                  the probe and this object is set to 500, then only
                  500 octets of the packet will be stored in the
                  associated capture buffer.  If this variable is set
                  to 0, the capture buffer will save as many octets
                  as is possible.

                  This object may not be modified if the associated
                  bufferControlStatus object is equal to valid(1)."
              DEFVAL { 100 }
              ::= { bufferControlEntry 5 }


          bufferControlDownloadSliceSize OBJECT-TYPE
              SYNTAX INTEGER
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The maximum number of octets of each packet
                  in this capture buffer that will be returned in
                  an SNMP retrieval of that packet.  For example,
                  if 500 octets of a packet have been stored in the
                  associated capture buffer, the associated
                  bufferControlDownloadOffset is 0, and this
                  object is set to 100, then the captureBufferPacket
                  object that contains the packet will contain only
                  the first 100 octets of the packet.

                  A prudent manager will take into account possible
                  interoperability or fragmentation problems that may
                  occur if the download slice size is set too large.
                  In particular, conformant SNMP implementations are not
                  required to accept messages whose length exceeds 484
                  octets, although they are encouraged to support larger
                  datagrams whenever feasible."
              DEFVAL { 100 }
              ::= { bufferControlEntry 6 }

          bufferControlDownloadOffset OBJECT-TYPE
              SYNTAX INTEGER
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The offset of the first octet of each packet
                  in this capture buffer that will be returned in
                  an SNMP retrieval of that packet.  For example,
                  if 500 octets of a packet have been stored in the
                  associated capture buffer and this object is set to
                  100, then the captureBufferPacket object that
                  contains the packet will contain bytes starting
                  100 octets into the packet."
              DEFVAL { 0 }
              ::= { bufferControlEntry 7 }

          bufferControlMaxOctetsRequested OBJECT-TYPE
              SYNTAX INTEGER
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The requested maximum number of octets to be
                  saved in this captureBuffer, including any


                  implementation-specific overhead. If this variable
                  is set to -1, the capture buffer will save as many
                  octets as is possible.

                  When this object is created or modified, the probe
                  should set bufferControlMaxOctetsGranted as closely
                  to this object as is possible for the particular probe
                  implementation and available resources.  However, if
                  the object has the special value of -1, the probe
                  must set bufferControlMaxOctetsGranted to -1."
              DEFVAL { -1 }
              ::= { bufferControlEntry 8 }

          bufferControlMaxOctetsGranted OBJECT-TYPE
              SYNTAX INTEGER
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The maximum number of octets that can be
                  saved in this captureBuffer, including overhead.
                  If this variable is -1, the capture buffer will save
                  as many octets as possible.

                  When the bufferControlMaxOctetsRequested object is
                  created or modified, the probe should set this object
                  as closely to the requested value as is possible for
                  the particular probe implementation and available
                  resources.  However, if the request object has the
                  special value of -1, the probe must set this object
                  to -1.  The probe must not lower this value except
                  as a result of a modification to the associated
                  bufferControlMaxOctetsRequested object.

                  When this maximum number of octets is reached
                  and a new packet is to be added to this
                  capture buffer and the corresponding
                  bufferControlFullAction is set to wrapWhenFull(2),
                  enough of the oldest packets associated with this
                  capture buffer shall be deleted by the agent so
                  that the new packet can be added.  If the
                  corresponding bufferControlFullAction is set to
                  lockWhenFull(1), the new packet shall be discarded.
                  In either case, the probe must set
                  bufferControlFullStatus to full(2).

                  When the value of this object changes to a value less
                  than the current value, entries are deleted from
                  the captureBufferTable associated with this


                  bufferControlEntry.  Enough of the
                  oldest of these captureBufferEntries shall be
                  deleted by the agent so that the number of octets
                  used remains less than or equal to the new value of
                  this object.

                  When the value of this object changes to a value greater
                  than the current value, the number of associated
                  captureBufferEntries may be allowed to grow."
              ::= { bufferControlEntry 9 }

          bufferControlCapturedPackets OBJECT-TYPE
              SYNTAX INTEGER
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of packets currently in this captureBuffer."
              ::= { bufferControlEntry 10 }

          bufferControlTurnOnTime OBJECT-TYPE
              SYNTAX TimeTicks
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The value of sysUpTime when this capture buffer was
                  first turned on."
              ::= { bufferControlEntry 11 }

          bufferControlOwner OBJECT-TYPE
              SYNTAX OwnerString
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The entity that configured this entry and is therefore
                  using the resources assigned to it."
              ::= { bufferControlEntry 12 }

          bufferControlStatus OBJECT-TYPE
              SYNTAX EntryStatus
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The status of this buffer Control Entry."
              ::= { bufferControlEntry 13 }

          captureBufferTable OBJECT-TYPE
              SYNTAX SEQUENCE OF CaptureBufferEntry
              ACCESS not-accessible


              STATUS mandatory
              DESCRIPTION
                  "A list of packets captured off of a channel."
              ::= { capture 2 }

          captureBufferEntry OBJECT-TYPE
              SYNTAX CaptureBufferEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A packet captured off of an attached network."
              INDEX { captureBufferControlIndex, captureBufferIndex }
              ::= { captureBufferTable 1 }

          CaptureBufferEntry ::= SEQUENCE {
              captureBufferControlIndex   INTEGER (1..65535),
              captureBufferIndex          INTEGER,
              captureBufferPacketID       INTEGER,
              captureBufferPacketData     OCTET STRING,
              captureBufferPacketLength   INTEGER,
              captureBufferPacketTime     INTEGER,
              captureBufferPacketStatus   INTEGER
          }

          captureBufferControlIndex OBJECT-TYPE
              SYNTAX INTEGER (1..65535)
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The index of the bufferControlEntry with which
                  this packet is associated."
              ::= { captureBufferEntry 1 }

          captureBufferIndex OBJECT-TYPE
              SYNTAX INTEGER
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "An index that uniquely identifies an entry
                  in the captureBuffer table associated with a
                  particular bufferControlEntry.  This index will
                  start at 1 and increase by one for each new packet
                  added with the same captureBufferControlIndex."
              ::= { captureBufferEntry 2 }

          captureBufferPacketID OBJECT-TYPE
              SYNTAX INTEGER
              ACCESS read-only


              STATUS mandatory
              DESCRIPTION
                  "An index that describes the order of packets
                  that are received on a particular interface.
                  The packetID of a packet captured on an
                  interface is defined to be greater than the
                  packetID's of all packets captured previously on
                  the same interface.  As the captureBufferPacketID
                  object has a maximum positive value of 2^31 - 1,
                  any captureBufferPacketID object shall have the
                  value of the associated packet's packetID mod 2^31."
              ::= { captureBufferEntry 3 }

          captureBufferPacketData OBJECT-TYPE
              SYNTAX OCTET STRING
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The data inside the packet, starting at the beginning
                  of the packet plus any offset specified in the
                  associated bufferControlDownloadOffset, including any
                  link level headers.  The length of the data in this
                  object is the minimum of the length of the captured
                  packet minus the offset, the length of the associated
                  bufferControlCaptureSliceSize minus the offset, and the
                  associated bufferControlDownloadSliceSize.  If this
                  minimum is less than zero, this object shall have a
                  length of zero."
              ::= { captureBufferEntry 4 }

          captureBufferPacketLength OBJECT-TYPE
              SYNTAX INTEGER
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The actual length (off the wire) of the packet stored
                  in this entry, including FCS octets."
              ::= { captureBufferEntry 5 }

          captureBufferPacketTime OBJECT-TYPE
              SYNTAX INTEGER
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The number of milliseconds that had passed since
                  this capture buffer was first turned on when this
                  packet was captured."
              ::= { captureBufferEntry 6 }


          captureBufferPacketStatus OBJECT-TYPE
              SYNTAX INTEGER
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "A value which indicates the error status of this
                  packet.

                  The value of this object is defined in the same way as
                  filterPacketStatus.  The value is a sum.  This sum
                  initially takes the value zero.  Then, for each
                  error, E, that has been discovered in this packet,
                  2 raised to a value representing E is added to the sum.

                  The errors defined for a packet captured off of an
                  Ethernet interface are as follows:

                      bit #    Error
                          0    Packet is longer than 1518 octets
                          1    Packet is shorter than 64 octets
                          2    Packet experienced a CRC or Alignment
                               error
                          3    First packet in this capture buffer after
                               it was detected that some packets were
                               not processed correctly.

                  For example, an Ethernet fragment would have a
                  value of 6 (2^1 + 2^2).

                  As this MIB is expanded to new media types, this object
                  will have other media-specific errors defined."
              ::= { captureBufferEntry 7 }

          -- The Event Group

          -- Implementation of the Event group is optional.
          --
          -- The Event group controls the generation and notification
          -- of events from this device.  Each entry in the eventTable
          -- describes the parameters of the event that can be triggered.
          -- Each event entry is fired by an associated condition located
          -- elsewhere in the MIB.  An event entry may also be associated
          -- with a function elsewhere in the MIB that will be executed
          -- when the event is generated.  For example, a channel may
          -- be turned on or off by the firing of an event.
          --
          -- Each eventEntry may optionally specify that a log entry


          -- be created on its behalf whenever the event occurs.
          -- Each entry may also specify that notification should
          -- occur by way of SNMP trap messages.  In this case, the
          -- community for the trap message is given in the associated
          -- eventCommunity object.  The enterprise and specific trap
          -- fields of the trap are determined by the condition that
          -- triggered the event.  Three traps are defined in a companion
          -- document: risingAlarm, fallingAlarm, and packetMatch.
          -- If the eventTable is triggered by a condition specified
          -- elsewhere, the enterprise and specific trap fields
          -- must be specified for traps generated for that condition.

          eventTable OBJECT-TYPE
              SYNTAX SEQUENCE OF EventEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A list of events to be generated."
              ::= { event 1 }

          eventEntry OBJECT-TYPE
              SYNTAX EventEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A set of parameters that describe an event to be
                  generated when certain conditions are met."
              INDEX { eventIndex }
              ::= { eventTable 1 }

          EventEntry ::= SEQUENCE {
              eventIndex          INTEGER (1..65535),
              eventDescription    DisplayString (SIZE (0..127)),
              eventType           INTEGER,
              eventCommunity      OCTET STRING (SIZE (0..127)),
              eventLastTimeSent   TimeTicks,
              eventOwner          OwnerString,
              eventStatus         INTEGER
          }

          eventIndex OBJECT-TYPE
              SYNTAX INTEGER (1..65535)
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "An index that uniquely identifies an entry in the
                  event table.  Each such entry defines one event that
                  is to be generated when the appropriate conditions


                  occur."
              ::= { eventEntry 1 }

          eventDescription OBJECT-TYPE
              SYNTAX DisplayString (SIZE (0..127))
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "A comment describing this event entry."
              ::= { eventEntry 2 }

          eventType OBJECT-TYPE
              SYNTAX INTEGER {
                      none(1),
                      log(2),
                      snmp-trap(3),    -- send an SNMP trap
                      log-and-trap(4)
              }
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The type of notification that the probe will make
                  about this event.  In the case of log, an entry is
                  made in the log table for each event.  In the case of
                  snmp-trap, an SNMP trap is sent to one or more
                  management stations."
              ::= { eventEntry 3 }

          eventCommunity OBJECT-TYPE
              SYNTAX OCTET STRING (SIZE (0..127))
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "If an SNMP trap is to be sent, it will be sent to
                  the SNMP community specified by this octet string.
                  In the future this table will be extended to include
                  the party security mechanism.  This object shall be
                  set to a string of length zero if it is intended that
                  that mechanism be used to specify the destination of
                  the trap."
              ::= { eventEntry 4 }

          eventLastTimeSent OBJECT-TYPE
              SYNTAX TimeTicks
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The value of sysUpTime at the time this event


                  entry last generated an event.  If this entry has
                  not generated any events, this value will be
                  zero."
              ::= { eventEntry 5 }

          eventOwner OBJECT-TYPE
              SYNTAX OwnerString
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The entity that configured this entry and is therefore
                  using the resources assigned to it.

                  If this object contains a string starting with 'monitor'
                  and has associated entries in the log table, all
                  connected management stations should retrieve those
                  log entries, as they may have significance to all
                  management stations connected to this device"
              ::= { eventEntry 6 }

          eventStatus OBJECT-TYPE
              SYNTAX EntryStatus
              ACCESS read-write
              STATUS mandatory
              DESCRIPTION
                  "The status of this event entry.

                  If this object is not equal to valid(1), all associated
                  log entries shall be deleted by the agent."
              ::= { eventEntry 7 }

          logTable OBJECT-TYPE
              SYNTAX SEQUENCE OF LogEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A list of events that have been logged."
              ::= { event 2 }

          logEntry OBJECT-TYPE
              SYNTAX LogEntry
              ACCESS not-accessible
              STATUS mandatory
              DESCRIPTION
                  "A set of data describing an event that has been
                  logged."
              INDEX { logEventIndex, logIndex }


              ::= { logTable 1 }

          LogEntry ::= SEQUENCE {
              logEventIndex           INTEGER (1..65535),
              logIndex                INTEGER,
              logTime                 TimeTicks,
              logDescription          DisplayString (SIZE (0..255))
          }

          logEventIndex OBJECT-TYPE
              SYNTAX INTEGER (1..65535)
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The event entry that generated this log
                  entry.  The log identified by a particular
                  value of this index is associated with the same
                  eventEntry as identified by the same value
                  of eventIndex."
              ::= { logEntry 1 }

          logIndex OBJECT-TYPE
              SYNTAX INTEGER
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "An index that uniquely identifies an entry
                  in the log table amongst those generated by the
                  same eventEntries.  These indexes are
                  assigned beginning with 1 and increase by one
                  with each new log entry.  The association
                  between values of logIndex and logEntries
                  is fixed for the lifetime of each logEntry.
                  The agent may choose to delete the oldest
                  instances of logEntry as required because of
                  lack of memory.  It is an implementation-specific
                  matter as to when this deletion may occur."
              ::= { logEntry 2 }

          logTime OBJECT-TYPE
              SYNTAX TimeTicks
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "The value of sysUpTime when this log entry was
                  created."
              ::= { logEntry 3 }


          logDescription OBJECT-TYPE
              SYNTAX DisplayString (SIZE (0..255))
              ACCESS read-only
              STATUS mandatory
              DESCRIPTION
                  "An implementation dependent description of the
                  event that activated this log entry."
              ::= { logEntry 4 }

END
CMU-MIB DEFINITIONS ::= BEGIN;
		Proteon OBJECT IDENTIFIER ::= { enterprises 1 }
		IBM OBJECT IDENTIFIER ::= { enterprises 2 }
		cmu OBJECT IDENTIFIER ::= { enterprises 3 }
		Unix OBJECT IDENTIFIER ::= { enterprises 4 }
		ACC OBJECT IDENTIFIER ::= { enterprises 5 }
		TWG OBJECT IDENTIFIER ::= { enterprises 6 }
		Cayman OBJECT IDENTIFIER ::= { enterprises 7 }
		PSI OBJECT IDENTIFIER ::= { enterprises 8 }
		Cisco OBJECT IDENTIFIER ::= { enterprises 9 }
		NSC OBJECT IDENTIFIER ::= { enterprises 10 }
		HP OBJECT IDENTIFIER ::= { enterprises 11 }
		Epilogue OBJECT IDENTIFIER ::= { enterprises 12 }
		UTK OBJECT IDENTIFIER ::= { enterprises 13 }
		BBN OBJECT IDENTIFIER ::= { enterprises 14 }
		Xylogics OBJECT IDENTIFIER ::= { enterprises 15 }
		Timeplex OBJECT IDENTIFIER ::= { enterprises 16 }
		Canstar OBJECT IDENTIFIER ::= { enterprises 17 }
		Wellfleet OBJECT IDENTIFIER ::= { enterprises 18 }
		TRW OBJECT IDENTIFIER ::= { enterprises 19 }
		MIT OBJECT IDENTIFIER ::= { enterprises 20 }
		EON OBJECT IDENTIFIER ::= { enterprises 21 }
		Spartacus OBJECT IDENTIFIER ::= { enterprises 22 }
		Excelan OBJECT IDENTIFIER ::= { enterprises 23 }
		Spider OBJECT IDENTIFIER ::= { enterprises 24 }
		NSFNET OBJECT IDENTIFIER ::= { enterprises 25 }
		HLS OBJECT IDENTIFIER ::= { enterprises 26 }
		Xyplex OBJECT IDENTIFIER ::= { enterprises 33 }
		Cray OBJECT IDENTIFIER ::= { enterprises 34 }
		Sun OBJECT IDENTIFIER ::= { enterprises 42 }
		Synoptics OBJECT IDENTIFIER ::= { enterprises 45 }
		DEC OBJECT IDENTIFIER ::= { enterprises 36 }
		TGV OBJECT IDENTIFIER ::= { enterprises 58 }
		Apple OBJECT IDENTIFIER ::= { enterprises 63 }
		NAT OBJECT IDENTIFIER ::= { enterprises 86 }
		SNMP-Research OBJECT IDENTIFIER ::= { enterprises 99 }
		FTP OBJECT IDENTIFIER ::= { enterprises 121 }
		Shiva OBJECT IDENTIFIER ::= { enterprises 166 }
		Transarc OBJECT IDENTIFIER ::= { enterprises 257 }
		Lexcel OBJECT IDENTIFIER ::= { enterprises 379 }

END

HOST-RESOURCES-MIB DEFINITIONS ::= BEGIN

   IMPORTS
       OBJECT-TYPE               FROM RFC-1212
       DisplayString             FROM RFC1213-MIB
       TimeTicks,
       Counter, Gauge            FROM RFC1155-SMI;

   host     OBJECT IDENTIFIER ::= { mib-2 25 }

   hrSystem        OBJECT IDENTIFIER ::= { host 1 }
   hrStorage       OBJECT IDENTIFIER ::= { host 2 }
   hrDevice        OBJECT IDENTIFIER ::= { host 3 }
   hrSWRun         OBJECT IDENTIFIER ::= { host 4 }
   hrSWRunPerf     OBJECT IDENTIFIER ::= { host 5 }
   hrSWInstalled   OBJECT IDENTIFIER ::= { host 6 }

   -- textual conventions

   -- a truth value
   Boolean ::=   INTEGER { true(1), false(2) }

   -- memory size, expressed in units of 1024bytes
   KBytes ::=    INTEGER (0..2147483647)

   -- This textual convention is intended to identify the manufacturer,
   -- model, and version of a specific hardware or software product.
   -- It is suggested that these OBJECT IDENTIFIERs are allocated such
   -- that all products from a particular manufacturer are registered
   -- under a subtree distinct to that manufacturer.  In addition, all


   -- versions of a product should be registered under a subtree
   -- distinct to that product.  With this strategy, a management
   -- station may uniquely determine the manufacturer and/or model of a
   -- product whose productID is unknown to the management station.
   -- Objects of this type may be useful for inventory purposes or for
   -- automatically detecting incompatibilities or version mismatches
   -- between various hardware and software components on a system.
   ProductID ::= OBJECT IDENTIFIER
   -- unknownProduct will be used for any unknown ProductID
   -- unknownProduct OBJECT IDENTIFIER ::= { 0 0 }

   -- For example, the product ID for the ACME 4860 66MHz clock doubled
   -- processor might be:
   -- enterprises.acme.acmeProcessors.a4860DX2.MHz66
   -- A software product might be registered as:
   -- enterprises.acme.acmeOperatingSystems.acmeDOS.six(6).one(1)

   DateAndTime ::= OCTET STRING (SIZE (8 | 11))
   --        A date-time specification for the local time of day.
   --        This data type is intended to provide a consistent
   --        method of reporting date information.
   --
   --            field  octets  contents                  range
   --            _____  ______  ________                  _____
   --              1      1-2   year                      0..65536
   --                           (in network byte order)
   --              2       3    month                     1..12
   --              3       4    day                       1..31
   --              4       5    hour                      0..23
   --              5       6    minutes                   0..59
   --              6       7    seconds                   0..60
   --                           (use 60 for leap-second)
   --              7       8    deci-seconds              0..9
   --              8       9    direction from UTC        "+" / "-"
   --                           (in ascii notation)
   --              9      10    hours from UTC            0..11
   --             10      11    minutes from UTC          0..59
   --
   --            Note that if only local time is known, then
   --            timezone information (fields 8-10) is not present.

   InternationalDisplayString ::= OCTET STRING
   --  This data type is used to model textual information in some
   --  character set.  A network management station should use a local
   --  algorithm to determine which character set is in use and how it
   --  should be displayed.  Note that this character set may be encoded
   --  with more than one octet per symbol, but will most often be NVT


   --  ASCII.

   -- The Host Resources System Group
   --
   -- Implementation of this group is mandatory for all host systems.
   hrSystemUptime OBJECT-TYPE
       SYNTAX TimeTicks
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "The amount of time since this host was last
              initialized.  Note that this is different from
              sysUpTime in MIB-II [3] because sysUpTime is the
              uptime of the network management portion of the
              system."
       ::= { hrSystem 1 }

   hrSystemDate OBJECT-TYPE
       SYNTAX DateAndTime
       ACCESS read-write
       STATUS mandatory
       DESCRIPTION
              "The host's notion of the local date and time of
              day."
       ::= { hrSystem 2 }

   hrSystemInitialLoadDevice OBJECT-TYPE
       SYNTAX INTEGER (1..2147483647)
       ACCESS read-write
       STATUS mandatory
       DESCRIPTION
              "The index of the hrDeviceEntry for the device from
              which this host is configured to load its initial
              operating system configuration."
       ::= { hrSystem 3 }

   hrSystemInitialLoadParameters OBJECT-TYPE
       SYNTAX InternationalDisplayString (SIZE (0..128))
       ACCESS read-write
       STATUS mandatory
       DESCRIPTION
              "This object contains the parameters (e.g. a
              pathname and parameter) supplied to the load device
              when requesting the initial operating system
              configuration from that device."
       ::= { hrSystem 4 }


   hrSystemNumUsers OBJECT-TYPE
       SYNTAX Gauge
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "The number of user sessions for which this host is
              storing state information.  A session is a
              collection of processes requiring a single act of
              user authentication and possibly subject to
              collective job control."
       ::= { hrSystem 5 }

   hrSystemProcesses OBJECT-TYPE
       SYNTAX Gauge
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "The number of process contexts currently loaded or
              running on this system."
       ::= { hrSystem 6 }

   hrSystemMaxProcesses OBJECT-TYPE
       SYNTAX INTEGER (0..2147483647)
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "The maximum number of process contexts this system
              can support.  If there is no fixed maximum, the
              value should be zero.  On systems that have a fixed
              maximum, this object can help diagnose failures
              that occur when this maximum is reached."
       ::= { hrSystem 7 }

   -- The Host Resources Storage Group
   --
   -- Implementation of this group is mandatory for all host systems.

   -- Registration for some storage types, for use with hrStorageType
   hrStorageTypes          OBJECT IDENTIFIER ::= { hrStorage 1 }
   hrStorageOther          OBJECT IDENTIFIER ::= { hrStorageTypes 1 }
   hrStorageRam            OBJECT IDENTIFIER ::= { hrStorageTypes 2 }
   -- hrStorageVirtualMemory is temporary storage of swapped
   -- or paged memory
   hrStorageVirtualMemory  OBJECT IDENTIFIER ::= { hrStorageTypes 3 }
   hrStorageFixedDisk      OBJECT IDENTIFIER ::= { hrStorageTypes 4 }
   hrStorageRemovableDisk  OBJECT IDENTIFIER ::= { hrStorageTypes 5 }
   hrStorageFloppyDisk     OBJECT IDENTIFIER ::= { hrStorageTypes 6 }


   hrStorageCompactDisc    OBJECT IDENTIFIER ::= { hrStorageTypes 7 }
   hrStorageRamDisk        OBJECT IDENTIFIER ::= { hrStorageTypes 8 }

   hrMemorySize OBJECT-TYPE
       SYNTAX KBytes
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "The amount of physical main memory contained by
              the host."
       ::= { hrStorage 2 }

   hrStorageTable OBJECT-TYPE
       SYNTAX SEQUENCE OF HrStorageEntry
       ACCESS not-accessible
       STATUS mandatory
       DESCRIPTION
              "The (conceptual) table of logical storage areas on
              the host.

              An entry shall be placed in the storage table for
              each logical area of storage that is allocated and
              has fixed resource limits.  The amount of storage
              represented in an entity is the amount actually
              usable by the requesting entity, and excludes loss
              due to formatting or file system reference
              information.

              These entries are associated with logical storage
              areas, as might be seen by an application, rather
              than physical storage entities which are typically
              seen by an operating system.  Storage such as tapes
              and floppies without file systems on them are
              typically not allocated in chunks by the operating
              system to requesting applications, and therefore
              shouldn't appear in this table.  Examples of valid
              storage for this table include disk partitions,
              file systems, ram (for some architectures this is
              further segmented into regular memory, extended
              memory, and so on), backing store for virtual
              memory (`swap space').

              This table is intended to be a useful diagnostic
              for `out of memory' and `out of buffers' types of
              failures.  In addition, it can be a useful
              performance monitoring tool for tracking memory,
              disk, or buffer usage."


       ::= { hrStorage 3 }

   hrStorageEntry OBJECT-TYPE
       SYNTAX HrStorageEntry
       ACCESS not-accessible
       STATUS mandatory
       DESCRIPTION
              "A (conceptual) entry for one logical storage area
              on the host.  As an example, an instance of the
              hrStorageType object might be named
              hrStorageType.3"
       INDEX { hrStorageIndex }
       ::= { hrStorageTable 1 }

   HrStorageEntry ::= SEQUENCE {
           hrStorageIndex               INTEGER,
           hrStorageType                OBJECT IDENTIFIER,
           hrStorageDescr               DisplayString,
           hrStorageAllocationUnits     INTEGER,
           hrStorageSize                INTEGER,
           hrStorageUsed                INTEGER,
           hrStorageAllocationFailures  Counter
       }

   hrStorageIndex OBJECT-TYPE
       SYNTAX INTEGER (1..2147483647)
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "A unique value for each logical storage area
              contained by the host."
       ::= { hrStorageEntry 1 }

   hrStorageType OBJECT-TYPE
       SYNTAX OBJECT IDENTIFIER
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "The type of storage represented by this entry."
       ::= { hrStorageEntry 2 }

   hrStorageDescr OBJECT-TYPE
       SYNTAX DisplayString
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "A description of the type and instance of the
              storage described by this entry."


       ::= { hrStorageEntry 3 }

   hrStorageAllocationUnits OBJECT-TYPE
       SYNTAX      INTEGER (1..2147483647)
       ACCESS      read-only
       STATUS      mandatory
       DESCRIPTION
               "The size, in bytes, of the data objects allocated
               from this pool.  If this entry is monitoring
               sectors, blocks, buffers, or packets, for example,
               this number will commonly be greater than one.
               Otherwise this number will typically be one."
       ::= { hrStorageEntry 4 }

   hrStorageSize OBJECT-TYPE
       SYNTAX INTEGER (0..2147483647)
       ACCESS read-write
       STATUS mandatory
       DESCRIPTION
              "The size of the storage represented by this entry,
              in units of hrStorageAllocationUnits."
       ::= { hrStorageEntry 5 }

   hrStorageUsed OBJECT-TYPE
       SYNTAX INTEGER (0..2147483647)
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "The amount of the storage represented by this
              entry that is allocated, in units of
              hrStorageAllocationUnits."
       ::= { hrStorageEntry 6 }

   hrStorageAllocationFailures OBJECT-TYPE
       SYNTAX Counter
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "The number of requests for storage represented by
              this entry that could not be honored due to not
              enough storage.  It should be noted that as this
              object has a SYNTAX of Counter, that it does not
              have a defined initial value.  However, it is
              recommended that this object be initialized to
              zero."
       ::= { hrStorageEntry 7 }


   -- The Host Resources Device Group
   --
   -- Implementation of this group is mandatory for all host systems.
   --
   -- The device group is useful for identifying and diagnosing the
   -- devices on a system.  The hrDeviceTable contains common
   -- information for any type of device.  In addition, some devices
   -- have device-specific tables for more detailed information.  More
   -- such tables may be defined in the future for other device types.

   -- Registration for some device types, for use with hrDeviceType
   hrDeviceTypes             OBJECT IDENTIFIER ::= { hrDevice 1 }

   hrDeviceOther             OBJECT IDENTIFIER ::= { hrDeviceTypes 1 }
   hrDeviceUnknown           OBJECT IDENTIFIER ::= { hrDeviceTypes 2 }
   hrDeviceProcessor         OBJECT IDENTIFIER ::= { hrDeviceTypes 3 }
   hrDeviceNetwork           OBJECT IDENTIFIER ::= { hrDeviceTypes 4 }
   hrDevicePrinter           OBJECT IDENTIFIER ::= { hrDeviceTypes 5 }
   hrDeviceDiskStorage       OBJECT IDENTIFIER ::= { hrDeviceTypes 6 }
   hrDeviceVideo             OBJECT IDENTIFIER ::= { hrDeviceTypes 10 }
   hrDeviceAudio             OBJECT IDENTIFIER ::= { hrDeviceTypes 11 }
   hrDeviceCoprocessor       OBJECT IDENTIFIER ::= { hrDeviceTypes 12 }
   hrDeviceKeyboard          OBJECT IDENTIFIER ::= { hrDeviceTypes 13 }
   hrDeviceModem             OBJECT IDENTIFIER ::= { hrDeviceTypes 14 }
   hrDeviceParallelPort      OBJECT IDENTIFIER ::= { hrDeviceTypes 15 }
   hrDevicePointing          OBJECT IDENTIFIER ::= { hrDeviceTypes 16 }
   hrDeviceSerialPort        OBJECT IDENTIFIER ::= { hrDeviceTypes 17 }
   hrDeviceTape              OBJECT IDENTIFIER ::= { hrDeviceTypes 18 }
   hrDeviceClock             OBJECT IDENTIFIER ::= { hrDeviceTypes 19 }
   hrDeviceVolatileMemory    OBJECT IDENTIFIER ::= { hrDeviceTypes 20 }
   hrDeviceNonVolatileMemory OBJECT IDENTIFIER ::= { hrDeviceTypes 21 }

   hrDeviceTable OBJECT-TYPE
       SYNTAX SEQUENCE OF HrDeviceEntry
       ACCESS not-accessible
       STATUS mandatory
       DESCRIPTION
              "The (conceptual) table of devices contained by the
              host."
       ::= { hrDevice 2 }

   hrDeviceEntry OBJECT-TYPE
       SYNTAX HrDeviceEntry
       ACCESS not-accessible
       STATUS mandatory
       DESCRIPTION
              "A (conceptual) entry for one device contained by


              the host.  As an example, an instance of the
              hrDeviceType object might be named hrDeviceType.3"
       INDEX { hrDeviceIndex }
       ::= { hrDeviceTable 1 }

   HrDeviceEntry ::= SEQUENCE {
           hrDeviceIndex           INTEGER,
           hrDeviceType            OBJECT IDENTIFIER,
           hrDeviceDescr           DisplayString,
           hrDeviceID              ProductID,
           hrDeviceStatus          INTEGER,
           hrDeviceErrors          Counter
       }

   hrDeviceIndex OBJECT-TYPE
       SYNTAX INTEGER (1..2147483647)
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "A unique value for each device contained by the
              host.  The value for each device must remain
              constant at least from one re-initialization of the
              agent to the next re-initialization."
       ::= { hrDeviceEntry 1 }

   hrDeviceType OBJECT-TYPE
       SYNTAX OBJECT IDENTIFIER
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "An indication of the type of device.

              If this value is `hrDeviceProcessor { hrDeviceTypes
              3 }' then an entry exists in the hrProcessorTable
              which corresponds to this device.

              If this value is `hrDeviceNetwork { hrDeviceTypes 4
              }', then an entry exists in the hrNetworkTable
              which corresponds to this device.

              If this value is `hrDevicePrinter { hrDeviceTypes 5
              }', then an entry exists in the hrPrinterTable
              which corresponds to this device.

              If this value is `hrDeviceDiskStorage {
              hrDeviceTypes 6 }', then an entry exists in the
              hrDiskStorageTable which corresponds to this
              device."


       ::= { hrDeviceEntry 2 }

   hrDeviceDescr OBJECT-TYPE
       SYNTAX DisplayString (SIZE (0..64))
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "A textual description of this device, including
              the device's manufacturer and revision, and
              optionally, its serial number."
       ::= { hrDeviceEntry 3 }

   hrDeviceID OBJECT-TYPE
       SYNTAX ProductID
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "The product ID for this device."
       ::= { hrDeviceEntry 4 }

   hrDeviceStatus OBJECT-TYPE
        SYNTAX  INTEGER {
             unknown(1),
             running(2),
             warning(3),
             testing(4),
             down(5)
        }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
              "The current operational state of the device
              described by this row of the table.  A value
              unknown(1) indicates that the current state of the
              device is unknown.  running(2) indicates that the
              device is up and running and that no unusual error
              conditions are known.  The warning(3) state
              indicates that agent has been informed of an
              unusual error condition by the operational software
              (e.g., a disk device driver) but that the device is
              still 'operational'.  An example would be high
              number of soft errors on a disk.  A value of
              testing(4), indicates that the device is not
              available for use because it is in the testing
              state.  The state of down(5) is used only when the
              agent has been informed that the device is not
              available for any use."
        ::= { hrDeviceEntry 5 }


   hrDeviceErrors OBJECT-TYPE
       SYNTAX Counter
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
               "The number of errors detected on this device.  It
               should be noted that as this object has a SYNTAX
               of Counter, that it does not have a defined
               initial value.  However, it is recommended that
               this object be initialized to zero."
       ::= { hrDeviceEntry 6 }

   hrProcessorTable OBJECT-TYPE
       SYNTAX SEQUENCE OF HrProcessorEntry
       ACCESS not-accessible
       STATUS mandatory
       DESCRIPTION
              "The (conceptual) table of processors contained by
              the host.

              Note that this table is potentially sparse: a
              (conceptual) entry exists only if the correspondent
              value of the hrDeviceType object is
              `hrDeviceProcessor'."
       ::= { hrDevice 3 }

   hrProcessorEntry OBJECT-TYPE
       SYNTAX HrProcessorEntry
       ACCESS not-accessible
       STATUS mandatory
       DESCRIPTION
              "A (conceptual) entry for one processor contained
              by the host.  The hrDeviceIndex in the index
              represents the entry in the hrDeviceTable that
              corresponds to the hrProcessorEntry.

              As an example of how objects in this table are
              named, an instance of the hrProcessorFrwID object
              might be named hrProcessorFrwID.3"
       INDEX { hrDeviceIndex }
       ::= { hrProcessorTable 1 }

   HrProcessorEntry ::= SEQUENCE {
           hrProcessorFrwID            ProductID,
           hrProcessorLoad             INTEGER
       }

   hrProcessorFrwID OBJECT-TYPE


       SYNTAX ProductID
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "The product ID of the firmware associated with the
              processor."
       ::= { hrProcessorEntry 1 }

   hrProcessorLoad OBJECT-TYPE
       SYNTAX INTEGER (0..100)
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "The average, over the last minute, of the
              percentage of time that this processor was not
              idle."
       ::= { hrProcessorEntry 2 }

   hrNetworkTable OBJECT-TYPE
       SYNTAX SEQUENCE OF HrNetworkEntry
       ACCESS not-accessible
       STATUS mandatory
       DESCRIPTION
              "The (conceptual) table of network devices
              contained by the host.

              Note that this table is potentially sparse: a
              (conceptual) entry exists only if the correspondent
              value of the hrDeviceType object is
              `hrDeviceNetwork'."
       ::= { hrDevice 4 }

   hrNetworkEntry OBJECT-TYPE
       SYNTAX HrNetworkEntry
       ACCESS not-accessible
       STATUS mandatory
       DESCRIPTION
              "A (conceptual) entry for one network device
              contained by the host.  The hrDeviceIndex in the
              index represents the entry in the hrDeviceTable
              that corresponds to the hrNetworkEntry.

              As an example of how objects in this table are
              named, an instance of the hrNetworkIfIndex object
              might be named hrNetworkIfIndex.3"
       INDEX { hrDeviceIndex }
       ::= { hrNetworkTable 1 }


   HrNetworkEntry ::= SEQUENCE {
           hrNetworkIfIndex    INTEGER
       }

   hrNetworkIfIndex OBJECT-TYPE
       SYNTAX INTEGER
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "The value of ifIndex which corresponds to this
              network device."
       ::= { hrNetworkEntry 1 }

   hrPrinterTable OBJECT-TYPE
       SYNTAX SEQUENCE OF HrPrinterEntry
       ACCESS not-accessible
       STATUS mandatory
       DESCRIPTION
              "The (conceptual) table of printers local to the
              host.

              Note that this table is potentially sparse: a
              (conceptual) entry exists only if the correspondent
              value of the hrDeviceType object is
              `hrDevicePrinter'."
       ::= { hrDevice 5 }

   hrPrinterEntry OBJECT-TYPE
       SYNTAX HrPrinterEntry
       ACCESS not-accessible
       STATUS mandatory
       DESCRIPTION
              "A (conceptual) entry for one printer local to the
              host.  The hrDeviceIndex in the index represents
              the entry in the hrDeviceTable that corresponds to
              the hrPrinterEntry.

              As an example of how objects in this table are
              named, an instance of the hrPrinterStatus object
              might be named hrPrinterStatus.3"
       INDEX { hrDeviceIndex }
       ::= { hrPrinterTable 1 }

   HrPrinterEntry ::= SEQUENCE {
           hrPrinterStatus             INTEGER,
           hrPrinterDetectedErrorState OCTET STRING
       }


   hrPrinterStatus OBJECT-TYPE
       SYNTAX INTEGER {
           other(1),
           unknown(2),
           idle(3),
           printing(4),
           warmup(5)
       }
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
               "The current status of this printer device.  When
               in the idle(1), printing(2), or warmup(3) state,
               the corresponding hrDeviceStatus should be
               running(2) or warning(3).  When in the unknown
               state, the corresponding hrDeviceStatus should be
               unknown(1)."
       ::= { hrPrinterEntry 1 }

   hrPrinterDetectedErrorState OBJECT-TYPE
       SYNTAX OCTET STRING
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
               "This object represents any error conditions
               detected by the printer.  The error conditions are
               encoded as bits in an octet string, with the
               following definitions:

                    Condition         Bit #    hrDeviceStatus

                    lowPaper          0        warning(3)
                    noPaper           1        down(5)
                    lowToner          2        warning(3)
                    noToner           3        down(5)
                    doorOpen          4        down(5)
                    jammed            5        down(5)
                    offline           6        down(5)
                    serviceRequested  7        warning(3)

               If multiple conditions are currently detected and
               the hrDeviceStatus would not otherwise be
               unknown(1) or testing(4), the hrDeviceStatus shall
               correspond to the worst state of those indicated,
               where down(5) is worse than warning(3) which is
               worse than running(2).

               Bits are numbered starting with the most


               significant bit of the first byte being bit 0, the
               least significant bit of the first byte being bit
               7, the most significant bit of the second byte
               being bit 8, and so on.  A one bit encodes that
               the condition was detected, while a zero bit
               encodes that the condition was not detected.

               This object is useful for alerting an operator to
               specific warning or error conditions that may
               occur, especially those requiring human
               intervention."
       ::= { hrPrinterEntry 2 }

   hrDiskStorageTable OBJECT-TYPE
       SYNTAX SEQUENCE OF HrDiskStorageEntry
       ACCESS not-accessible
       STATUS mandatory
       DESCRIPTION
              "The (conceptual) table of long-term storage
              devices contained by the host.  In particular, disk
              devices accessed remotely over a network are not
              included here.

              Note that this table is potentially sparse: a
              (conceptual) entry exists only if the correspondent
              value of the hrDeviceType object is
              `hrDeviceDiskStorage'."
       ::= { hrDevice 6 }

   hrDiskStorageEntry OBJECT-TYPE
       SYNTAX HrDiskStorageEntry
       ACCESS not-accessible
       STATUS mandatory
       DESCRIPTION
              "A (conceptual) entry for one long-term storage
              device contained by the host.  The hrDeviceIndex in
              the index represents the entry in the hrDeviceTable
              that corresponds to the hrDiskStorageEntry. As an
              example, an instance of the hrDiskStorageCapacity
              object might be named hrDiskStorageCapacity.3"
       INDEX { hrDeviceIndex }
       ::= { hrDiskStorageTable 1 }

   HrDiskStorageEntry ::= SEQUENCE {
           hrDiskStorageAccess         INTEGER,
           hrDiskStorageMedia          INTEGER,
           hrDiskStorageRemoveble      Boolean,
           hrDiskStorageCapacity       KBytes


       }

   hrDiskStorageAccess OBJECT-TYPE
       SYNTAX INTEGER {
                       readWrite(1),
                       readOnly(2)
               }
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "An indication if this long-term storage device is
              readable and writable or only readable.  This
              should reflect the media type, any write-protect
              mechanism, and any device configuration that
              affects the entire device."
       ::= { hrDiskStorageEntry 1 }

   hrDiskStorageMedia OBJECT-TYPE
       SYNTAX INTEGER {
                   other(1),
                   unknown(2),
                   hardDisk(3),
                   floppyDisk(4),
                   opticalDiskROM(5),
                   opticalDiskWORM(6),     -- Write Once Read Many
                   opticalDiskRW(7),
                   ramDisk(8)
               }
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "An indication of the type of media used in this
              long-term storage device."
       ::= { hrDiskStorageEntry 2 }

   hrDiskStorageRemoveble OBJECT-TYPE
       SYNTAX Boolean
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
               "Denotes whether or not the disk media may be
               removed from the drive."
       ::= { hrDiskStorageEntry 3 }

   hrDiskStorageCapacity OBJECT-TYPE
       SYNTAX KBytes
       ACCESS read-only
       STATUS mandatory


       DESCRIPTION
              "The total size for this long-term storage device."
       ::= { hrDiskStorageEntry 4 }

   hrPartitionTable OBJECT-TYPE
       SYNTAX SEQUENCE OF HrPartitionEntry
       ACCESS not-accessible
       STATUS mandatory
       DESCRIPTION
              "The (conceptual) table of partitions for long-term
              storage devices contained by the host.  In
              particular, partitions accessed remotely over a
              network are not included here."
       ::= { hrDevice 7 }

   hrPartitionEntry OBJECT-TYPE
       SYNTAX HrPartitionEntry
       ACCESS not-accessible
       STATUS mandatory
       DESCRIPTION
              "A (conceptual) entry for one partition.  The
              hrDeviceIndex in the index represents the entry in
              the hrDeviceTable that corresponds to the
              hrPartitionEntry.

              As an example of how objects in this table are
              named, an instance of the hrPartitionSize object
              might be named hrPartitionSize.3.1"
       INDEX { hrDeviceIndex, hrPartitionIndex }
       ::= { hrPartitionTable 1 }

   HrPartitionEntry ::= SEQUENCE {
           hrPartitionIndex                INTEGER,
           hrPartitionLabel                InternationalDisplayString,
           hrPartitionID                   OCTET STRING,
           hrPartitionSize                 KBytes,
           hrPartitionFSIndex              INTEGER
       }

   hrPartitionIndex OBJECT-TYPE
       SYNTAX INTEGER (1..2147483647)
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "A unique value for each partition on this long-
              term storage device.  The value for each long-term
              storage device must remain constant at least from
              one re-initialization of the agent to the next re-


              initialization."
       ::= { hrPartitionEntry 1 }

   hrPartitionLabel OBJECT-TYPE
       SYNTAX InternationalDisplayString (SIZE (0..128))
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "A textual description of this partition."
       ::= { hrPartitionEntry 2 }

   hrPartitionID OBJECT-TYPE
       SYNTAX OCTET STRING
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "A descriptor which uniquely represents this
              partition to the responsible operating system.  On
              some systems, this might take on a binary
              representation."
       ::= { hrPartitionEntry 3 }

   hrPartitionSize OBJECT-TYPE
       SYNTAX KBytes
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
               "The size of this partition."
       ::= { hrPartitionEntry 4 }

   hrPartitionFSIndex OBJECT-TYPE
       SYNTAX INTEGER (0..2147483647)
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
               "The index of the file system mounted on this
               partition.  If no file system is mounted on this
               partition, then this value shall be zero.  Note
               that multiple partitions may point to one file
               system, denoting that that file system resides on
               those partitions.  Multiple file systems may not
               reside on one partition."
       ::= { hrPartitionEntry 5 }

   -- The File System Table
   hrFSTable OBJECT-TYPE
       SYNTAX SEQUENCE OF HrFSEntry


       ACCESS not-accessible
       STATUS mandatory
       DESCRIPTION
               "The (conceptual) table of file systems local to
               this host or remotely mounted from a file server.
               File systems that are in only one user's
               environment on a multi-user system will not be
               included in this table."
       ::= { hrDevice 8 }

   hrFSEntry OBJECT-TYPE
       SYNTAX HrFSEntry
       ACCESS not-accessible
       STATUS mandatory
       DESCRIPTION
               "A (conceptual) entry for one file system local to
               this host or remotely mounted from a file server.
               File systems that are in only one user's
               environment on a multi-user system will not be
               included in this table.

               As an example of how objects in this table are
               named, an instance of the hrFSMountPoint object
               might be named hrFSMountPoint.3"
       INDEX { hrFSIndex }
       ::= { hrFSTable 1 }

   -- Registration for some popular File System types,
   -- for use with hrFSType.

   hrFSTypes               OBJECT IDENTIFIER ::= { hrDevice 9 }

   hrFSOther               OBJECT IDENTIFIER ::= { hrFSTypes 1 }
   hrFSUnknown             OBJECT IDENTIFIER ::= { hrFSTypes 2 }
   hrFSBerkeleyFFS         OBJECT IDENTIFIER ::= { hrFSTypes 3 }
   hrFSSys5FS              OBJECT IDENTIFIER ::= { hrFSTypes 4 }
   -- DOS
   hrFSFat                 OBJECT IDENTIFIER ::= { hrFSTypes 5 }
   -- OS/2 High Performance File System
   hrFSHPFS                OBJECT IDENTIFIER ::= { hrFSTypes 6 }
   --  Macintosh Hierarchical File System
   hrFSHFS                 OBJECT IDENTIFIER ::= { hrFSTypes 7 }

   -- Macintosh File System
   hrFSMFS                 OBJECT IDENTIFIER ::= { hrFSTypes 8 }
   -- Windows NT
   hrFSNTFS                OBJECT IDENTIFIER ::= { hrFSTypes 9 }


   hrFSVNode               OBJECT IDENTIFIER ::= { hrFSTypes 10 }
   hrFSJournaled           OBJECT IDENTIFIER ::= { hrFSTypes 11 }
   -- CD File systems
   hrFSiso9660             OBJECT IDENTIFIER ::= { hrFSTypes 12 }
   hrFSRockRidge           OBJECT IDENTIFIER ::= { hrFSTypes 13 }

   hrFSNFS                 OBJECT IDENTIFIER ::= { hrFSTypes 14 }
   hrFSNetware             OBJECT IDENTIFIER ::= { hrFSTypes 15 }
   -- Andrew File System
   hrFSAFS                 OBJECT IDENTIFIER ::= { hrFSTypes 16 }
   -- OSF DCE Distributed File System
   hrFSDFS                 OBJECT IDENTIFIER ::= { hrFSTypes 17 }
   hrFSAppleshare          OBJECT IDENTIFIER ::= { hrFSTypes 18 }
   hrFSRFS                 OBJECT IDENTIFIER ::= { hrFSTypes 19 }
   -- Data General
   hrFSDGCFS               OBJECT IDENTIFIER ::= { hrFSTypes 20 }
   -- SVR4 Boot File System
   hrFSBFS                 OBJECT IDENTIFIER ::= { hrFSTypes 21 }

   HrFSEntry ::= SEQUENCE {
           hrFSIndex                   INTEGER,
           hrFSMountPoint              InternationalDisplayString,
           hrFSRemoteMountPoint        InternationalDisplayString,
           hrFSType                    OBJECT IDENTIFIER,
           hrFSAccess                  INTEGER,
           hrFSBootable                Boolean,
           hrFSStorageIndex            INTEGER,
           hrFSLastFullBackupDate      DateAndTime,
           hrFSLastPartialBackupDate   DateAndTime
       }

   hrFSIndex OBJECT-TYPE
       SYNTAX INTEGER (1..2147483647)
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
               "A unique value for each file system local to this
               host.  The value for each file system must remain
               constant at least from one re-initialization of
               the agent to the next re-initialization."
       ::= { hrFSEntry 1 }

   hrFSMountPoint OBJECT-TYPE
       SYNTAX InternationalDisplayString (SIZE(0..128))
       ACCESS read-only
       STATUS mandatory


       DESCRIPTION
               "The path name of the root of this file system."
       ::= { hrFSEntry 2 }

   hrFSRemoteMountPoint OBJECT-TYPE
       SYNTAX InternationalDisplayString (SIZE(0..128))
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
               "A description of the name and/or address of the
               server that this file system is mounted from.
               This may also include parameters such as the mount
               point on the remote file system.  If this is not a
               remote file system, this string should have a
               length of zero."
       ::= { hrFSEntry 3 }

   hrFSType OBJECT-TYPE
       SYNTAX OBJECT IDENTIFIER
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "The value of this object identifies the type of
              this file system."
       ::= { hrFSEntry 4 }

   hrFSAccess OBJECT-TYPE
       SYNTAX INTEGER {
               readWrite(1),
               readOnly(2)
           }
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "An indication if this file system is logically
              configured by the operating system to be readable
              and writable or only readable.  This does not
              represent any local access-control policy, except
              one that is applied to the file system as a whole."
       ::= { hrFSEntry 5 }

   hrFSBootable OBJECT-TYPE
       SYNTAX Boolean
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "A flag indicating whether this file system is
              bootable."


       ::= { hrFSEntry 6 }

   hrFSStorageIndex OBJECT-TYPE
       SYNTAX INTEGER (0..2147483647)
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
               "The index of the hrStorageEntry that represents
               information about this file system.  If there is
               no such information available, then this value
               shall be zero.  The relevant storage entry will be
               useful in tracking the percent usage of this file
               system and diagnosing errors that may occur when
               it runs out of space."
       ::= { hrFSEntry 7 }

   hrFSLastFullBackupDate OBJECT-TYPE
       SYNTAX DateAndTime
       ACCESS read-write
       STATUS mandatory
       DESCRIPTION
              "The last date at which this complete file system
              was copied to another storage device for backup.
              This information is useful for ensuring that
              backups are being performed regularly.

              If this information is not known, then this
              variable shall have the value corresponding to
              January 1, year 0000, 00:00:00.0, which is encoded
              as (hex)'00 00 01 01 00 00 00 00'."
       ::= { hrFSEntry 8 }

   hrFSLastPartialBackupDate OBJECT-TYPE
       SYNTAX DateAndTime
       ACCESS read-write
       STATUS mandatory
       DESCRIPTION
              "The last date at which a portion of this file
              system was copied to another storage device for
              backup.  This information is useful for ensuring
              that backups are being performed regularly.

              If this information is not known, then this
              variable shall have the value corresponding to
              January 1, year 0000, 00:00:00.0, which is encoded
              as (hex)'00 00 01 01 00 00 00 00'."
       ::= { hrFSEntry 9 }


   -- The Host Resources Running Software Group
   --
   -- Implementation of this group is optional.
   --
   -- The hrSWRunTable contains an entry for each distinct piece of
   -- software that is running or loaded into physical or virtual
   -- memory in preparation for running.  This includes the host's
   -- operating system, device drivers, and applications.

   hrSWOSIndex OBJECT-TYPE
       SYNTAX INTEGER (1..2147483647)
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
               "The value of the hrSWRunIndex for the
               hrSWRunEntry that represents the primary operating
               system running on this host.  This object is
               useful for quickly and uniquely identifying that
               primary operating system."
       ::= { hrSWRun 1 }

   hrSWRunTable OBJECT-TYPE
       SYNTAX SEQUENCE OF HrSWRunEntry
       ACCESS not-accessible
       STATUS mandatory
       DESCRIPTION
              "The (conceptual) table of software running on the
              host."
       ::= { hrSWRun 2 }

   hrSWRunEntry OBJECT-TYPE
       SYNTAX HrSWRunEntry
       ACCESS not-accessible
       STATUS mandatory
       DESCRIPTION
              "A (conceptual) entry for one piece of software
              running on the host Note that because the installed
              software table only contains information for
              software stored locally on this host, not every
              piece of running software will be found in the
              installed software table.  This is true of software
              that was loaded and run from a non-local source,
              such as a network-mounted file system.

              As an example of how objects in this table are
              named, an instance of the hrSWRunName object might
              be named hrSWRunName.1287"
       INDEX { hrSWRunIndex }


       ::= { hrSWRunTable 1 }

   HrSWRunEntry ::= SEQUENCE {
           hrSWRunIndex       INTEGER,
           hrSWRunName        InternationalDisplayString,
           hrSWRunID          ProductID,
           hrSWRunPath        InternationalDisplayString,
           hrSWRunParameters  InternationalDisplayString,
           hrSWRunType        INTEGER,
           hrSWRunStatus      INTEGER
       }

   hrSWRunIndex OBJECT-TYPE
       SYNTAX INTEGER (1..2147483647)
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "A unique value for each piece of software running
              on the host.  Wherever possible, this should be the
              system's native, unique identification number."
       ::= { hrSWRunEntry 1 }

   hrSWRunName OBJECT-TYPE
       SYNTAX InternationalDisplayString (SIZE (0..64))
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "A textual description of this running piece of
              software, including the manufacturer, revision,
              and the name by which it is commonly known.  If
              this software was installed locally, this should be
              the same string as used in the corresponding
              hrSWInstalledName."
       ::= { hrSWRunEntry 2 }

   hrSWRunID OBJECT-TYPE
       SYNTAX ProductID
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "The product ID of this running piece of software."
       ::= { hrSWRunEntry 3 }

   hrSWRunPath OBJECT-TYPE
       SYNTAX InternationalDisplayString (SIZE(0..128))
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION


              "A description of the location on long-term storage
              (e.g. a disk drive) from which this software was
              loaded."
       ::= { hrSWRunEntry 4 }

   hrSWRunParameters OBJECT-TYPE
       SYNTAX InternationalDisplayString (SIZE(0..128))
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "A description of the parameters supplied to this
              software when it was initially loaded."
       ::= { hrSWRunEntry 5 }

   hrSWRunType OBJECT-TYPE
       SYNTAX INTEGER {
                   unknown(1),
                   operatingSystem(2),
                   deviceDriver(3),
                   application(4)
              }
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
               "The type of this software."
       ::= { hrSWRunEntry 6 }

   hrSWRunStatus OBJECT-TYPE
       SYNTAX INTEGER {
               running(1),
               runnable(2),    -- waiting for resource (CPU, memory, IO)
               notRunnable(3), -- loaded but waiting for event
               invalid(4)      -- not loaded
           }
       ACCESS read-write
       STATUS mandatory
       DESCRIPTION
              "The status of this running piece of software.
              Setting this value to invalid(4) shall cause this
              software to stop running and to be unloaded."
       ::= { hrSWRunEntry 7 }

   -- The Host Resources Running Software Performance Group
   -- Implementation of this group is optional.
   --
   -- The hrSWRunPerfTable contains an entry corresponding to
   -- each entry in the hrSWRunTable.


   hrSWRunPerfTable OBJECT-TYPE
       SYNTAX SEQUENCE OF HrSWRunPerfEntry
       ACCESS not-accessible
       STATUS mandatory
       DESCRIPTION
               "The (conceptual) table of running software
               performance metrics."
       ::= { hrSWRunPerf 1 }

   hrSWRunPerfEntry OBJECT-TYPE
       SYNTAX HrSWRunPerfEntry
       ACCESS not-accessible
       STATUS mandatory
       DESCRIPTION
               "A (conceptual) entry containing software
               performance metrics.  As an example, an instance
               of the hrSWRunPerfCPU object might be named
               hrSWRunPerfCPU.1287"
       INDEX  { hrSWRunIndex }  -- This table augments information in
                                -- the hrSWRunTable.
       ::= { hrSWRunPerfTable 1 }

   HrSWRunPerfEntry ::= SEQUENCE {
           hrSWRunPerfCPU          INTEGER,
           hrSWRunPerfMem          KBytes
   }

   hrSWRunPerfCPU OBJECT-TYPE
       SYNTAX INTEGER
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
               "The number of centi-seconds of the total system's
               CPU resources consumed by this process.  Note that
               on a multi-processor system, this value may
               increment by more than one centi-second in one
               centi-second of real (wall clock) time."
       ::= { hrSWRunPerfEntry 1 }

   hrSWRunPerfMem OBJECT-TYPE
       SYNTAX KBytes
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
               "The total amount of real system memory allocated
               to this process."
       ::= { hrSWRunPerfEntry 2 }


   -- The Host Resources Installed Software Group
   --
   -- Implementation of this group is optional.
   --
   -- The hrSWInstalledTable contains an entry for each piece
   -- of software installed in long-term storage (e.g. a disk
   -- drive) locally on this host.  Note that this does not
   -- include software loadable remotely from a network
   -- server.
   --
   -- This table is useful for identifying and inventorying
   -- software on a host and for diagnosing incompatibility
   -- and version mismatch problems between various pieces
   -- of hardware and software.

   hrSWInstalledLastChange OBJECT-TYPE
       SYNTAX TimeTicks
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "The value of sysUpTime when an entry in the
              hrSWInstalledTable was last added, renamed, or
              deleted.  Because this table is likely to contain
              many entries, polling of this object allows a
              management station to determine when re-downloading
              of the table might be useful."
       ::= { hrSWInstalled 1 }

   hrSWInstalledLastUpdateTime OBJECT-TYPE
       SYNTAX TimeTicks
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "The value of sysUpTime when the hrSWInstalledTable
              was last completely updated.  Because caching of
              this data will be a popular implementation
              strategy, retrieval of this object allows a
              management station to obtain a guarantee that no
              data in this table is older than the indicated
              time."
       ::= { hrSWInstalled 2 }

   hrSWInstalledTable OBJECT-TYPE
       SYNTAX SEQUENCE OF HrSWInstalledEntry
       ACCESS not-accessible
       STATUS mandatory
       DESCRIPTION
              "The (conceptual) table of software installed on


              this host."
       ::= { hrSWInstalled 3 }

   hrSWInstalledEntry OBJECT-TYPE
       SYNTAX HrSWInstalledEntry
       ACCESS not-accessible
       STATUS mandatory
       DESCRIPTION
              "A (conceptual) entry for a piece of software
              installed on this host.

              As an example of how objects in this table are
              named, an instance of the hrSWInstalledName object
              might be named hrSWInstalledName.96"
       INDEX { hrSWInstalledIndex }
       ::= { hrSWInstalledTable 1 }

   HrSWInstalledEntry ::= SEQUENCE {
           hrSWInstalledIndex       INTEGER,
           hrSWInstalledName        InternationalDisplayString,
           hrSWInstalledID          ProductID,
           hrSWInstalledType        INTEGER,
           hrSWInstalledDate        DateAndTime
   }

   hrSWInstalledIndex OBJECT-TYPE
       SYNTAX INTEGER (1..2147483647)
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "A unique value for each piece of software
              installed on the host.  This value shall be in the
              range from 1 to the number of pieces of software
              installed on the host."
       ::= { hrSWInstalledEntry 1 }

   hrSWInstalledName OBJECT-TYPE
       SYNTAX InternationalDisplayString (SIZE (0..64))
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "A textual description of this installed piece of
              software, including the manufacturer, revision, the
              name by which it is commonly known, and optionally,
              its serial number."
       ::= { hrSWInstalledEntry 2 }

   hrSWInstalledID OBJECT-TYPE


       SYNTAX ProductID
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "The product ID of this installed piece of
              software."
       ::= { hrSWInstalledEntry 3 }

   hrSWInstalledType OBJECT-TYPE
       SYNTAX INTEGER {
                   unknown(1),
                   operatingSystem(2),
                   deviceDriver(3),
                   application(4)
              }
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
               "The type of this software."
       ::= { hrSWInstalledEntry 4 }

   hrSWInstalledDate OBJECT-TYPE
       SYNTAX DateAndTime
       ACCESS read-only
       STATUS mandatory
       DESCRIPTION
              "The last-modification date of this application as
              it would appear in a directory listing."
       ::= { hrSWInstalledEntry 5 }

END
