          RFC1213-MIB DEFINITIONS ::= BEGIN

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

          mgmt         OBJECT IDENTIFIER ::= { iso org(3) dod(6) internet(1) 2 }
          directory    OBJECT IDENTIFIER ::= { internet 1 }
          experimental OBJECT IDENTIFIER ::= { internet 3 }
          private      OBJECT IDENTIFIER ::= { internet 4 }
          enterprises  OBJECT IDENTIFIER ::= { private 1 }

          --  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


SNMPv2-SMI DEFINITIONS ::= BEGIN


-- the path to the root

org            OBJECT IDENTIFIER ::= { iso 3 }
dod            OBJECT IDENTIFIER ::= { org 6 }
internet       OBJECT IDENTIFIER ::= { dod 1 }

directory      OBJECT IDENTIFIER ::= { internet 1 }

mgmt           OBJECT IDENTIFIER ::= { internet 2 }
mib-2          OBJECT IDENTIFIER ::= { mgmt 1 }
transmission   OBJECT IDENTIFIER ::= { mib-2 10 }

experimental   OBJECT IDENTIFIER ::= { internet 3 }

private        OBJECT IDENTIFIER ::= { internet 4 }
enterprises    OBJECT IDENTIFIER ::= { private 1 }

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 }

-- definitions of administrative identifiers

-- zeroDotZero    OBJECT-IDENTITY
--     STATUS     current
--     DESCRIPTION
--             "A value used for null identifiers."
--     ::= { 0 0 }

END



SNMPv2-TC DEFINITIONS ::= BEGIN

IMPORTS
    ObjectSyntax, 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.

            To summarize RFC 854, the NVT ASCII repertoire specifies:

              - the use of character codes 0-127 (decimal)

              - the graphics characters (32-126) are interpreted as
                US ASCII

              - NUL, LF, CR, BEL, BS, HT, VT and FF have the special
                meanings specified in RFC 854

              - the other 25 codes have no standard interpretation

              - the sequence 'CR LF' means newline

              - the sequence 'CR NUL' means carriage-return

              - an 'LF' not preceded by a 'CR' means moving to the
                same column on the next line.

              - the sequence 'CR x' for any x other than LF or NUL is
                illegal.  (Note that this also means that a string may
                end with either 'CR LF' or 'CR NUL', but not with CR.)

            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.

            When the network management portion of the system is re-
            initialized, the value of every object instance having this
            syntax must either be incremented from its value prior to
            the re-initialization, or (if the value prior to the re-
            initialization is unknown) be set to a pseudo-randomly
            generated value."
    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       obsolete
    DESCRIPTION
            "A pointer to either a specific instance of a MIB object or
            a conceptual row of a MIB table in the managed device.  In
            the latter case, by convention, it is the name of the
            particular instance of the first accessible columnar object
            in the conceptual row.

            The two uses of this textual convention are replaced by
            VariablePointer and RowPointer, respectively."
    SYNTAX       OBJECT IDENTIFIER


VariablePointer ::= TEXTUAL-CONVENTION
    STATUS       current
    DESCRIPTION
            "A pointer to a specific object instance.  For example,
            sysContact.0 or ifInOctets.3."
    SYNTAX       OBJECT IDENTIFIER


RowPointer ::= TEXTUAL-CONVENTION
    STATUS       current
    DESCRIPTION
            "Represents a pointer to a conceptual row.  The value is the
            name of the instance of the first accessible columnar object
            in the conceptual row.

            For example, ifIndex.3 would point to the 3rd row in the
            ifTable (note that if ifIndex were not-accessible, then
            ifDescr.3 would be used instead)."
    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 its status automatically set
                 to active, making 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 make 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, and an attempt to
            make it so would fail because the agent has insufficient
            information (the state 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
                 not be `active' in order for the value of some other
                 column of the same conceptual row to be modified.  If
                 such a specification is made, affected columns may be
                 changed by an SNMP set PDU if the RowStatus would not
                 be equal to `active' either immediately before or after
                 processing the PDU.  In other words, if the PDU also
                 contained a varbind that would change the RowStatus
                 value, the column in question may be changed if the
                 RowStatus was not equal to `active' as the PDU was
                 received, or if the varbind sets the status to a value
                 other than 'active'.

            Also note that whenever any elements of a row exist, the
            RowStatus column must also exist.

            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      |see 5
column to some|              |           |             |
value         |              |      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, the return value may be
            either:

                 inconsistentName:  because the agent does not choose to
                 create such an instance when the corresponding
                 RowStatus instance does not exist, or

                 inconsistentValue:  if the supplied value is
                 inconsistent with the state of some other MIB object's
                 value, or

                 noError: because the agent chooses to create the
                 instance.

            If noError is returned, then the instance of the status
            column must also be created, and the new state is B or C,
            depending on the information available to the agent.  If
            inconsistentName or inconsistentValue is returned, the row
            remains in state A.

            (5) depending on the MIB definition for the column/table,
            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 (and for which the agent allows their values to
                 be changed after their creation), 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.  It is the responsibility of the
            DESCRIPTION clause of the status column to indicate what an
            abnormally long period of time would be.  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'.
            In the absense of such information in the DESCRIPTION
            clause, it is suggested that this period be approximately 5
            minutes in length.  This removal action applies not only to
            newly-created rows, but also to previously active rows which
            are set to, and left in, the notInService state for a
            prolonged period exceeding that which is considered normal
            for such a conceptual row.


                             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 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 the 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))


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 either nonVolatile(3), permanent(4) or readOnly(5), is
            backed up by stable storage.  A row which is permanent(4)
            can be changed but not deleted.  A row which is readOnly(5)
            cannot be changed nor deleted.

            If the value of an object with this syntax is either
            permanent(4) or readOnly(5), it cannot be modified.
            Conversely, if the value is either other(1), volatile(2) or
            nonVolatile(3), it cannot be modified to be permanent(4) or
            readOnly(5).

            Every usage of this textual convention is required to
            specify the columnar objects which a permanent(4) row must
            at a minimum allow to be writable."
    SYNTAX       INTEGER {
                     other(1),       -- eh?
                     volatile(2),    -- e.g., in RAM
                     nonVolatile(3), -- e.g., in NVRAM
                     permanent(4),   -- e.g., partially in ROM
                     readOnly(5)     -- e.g., completely in ROM
                 }


TDomain ::= TEXTUAL-CONVENTION
    STATUS       current
    DESCRIPTION
          "Denotes a kind of transport service.

          Some possible values, such as snmpUDPDomain, are defined in
          'Transport Mappings for Version 2 of the Simple Network
          Management Protocol (SNMPv2)'."
    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
          'Transport Mappings for Version 2 of the Simple Network
          Management Protocol (SNMPv2)' for further information on
          snmpUDPDomain."
    SYNTAX       OCTET STRING (SIZE (1..255))


END




SNMPv2-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
    TimeTicks, Counter32, snmpModules, mib-2
        FROM SNMPv2-SMI
    DisplayString, TestAndIncr, TimeStamp
        FROM SNMPv2-TC;
--    MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
--        FROM SNMPv2-CONF;


snmpMIB MODULE-IDENTITY
    LAST-UPDATED "9511090000Z"
    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

             E-mail: mrose@dbc.mtview.ca.us"
    DESCRIPTION
            "The MIB module for SNMPv2 entities."
    REVISION      "9304010000Z"
    DESCRIPTION
            "The initial revision of this MIB module was published as
            RFC 1450."
    ::= { snmpModules 1 }


snmpMIBObjects OBJECT IDENTIFIER ::= { snmpMIB 1 }

--  ::= { snmpMIBObjects 1 }        this OID is obsolete
--  ::= { snmpMIBObjects 2 }        this OID is obsolete
--  ::= { snmpMIBObjects 3 }        this OID is obsolete


-- the System group
--
-- a collection of objects common to all managed systems.

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

sysDescr OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..255))
    MAX-ACCESS  read-only
    STATUS      current
    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."
    ::= { system 1 }

sysObjectID OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-only
    STATUS      current
    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
    MAX-ACCESS  read-only
    STATUS      current
    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))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "The textual identification of the contact person for this
            managed node, together with information on how to contact
            this person.  If no contact information is known, the value
            is the zero-length string."
    ::= { system 4 }

sysName OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..255))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "An administratively-assigned name for this managed node.
            By convention, this is the node's fully-qualified domain
            name.  If the name is unknown, the value is the zero-length
            string."
    ::= { system 5 }

sysLocation OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..255))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "The physical location of this node (e.g., `telephone
            closet, 3rd floor').  If the location is unknown, the value
            is the zero-length string."
    ::= { system 6 }

sysServices OBJECT-TYPE
    SYNTAX      INTEGER (0..127)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "A value which indicates the set of services that this
            entity may potentially 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 only 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., supports the IP)
                   4        end-to-end  (e.g., supports the TCP)
                   7        applications (e.g., supports the SMTP)

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


-- object resource information
--
-- a collection of objects which describe the SNMPv2 entity's
-- (statically and dynamically configurable) support of
-- various MIB modules.

sysORLastChange 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 sysORID."
    ::= { system 8 }

sysORTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF SysOREntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The (conceptual) table listing the capabilities of the
            local SNMPv2 entity acting in an agent role with respect to
            various MIB modules.  SNMPv2 entities having dynamically-
            configurable support of MIB modules will have a
            dynamically-varying number of conceptual rows."
    ::= { system 9 }

sysOREntry OBJECT-TYPE
    SYNTAX     SysOREntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the sysORTable."
    INDEX      { sysORIndex }
    ::= { sysORTable 1 }

SysOREntry ::= SEQUENCE {
    sysORIndex     INTEGER,
    sysORID        OBJECT IDENTIFIER,
    sysORDescr     DisplayString,
    sysORUpTime    TimeStamp
}

sysORIndex OBJECT-TYPE
    SYNTAX     INTEGER (1..2147483647)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The auxiliary variable used for identifying instances of
            the columnar objects in the sysORTable."
    ::= { sysOREntry 1 }

sysORID OBJECT-TYPE
    SYNTAX     OBJECT IDENTIFIER
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "An authoritative identification of a capabilities statement
            with respect to various MIB modules supported by the local
            SNMPv2 entity acting in an agent role."
    ::= { sysOREntry 2 }

sysORDescr OBJECT-TYPE
    SYNTAX     DisplayString
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "A textual description of the capabilities identified by the
            corresponding instance of sysORID."
    ::= { sysOREntry 3 }

sysORUpTime OBJECT-TYPE
    SYNTAX     TimeStamp
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The value of sysUpTime at the time this conceptual row was
            last instanciated."
    ::= { sysOREntry 4 }


-- the SNMP group
--
-- a collection of objects providing basic instrumentation and
-- control of an SNMP entity.

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

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

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

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

snmpInBadCommunityUses OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The total number of SNMP messages delivered to the SNMP
            entity which represented an SNMP operation which was not
            allowed by the SNMP community named in the message."
    ::= { snmp 5 }

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

snmpEnableAuthenTraps OBJECT-TYPE
    SYNTAX      INTEGER { enabled(1), disabled(2) }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "Indicates whether the SNMP entity 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
            across re-initializations of the network management system."
    ::= { snmp 30 }

snmpSilentDrops 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 SNMP entity which were silently dropped
            because the size of a reply containing an alternate
            Response-PDU with an empty variable-bindings field was
            greater than either a local constraint or the maximum
            message size associated with the originator of the request."
    ::= { snmp 31 }

snmpProxyDrops 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 SNMP entity which were silently dropped
            because the transmission of the (possibly translated)
            message to a proxy target failed in a manner (other than a
            time-out) such that no Response-PDU could be returned."
    ::= { snmp 32 }


-- information for notifications
--
-- 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 accessible-for-notify
    STATUS     current
    DESCRIPTION
            "The authoritative identification of the notification
            currently being sent.  This variable occurs as the second
            varbind in every SNMPv2-Trap-PDU and InformRequest-PDU."
    ::= { snmpTrap 1 }

--  ::= { snmpTrap 2 }   this OID is obsolete

snmpTrapEnterprise OBJECT-TYPE
    SYNTAX     OBJECT IDENTIFIER
    MAX-ACCESS accessible-for-notify
    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 }

--  ::= { snmpTrap 4 }   this OID is obsolete


-- 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 and that its
            configuration may have been 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 }

-- Note the linkDown NOTIFICATION-TYPE ::= { snmpTraps 3 }
-- and the linkUp NOTIFICATION-TYPE ::= { snmpTraps 4 }
-- are defined in RFC 1573

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 snmpEnableAuthenTraps object indicates
            whether this trap will be generated."
    ::= { snmpTraps 5 }

-- Note the egpNeighborLoss NOTIFICATION-TYPE ::= { snmpTraps 6 }
-- is defined in RFC 1213


-- 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

--    ::= { snmpMIBCompliances 1 }      this OID is obsolete

snmpBasicCompliance MODULE-COMPLIANCE
    STATUS  current
    DESCRIPTION
            "The compliance statement for SNMPv2 entities which
            implement the SNMPv2 MIB."
    MODULE  -- this module
        MANDATORY-GROUPS { snmpGroup, snmpSetGroup, systemGroup,
                           snmpBasicNotificationsGroup }

        GROUP   snmpCommunityGroup
        DESCRIPTION
            "This group is mandatory for SNMPv2 entities which
            support community-based authentication."

    ::= { snmpMIBCompliances 2 }


-- units of conformance

--  ::= { snmpMIBGroups 1 }           this OID is obsolete
--  ::= { snmpMIBGroups 2 }           this OID is obsolete
--  ::= { snmpMIBGroups 3 }           this OID is obsolete
--  ::= { snmpMIBGroups 4 }           this OID is obsolete

snmpGroup OBJECT-GROUP
    OBJECTS { snmpInPkts,
              snmpInBadVersions,
              snmpInASNParseErrs,
              snmpSilentDrops,
              snmpProxyDrops,
              snmpEnableAuthenTraps }
    STATUS  current
    DESCRIPTION
            "A collection of objects providing basic instrumentation and
            control of an SNMPv2 entity."
    ::= { snmpMIBGroups 8 }

snmpCommunityGroup OBJECT-GROUP
    OBJECTS { snmpInBadCommunityNames,
              snmpInBadCommunityUses }
    STATUS  current
    DESCRIPTION
            "A collection of objects providing basic instrumentation of
            a SNMPv2 entity which supports community-based
            authentication."
    ::= { snmpMIBGroups 9 }

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 }

systemGroup OBJECT-GROUP
    OBJECTS { sysDescr, sysObjectID, sysUpTime,
              sysContact, sysName, sysLocation,
              sysServices,
              sysORLastChange, sysORID,
              sysORUpTime, sysORDescr }
    STATUS  current
    DESCRIPTION
            "The system group defines objects which are common to all
            managed systems."
    ::= { snmpMIBGroups 6 }

snmpBasicNotificationsGroup NOTIFICATION-GROUP
    NOTIFICATIONS { coldStart, authenticationFailure }
    STATUS        current
    DESCRIPTION
            "The two notifications which an SNMPv2 entity is required to
            implement."
    ::= { snmpMIBGroups 7 }


-- definitions in RFC 1213 made obsolete by the inclusion of a
-- subset of the snmp group in this MIB

snmpOutPkts OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
            "The total number of SNMP Messages which were
            passed from the SNMP protocol entity to the
            transport service."
    ::= { snmp 2 }

-- { snmp 7 } is not used

snmpInTooBigs OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    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      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    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      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    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      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    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      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    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      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    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      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    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      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    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      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    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      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    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      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    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      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    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      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    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      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    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      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    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      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    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      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
            "The total number of SNMP Get-Request PDUs which
            have been generated by the SNMP protocol entity."
    ::= { snmp 25 }

snmpOutGetNexts OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
            "The total number of SNMP Get-Next PDUs which have
            been generated by the SNMP protocol entity."
    ::= { snmp 26 }

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

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

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

snmpObsoleteGroup OBJECT-GROUP
    OBJECTS { snmpOutPkts, snmpInTooBigs, snmpInNoSuchNames,
              snmpInBadValues, snmpInReadOnlys, snmpInGenErrs,
              snmpInTotalReqVars, snmpInTotalSetVars,
              snmpInGetRequests, snmpInGetNexts, snmpInSetRequests,
              snmpInGetResponses, snmpInTraps, snmpOutTooBigs,
              snmpOutNoSuchNames, snmpOutBadValues, snmpOutGenErrs,
              snmpOutGetRequests, snmpOutGetNexts, snmpOutSetRequests,
              snmpOutGetResponses, snmpOutTraps }
    STATUS  obsolete
    DESCRIPTION
            "A collection of objects from RFC 1213 made obsolete by this
            MIB."
    ::= { snmpMIBGroups 10 }

END


-- The SGI base SMI definitions.  This module  defines 
-- the root identifiers for the various mib groups defined 
-- by various SGI departments.

-- Based on SNMPv2-SMI 

-- Copyright statements will later go in here

SGI-BASE-SMI DEFINITIONS ::= BEGIN


    IMPORTS
        MODULE-IDENTITY, OBJECT-TYPE, 
	OBJECT-IDENTITY, enterprises
                FROM SNMPv2-SMI;


    sgi MODULE-IDENTITY
        LAST-UPDATED "9803312057Z"
        ORGANIZATION "Silicon Graphics Inc."
        CONTACT-INFO
	    "        SSNT Layered Products Division
	
	    Postal : 2011, North Shoreline Blvd
		     MailStop 09U-510
		     MountainView, CA-94043
		     USA.

	    Email : ntwknarula@engr.sgi.com"
	DESCRIPTION
	    " The base SMI file for the Silicon Graphics 
	    Enterprise MIB definitions.  Other MIB modules 
	    defined by SGI will be rooted from OIDs defined 
	    in this module"
	REVISION "9803312057Z"
	DESCRIPTION
	    " The initial (test) version of this MIB module"
    ::= {enterprises 59}


-- The root object identifier under which the 
-- sysObjectID for various SGI products will be 
-- defined.  Every product developed by SGI, software 
-- or hardware, will have a unique sysObjectID defined 
-- for itself much like a "Product ID". 

-- For example, indy systems will report sysObjectID as 
-- enterprises.sgi.sgiProducts.sgiWorkstations.indy

    sgiProducts OBJECT-IDENTITY
	STATUS current
 	DESCRIPTION
	    "The authoritative root identifier under 
	    which the sysObjectID for all SGI products 
	    will be defined.  Actual definitions will
	    be defined in a separate MIB module."
    ::= {sgi 1}



-- Independent groups across the organization may 
-- develop applications which may support their own 
-- MIB objects.  These applications may run on various 
-- Operating Systems and shouldn't be tied to a particular
-- OS-based subtree.

-- This oid is defined so that the mibs of various 
-- applications can be rooted under this.  

-- For example, multiUserServer ::= {sgiApplications 1}
-- 		gauntlet ::= {sgiApplications 2}

    sgiApplications OBJECT-IDENTITY
	STATUS current
	DESCRIPTION
	    "The authoritative root identifier under 
	    which the mib groups defined by various 
	    SGI applications will be defined."
    ::= {sgi 2}
	


-- Right now we assume that the mib objects defined 
-- with respect to the IRIX Operating System and the 
-- associated hardware will be inappropriate
-- for Windows-based systems, and the vice versa

-- But still, we have tried to define objects based 
-- on their functionality. So, we may have to make 
-- some changes when it comes to define objects for
-- windows based systems


    sgiHost OBJECT-IDENTITY
	STATUS current
	DESCRIPTION
	    "The authoritative root identifier under
	     which the mib groups representing information 
	    of a SGI host will be defined."
    ::= {sgi 3}


    sgiAgents  OBJECT-IDENTITY
	STATUS  current
	DESCRIPTION
	    " The root identifier under which 
	    information specific to various agent 
	    implementations such as AGENT CAPABILITIES
	    will be provided."
    ::= {sgi 4}

-- Any common stuff that needs to get added will go in here
	
END


-- June 1998, Version 1.0.
-- Copyright (c) 1998 by Silicon Graphics Inc. 
-- All rights reserved.

-- The SGI products MIB.  This MIB defines the "Product ID" for all SGI
-- products, software or hardware.  The product id is supposed to be 
-- unique.  
-- For hardware systems, this product id maps directly to the sysObjectID
-- defined in MIB-II (rfc1213).

-- Based on SNMPv2


SGI-PRODUCTS-SMI DEFINITIONS ::= BEGIN


    IMPORTS
        MODULE-IDENTITY, OBJECT-TYPE
                FROM SNMPv2-SMI
	sgi
		FROM SGI-BASE-SMI;


    sgiProducts MODULE-IDENTITY
        LAST-UPDATED "9806291840Z"  -- June 29 1998, 18:40 GMT
        ORGANIZATION "Silicon Graphics Inc."
        CONTACT-INFO
	    " World Wide Web Support URL : 
		http://www.sgi.com/support/support_help.html
	      
	      North American Technical Support 
	      telephone number : 1-800-800-4SGI

	      World Wide Technical Support 
	      email-id : support@sgi.com"

	DESCRIPTION
	    "The SGI Products MIB module, which contains 
	     Product ID definitions for all SGI products." 
	REVISION "9806291840Z"
	DESCRIPTION
	    " The initial (test) version of this MIB module"
    ::= {sgi 1}


-- The product id information for all the workstations 
-- from SGI

-- The root identifier for this subclass

    sgiUnknownSystem OBJECT-IDENTITY 
	STATUS current
	DESCRIPTION 
	    "The sysObjectID value for an 
	     unknown SGI system."
    ::= {sgiProducts 1}

    sgiWorkstations OBJECT-IDENTITY
	STATUS current
	DESCRIPTION
	    "The OID under which the product id for 
	     SGI workstations will be defined."
    ::= {sgiProducts 2}


-- Indigo 
    indigo OBJECT IDENTIFIER ::= {sgiWorkstations 1}

-- Indigo2 series
    indigo2      OBJECT IDENTIFIER ::= {sgiWorkstations 2}
    powerIndigo2 OBJECT IDENTIFIER ::= {sgiWorkstations 3}

-- Indy
    indy   OBJECT IDENTIFIER ::= {sgiWorkstations 4}

-- O2
    o2     OBJECT IDENTIFIER ::= {sgiWorkstations 5}

-- Octane
    octane OBJECT IDENTIFIER ::= {sgiWorkstations 6}

--Onyx2
    onyx       OBJECT IDENTIFIER ::= {sgiWorkstations 7}
    onyx2      OBJECT IDENTIFIER ::= {sgiWorkstations 8}
    powerOnyx2 OBJECT IDENTIFIER ::= {sgiWorkstations 9}

-- servers root

    sgiServers OBJECT-IDENTITY
	STATUS current
	DESCRIPTION
	    "The OID under which the product id for 
	     SGI Servers will be defined."
    ::= {sgiProducts 3}


-- origin200
    origin200   OBJECT IDENTIFIER ::= {sgiServers 1}

-- origin2000
    origin2000  OBJECT IDENTIFIER ::= {sgiServers 2}

-- Challenge Series
    challenge   OBJECT IDENTIFIER ::= {sgiServers 3}
    challengeDM OBJECT IDENTIFIER ::= {sgiServers 4}
    challengeL  OBJECT IDENTIFIER ::= {sgiServers 5}
    challengeM  OBJECT IDENTIFIER ::= {sgiServers 6}
    challengeXL OBJECT IDENTIFIER ::= {sgiServers 7}
    challengeS  OBJECT IDENTIFIER ::= {sgiServers 8}

    powerChallenge  OBJECT IDENTIFIER ::= {sgiServers 9}
    powerChallengeM OBJECT IDENTIFIER ::= {sgiServers 10}

-- Supercomputers root

    sgiSupercomputers OBJECT-IDENTITY
	STATUS current
	DESCRIPTION
	    "The OID under which the product id for 
	     SGI Supercomputers will be defined."
    ::= {sgiProducts 4}


-- CRAY Origin2000
    crayOrigin2000 OBJECT IDENTIFIER ::= {sgiSupercomputers 1}

-- CRAY T90 series
    crayT94        OBJECT IDENTIFIER ::= {sgiSupercomputers 2}
    crayT916       OBJECT IDENTIFIER ::= {sgiSupercomputers 3}
    crayT932       OBJECT IDENTIFIER ::= {sgiSupercomputers 4}

-- CRAY J90 series
    crayJ916       OBJECT IDENTIFIER ::= {sgiSupercomputers 5}
    crayJ932       OBJECT IDENTIFIER ::= {sgiSupercomputers 6}
    crayJ90se      OBJECT IDENTIFIER ::= {sgiSupercomputers 7}

-- CRAY T3E series
    crayT3E        OBJECT IDENTIFIER ::= {sgiSupercomputers 8}
    crayT3E-900    OBJECT IDENTIFIER ::= {sgiSupercomputers 9}
    crayT3E-1200   OBJECT IDENTIFIER ::= {sgiSupercomputers 10}


-- A LOT more definitions will probably need to go in here

END


   HOST-RESOURCES-MIB DEFINITIONS ::= BEGIN

   IMPORTS
       OBJECT-TYPE               FROM SNMPv2-SMI
       DateAndTime,
       DisplayString             FROM SNMPv2-TC
       TimeTicks,
       Counter, Gauge            FROM RFC1155-SMI
       mib-2			 FROM SNMPv2-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


-- June 1998, Version 1.0.
-- Copyright (c) 1998 by Silicon Graphics Inc. 
-- All rights reserved.


-- The SGI Enterprise MIB definitions.  This module 
-- defines the objects for exporting running host 
-- information as well as statistics.

-- Though the objects have been grouped based on 
-- functionality, it may well be true that many of 
-- the objects defined here may not be implemented by a
-- non-UNIX system.

-- This mib conceptually extends the host resources mib.
-- The objects defined in this mib provide information 
-- that either have not been defined in the host-resources 
-- mib or they are specific to SGI systems.

-- Based on SNMPv2-SMI 


SGI-HOST-SMI DEFINITIONS ::= BEGIN

    IMPORTS 

	MODULE-IDENTITY, OBJECT-TYPE,
	NOTIFICATION-TYPE, Counter64,
	Integer32, Counter32,Gauge32,
	Unsigned32, TimeTicks
		FROM SNMPv2-SMI

	TruthValue, DisplayString,
	RowStatus, TEXTUAL-CONVENTION,
	DateAndTime
	        FROM SNMPv2-TC

--      AGENT-CAPABILITIES
--       FROM SNMPv2-CONF

	hrDeviceIndex 
	        FROM HOST-RESOURCES-MIB
        sgi, sgiAgents 
		FROM SGI-BASE-SMI;



    sgiHost MODULE-IDENTITY
        LAST-UPDATED "9804270529Z"
        ORGANIZATION "Silicon Graphics Inc."
        CONTACT-INFO
	    " World Wide Web Support URL : 
		http://www.sgi.com/support/support_help.html
	      
	      North American Technical Support 
	      telephone number : 1-800-800-4SGI

	      World Wide Technical Support 
	      email-id : support@sgi.com"

        DESCRIPTION
	    " The SGI enterprise mib definition module,
	    containing objects which represent information
	    about the running SGI host."
        REVISION "9804270529Z"
        DESCRIPTION
            " The initial (test) version of this MIB module"
    ::= {sgi 3}



-- First, the textual conventions used in this mib.

    SystemArchitecture ::= TEXTUAL-CONVENTION
	STATUS	    current
	DESCRIPTION
	    " The system architecture.  As new systems 
	    come out based on a new architecture, 
	    a new value should be added to this 
	    enumeration."
	SYNTAX   INTEGER {
		     unknown (1),
	             mips    (2),
		     intel   (3)
		 }


    -- operating system type
    OsType    ::= TEXTUAL-CONVENTION
	STATUS     current
	DESCRIPTION
	    " The running operating system type."
	SYNTAX	 INTEGER {
		     unknown	(1),
		     irix       (2),
		     unicos     (3),
	 	     windowsnt  (4)
		 }

   
    -- ID
    UID   ::= TEXTUAL-CONVENTION
	STATUS    current
	DESCRIPTION
	    " An unique value identifying an user
	    or a group in a system.
	    The uid of 0 cannot be used for any other
	    user, and it is assigned to the root of
	    the system."
--	SYNTAX   Unsigned32
 	SYNTAX   Gauge32



    -- The board type of the system
    CPUBoardType ::=  TEXTUAL-CONVENTION
	STATUS	   current
	DESCRIPTION
	    " The board type of the system."
	SYNTAX   INTEGER {	
		    unknown (0),
		    ip1   (1),  -- Inhouse Proc 1
		    ip4   (2),  -- 12 MHz R2000
		    ip5   (3),  -- 2X16.7 MHz R3000 multiProc
		    ip6   (4),  -- 20MHz R3000 Power Series
		    ip7   (5),  -- 20MHz R3000 Power Series
		    ip9   (6),  -- 20MHz R3000 Power Series
		    ip10  (7),  -- 20MHz R3000 Power Series
		    ip12  (8),  -- R3000 proc board for Magnum/Indigo
		    ip15  (9),  -- R3000 proc board for Magnum/Indigo
		    ip17  (10), -- 50/75 MHz R4000 proc 
		    ip19  (11), -- R4000/R4400 multiProc
		    ip20  (12), -- 50 MHz R4000 proc (Indigo)
		    ip21  (13), -- 75 and 90 MHz R8000 proc
		    ip22  (14), -- With EISA bus
		    ip25  (15), -- 190/195 MHz R10K
		    ip26  (16), -- 190/195 MHz R10K
		    ip27  (17), -- 190/195 MHz R10K
		    ip28  (18), -- R10K Indigo2
		    ip29  (19), -- Origin200 system board
		    ip30  (20), -- Octane
		    ip32  (21), -- O2
		    ip33  (22)
	         }


    -- CPUType
    CPUType   ::= TEXTUAL-CONVENTION
 	STATUS	  current
	DESCRIPTION	
	    " The processor type.  The processor type is
	    independent of the system board.  There may be 
	    more than one processors in the system, each of
	    different type."
	SYNTAX	 INTEGER {
		    unknown (0),
	            r2000   (1),
		    r2000A  (2),
		    r3000   (3),
		    r3000A  (4),
		    r4000   (5),
		    r4400   (6),	
		    r4600   (7),
		    r4650   (8),
		    r4700   (9),
		    r5000   (10),
		    r6000   (11),
		    r6000A  (12),
		    r8000   (13),
		    r10000  (14),
		    r12000  (15)
 	         }


    -- FPUType
    FPUType   ::= TEXTUAL-CONVENTION
 	STATUS	  current
	DESCRIPTION	
	    " The type of the Floating Point 
	    Unit (FPU)."
	SYNTAX	 INTEGER {
		    unknown (0),
	            r2010   (1),
		    r2010A  (2),
		    r3260   (3),
		    r3010   (4),
		    r3010A  (5),
		    r4000   (6),	
		    r4600   (7),
		    r4650   (8),
		    r4700   (9),
		    r5000   (10),
		    r6010   (11),
		    r8010   (12),
		    r10010  (13),
		    r12010  (14)
	         }


    -- CPU status
    CPUStatus	::= TEXTUAL-CONVENTION
	STATUS	  current
	DESCRIPTION
	    " The status of a CPU indicated by a set of flags.
	    The bit positions in the enumerations given below
	    indicate the following, if set :

	    Bit 1 masterCPU   -- The CPU is the 'master CPU'
	    Bit 2 clockCPU    -- The CPU handles the normal clock
	    Bit 3 enabledCPU  -- The CPU is allowed to sched procs
	    Bit 4 fastClockCPU -- The CPU handles fastimer
	    Bit 5 isolatedCPU -- The CPU is isolated
	    Bit 6 bcastOff     -- Broadcast intr is not recvd
	    Bit 7 nonpremptCPU -- CPU is non-preemptive
	    Bit 8 disallowIntr -- CPU disallows device intrs except	
		               -- for ones specifically directed
	    Bit 9 iThreadsOK   -- ithreads have been enabled
	    Bit 10 disableCPU  -- CPU will be disabled on reboot

	    Of the flags, only disableCPU can be set, by a manager.
	    To disable the CPU, the manager has to make a 'set' 
	    request, with ONLY the 10th bit turned on.  If any other
	    bit is turned on, the set will be rejected."
	SYNTAX   INTEGER (0..1024)
--      SYNTAX   BITS {
--   		    masterCPU     (0), 0 indicates bit position
--		    clockCPU  	  (1),
--		    enabledCPU    (2),
--		    fastClockCPU  (3),
--    		    isolatedCPU   (4),
--		    bcastOff      (5),
--		    nonpremptCPU  (6),
--		    disallowIntr  (7),
--		    iThreadsOK    (8),
--		    disableCPU    (9)
--		 }
	           

    -- status of the swap resource
    SwapStatus   ::= TEXTUAL-CONVENTION
	STATUS    current
	DESCRIPTION
	    " The status of a swap resource.
	    The bit positions in the enumerations given below
	    indicate the following, if set :

	    Bit 1 - swapResInDelete -- Swap res is being deleted
	    Bit 2 - swapResNotReady -- Swap res is being allocated
	    Bit 3 - swapResStale    -- Swap res was NFS file, and
				    -- was removed by server
	    Bit 4 - swapResLocal    -- Swap res is in local file sys
	    Bit 5 - swapResIOErr    -- Swap res had an IO error (but
			            -- not stale/inaccessible
	    Bit 6 - swapResInAccessible -- Swap res can't be used 
				        -- for read/write (EACCESS)
	    Bit 7 - swapResBootSwap -- Swap res is the boot swap
	   "
	SYNTAX    INTEGER(0..128)
--      SYNTAX    BITS {
--           	    swapResInDelete     (0),
--		    swapResNotReady     (1),
--		    swapResStale        (2),
--		    swapResLocal        (3),
--                  swapResIOErr        (4),
--		    swapResInAccessible (5),
--		    swapResBootSwap     (6)
--	         }


    -- kernel type
    KernSIM   ::= TEXTUAL-CONVENTION
	STATUS  current
	DESCRIPTION
	    " The type of the kernel as determined by
	    the system architecture and the type of ABI."
	SYNTAX    INTEGER {
		    mipsABI32   (1),  -- mips/O32 
		    mipsNABI32  (2),  -- mips/N32
		    mipsABI64   (3),  -- mips/64
		    intelABI32  (4),  -- intel/32Bit
		    intelABI64  (5)   -- intel/64Bit
		  }
	 	     

    -- streams resource categories
    StreamsResourceCategory ::= TEXTUAL-CONVENTION
	STATUS    current
	DESCRIPTION
	    " The various streams resource categories
	    for which stats information of min/max and
	    failure counts are provided in a table."
	SYNTAX    INTEGER {
		    numberOfStreams   (1), -- count
		    streamQueues      (2), -- count
		    streamMsgBlocks   (3), -- count
		    streamMsgDBlocks  (4), -- count
		    streamBufsSz64    (5), -- count of
				           -- 64Byte bufs 
		    streamBufsSz256   (6), -- count of
				           -- 256Byte bufs 
		    streamBufsSz512   (7), -- count of
				           -- 512Byte bufs   
		    streamsBufsSz2048 (8), -- count of
				           -- 2KByte bufs   
		    streamBufsSzPAGE  (9),
		    streamLinkBlocks  (10), -- count of
				            -- link blks
		    streamEvents      (11), -- count of
		                            -- str events
		    streamQBandInfo   (12)  -- 
	          }


    -- mbuf type
    MbufType  ::= TEXTUAL-CONVENTION
	STATUS   current
	DESCRIPTION
	    " The type of mbuf.
	    The system has mbufs, either free, or
	    containing some type-specific dat.  
	    The mbufAlloc table provides info on mbufs 
	    available for each mbuf type."
	SYNTAX    INTEGER {
	            mbufFree            (0),
		    mbufData            (1),
		    mbufPacketHeader    (2),
		    mbufSockStruct      (3),
		    mbufPCB	        (4),
		    mbufRouteTable      (5),
		    mbufHostTable       (6),
		    mbufARPTable        (7),
		    mbufSockName        (8),
		    mbufSAT	        (9),
		    mbufSockOpts        (10),
	            mbufFragReasmHeader (11),
	            mbufAccessRights 	(12),
		    mbufIfAddr          (13),
		    mbufDNDrvrBuf       (14),
	            mbufDNBlock         (15),
	            mbufMcastRouteinfo  (16), 
		    mbufMcastOpts       (17),
		    mbufMcastRouteTable (18),
		    mbufSessMgrSecAttr  (19)
		  }



    -- versions of nfs 
    NFSVersion  ::= TEXTUAL-CONVENTION
	STATUS current
	DESCRIPTION
	    " An enumeration containing various NFS 
	    versions, for each of which stats are 
	    reported."
	SYNTAX    INTEGER {
	            nfsV2 (2),
		    nfsV3 (3)
		  }


    -- nfs request type
    NFSRequestType ::= TEXTUAL-CONVENTION
        STATUS current
        DESCRIPTION
	    " An enumeration containing the various
	    NFS requests, for each of which client/
	    server stats are maintained.

	    Note that the values of the enumeration 
	    defined below DO NOT correspond to the 
	    NFS procedure numbers.  This is because
	    different requests in nfsV2 and nfsV3 have
	    the same procedure numbers. 
	    For example, Root procedure code is 3 in v2, 
	    whereas the same code is used for Lookup
	    in v3.  
	    The enumeration values represent the set of 
	    all possible procedures, some of them may
	    not be applicable to a particular NFS version.
	    The result is, if any table contains an object
	    of this type, it will be sparse."
	SYNTAX   INTEGER {
                    null        (0),
		    getAttr     (1),
		    setAttr     (2),
	  	    root	(3),
	 	    lookup      (4),
		    readLink    (5),
		    read        (6),
		    wrCache	(7),
		    write       (8),
		    create      (9),
		    remove      (10),
		    rename      (11),
		    link        (12),
		    symLink     (13),
		    mkdir       (14),
		    rmDir       (15),
		    readDir     (16),
		    fsStat      (17),
		    access      (18),
		    mkNod       (19),
		    readDirPlus (20),
		    fsInfo      (21),
	            pathConf    (22),
		    commit      (23)
	         }


    -- software product depth
    SWProductDepth  ::= TEXTUAL-CONVENTION
	STATUS	   current
	DESCRIPTION
	    " A textual convention for the depth
	    of product installation information.

	    Files installed in the system may all
	    belong to one single product, without
	    any hierarchy, or may be organized into
	    a multi-level hierarchy.
	    The current model assumes a 3-level 
	    hierarchy of Products, Images, and 
	    Subsystems.  Subsystems are the lowest
	    in the hierarchy and are directly associated
	    with individual files."
	SYNTAX   INTEGER {
	            product   (1),
	            image     (2),
		    subsystem (3)
	         } 
	    

    -- process states
    ProcState   ::= TEXTUAL-CONVENTION
	STATUS     current
	DESCRIPTION
	   " The state of a process executing on the
	   host.  The process can be in one of the 
	   enumerated states listed below."
	SYNTAX   INTEGER {
	            sleep  (1),
                    run    (2),
                    zombie (3),
                    stop   (4),
                    idle   (5),
                    other  (6),
		    sxbrk  (7) --process being swapped
	         }

	
    -- graphics board types
    GFXBoardType      ::= TEXTUAL-CONVENTION
	STATUS   current
	DESCRIPTION
	    " The board type of the graphics
	    processor(s) in the system."
        SYNTAX   INTEGER {
	            unknownBoard    (0), 
		    gr1Board        (1), 
	            cloverBoard     (2), 
		    lightBoard      (3),
		    gr2Board	     (4),
		    gBoard	     (5),
	            gtxBoard        (6), 
		    vgxBoard        (7), 
		    ng1Board	     (8),
		    realityBoard    (9),
		    impactBoard     (10),
		    konaBoard       (11),
		    crimeBoard      (12),
		    odsyBoard       (13)
	         }



-- Any running host has some general information, and also 
-- specific information on memory, cpu, kernel etc.
-- So, grouping of objects is based on these individual entities
-- in the system


-- general information about the host
-- This includes system specific information, as well as user account
-- information, etc

    general OBJECT IDENTIFIER ::= {sgiHost 1}

    system OBJECT IDENTIFIER ::= {general 1}

    systemID OBJECT-TYPE
	SYNTAX Gauge32
	MAX-ACCESS read-only
	STATUS current
	DESCRIPTION
	    " A 32 bit integer quantity that uniquely 
	    identifies this system."
    ::= {system 1}


    systemArchitecture OBJECT-TYPE
	SYNTAX SystemArchitecture
	MAX-ACCESS read-only
	STATUS current
	DESCRIPTION
	    " The system architecture.  For example, 
	    a system based on MIPS processors will 
	    return MIPS (1)."
	::= {system 2}


    osType OBJECT-TYPE
	SYNTAX OsType
	MAX-ACCESS read-only
	STATUS current
	DESCRIPTION
	    " The Operating System Type.  For example, 
	    a system running the IRIX OS will return 
	    IRIX (1)."
	::= {system 3}

    
    osRelease OBJECT-TYPE
	SYNTAX DisplayString
	MAX-ACCESS read-only
	STATUS current
	DESCRIPTION
	    " The release number of the running Operating 
	    System.
	    This will be of the form m.n.a or m.n.  
	    The m is the major release number, n is minor 
	    release number, and the optional a is the 
	    maintenance release number.

	    Example, 6.2."
	::= {system 4}


    osExtendedRelease OBJECT-TYPE
	SYNTAX DisplayString
	MAX-ACCESS read-only
	STATUS current
	DESCRIPTION
	    " The extended release information of the 
	    running Operating System.  This information 
	    represents the origin of the release.
	    If the extended release information is not 
	    available, an agent should return the 
	    default value."
	DEFVAL { "" }
    ::= {system 5}

    osCreatedDate OBJECT-TYPE
	SYNTAX     DisplayString
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
	    " The date and time the Operating 
	    System was generated.
	    The format of the string is :
	        mmddHHMM
	    where 
		mm=month
		dd=day
		HH=hour
		MM=minute
	"
    ::= {system 6}

    
    agentVersion OBJECT-TYPE
	SYNTAX     DisplayString
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
	    "The version information of the running
	    Host SNMP Agent."
    ::= {system 7}


-- The user information.  This includes the user accounts as
-- well as userActivity (login - 'who' information)

    user 	 OBJECT IDENTIFIER ::= {general 2}


-- The user accounts information from the host
-- Currently only the users local to the host are listed.
-- But we need to reconsider the objects with nis+ also
-- in mind.

    userAccounts OBJECT IDENTIFIER ::= {user 1}
    userActivity OBJECT IDENTIFIER ::= {user 2}

    numberOfAccounts OBJECT-TYPE
	SYNTAX     INTEGER 
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
	    "The number of user accounts that have 
	    been created locally on this host."
    ::= {userAccounts 1}

    userTable OBJECT-TYPE
	SYNTAX     SEQUENCE OF UserEntry
	MAX-ACCESS not-accessible
	STATUS     current
	DESCRIPTION
	    " A table containing information about each 
	    user account that is local to this host.
	    The number of entries is given by 
	    numberOfAccounts."
    ::= {userAccounts 2}

    userEntry OBJECT-TYPE
	SYNTAX     UserEntry
	MAX-ACCESS not-accessible
	STATUS     current
	DESCRIPTION
	    " An entry containing information about a 
	    single user account that is local to 
	    this host."
        INDEX {userNumber}
    ::= {userTable 1}


    UserEntry ::=
        SEQUENCE {
	    userNumber	     Integer32,
	    userName         DisplayString,
	    userPassword     DisplayString,
	    userID	     UID,
	    userGroupID      UID,
	    userFullName     DisplayString,
	    userHome	     DisplayString
	}

    userNumber OBJECT-TYPE
	SYNTAX     Integer32
	MAX-ACCESS not-accessible
	STATUS     current
	DESCRIPTION
	    " This integer object is used for SNMP 
	    indexing purposes and does not have any 
	    actual meaning."
    ::= {userEntry 1}

    userName  OBJECT-TYPE
	SYNTAX     DisplayString
	MAX-ACCESS read-create
	STATUS     current
	DESCRIPTION
	    " The login Name of the user."
    ::= {userEntry 2}

    userPassword  OBJECT-TYPE
	SYNTAX     DisplayString
	MAX-ACCESS read-write
	STATUS     current
	DESCRIPTION
	    " The password of the user.  Although 
	    this variable may be changed by a management 
	    station, it can never be 'read'.  When a 
	    'read' operation is done on this variable a 
	    value of Null String  will be returned by 
	    the agent."
    ::= {userEntry 3}

    userID  OBJECT-TYPE
	SYNTAX     UID
	MAX-ACCESS read-write
	STATUS     current
	DESCRIPTION
	    " The id value for this user.
	    Although a particular host may allow 
	    setting this value such that it becomes 
	    non-unique, it is advisable that a unique 
	    value be assigned for each user in the 
	    system."
    ::= {userEntry 4}

    userGroupID  OBJECT-TYPE
	SYNTAX     UID
	MAX-ACCESS read-write
	STATUS     current
	DESCRIPTION
	    " The primary group ID of the user."
    ::= {userEntry 5}

    userFullName  OBJECT-TYPE
	SYNTAX     DisplayString
	MAX-ACCESS read-write
	STATUS     current
	DESCRIPTION
	    " The full name of the user.  
	    This is the person's actual name, 
	    as opposed to the login name of the 
	    user."
    ::= {userEntry 6}

    userHome  OBJECT-TYPE
	SYNTAX     DisplayString
	MAX-ACCESS read-write
	STATUS     current
	DESCRIPTION
	    " The home directory of this user."
    ::= {userEntry 7}


-- user login (who) info 

    userLoginTable  OBJECT-TYPE
	SYNTAX     SEQUENCE OF UserLoginEntry
	MAX-ACCESS not-accessible
	STATUS	   current
	DESCRIPTION
	    " A list of entries, one for each
	    user currently logged on to the 
	    host."
    ::= {userActivity 1}

    userLoginEntry  OBJECT-TYPE
	SYNTAX     UserLoginEntry
	MAX-ACCESS not-accessible
	STATUS	   current
	DESCRIPTION
	    " A single entry for an user
	    currently logged on to the host."
	INDEX {userLoginIndex}
    ::= {userLoginTable 1}


    UserLoginEntry ::= 
	SEQUENCE {
	    userLoginIndex	Integer32,
	    userLoginName	DisplayString,
	    userLoginTime	TimeTicks,
	    userLoginTTY	DisplayString,
	    userLoginPID	Integer32,
	    userLoginFrom	DisplayString
	}

    userLoginIndex  OBJECT-TYPE
	SYNTAX     Integer32
	MAX-ACCESS not-accessible
	STATUS	   current
	DESCRIPTION
	    " An unique index for this entry."
    ::= {userLoginEntry 1}

    userLoginName  OBJECT-TYPE
	SYNTAX     DisplayString
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The name of the user logged in."
    ::= {userLoginEntry 2}

    userLoginTime  OBJECT-TYPE
	SYNTAX     TimeTicks
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The time elapsed in 100th of secs
	    since the user logged in."
    ::= {userLoginEntry 3}

    userLoginTTY  OBJECT-TYPE
	SYNTAX     DisplayString
	MAX-ACCESS read-only     
	STATUS	   current
	DESCRIPTION
	    " The TTY name device name 
	    corresponding to this login."
    ::= {userLoginEntry 4}

    userLoginPID  OBJECT-TYPE
	SYNTAX     Integer32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The process identifier (pid) value
	    corresponding to this login."
    ::= {userLoginEntry 5}

    userLoginFrom  OBJECT-TYPE
	SYNTAX     DisplayString
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The remote host name from which
	    the user logged in.  If either this
	    information is not available, or if
	    the user logged in from the local host
	    then the default value is returned."
	DEFVAL {""}
    ::= {userLoginEntry 6}

    

-- The cpu information of the running host

-- In a multiprocessor system, there will be 
-- information common across all the cpus, as 
-- well as the perCpuInformation

    cpu           OBJECT IDENTIFIER ::= {sgiHost 2}

    cpuInfo       OBJECT IDENTIFIER ::= {cpu 1}
    cpuStats	  OBJECT IDENTIFIER ::= {cpu 2}

-- The general information

    numberOfCPUs OBJECT-TYPE
	SYNTAX     INTEGER
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
	    " The number of Processors physically configured 
            in the system.  Note that one or more of the 
	    processors may be disabled.  
	    The reader has to determine the state of the 
	    processor via the processorState object in 
	    the perCpuTable."
    ::= { cpuInfo 1}

    cpuMaxClock  OBJECT-TYPE
	SYNTAX     INTEGER
	UNITS 	   "MHz"
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
    	    " The maximum clock value between all the 
	    processors in the system."
    ::= {cpuInfo 2}

    cpuMinClock  OBJECT-TYPE
	SYNTAX     INTEGER
	UNITS 	   "MHz"
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
    	    " The minimum clock value between all the 
	    processors in the system."
    ::= {cpuInfo 3}

    cpuClockTicks OBJECT-TYPE
	SYNTAX     INTEGER
	MAX-ACCESS read-only
	STATUS 	   current
	DESCRIPTION
	    " The number of clock ticks per 
	    second of the normal system clock."
    ::= {cpuInfo 4}

    cpuFastClockHz OBJECT-TYPE
	SYNTAX     INTEGER
	UNITS 	   "Hz"
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
	    " The value of fastHz.
	    The fast clock helps implement 
	    high precision timers for real 
	    time applications."
    ::= {cpuInfo 5}

    
-- The perCpu Table

    processorInfoTable OBJECT-TYPE
	SYNTAX     SEQUENCE OF ProcessorEntry
	MAX-ACCESS not-accessible
	STATUS 	   current
	DESCRIPTION 
	    " A list of entries, one for each Processor
	    physically configured in the system.

	    This table extends the hrProcessorTable
	    of the host-resources mib."
    ::= {cpuInfo 7}

    processorEntry   OBJECT-TYPE
	SYNTAX     ProcessorEntry
	MAX-ACCESS not-accessible
	STATUS     current
	DESCRIPTION
	    " An entry containing information about a 
	    Processor in the system.

	    There will be one entry for each CPU in the
	    hrDeviceTable of the host-resources mib.
	    For each such entry, there will be one
	    entry in the hrProcessorTable, and also
	    in the perCpuInfoTable."
        INDEX {hrDeviceIndex}
    ::= {processorInfoTable 1}

    ProcessorEntry ::=
	SEQUENCE {
	    processorBoard      	CPUBoardType,
	    processorCPUType       	CPUType,
	    processorCPURev     	DisplayString,
	    processorFPUType       	FPUType,
	    processorFPURev       	DisplayString,
	    processorSpeed 		INTEGER,
	    processorSecCacheSize 	INTEGER,
	    processorStatus 		CPUStatus
	}


    processorBoard  OBJECT-TYPE
	SYNTAX     CPUBoardType
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
	    " The processor board type.
	      For example, ip22 (14)."
    ::= {processorEntry 1}

    processorCPUType  OBJECT-TYPE
	SYNTAX     CPUType
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
	    " The type of this processor.  
	    For example, R12000 (15)."
    ::= {processorEntry 2}

    processorCPURev  OBJECT-TYPE
	SYNTAX     DisplayString
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
	    " The CPU Chip Revision.
	    For example, 6.0."
    ::= {processorEntry 3}

    processorFPUType  OBJECT-TYPE
	SYNTAX     FPUType
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
	    " The type of the Floating Point 
	    Coprocessor unit (FPU) associated 
	    with this processor.  
	    For example, R12010 (14)."
    ::= {processorEntry 4}

    processorFPURev  OBJECT-TYPE
	SYNTAX     DisplayString
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
	    " The FPU Chip Revision.
	    For example, 0.1."
    ::= {processorEntry 5}

    processorSpeed OBJECT-TYPE
	SYNTAX     INTEGER
	UNITS 	   "MHz"
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
	    " The clock speed of this processor."
    ::= {processorEntry 6}

    processorSecCacheSize  OBJECT-TYPE
	SYNTAX     INTEGER
	UNITS	   "KBytes"
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
	    " The secondary cache size of this 
	    processor.  The value is reported 
	    in kBytes."
    ::= {processorEntry 7}

    processorStatus OBJECT-TYPE
	SYNTAX     CPUStatus
	MAX-ACCESS read-write
	STATUS     current
	DESCRIPTION
	    " The status of this processor.

	    The status of the processor is 
	    returned as a bit of flags.  The 
	    meaning and value of each bit, as 
	    well as legal flag bits that can be
	    set, can be found in the description 
	    of the textual convention CPUStatus."
    ::= {processorEntry 8}


-- The CPU statistics group.  

    perCpuStatsTable  OBJECT-TYPE
	SYNTAX     SEQUENCE OF CpuStatsEntry
	MAX-ACCESS not-accessible
	STATUS	   current
	DESCRIPTION
	    " A list of entries containing cpu-specific
	    stats information."
    ::= {cpuStats 1}

    cpuStatsEntry     OBJECT-TYPE
        SYNTAX     CpuStatsEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            " An entry containing stats information
	    for a particular CPU.
	    This table augments the hrProcessTable
	    in the host-resources mib.
	    There will be one entry for each CPU in the
	    hrDeviceTable of the host-resources mib.
	    For each such entry, there will be one
	    entry in this table also."
	INDEX {hrDeviceIndex}
    ::= {perCpuStatsTable 1}

    CpuStatsEntry ::= 
	SEQUENCE {
	    processorRunQueue    Counter32,
	    processorIdle	 Counter32,
	    processorIntr	 Counter32,
	    processorKernel      Counter32,
	    processorSxbrk	 Counter32,
	    processorUser	 Counter32,
	    processorGfxWait	 Counter32,
	    processorGfxFIFOWait Counter32,
	    processorIOWait 	 Counter32,
	    processorSwapWait	 Counter32,
	    processorVMEIntr	 Counter32,
	    processorNonVMEIntr  Counter32
	}

    processorRunQueue	OBJECT-TYPE
	SYNTAX	    Counter32
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " Per processor cumulative length of 
	    the queue of runnable processes."
    ::= {cpuStatsEntry 1} 

    processorIdle	OBJECT-TYPE
	SYNTAX	    Counter32
	UNITS	    "milli seconds"
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The cumulative idle time for this CPU."
    ::= {cpuStatsEntry 2} 

    processorIntr	OBJECT-TYPE
	SYNTAX	    Counter32
	UNITS	    "milli seconds"
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The total (cumulative) time this CPU has 
	    spent in processing interrupts." 
    ::= {cpuStatsEntry 3} 

    processorKernel	OBJECT-TYPE
	SYNTAX	    Counter32
	UNITS	    "milli seconds"
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The total (cumulative) time this CPU has 
	    spent in processing kernel functions."
    ::= {cpuStatsEntry 4} 

    processorSxbrk	OBJECT-TYPE
	SYNTAX	    Counter32
	UNITS	    "milli seconds"
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The total (cumulative) time this CPU has 
	    spent in waiting for memory resources."
    ::= {cpuStatsEntry 5} 

    processorUser	OBJECT-TYPE
	SYNTAX	    Counter32
	UNITS	    "milli seconds"
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The total (cumulative) time this CPU has 
	    spent in processing user functions."
    ::= {cpuStatsEntry 6} 

    processorGfxWait    OBJECT-TYPE
	SYNTAX	    Counter32
	UNITS	    "milli seconds"
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The total (cumulative) time this CPU has 
	    spent in waiting for graphics context switches."
    ::= {cpuStatsEntry 7} 

    processorGfxFIFOWait  OBJECT-TYPE
	SYNTAX	    Counter32
	UNITS	    "milli seconds"
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The total (cumulative) time this CPU has 
	    spent in waiting for Graphics FIFO operations."
    ::= {cpuStatsEntry 8} 

    processorIOWait	OBJECT-TYPE
	SYNTAX	    Counter32
	UNITS	    "milli seconds"
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The total (cumulative) time this CPU has 
	    spent in waiting for I/O (non-swap) completion."
    ::= {cpuStatsEntry 9} 

    processorSwapWait   OBJECT-TYPE
	SYNTAX	    Counter32
	UNITS	    "milli seconds"
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The total (cumulative) time this CPU has 
	    spent in waiting for swap I/O completion."
    ::= {cpuStatsEntry 10} 

    processorVMEIntr    OBJECT-TYPE
	SYNTAX	    Counter32
	UNITS	    "milli seconds"
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The total (cumulative) time this CPU has 
	    spent in processing VME interrupts."
    ::= {cpuStatsEntry 11} 

    processorNonVMEIntr  OBJECT-TYPE
	SYNTAX	    Counter32
	UNITS	    "milli seconds"
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The total (cumulative) time this CPU has 
	    spent in processing non-VME interrupts."
    ::= {cpuStatsEntry 12} 



-- System Memory Information.  This includes physical 
-- memory as well as swap information.
-- And also memory usage information. 

    memory           OBJECT IDENTIFIER ::= { sgiHost 3 }
    memoryConfig     OBJECT IDENTIFIER ::= {memory 1}
    memoryUsageStats OBJECT IDENTIFIER ::= {memory 2}
    swap	     OBJECT IDENTIFIER ::= {memory 3}

    physMemSize OBJECT-TYPE
	SYNTAX     Integer32
	UNITS 	   "MBytes"
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The amount of physical memory available in
	    the system, in MBytes."
    ::= {memoryConfig 1}

    physMemInterleave OBJECT-TYPE
	SYNTAX     Integer32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    "Physical memory interleave." 
    ::= {memoryConfig 2}

    pageSize OBJECT-TYPE
	SYNTAX     Integer32
	UNITS 	   "KBytes"
	MAX-ACCESS read-only
	STATUS 	   current
	DESCRIPTION
	    "Memory page size."
    ::= {memoryConfig 3}

    dCacheSize OBJECT-TYPE
	SYNTAX     Integer32
	UNITS 	   "KBytes"
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " Data cache size in KBytes."
    ::= {memoryConfig 4}

    iCacheSize OBJECT-TYPE
	SYNTAX     Integer32
	UNITS 	   "KBytes"
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    "Instruction Cache Size in KBytes."
    ::= {memoryConfig 5}


-- Memory usage in the system
-- memory usage is classified under system memory usage, and 
-- memory page faults.

-- Note that all the statistics values returned by the
-- agent are cumulative, increasing over time.
-- It is the responsibility of the manager to sample
-- the values at specific time intervals, and calculate
-- percentage values.


    memSysMemStats OBJECT IDENTIFIER ::= {memoryUsageStats 1}
    memFaultStats  OBJECT IDENTIFIER ::= {memoryUsageStats 2}
    memTLBStats    OBJECT IDENTIFIER ::= {memoryUsageStats 3}

    memFreeUserMem OBJECT-TYPE
	SYNTAX	   Integer32
	UNITS	   "KBytes"
	MAX-ACCESS read-only
	STATUS	   current  
	DESCRIPTION
	    " The total (cumulative) free user memory."
    ::= {memSysMemStats 1}

    memFreeRealMem OBJECT-TYPE
	SYNTAX	   Integer32
	UNITS	   "KBytes"
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) free real memory."
    ::= {memSysMemStats 2}

    memFreeVSwap OBJECT-TYPE
	SYNTAX	   Integer32
	UNITS	   "KBytes"
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The amount of free virtual swap."
    ::= {memSysMemStats 3}

    memBufMemory OBJECT-TYPE
	SYNTAX	   Integer32
	UNITS	   "KBytes"
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The amount of memory holding 
	    filesystem meta-data."
    ::= {memSysMemStats 4}

    memFSData OBJECT-TYPE
	SYNTAX	   Integer32
	UNITS	   "KBytes"
	MAX-ACCESS read-only
	STATUS	   current   
	DESCRIPTION
	    " The amount of memory holding 
	    file data."
    ::= {memSysMemStats 5}

    memModifiedFSData OBJECT-TYPE
	SYNTAX	   Integer32
	UNITS	   "KBytes"
	MAX-ACCESS read-only
	STATUS	   current   
	DESCRIPTION
	    " The amount of memory holding 
	    modified file data."
    ::= {memSysMemStats 6}

    memProcessMap OBJECT-TYPE
	SYNTAX	   Integer32
	UNITS	   "KBytes"
	MAX-ACCESS read-only
	STATUS	   current  
	DESCRIPTION
	    " The amount of memory used 
	    in process map."
    ::= {memSysMemStats 7}

    memKernelMemory OBJECT-TYPE
	SYNTAX	   Integer32
	UNITS	   "KBytes"
	MAX-ACCESS read-only
	STATUS	   current  
	DESCRIPTION
	    " The amount of memory used by 
	    the kernel."
    ::= {memSysMemStats 8}

    memUserMemory OBJECT-TYPE
	SYNTAX	   Integer32
	UNITS	   "KBytes"
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The amount of memory used by user 
	    processes."
    ::= {memSysMemStats 9}

    memDirtyPages OBJECT-TYPE
	SYNTAX	   Integer32
	UNITS	   "KBytes"
	MAX-ACCESS read-only
	STATUS	   current  
	DESCRIPTION
	    " Amount of memory holding dirty pages."
    ::= {memSysMemStats 10}

    memHeapAlloc OBJECT-TYPE
	SYNTAX	   Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total number of times kernel heap 
	    allocation was requested."
    ::= {memSysMemStats 11}

    memHeapMemory OBJECT-TYPE
	SYNTAX	   Integer32
	UNITS	   "KBytes"
	MAX-ACCESS read-only
	STATUS	   current  
	DESCRIPTION
	    " The total amount of kernel heap memory."
    ::= {memSysMemStats 12}

    memHeapUnsed OBJECT-TYPE
	SYNTAX	   Integer32
	UNITS	   "KBytes"
	MAX-ACCESS read-only
	STATUS	   current  
	DESCRIPTION
	    " The total unallocated space in kernel 
	    heap ."
    ::= {memSysMemStats 13}

    memPageAlloc OBJECT-TYPE
	SYNTAX	   Counter32
	MAX-ACCESS read-only
	STATUS	   current  
	DESCRIPTION
	    " The number of page allocation requests 
	    since boot."
    ::= {memSysMemStats 14}

    memPageReclaim OBJECT-TYPE
	SYNTAX	   Counter32
	MAX-ACCESS read-only
	STATUS	   current  
	DESCRIPTION
	    " The number of pages reclaimed by the 
	    paging daemon."
    ::= {memSysMemStats 15}

    memSysPTAlloc OBJECT-TYPE
	SYNTAX	   Counter32
	UNITS	   "KBytes"
	MAX-ACCESS read-only
	STATUS	   current  
	DESCRIPTION
	    " The amount of allocated system page table 
	    entries."
    ::= {memSysMemStats 16}

    memSysPTFree OBJECT-TYPE
	SYNTAX	   Counter32
	UNITS	   "KBytes"
	MAX-ACCESS read-only
	STATUS	   current  
	DESCRIPTION
	    " The amount of free system page table 
	    entries."
    ::= {memSysMemStats 17}


-- memory page faults information

    memFaultProtection OBJECT-TYPE
	SYNTAX	   Counter32
	MAX-ACCESS read-only
	STATUS	   current  
	DESCRIPTION
	    " The total number of memory protection faults 
	    occurred."
    ::= {memFaultStats 1}

    memFaultProtSteal OBJECT-TYPE
	SYNTAX	   Counter32
	MAX-ACCESS read-only
	STATUS	   current  
	DESCRIPTION
	    " The total number of protection faults occurred
	    on unshared writable pages."
    ::= {memFaultStats 2}

    memFaultAddrTrans OBJECT-TYPE
	SYNTAX	   Counter32
	MAX-ACCESS read-only
	STATUS	   current 
	DESCRIPTION
	    " The total number of address translation page 
	    faults occurred."
    ::= {memFaultStats 3}

    memFaultResolvCache OBJECT-TYPE
	SYNTAX	   Counter32
	MAX-ACCESS read-only
	STATUS	   current  
	DESCRIPTION
	    " The total number of page faults resolved in
	    the page cache."
    ::= {memFaultStats 4}

    memFaultResolvDemandFill OBJECT-TYPE
	SYNTAX	   Counter32
	MAX-ACCESS read-only
	STATUS	   current  
	DESCRIPTION
	    " The total number of page faults resolved 
	    by demand fill or demand zero."
    ::= {memFaultStats 5}

    memFaultResolvFS OBJECT-TYPE
	SYNTAX	   Counter32
	MAX-ACCESS read-only
	STATUS	   current  
	DESCRIPTION
	    " The total number of page faults resolved in
	    the file system."
    ::= {memFaultStats 6}

    memFaultResolvSwap OBJECT-TYPE
	SYNTAX	   Counter32
	MAX-ACCESS read-only
	STATUS	   current  
	DESCRIPTION
	    " The total number of page faults resolved in
	    the swap space."
    ::= {memFaultStats 7}


-- memory TLB stats
    
    memTLBFlush   OBJECT-TYPE
	SYNTAX	   Counter32
	MAX-ACCESS read-only
	STATUS	   current  
	DESCRIPTION
	    " The total number of single processor TLB 
	    flushes."
    ::= {memTLBStats 1}

    memTLBInvalid   OBJECT-TYPE
	SYNTAX	   Counter32
	MAX-ACCESS read-only
	STATUS	   current  
	DESCRIPTION
	    " The total number of TLB invalidates." 
    ::= {memTLBStats 2}

    memTLBRefFault   OBJECT-TYPE
	SYNTAX	   Counter32
	MAX-ACCESS read-only
	STATUS	   current  
	DESCRIPTION
	    " The total number of TLB page reference
	    faults." 
    ::= {memTLBStats 3}

    memTLBTFault  OBJECT-TYPE
	SYNTAX	   Counter32
	MAX-ACCESS read-only
	STATUS	   current  
	DESCRIPTION
	    " The total number of user page table
	    or kernel Virtual Address TLB misses."
    ::= {memTLBStats 4}

    memTLBIDNew   OBJECT-TYPE
	SYNTAX	   Counter32
	MAX-ACCESS read-only
	STATUS	   current  
	DESCRIPTION
	    " The total number of new TLB Ids issued."
    ::= {memTLBStats 5}

    memTLBIDWrap   OBJECT-TYPE
	SYNTAX	   Counter32
	MAX-ACCESS read-only
	STATUS	   current  
	DESCRIPTION
	    " The total number of TLB flushes because TLB
	    IDs have been depleted."
    ::= {memTLBStats 6}

    memTLBPurge  OBJECT-TYPE
	SYNTAX	   Counter32
	MAX-ACCESS read-only
	STATUS	   current  
	DESCRIPTION
	    " The total number of all-CPU TLB purge 
	    operations."
    ::= {memTLBStats 7}

    memTLBKernVMWrap OBJECT-TYPE
	SYNTAX	   Counter32
	MAX-ACCESS read-only
	STATUS	   current  
	DESCRIPTION
	    " The total number of TLB flushes due to
	    kernel virtual memory depletion."
    ::= {memTLBStats 8}

    


-- swap configuration and usage    

    totalSwapLength OBJECT-TYPE
	SYNTAX     Integer32
	UNITS	   "KBytes"
	MAX-ACCESS read-only
	STATUS 	   current
	DESCRIPTION
	    " Total Swap Size in KBytes, of all the
            swap areas configured in the system."
    ::= {swap 1}

    totalSwapAllocated OBJECT-TYPE
	SYNTAX     Integer32
	UNITS	   "KBytes"
	MAX-ACCESS read-only
	STATUS 	   current
	DESCRIPTION
	    " Total Swap size, in KBytes, allocated 
	    to private pages."
    ::= {swap 2}

    totalSwapReserved OBJECT-TYPE
	SYNTAX     Integer32
	UNITS	   "KBytes"
	MAX-ACCESS read-only
	STATUS 	   current
	DESCRIPTION
	    " Total Swap Size in KBytes, not currently
	    allocated but claimed ('reserved') by private 
	    memory mappings."
    ::= {swap 3}


    numberOfSwapAreas OBJECT-TYPE
	SYNTAX     INTEGER
	MAX-ACCESS read-only
	STATUS 	   current
	DESCRIPTION
	    " Total number of swap resources configured 
	    in the system.  Note that this number may 
	    change over time as the swap devices are added 
	    and deleted by a System Administrator."
    ::= {swap 4}


-- adding/modifying a swap res :- That capability 
-- is still not here.

    swapTable  OBJECT-TYPE
	SYNTAX     SEQUENCE OF SwapEntry
	MAX-ACCESS not-accessible
	STATUS 	   current
	DESCRIPTION
	    " A list of entries, each providing 
	    information about one swap device 
	    currently configured in the system."
    ::= {swap 5}

    swapEntry  OBJECT-TYPE
	SYNTAX     SwapEntry
	MAX-ACCESS not-accessible
	STATUS 	   current
	DESCRIPTION
	    " A single entry providing information 
	    about a swap device currently configured 
	    in the system."
	INDEX {swapIndex}
    ::= {swapTable 1}


    SwapEntry  ::= 
	SEQUENCE {
	    swapIndex		INTEGER,
	    swapPath		DisplayString,
	    swapStartBlock	Integer32,
	    swapLength	        Integer32,
	    swapFree		Integer32,
	    swapPriority	INTEGER,
	    swapStatus	        SwapStatus
	}


    swapIndex  OBJECT-TYPE
	SYNTAX     INTEGER
	MAX-ACCESS not-accessible
	STATUS 	   current
	DESCRIPTION
	    "The logical swap number identifying this 
	    swap area.  This corresponds to the 'lswap' 
	    column in of swap -l output."
    ::= {swapEntry 1}


    swapPath  OBJECT-TYPE
	SYNTAX     DisplayString
	MAX-ACCESS read-only
	STATUS 	   current
	DESCRIPTION
	    " The physical path name of this swap area.
	    For example, /dev/swap."
    ::= {swapEntry 2}

    swapStartBlock  OBJECT-TYPE
	SYNTAX     Integer32
	MAX-ACCESS read-only
	STATUS 	   current
	DESCRIPTION
	    " The starting offset in 512-byte blocks of 
	    the swap area."
    ::= {swapEntry 3}

    swapLength  OBJECT-TYPE
	SYNTAX     Integer32
	UNITS	   "KBytes"
	MAX-ACCESS read-only
	STATUS 	   current
	DESCRIPTION
	    " The total length in KBytes of this 
	    swap area, rounded to the system defined 
	    page size."
    ::= {swapEntry 5 }

    swapFree  OBJECT-TYPE
	SYNTAX     Integer32
	UNITS	   "KBytes"
	MAX-ACCESS read-only
	STATUS 	   current
	DESCRIPTION
	    " The amount of free space in Kbytes
	    in this swap area, rounded to the system 
	    defined page size."
    ::= {swapEntry 6 }

    swapPriority  OBJECT-TYPE
	SYNTAX     INTEGER (0..7)
	MAX-ACCESS read-only
	STATUS 	   current
	DESCRIPTION
	    " The swap priority value for this swap 
	    area.  A lower priority indicates that 
	    this swap area will be used before one 
	    with a higher priority value.  Swap areas 
	    with equal priorities are used in a 
	    round-robin fashion."
    ::= {swapEntry 7}

    swapStatus  OBJECT-TYPE
	SYNTAX     SwapStatus
	MAX-ACCESS read-only
	STATUS 	   current
	DESCRIPTION
	    " The status of this swap area, defined 
	    through a set of flags.  The meaning of 
	    individual flags can be found defined in 
	    the description for the textual convention 
	    SwapStatus."
    ::= {swapEntry 8}


-- cumulative swap stats
    
    swapStats	    OBJECT IDENTIFIER ::= {swap 6}

    swapTransfersIn   OBJECT-TYPE
	SYNTAX	   Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " Cumulative 'swap in' transfers."
    ::= {swapStats 1}

    swapTransfersOut   OBJECT-TYPE
	SYNTAX	   Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " Cumulative 'swap out' transfers."
    ::= {swapStats 2}

    swapTransfersPagesIn OBJECT-TYPE
	SYNTAX	   Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " Cumulative pages swapped in."
    ::= {swapStats 4}

    swapTransfersPagesOut   OBJECT-TYPE
	SYNTAX	   Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " Cumulative pages swapped out."
    ::= {swapStats 5}

    swapTransfersProcOut   OBJECT-TYPE
	SYNTAX	   Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " Cumulative process swap outs."
    ::= {swapStats 6}



-- kernel objects

    kernel          OBJECT IDENTIFIER ::= {sgiHost 4}

    kernelConfig    OBJECT IDENTIFIER ::= {kernel 1}
    kernelStats     OBJECT IDENTIFIER ::= {kernel 2}


    kernelType OBJECT-TYPE
	SYNTAX     KernSIM
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The running kernel type.  For example, 
	    on a system based on the mips architecture, 
	    and running a 64Bit kernel, may return 
	    mipsABI64 (3)."
    ::= {kernelConfig 1}

    kernelAutoLoad OBJECT-TYPE
	SYNTAX     TruthValue
	MAX-ACCESS read-write
	STATUS	   current
	DESCRIPTION
	    " Indicates whether autoload of the kernel 
	    will be attempted when the next system boot."
    ::= {kernelConfig 2}

    kernelLoadPartition OBJECT-TYPE
	SYNTAX     INTEGER
	MAX-ACCESS read-write
	STATUS	   current
	DESCRIPTION
	    " The disk partition from which the 
	    kernelLoadFile will be loaded when the 
	    system is booted up next time.

	    Sufficient care should be exercised in 
	    setting this variable to a new value."
    ::= {kernelConfig 3}

    kernelLoadFile OBJECT-TYPE
	SYNTAX     DisplayString
	MAX-ACCESS read-write
	STATUS	   current
	DESCRIPTION
	    " The file to load the Operating System 
	    when the system is booted up next time.

	    Sufficient care should be exercised in 
	    setting this variable to a new value."
    ::= {kernelConfig 4}


-- the system tunable parameters
    kernelParams  OBJECT IDENTIFIER ::= {kernelConfig 5}

-- general params

    kernelBuffers OBJECT-TYPE
	SYNTAX     INTEGER
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The number of buffer headers in the file
	    system buffer cache.
	    The kernel tries to minimize the access of 
	    block I/O by buffering data.  The buffer
	    memory caches the data from the block device
	    so that blocks used frequently stay in the 
	    cache.
	    When the actual I/O operation is complete, 
	    the buffers will become available for other 
	    uses.
	    When the value of this object is 0, the kernel
	    automatically configures the number of buffers."
	DEFVAL {0}
    ::= {kernelParams 1}


    kernelMaxDMASz OBJECT-TYPE
	SYNTAX     Integer32
	UNITS	   "KBytes"
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The maximum DMA transfer size.  This affects
	    the amount of data that can be transferred via
	    the read/write system calls."
    ::= {kernelParams 2}

    kernelMaxProcs OBJECT-TYPE
	SYNTAX     Integer32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The maximum number of entries that the system 
	    process table will hold.  Thus the value of this
	    object indicates the maximum number of processes 
	    that can exist in the system at any time.
	    When the value of this object is 0, the kernel 
	    automatically configures the value to use."
	DEFVAL {0}
    ::= {kernelParams 3}

    kernelMaxUserProcs OBJECT-TYPE
	SYNTAX     Integer32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The maximum number of processes allowed
	    per user login. Its value should be always 
	    atleast 5 less than that of kernelMaxProcs."
    ::= {kernelParams 4}

    kernelNameCacheSz OBJECT-TYPE
	SYNTAX     Integer32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The size of the name cache.  Name cache is 
	    used to hold directory information, including
	    a directory name, pointer to it's in-core inode
	    and a similar pointer to its parent.
	    When the value of this object is 0, the kernel 
	    automatically configures the value to use."
	DEFVAL {0}
    ::= {kernelParams 5}
	    
    kernelStreamMaxPush OBJECT-TYPE
	SYNTAX     Integer32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The maximum number of modules that can be
	    pushed on to a stream."
    ::= {kernelParams 6}

    kernelStreamMaxMsgSz OBJECT-TYPE
	SYNTAX     Integer32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The maximum stream message size." 
    ::= {kernelParams 7}



-- The kernel stats group.  This includes information on 
-- system call stats, general load info.

-- The kern stats can be grouped under various categories

    kernelLoad     OBJECT IDENTIFIER ::= {kernelStats 1}
    kernelSysCalls OBJECT IDENTIFIER ::= {kernelStats 2}
    kernelIO	   OBJECT IDENTIFIER ::= {kernelStats 3}
    kernelSwap     OBJECT IDENTIFIER ::= {kernelStats 4}
    kernelIPC	   OBJECT IDENTIFIER ::= {kernelStats 5}
    kernelTTY	   OBJECT IDENTIFIER ::= {kernelStats 6}

-- kernel load
   
    kernelNumUsers  OBJECT-TYPE
	SYNTAX     Integer32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The number of user processes."
    ::= {kernelLoad 1}
	    
    kernelProcessSwitches OBJECT-TYPE
	SYNTAX     Integer32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) number of process
	    switches."
    ::= {kernelLoad 2}
	    

    kernelLoadAve1Min OBJECT-TYPE
	SYNTAX     Gauge32  
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The kernel load average calculated over
	    a period of 1 minute.

	    The kernel maintains the average number of 
	    processes in the runq (runnable processes)
	    as the kernel load information.

	    The load average maintained by the kernel
	    can be a floating point value.  The value
	    returned by the agent is :
	        actualLoadAve * 100 "
    ::= {kernelLoad 3}
	    
    kernelLoadAve5Min OBJECT-TYPE
	SYNTAX     Gauge32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The kernel load average calculated over
	    a period of 5 minutes.

	    The load average maintained by the kernel
	    can be a floating point value.  The value
	    returned by the agent is :
	        actualLoadAve * 100 "
    ::= {kernelLoad 4}
	    
    kernelLoadAve15Min OBJECT-TYPE
	SYNTAX     Gauge32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The kernel load average calculated over
	    a period of 15 minutes.

	    The load average maintained by the kernel
	    can be a floating point value.  The value
	    returned by the agent is :
	        actualLoadAve * 100 "
    ::= {kernelLoad 5}
	    
-- system call activity

    kernelReadBytes  OBJECT-TYPE
	SYNTAX     Counter32
	UNITS	   "KBytes"
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total number of KBytes transferred
	    by 'read' system call."
    ::= {kernelSysCalls 1}
	    
    kernelWriteBytes  OBJECT-TYPE
	SYNTAX     Counter32
	UNITS	   "KBytes"
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total number of KBytes transferred
	    by 'write' system call."
    ::= {kernelSysCalls 2}

    kernelSysExec OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) number of 'exec()' 
	    system calls made."
    ::= {kernelSysCalls 3}

    kernelSysFork OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) number of 'fork()' 
	    system calls made."
    ::= {kernelSysCalls 4}

    kernelSysRead OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) number of 'read()' 
	    system calls made."
    ::= {kernelSysCalls 5}

    kernelSysWrite OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) number of 'write()' 
	    system calls made."
    ::= {kernelSysCalls 6}

    kernelSysOther OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) number of other 
	    system (excluding read(), write(), fork()
            and exec() calls) calls made."
    ::= {kernelSysCalls 7}


-- IO

    kernelInodeLookups OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) number of inode
	    lookups performed."
    ::= {kernelIO 1}

    kernelBlockRead OBJECT-TYPE
	SYNTAX     Counter32
	UNITS      "KBytes"
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) block I/O read
	    done.
	    This is the amount of data transferred
	    between block device(s) and system 
	    buffers."
    ::= {kernelIO 2}

    kernelLRead OBJECT-TYPE
	SYNTAX     Counter32
	UNITS	   "KBytes"
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) logical I/O read 
	    done.
	    This is the total amount of data read
	    from system buffers to user memory.

	    Knowing the value of this object, and that
	    of kernelBRead, the manager can calculate
	    % of cache (read) hit ratio."
    ::= {kernelIO 3}

    kernelBlockWrite OBJECT-TYPE
	SYNTAX     Counter32
	UNITS      "KBytes"
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) block I/O write
	    done.
	    This is the total amount of data 
	    written to a block device from system 
	    buffers."
    ::= {kernelIO 4}

    kernelLWrite OBJECT-TYPE
	SYNTAX     Counter32
	UNITS	   "KBytes"
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) logical I/O write
	    done.
	    The is the total amount of data
	    written from system memory to system 
 	    buffers.

	    Knowing the value of this object, and that
	    of kernelLWrite and kernelLWriteCancel, 
	    the manager can calculate % of cache 
	    (write) hit ratio."
    ::= {kernelIO 5}

    kernelLWriteCancel OBJECT-TYPE
	SYNTAX     Counter32
	UNITS      "KBytes"
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) block I/O write
	    cancels.
	    This is the total amount of data not written
	    from system buffers to block devices due to 
	    cancel operation(s)."
    ::= {kernelIO 6}

    kernelPathLookups OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) number of path name
	    lookups performed."
    ::= {kernelIO 7}

    kernelDirBlkScans OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) number of directory
	    blocks scanned."
    ::= {kernelIO 8}



-- stats specific to buffer cache operations, and 
-- directory name lookup cache operations

    kernelBufCache  OBJECT IDENTIFIER ::= {kernelIO 9}
    kernelDNLCache  OBJECT IDENTIFIER ::= {kernelIO 10}

-- Buffer Cache
    
    kernelGetBlk  OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) number of getblks 
	    calls."
    ::= {kernelBufCache 1}
	
    kernelGetBlkLockMiss OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) number of times
	    a buffer lock was missed."
    ::= {kernelBufCache 2}
	
    kernelGetBlkFound OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) number of times 
	    the buffer was found in the cache."
    ::= {kernelBufCache 3}
	
    kernelGetBlkFreeEmpty  OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) number of times 
	    when the free buffer list was empty."
    ::= {kernelBufCache 4}
	
    kernelGetBlkFreeLock  OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) number of times
	    when all the free buffers were locked."
    ::= {kernelBufCache 5}
	

-- DNLC

    kernelNameCacheHit  OBJECT-TYPE
	SYNTAX      Counter32  
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The number of cache hits in that can be
	    used."
    ::= {kernelDNLCache 1}

    kernelNameCacheMiss  OBJECT-TYPE
	SYNTAX      Counter32  
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The number of cache misses when directory 
	    name lookup was done."
    ::= {kernelDNLCache 2}

    kernelNameCacheEnter OBJECT-TYPE
	SYNTAX      Counter32  
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The number of name cache entries added."
    ::= {kernelDNLCache 3}

    kernelNameCachePurge OBJECT-TYPE
	SYNTAX      Counter32  
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The number of name cache purges done."
    ::= {kernelDNLCache 4}

    kernelNameCacheSearches  OBJECT-TYPE
	SYNTAX      Counter32  
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The number of hash lookups done."
    ::= {kernelDNLCache 5}

    kernelNameCacheLongNameLookup OBJECT-TYPE
	SYNTAX      Counter32  
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The number of long name lookups done."
    ::= {kernelDNLCache 6}

    kernelNameCacheStaleHit  OBJECT-TYPE
	SYNTAX      Counter32  
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The number of cache hits that found 
	    stale vnode entries (with old vnode stamp)."
    ::= {kernelDNLCache 7}



    

-- swap 

    kernelSwapProcesses OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) number of times there 
	    are swapped processes."
    ::= {kernelSwap 1}

    kernelSwapQueue OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) length of swapped 
	    processes."
    ::= {kernelSwap 2}


-- IPC

    kernelIPCMesg  OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) number of System V
	    message operations."
    ::= {kernelIPC 1}

    kernelIPCSema  OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) number of System V
	    semaphore operations."
    ::= {kernelIPC 2}

-- TTY

    kernelTTYRecvIntr  OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) Input interrupt count 
	    for serial devices."
    ::= {kernelTTY 1}

    kernelTTYXmitIntr  OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) Output interrupt count 
	    for serial devices."
    ::= {kernelTTY 2}

    kernelTTYMdmIntr  OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) Modem Control interrupt 
	    count for serial devices."
    ::= {kernelTTY 3}

    kernelTTYOut OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) count of characters output 
	    to serial devices."
    ::= {kernelTTY 4}

    kernelTTYRecvRaw  OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) count of 'raw' characters 
	    received on serial lines."
    ::= {kernelTTY 5}

    kernelTTYRecvCanon OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) count of 'canonical'
	    characters received by the TTY driver."
    ::= {kernelTTY 6}





-- The io group.  This contains stats on disk activities
-- and disk controller information.

    io       OBJECT IDENTIFIER ::= {sgiHost 5}

    scsi     OBJECT IDENTIFIER ::= {io 1}
    filesys  OBJECT IDENTIFIER ::= {io 2}
    xlv      OBJECT IDENTIFIER ::= {io 3}


    numScsiCtl  OBJECT-TYPE
	SYNTAX    INTEGER
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION 
	    " The number of active disk controllers."
    ::= {scsi 1}


    numScsiDisks OBJECT-TYPE
	SYNTAX     INTEGER
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
	    " The total number of scsi disks in the 
	    system."
    ::= {scsi 2}

    scsiStatsTotReadBytes  OBJECT-TYPE
	SYNTAX     Counter32
	UNITS	   "KBytes"
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) number of KBytes
	    read from all disks."
    ::= {scsi 3}

    scsiStatsTotWriteBytes  OBJECT-TYPE
	SYNTAX     Counter32
	UNITS	   "KBytes"
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) number of 
	    KBytes written to all disks."
    ::= {scsi 4}


-- per-controller stats

    scsiCtlStatsTable   OBJECT-TYPE 
	SYNTAX     SEQUENCE OF ScsiCtlStatsEntry
	MAX-ACCESS not-accessible
	STATUS	   current
	DESCRIPTION
	    " A list of entries, one per disk controller,
	    with raw stats for that controller.

	    The number of active controllers is given by
	    the value of numScsiCtl."
    ::= {scsi 5}

    scsiCtlStatsEntry  OBJECT-TYPE 
	SYNTAX     ScsiCtlStatsEntry
	MAX-ACCESS not-accessible
	STATUS	   current
	DESCRIPTION
	    " An entry, with raw stats for one 
	    controller."
 	INDEX {scsiCtlIndex}
    ::= {scsiCtlStatsTable 1}

    ScsiCtlStatsEntry  ::= 
	SEQUENCE {
	    scsiCtlIndex	    INTEGER,
	    scsiCtlNumDisks         INTEGER,
	    scsiCtlTotalTrans  	    Counter32,
	    scsiCtlReadBytes	    Counter32,
	    scsiCtlWriteBytes	    Counter32,
	    scsiCtlAveActiveTime    Counter32,
	    scsiCtlAveResponseTime  Counter32
	}

    scsiCtlIndex OBJECT-TYPE 
	SYNTAX     INTEGER
	MAX-ACCESS not-accessible
	STATUS	   current
	DESCRIPTION
	    " An unique index to identify this entry.
	    This object is present for indexing purposes,
	    and does not have any other significance."
    ::= {scsiCtlStatsEntry 1}

    scsiCtlNumDisks OBJECT-TYPE 
	SYNTAX     INTEGER
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The number of active disks on this 
	    controller."
    ::= {scsiCtlStatsEntry 2}

    scsiCtlTotalTrans OBJECT-TYPE 
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) number 
	    reads/writes to/from this controller."
    ::= {scsiCtlStatsEntry 3}

    scsiCtlReadBytes OBJECT-TYPE 
	SYNTAX     Counter32
	UNITS	   "KBytes"
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) number of 
	    KBytes read from this controller."
    ::= {scsiCtlStatsEntry 4}

    scsiCtlWriteBytes OBJECT-TYPE 
	SYNTAX     Counter32
	UNITS	   "KBytes"
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) number of 
	    KBytes written to this disk controller."
    ::= {scsiCtlStatsEntry 5}

    scsiCtlAveActiveTime OBJECT-TYPE 
	SYNTAX     Counter32
	UNITS	   "milli seconds"
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The average disk active time on this
	    controller."
    ::= {scsiCtlStatsEntry 6}

    scsiCtlAveResponseTime OBJECT-TYPE 
	SYNTAX     Counter32
	UNITS	   "milli seconds"
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The average disk response time on this 
	    controller."
    ::= {scsiCtlStatsEntry 7}



-- raw disk stats
-- does NOT include entries for tapes/cdrom/floppies

    scsiDiskStatsTable  OBJECT-TYPE
	SYNTAX     SEQUENCE OF ScsiDiskStatsEntry
	MAX-ACCESS not-accessible
	STATUS	   current
	DESCRIPTION
	    " A list of entries, one for each disk 
	    providing raw statistics.
	    This table augments the hrDiskStorageTable
	    and provides per disk stats."
    ::= {scsi 6}

    scsiDiskStatsEntry OBJECT-TYPE 
	SYNTAX     ScsiDiskStatsEntry
	MAX-ACCESS not-accessible
	STATUS	   current
	DESCRIPTION
	    " A single entry containing raw stats 
	    information for one disk."
	INDEX {hrDeviceIndex}
    ::= {scsiDiskStatsTable 1}

    ScsiDiskStatsEntry  ::= 
	SEQUENCE {
	    scsiDiskTotalTrans	    Counter32,
	    scsiDiskReadBytes	    Counter32,
	    scsiDiskWriteBytes	    Counter32,
	    scsiDiskTotActiveTime   Counter32,
	    scsiDiskTotResponseTime Counter32
	}


    scsiDiskTotalTrans OBJECT-TYPE 
	SYNTAX     Counter32
	MAX-ACCESS read-only    
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) number of 
	    reads/writes to/from this disk."
    ::= {scsiDiskStatsEntry 1}

    scsiDiskReadBytes OBJECT-TYPE 
	SYNTAX     Counter32
	UNITS 	   "KBytes"
	MAX-ACCESS read-only    
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) number of 
	    KBytes read from this disk."
    ::= {scsiDiskStatsEntry 2}

    scsiDiskWriteBytes OBJECT-TYPE 
	SYNTAX     Counter32
	UNITS	   "KBytes"
	MAX-ACCESS read-only    
	STATUS	   current
	DESCRIPTION
	    " the total (cumulative) number of 
	    KBytes written to this disk."
    ::= {scsiDiskStatsEntry 3}

    scsiDiskTotActiveTime OBJECT-TYPE 
	SYNTAX     Counter32
	UNITS	   "milli seconds"
	MAX-ACCESS read-only    
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) disk active 
	    time."
    ::= {scsiDiskStatsEntry 4}

    scsiDiskTotResponseTime OBJECT-TYPE 
	SYNTAX     Counter32
	UNITS	   "milli seconds"
	MAX-ACCESS read-only    
	STATUS	   current
	DESCRIPTION
	    " The total (cumulative) disk response 
	    time."
    ::= {scsiDiskStatsEntry 5}


-- The filesystem subcomponent.

-- exports information

-- I wanted to create mib groups to show what file 
-- systems are being exported currently, and how they are 
-- being exported, as well as what local filesystems
-- have been remotely mounted by other machines 

-- There does not seem a way to implement it right now
-- other than to parse the output of showmount command
-- But still I have defined the objects 


    exports     OBJECT IDENTIFIER ::= {filesys 1}

    exportsList  OBJECT-TYPE
	SYNTAX      SEQUENCE OF ExportEntry
	MAX-ACCESS  not-accessible
	STATUS	    current
	DESCRIPTION
	    " A list of entries, each providing 
	    information on a filesystem being
	    exported from the local host."
    ::= {exports 1}

    exportEntry   OBJECT-TYPE
	SYNTAX      ExportEntry
	MAX-ACCESS  not-accessible
	STATUS	    current
	DESCRIPTION
	    " An entry providing information on 
	    a single filesystem being exported." 
	INDEX {exportIndex}
    ::= {exportsList 1}

    ExportEntry  ::= 
	SEQUENCE {
	    exportIndex	          INTEGER,
	    exportFileSys         DisplayString,
	    exportRemoteClients	  DisplayString
	}

    exportIndex   OBJECT-TYPE
	SYNTAX      INTEGER    
	MAX-ACCESS  not-accessible
	STATUS	    current
	DESCRIPTION
	    " An unique index to identify this
	    entry.  
	    This object is present for indexing purposes,
	    and does not have any other significance."
    ::= {exportEntry 1}

    exportFileSys OBJECT-TYPE
	SYNTAX      DisplayString
	MAX-ACCESS  read-only        
	STATUS	    current
	DESCRIPTION
	    " The name of the exported file system."
    ::= {exportEntry 2}

    exportRemoteClients  OBJECT-TYPE
	SYNTAX      DisplayString
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The list of clients who have remotely 
	    accessed this exported filesystem, with 
 	    the character ':' as a separator between
	    two names.
	    If this information is not available,
	    or if the agent does cannot retrieve this
	    information, the agent should return the
	    default value."
	DEFVAL {""}
    ::= {exportEntry 3}


-- The logical volume (XLV) information

    xlvNumVolumes  OBJECT-TYPE
	SYNTAX      Integer32
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The number of configured XLV
	    subvolumes."
    ::= {xlv 1}

    xlvStatsTable  OBJECT-TYPE
	SYNTAX      SEQUENCE OF XLVStatsEntry
	MAX-ACCESS  not-accessible
	STATUS	    current
	DESCRIPTION
	    " A list of entries containing 
	    statistics information for one XLV
	    subvolume.
	    The number of entries is given by
	    the value of xlvNumVolumes."
    ::= {xlv 2}

    xlvStatsEntry   OBJECT-TYPE
	SYNTAX      XLVStatsEntry
	MAX-ACCESS  not-accessible
	STATUS	    current
	DESCRIPTION
	    " An entry containing statistics 
	    information for one XLV subvolume."
	INDEX {xlvName}
    ::= {xlvStatsTable 1}


    XLVStatsEntry  ::= 
	SEQUENCE  {
	    xlvName		    DisplayString,
	    xlvRead	            Counter32,
	    xlvWrite	            Counter32,
	    xlvStripeOps            Counter32,
	    xlvStripeUnits          Counter32,
	    xlvAlignFullWidth       Counter32,
	    xlvAlignLTWidth         Counter32,
	    xlvAlignGTWidth	    Counter32,
	    xlvAlignPartWidth       Counter32,
	    xlvUnAlignFullWidth     Counter32,
	    xlvUnAlignLTWidth       Counter32,
	    xlvUnAlignGTWidth	    Counter32,
	    xlvUnAlignPartWidth     Counter32,
	    xlvLargestIOStripes	    Counter32,
	    xlvLargestIOCount	    Counter32
	}

    xlvName    OBJECT-TYPE
	SYNTAX      DisplayString
	MAX-ACCESS  not-accessible
	STATUS	    current
	DESCRIPTION
	    " The name of the XLV subvolume for 
            which statistics is being reported via
  	    this entry."
    ::= {xlvStatsEntry 1}

    xlvRead    OBJECT-TYPE
	SYNTAX      Counter32
	MAX-ACCESS  read-only     
	STATUS	    current
	DESCRIPTION
	    " The number of read operations on
	    this XLV subvolume."
    ::= {xlvStatsEntry 2}
    
    xlvWrite   OBJECT-TYPE
	SYNTAX      Counter32
	MAX-ACCESS  read-only     
	STATUS	    current
	DESCRIPTION
	    " The number of write operations on
	    this XLV subvolume."
    ::= {xlvStatsEntry 3}
    
    xlvStripeOps    OBJECT-TYPE
	SYNTAX      Counter32
	MAX-ACCESS  read-only     
	STATUS	    current
	DESCRIPTION
	    "The number of operations to striped 
	    volume elements of this XLV subvolume."
    ::= {xlvStatsEntry 4}
    
    xlvStripeUnits    OBJECT-TYPE
	SYNTAX      Counter32
	MAX-ACCESS  read-only     
	STATUS	    current
	DESCRIPTION
	    "The number of stripe units involved 
	    in operations to striped volume 
	    elements."
    ::= {xlvStatsEntry 5}
    
    xlvAlignFullWidth OBJECT-TYPE
	SYNTAX      Counter32
	MAX-ACCESS  read-only     
	STATUS	    current
	DESCRIPTION
	    " The number of aligned operations for 
	    stripe width transfers."
    ::= {xlvStatsEntry 6}
    
    xlvAlignLTWidth OBJECT-TYPE
	SYNTAX      Counter32
	MAX-ACCESS  read-only     
	STATUS	    current
	DESCRIPTION
	    " The number of aligned operations for 
	    transfers less than the stripe width."
    ::= {xlvStatsEntry 7}
    
    xlvAlignGTWidth OBJECT-TYPE
	SYNTAX      Counter32
	MAX-ACCESS  read-only     
	STATUS	    current
	DESCRIPTION
	    " The number of aligned operations for 
	    transfers greater than the stripe width."
    ::= {xlvStatsEntry 8}
    
    xlvAlignPartWidth OBJECT-TYPE
	SYNTAX      Counter32
	MAX-ACCESS  read-only     
	STATUS	    current
	DESCRIPTION
	    " The number of aligned operations for 
	    partial stripe unit transfers."
    ::= {xlvStatsEntry 9}
    
    xlvUnAlignFullWidth OBJECT-TYPE
	SYNTAX      Counter32
	MAX-ACCESS  read-only     
	STATUS	    current
	DESCRIPTION
	    " The number of unaligned operations for 
	    stripe width transfers."
    ::= {xlvStatsEntry 10}
    
    xlvUnAlignLTWidth OBJECT-TYPE
	SYNTAX      Counter32
	MAX-ACCESS  read-only     
	STATUS	    current
	DESCRIPTION
	    " The number of unaligned operations for 
	    transfers less than the stripe width."
    ::= {xlvStatsEntry 11}
    
    xlvUnAlignGTWidth OBJECT-TYPE
	SYNTAX      Counter32
	MAX-ACCESS  read-only     
	STATUS	    current
	DESCRIPTION
	    " The number of unaligned operations for 
	    transfers greater than stripe width."
    ::= {xlvStatsEntry 12}
    
    xlvUnAlignPartWidth OBJECT-TYPE
	SYNTAX      Counter32
	MAX-ACCESS  read-only     
	STATUS	    current
	DESCRIPTION
	    " The number of unaligned operations for 
	    partial stripe unit transfers."
    ::= {xlvStatsEntry 13}
    
    xlvLargestIOStripes OBJECT-TYPE
	SYNTAX      Counter32
	MAX-ACCESS  read-only     
	STATUS	    current
	DESCRIPTION
	    " The number of stripe units in
	    largest XLV transfer."
    ::= {xlvStatsEntry 14}
    
    xlvLargestIOCount OBJECT-TYPE
	SYNTAX      Counter32
	MAX-ACCESS  read-only     
	STATUS	    current
	DESCRIPTION
	    " The number of times largest I/O
	    has occurred."
    ::= {xlvStatsEntry 15}
    



-- The network group.  This contains information on network 
-- stats 

    network        OBJECT IDENTIFIER ::= {sgiHost 6}
    networkPerf    OBJECT IDENTIFIER ::= {network 1}

    streamsStats   OBJECT IDENTIFIER ::= {networkPerf 1}
    mbufStats      OBJECT IDENTIFIER ::= {networkPerf 2}
    nfsStats	   OBJECT IDENTIFIER ::= {networkPerf 3}
    rpcStats	   OBJECT IDENTIFIER ::= {networkPerf 4}
    mcastStats     OBJECT IDENTIFIER ::= {networkPerf 5}

-- streams stats group

    streamsCurMemUsage OBJECT-TYPE
        SYNTAX 	    INTEGER
	UNITS	    "KBytes"
	MAX-ACCESS  read-only
	STATUS	    current
  	DESCRIPTION 
	    " The amount memory in KBytes, used for 
	    various Streams resource allocations."
    ::= {streamsStats 1}

    streamsMaxMemUsage  OBJECT-TYPE
        SYNTAX 	    INTEGER
	UNITS	    "KBytes"
	MAX-ACCESS  read-only
	STATUS	    current
  	DESCRIPTION 
	    " The maximum amount of memory 
	    in KBytes used for various Streams 
	    resource allocations.
	    If this information is not available
	    the agent will return the default
	    value."
	DEFVAL {0}
    ::= {streamsStats 2}


-- A table for various streams resources.  
-- Each resource has a min/max/fail count.

    streamsResourceTable    OBJECT-TYPE
        SYNTAX      SEQUENCE OF StrResEntry
 	MAX-ACCESS  not-accessible
	STATUS	    current
	DESCRIPTION
	    " A table containing inUse/maxUse/fail 
	    counters for various streams resources."
    ::= {streamsStats 3}

    strResEntry    OBJECT-TYPE
	SYNTAX     StrResEntry
	MAX-ACCESS not-accessible
	STATUS	   current
	DESCRIPTION
	    " An Usage entry for a single streams 
	    resource."
	INDEX {strResType}
    ::= {streamsResourceTable 1}

    StrResEntry  ::=
	SEQUENCE {
	    strResType	      StreamsResourceCategory,
	    strResInUseCount  Counter32,
	    strResMaxUseCount Counter32,
	    strResFailCount   Counter32
	}


    strResType    OBJECT-TYPE
	SYNTAX     StreamsResourceCategory
	MAX-ACCESS not-accessible
	STATUS	   current
	DESCRIPTION
	    " The resource category of this entry for 
	    which the usage count is reported.
	    This object's value is not accessible,
	    and can be used only as an index for 
	    this conceptual table.
	    The number of rows for this table is
	    equal to the number of enumerations of 
	    StreamsResourceCategory."
    ::= {strResEntry 1}

    strResInUseCount    OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The in use count for this streams 
	    resource.

	    The units of the value returned is 
	    determined by the value of strResType 
	    for this entry.  The units for all 
	    resource types is given in the description 
	    of the textual convention StreamsResourceCategory.

	    For example, to obtain the number of 
	    Streams buffers of size 2KByte, the 
	    manager should issue a 
	    GetRequest(strResInUseCount.8)"
    ::= {strResEntry 2}

    strResMaxUseCount    OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The max3use count for this streams 
	    resource."
    ::= {strResEntry 3}

    strResFailCount    OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The failures count for this streams resource."
    ::= {strResEntry 4}


-- MBUF statistics

    mbufsInUse	OBJECT-TYPE
	SYNTAX     Gauge32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total number of mbufs in use."
    ::= {mbufStats 1}

    mbufsFree   OBJECT-TYPE
	SYNTAX     Gauge32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total number of mbufs free."
    ::= {mbufStats 2}

    mbufsClustersAlloc   OBJECT-TYPE
	SYNTAX     Gauge32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The total number of clusters 
	    allocated."
    ::= {mbufStats 3}

    mbufsClustersFree   OBJECT-TYPE
	SYNTAX     Gauge32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The number of free clusters."
    ::= {mbufStats 4}

    mbufsFailed OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The number of times a free mbuf space 
	    couldn't be found."
    ::= {mbufStats 5}

    mbufsWaited OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The number of requests that resulted in 
	    a wait for a free mbuf space."
    ::= {mbufStats 6}

    mbufsDrained  OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The number of times protocols were 
	    drained for mbuf space."
    ::= {mbufStats 7}


    mbufAllocTable  OBJECT-TYPE
	SYNTAX     SEQUENCE OF MbufAllocEntry
	MAX-ACCESS not-accessible
	STATUS	   current
	DESCRIPTION
	    " A list containing allocation information for 
	    various mbuf types."
    ::= {mbufStats 8}

    mbufAllocEntry OBJECT-TYPE
	SYNTAX     MbufAllocEntry
	MAX-ACCESS not-accessible
	STATUS	   current
	DESCRIPTION
	    " An entry containing allocation information for 
	    a single mbuf type."
	INDEX {mbufAllocType}
    ::= {mbufAllocTable 1}


    MbufAllocEntry ::=
	SEQUENCE {
	    mbufAllocType   MbufType,
	    mbufAllocValue  Gauge32   
	}


    mbufAllocType OBJECT-TYPE
	SYNTAX     MbufType
	MAX-ACCESS not-accessible
	STATUS	   current
	DESCRIPTION
	    " The mbuf type for this entry.
	    This object is not accessible and is only
	    present for indexing purposes.

	    The number of rows for this conceptual table
	    is determined by the number of legal enumerations
	    for the type MbufType, and the value of individual
	    enumerations become the instance values.

	    For example, to find out the number for 
	    mbufs allocated for protocol control blocks
	    the manager should issue a 
	    GetRequest(mbufAllocValue.4) ." 
    ::= {mbufAllocEntry 1}
	    
    mbufAllocValue OBJECT-TYPE
	SYNTAX     Gauge32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The number of mbufs allocated for 
	    this mbuf type indicated by the value 
	    of mbufAllocType."
    ::= {mbufAllocEntry 2}


-- The nfsstats group

    nfsStatsTable   OBJECT-TYPE
	SYNTAX	    SEQUENCE OF NfsStatsEntry
	MAX-ACCESS  not-accessible
	STATUS	    current
	DESCRIPTION
	    " A list of entries containing nfs client
	    and server stats for various versions of NFS 
	    packets."
    ::= {nfsStats 1}

    nfsStatsEntry   OBJECT-TYPE
	SYNTAX	    NfsStatsEntry
	MAX-ACCESS  not-accessible
	STATUS	    current
	DESCRIPTION
	    " An entry containing nfs client and server 
	    stats for a particular version of NFS packets."
	INDEX {nfsVersion}
    ::= {nfsStatsTable 1}
    
    NfsStatsEntry ::=
	SEQUENCE {
	    nfsVersion		NFSVersion,
	    nfsClientCalls	Counter32,
	    nfsClientBadCalls   Counter32,
	    nfsClientNclGet     Counter32,
	    nfsClientNclSleep   Counter32,
	    nfsServerCalls	Counter32,
	    nfsServerBadCalls	Counter32
	}
	
	
    nfsVersion    OBJECT-TYPE
	SYNTAX	    NFSVersion
	MAX-ACCESS  not-accessible
	STATUS	    current
	DESCRIPTION
	    " The NFS version corresponding to this stats
	    entry.
	    Note that this object is an index for this
	    table and may not be accessed via a GetRequest.
	    The syntax of this object is an enumerated integer. 
	    The total number of enumerated values of this integer 
	    form the number of rows for this conceptual table; 
	    and the value of each enumeration form the 
	    value of the corresponding instance.

	    As an example, to obtain the total number of client
	    calls with nfs version 2, the manager can issue
	    a getRequest(nfsStatsClientCalls.2)."
    ::= {nfsStatsEntry 1}
	
    nfsClientCalls   OBJECT-TYPE
	SYNTAX	    Counter32
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The total number of client calls made with 
	    nfs version equal to nfsVersion."
    ::= {nfsStatsEntry 2}

    nfsClientBadCalls   OBJECT-TYPE
	SYNTAX	    Counter32
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The total number of client bad calls made with 
	    nfs version equal to nfsVersion."
    ::= {nfsStatsEntry 3}

    nfsClientNclGet   OBJECT-TYPE
	SYNTAX	    Counter32
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The total number of client handle gets with 
	    nfs version equal to nfsVersion."
    ::= {nfsStatsEntry 4}

    nfsClientNclSleep   OBJECT-TYPE
	SYNTAX	    Counter32
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The total number of client handle ,with 
	    nfs version equal to nfsVersion."
    ::= {nfsStatsEntry 5}

    nfsServerCalls   OBJECT-TYPE
	SYNTAX	    Counter32
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The total number of server calls, with 
	    nfs version equal to nfsVersion."
    ::= {nfsStatsEntry 6}

    nfsServerBadCalls   OBJECT-TYPE
	SYNTAX	    Counter32
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The total number of server bad calls, with 
	    nfs version equal to nfsVersion."
    ::= {nfsStatsEntry 7}


-- The per request stats table.

-- The system maintains stats at a single nfs request 
-- ('readdir', 'remove', etc) level for both server as 
-- well as client calls.
-- If SNMP had allowed a table inside a table, we would have
-- defined a 'nfsStatsClientPerReq' table and a 
-- 'nfsStatsServerServerPerReq' table inside the nfsStatsTable

-- Since that is not allowed, we augument the above table.

    nfsStatsPerReqTable  OBJECT-TYPE
	SYNTAX     SEQUENCE OF NfsStatsPerReqEntry
	MAX-ACCESS not-accessible
	STATUS	   current
	DESCRIPTION
	    " A table containing NFS client and server stats
	    for each request made."
    ::= {nfsStats 2}

    nfsStatsPerReqEntry  OBJECT-TYPE
	SYNTAX     NfsStatsPerReqEntry
	MAX-ACCESS not-accessible
	STATUS	   current
	DESCRIPTION
	    " An entry containing NFS client and server stats
	    for a request made.
	    There will be one entry for each NFS request of
	    each nfsVersion.  
	    The number of nfsVersions for which stats are 
	    available, is determined through the number of 
	    rows returned for nfsStatsTable.  
	    So, this table is indexed by nfsVersion  
	    and nfsRequestType."
        INDEX {nfsVersion,nfsRequestType}
    ::= {nfsStatsPerReqTable 1}

    NfsStatsPerReqEntry ::=
	SEQUENCE {
	    nfsRequestType	     NFSRequestType,
	    nfsStatsReqClientCalls   Counter32,
	    nfsStatsReqServerCalls   Counter32
	}
    

    nfsRequestType        OBJECT-TYPE
        SYNTAX     NFSRequestType
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            " The NFS request type for which the client and
	    server stats are being reported.
	    This object's value may not be accessed ancan only
	    be used as one of the indices to this table.

	    To request the value of number of client ReadDir
	    calls with nfs version 3, the manager will use 
	    3.18 as the instance value.

	    Note that the enumeration NFSRequestType contains
	    the set of all possible requests, some of them 
	    not applicable to a particular NFS version.
	    So, the nfsStatsPerReqTable will be sparse.

	    For example, there will be no row with 
	    nfsVersion=2 and nfsRequestType=ReadDir (18).
	    That is a GetRequest with instance as 2.18 
	    will result in an error.

	    It is the responsibility of the manager to 
	    query the correct instances, for a particular
	    nfsVersion value."
    ::= {nfsStatsPerReqEntry 2}

    nfsStatsReqClientCalls  OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
	    " The total (cumulative) number of client NFS
	    calls with request=nfsRequestType, for version
	    =nfsVersion."
    ::= {nfsStatsPerReqEntry 3}

    nfsStatsReqServerCalls  OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            " The total (cumulative) number of server NFS
            calls with request=nfsRequestType, for version
	    =nfsVersion."
    ::= {nfsStatsPerReqEntry 4}



-- The rpcStats group

    rpcStatsClientCalls  OBJECT-TYPE
	SYNTAX	    Counter32
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The total (cumulative) number of 
	    client RPC requests."
    ::= {rpcStats 1}

    rpcStatsClientBadCalls  OBJECT-TYPE
	SYNTAX	    Counter32
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The total (cumulative) number of 
	    bad client RPC requests."
    ::= {rpcStats 2}

    rpcStatsClientNewCred  OBJECT-TYPE
	SYNTAX	    Counter32
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The total (cumulative) number of 
	    client RPC new credentials requests."
    ::= {rpcStats 3}

    rpcStatsClientRetrans  OBJECT-TYPE
	SYNTAX	    Counter32
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The total (cumulative) number of 
	    retransmitted client RPC requests."
    ::= {rpcStats 4}

    rpcStatsClientTimeout  OBJECT-TYPE
	SYNTAX	    Counter32
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The total (cumulative) number of 
	    timed out client RPC requests."
    ::= {rpcStats 5}

    rpcStatsClientRPCWait  OBJECT-TYPE
	SYNTAX	    Counter32
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The total (cumulative) number 
	    of client RPC handle waits."
    ::= {rpcStats 6}

    rpcStatsClientAuthFail  OBJECT-TYPE
	SYNTAX	    Counter32
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The total (cumulative) number of 
	    client RPC authentication failures."
    ::= {rpcStats 7}

    rpcStatsServerCalls  OBJECT-TYPE
	SYNTAX	    Counter32
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The total (cumulative) number of 
	    server RPC requests."
    ::= {rpcStats 8}

    rpcStatsServerBadCalls OBJECT-TYPE
	SYNTAX	    Counter32
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The total (cumulative) number of 
	    server RPC bad requests."
    ::= {rpcStats 9}

    rpcStatsServerDupAge  OBJECT-TYPE
	SYNTAX	    Counter32
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The average age of recycled RPC 
	    server cache entries."
    ::= {rpcStats 10}

    rpcStatsServerDupHits  OBJECT-TYPE
	SYNTAX	    Counter32
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
	    " The total (cumulative) number of 
	    server RPC duplicate cache hit 
	    requests."
    ::= {rpcStats 11}


    rpcStatsServerXDRCalls OBJECT-TYPE
        SYNTAX      Counter32
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            " The total (cumulative) number of 
	    server RPC XDR requests."
    ::= {rpcStats 12}


    rpcStatsServerNULLCalls OBJECT-TYPE
        SYNTAX      Counter32
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            " The total (cumulative) number of 
	    NULL server RPC requests."
    ::= {rpcStats 13}


-- The mcastStats group
-- Note that the igmp v2 and mroute related statistics 
-- should actually come from the corresponding IETF WG-defined
-- mibs; They are under 'experimental' right now.  So, once they 
-- become standards the duplicate definitions from the following 
-- groups will become 'obsolete'.

    mcastIgmpStats      OBJECT IDENTIFIER ::= {mcastStats 1}
    mcastMrouteStats    OBJECT IDENTIFIER ::= {mcastStats 2}

-- igmp info
    
    igmpRecvTotal OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " Total number of igmp messages received."
    ::= {mcastIgmpStats 1}

    igmpRecvQueries OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " Total number of igmp membership query 
	    messages received."
    ::= {mcastIgmpStats 2}

    igmpRecvReports OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " Total number of igmp membership reports 
	    messages received."
    ::= {mcastIgmpStats 3}

    igmpSendReports OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " Total number of igmp membership reports 
	    messages sent out."
    ::= {mcastIgmpStats 4}

    igmpRecvBadPkts OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " Total number of invalid igmp messages received.

	     Note that this counter will be a sum of various
	     categories of bad packets :-
	     tooShortPkts, badCksumPkts, and badQueyPkts."
    ::= {mcastIgmpStats 5}

     
-- mroute stats

    mrouteUpcalls OBJECT-TYPE     
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " Total number of upcalls to mrouted."
    ::= {mcastMrouteStats 1}

    mrouteNoRoute OBJECT-TYPE     
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " Total number of packets with no route
	    for packets' origin."
    ::= {mcastMrouteStats 2}

    mrouteTunnelProb OBJECT-TYPE     
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " Total number of packets dropped due to tunnel
	    problems, which includes :-
	    a) Malformed tunnel options
	    b) No room for tunnel options"
    ::= {mcastMrouteStats 3}

    mrouteUpQOverflow OBJECT-TYPE     
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " Total number of times the upcall 
	    queue (to mrouted) 
	    overflowed."
    ::= {mcastMrouteStats 4}

    mroutePktsTooLarge OBJECT-TYPE     
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " Total number of packets dropped because of
 	    the size."
    ::= {mcastMrouteStats 5}

    mrouteWrongIf OBJECT-TYPE     
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " Total number of packets received 
	    on the wrong interface."
    ::= {mcastMrouteStats 6}


-- system processes 
-- since we will be giving up hp-ux agent, we need to 
-- implement the proc table here.  Host-Res MIB does 
-- not provide detail info on proc table.

    processes    OBJECT IDENTIFIER ::= {sgiHost 7}
  
    processCurrNum   OBJECT-TYPE
	SYNTAX     Gauge32
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
	    " The number of processes currently 
	    running in the host."
    ::= {processes 1}

    processTable OBJECT-TYPE
	SYNTAX     SEQUENCE OF ProcessEntry
	MAX-ACCESS not-accessible
	STATUS     current
	DESCRIPTION
	    " A list of entries, each providing 
	    information about one running process."
    ::= {processes 2}

    processEntry OBJECT-TYPE
	SYNTAX     ProcessEntry
	MAX-ACCESS not-accessible
	STATUS     current
	DESCRIPTION
	    " A single entry, providing information 
	    about one running process."
	INDEX {processPID}
    ::= {processTable 1}

    ProcessEntry ::= 
	SEQUENCE {
	    processPID 		    Integer32,
	    processCmd		    DisplayString,
	    processPPID		    Integer32,
	    processStartTime	    TimeTicks,
	    processUID		    UID,
	    processGID		    UID,
	    processPGroup	    Integer32,
	    processDataSz	    Gauge32,
	    processTextSz	    Gauge32,
	    processShmSz	    Gauge32,
	    processStackSz	    Gauge32,
	    processNice	 	    Gauge32,
	    processPriority	    Integer32,
	    processState	    ProcState,
	    processRsSz    	    Gauge32,
	    processCPUTime	    Counter32,
	    processSystemTime	    Counter32,
	    processUserTime	    Counter32,
	    processBlockIOWaitTime  Counter32,
	    processRawIOWaitTime    Counter32,
	    processUserName	    DisplayString,
	    processTTYName	    DisplayString,
	    processSwaps	    Counter32,
	    processPageFaults	    Counter32,
	    processVolCtxt	    Counter32,
	    processSysCalls	    Counter32
        }
    

    processPID OBJECT-TYPE
	SYNTAX     Integer32
	MAX-ACCESS not-accessible
	STATUS     current
	DESCRIPTION
	    " The pid value for the running process 
	    corresponding to this current entry. 
	    This is present for indexing purposes and
	    may not be accessed."
    ::= {processEntry 1}

    processCmd OBJECT-TYPE
	SYNTAX     DisplayString
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
	    " The command-line for the running process."
    ::= {processEntry 2}

    processPPID OBJECT-TYPE
	SYNTAX     Integer32
	MAX-ACCESS read-only     
	STATUS     current
	DESCRIPTION
	    " The pid value for the parent of the running 
	    process." 
    ::= {processEntry 3}

    processStartTime OBJECT-TYPE
	SYNTAX     TimeTicks
	MAX-ACCESS read-only     
	STATUS     current
	DESCRIPTION
	    " The time at which this process was started.
	    This is equivalent to the STIME column value
	    of the output of 'ps -f' command.
	    The agent calculates the elapsed time since the
	    process was started, and returns the value in
	    TimeTicks.
	    A manager could convert the value into a 
	    meaningful string like '10:50:11' ."
    ::= {processEntry 4}

    processUID OBJECT-TYPE
	SYNTAX     UID
	MAX-ACCESS read-only     
	STATUS     current
	DESCRIPTION
	    " The real user id value for the running 
	    process." 
    ::= {processEntry 5}

    processGID OBJECT-TYPE
	SYNTAX     UID
	MAX-ACCESS read-only     
	STATUS     current
	DESCRIPTION
	    " The real group id value for the running 
	    process." 
    ::= {processEntry 6}

    processPGroup OBJECT-TYPE
	SYNTAX     Integer32
	MAX-ACCESS read-only     
	STATUS     current
	DESCRIPTION
	    " The pid value for the group leader of 
	    the running process." 
    ::= {processEntry 7}

    processDataSz OBJECT-TYPE
	SYNTAX     Gauge32
	UNITS	   "KBytes"
	MAX-ACCESS read-only     
	STATUS     current
	DESCRIPTION
	    " The total virtual size of the initialized
	    data segments of the process, in KBytes."
    ::= {processEntry 8}

    processTextSz OBJECT-TYPE
	SYNTAX     Gauge32  
	UNITS	   "KBytes"
	MAX-ACCESS read-only     
	STATUS     current
	DESCRIPTION
	    " The total virtual size of the executable 
	    segments of the process, in KBytes."
    ::= {processEntry 9}

    processShmSz  OBJECT-TYPE
	SYNTAX     Gauge32  
	UNITS	   "KBytes"
	MAX-ACCESS read-only    
	STATUS     current
	DESCRIPTION
	    " The total virtual size of shared 
	    memory segments attached to the process."
    ::= {processEntry 10}

    processStackSz OBJECT-TYPE
	SYNTAX     Gauge32
	UNITS	   "KBytes"
	MAX-ACCESS read-only     
	STATUS     current
	DESCRIPTION
	    " The total virtual size of the stack 
	    segment of the process, in KBytes."
    ::= {processEntry 11}

    processNice OBJECT-TYPE
	SYNTAX     Gauge32  
	MAX-ACCESS read-write    
	STATUS     current
	DESCRIPTION
	    " The nice setting for the process."
    ::= {processEntry 12}

    processPriority OBJECT-TYPE
	SYNTAX     Integer32
	MAX-ACCESS read-only    
	STATUS     current
	DESCRIPTION
	    " The process scheduling priority.  A
	    higher value indicates a higher priority."
    ::= {processEntry 13}

    processState OBJECT-TYPE
	SYNTAX     ProcState
	MAX-ACCESS read-only    
	STATUS     current
	DESCRIPTION
	    " The running state of the process."
    ::= {processEntry 14}

    processRsSz OBJECT-TYPE
	SYNTAX     Gauge32
	UNITS	   "KBytes"
	MAX-ACCESS read-only    
	STATUS     current
	DESCRIPTION
	    " Total pro-rated resident size of 
	    the process in KBytes."
    ::= {processEntry 15}

    processCPUTime OBJECT-TYPE
	SYNTAX     Counter32
	UNITS	   "milli seconds"
	MAX-ACCESS read-only    
	STATUS     current
	DESCRIPTION
	    " The total (cumulative) CPU usage time
	    (executing user+system code) in milli secs
	    for this process.

	    A manager can find out the value of this
	    object at discrete time intervals, and 
	    then calculate the CPU Usage % by this
	    process." 
    ::= {processEntry 16}

    processSystemTime OBJECT-TYPE
	SYNTAX     Counter32
	UNITS	   "milli seconds"
	MAX-ACCESS read-only    
	STATUS     current
	DESCRIPTION
	    " The total (cumulative) time spent
	    by the CPU executing system code for
	    this process."
    ::= {processEntry 17}

    processUserTime OBJECT-TYPE
	SYNTAX     Counter32
	UNITS	   "milli seconds"
	MAX-ACCESS read-only    
	STATUS     current
	DESCRIPTION
	    " The total (cumulative) time spent
	    by the CPU executing user code for 
	    this process."
    ::= {processEntry 18}

    processBlockIOWaitTime OBJECT-TYPE
	SYNTAX     Counter32
	UNITS	   "milli seconds"
	MAX-ACCESS read-only    
	STATUS     current
	DESCRIPTION
	    " The total time spent by the process 
	    in waiting for block I/O to complete."
    ::= {processEntry 19}

    processRawIOWaitTime OBJECT-TYPE
	SYNTAX     Counter32
	UNITS	   "milli seconds"
	MAX-ACCESS read-only    
	STATUS     current
	DESCRIPTION
	    " The total time spent by the process 
	    in waiting for raw I/O to complete."
    ::= {processEntry 20}


    processUserName OBJECT-TYPE
	SYNTAX     DisplayString
	MAX-ACCESS read-only    
	STATUS     current
	DESCRIPTION
	    " The owner of this process."
    ::= {processEntry 21}

    processTTYName OBJECT-TYPE
	SYNTAX     DisplayString
	MAX-ACCESS read-only    
	STATUS     current
	DESCRIPTION
	    " The tty name with which the process
	    is associated.  A string '?' is returned
	    if the process is not associated with a
	    tty."
    ::= {processEntry 22}

    processSwaps OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only    
	STATUS     current
	DESCRIPTION
	    " The total number of swaps incurred by
	    the process."
    ::= {processEntry 23}

    processPageFaults OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only    
	STATUS     current
	DESCRIPTION
	    " The total number of major (disk) page
	    faults incurred by the process." 
    ::= {processEntry 24}

    processVolCtxt OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only    
	STATUS     current
	DESCRIPTION
	    " The total number of voluntary context
	    switches incurred by the process.
	    A voluntary context switch occurs when 
	    the process has to free the CPU while 
	    waiting for I/O to complete.
	    This number is one of the parameters to
	    decide whether a process is CPU or 
	    I/O-bound."
    ::= {processEntry 25}

    processSysCalls OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only    
	STATUS     current
	DESCRIPTION
	    " The total number of system calls made 
	    by the process."
    ::= {processEntry 26}


-- systemwide ipc information
    
    processIPC      OBJECT IDENTIFIER ::= {processes 3}


-- installed software

    installedSW  OBJECT IDENTIFIER ::= {sgiHost 8}

    swProductsCount OBJECT-TYPE
	SYNTAX	   Integer32
	MAX-ACCESS read-only
	STATUS	   current  
	DESCRIPTION
	    " The number of products installed in the 
	    host, as known to the software installation
            entity of the host.
	    Note that the count includes only those 
	    products installed via the software installation
	    entity."
    ::= {installedSW 1}

-- objects related to the inventory table

    swInvTableLastUpdate  OBJECT-TYPE   
	SYNTAX	   TimeTicks
	MAX-ACCESS read-only
	STATUS	   current  
	DESCRIPTION
	    " The time when the software inventory
	    table was last updated by the agent."
    ::= {installedSW 2}


    swInvTableForceLoad OBJECT-TYPE
	SYNTAX	   INTEGER { none(1),reload(2)}
	MAX-ACCESS read-write
	STATUS	   current  
	DESCRIPTION
	    " This object allows a manager to force the
	    agent to reload its software inventory
	    cache.  The return value of the set request
	    indicates whether the operation was completed
	    or not.

	    When read, this object always returns 
	    none (1)."
    ::= {installedSW 3}

    swInvInstallRoot OBJECT-TYPE
	SYNTAX	   DisplayString
	MAX-ACCESS read-write
	STATUS	   current  
	DESCRIPTION
	    " This object allows a manager to force the
	    agent to return information about products
	    installed in a different root other than 
	    the default root.

	    The software installation entity allows a
	    product to be installed in the default 
	    root directory, or in some other root 
	    directory.  Setting this object forces
	    the agent to reload its inventory table
	    with information on software installed
	    in the new root."
	DEFVAL {"/"}
    ::= {installedSW 4}



-- the inventory table

-- currently, the sw model in IRIX is prod.image.subsys
-- Ultimately, the subsystems are the ones which are getting
-- installed.  

-- This whole thing may need a lot of changes

    swInventoryTable  OBJECT-TYPE
	SYNTAX	   SEQUENCE OF SwInvEntry
	MAX-ACCESS not-accessible
	STATUS	   current
	DESCRIPTION
	    " A table containing information about the 
	    installed software components in the system,
	    as known to the software installation entity."
    ::= {installedSW 5}

    swInvEntry  OBJECT-TYPE
	SYNTAX	   SwInvEntry
	MAX-ACCESS not-accessible
	STATUS	   current
	DESCRIPTION
	    " An entry containing information about a
	    single installed software component."
	INDEX {swInvName}
    ::= {swInventoryTable 1}


    SwInvEntry  ::= 
	SEQUENCE {
	    swInvName	    	     DisplayString,
	    swInvInternalVersion     Integer32,
	    swInvTextualDescr	     DisplayString,
	    swInvInstalledDate	     DateAndTime,
	    swInvCreatedDate	     DisplayString,
	    swInvInstallSource	     DisplayString
        }


    swInvName  OBJECT-TYPE
	SYNTAX	   DisplayString
	MAX-ACCESS not-accessible
	STATUS	   current
	DESCRIPTION
	    " The installed software component name.
	    For example, eoe.sw.base.
	    This object is used to index this table 
	    and is not accessible by a manager.

	    The indexing of this table needs some 
	    additional notes:

	    When a manager requests the value of an object
 	    in the table, the agent will return the 
	    value only if there is a component by the
	    name swInvName in the installation database.

	    For example :

	    * GetRequest(eoe) will succeed if there 
	      is a product named 'eoe' is installed.

	    * GetRequest(eoe.sw) will succeed, if there 
	      is an image named 'eoe.sw' installed.

	    This is based on the product/image/subsystem
	    hirerarchy of software installation as 
	    described in the description of the Textual 
	    convention SWProductDepth.

	    The inventory names are sorted alphabetically
	    based on the Product Name.
	    So a GetNextRequest(eoe.man) will return
	    information on the image that alphabetically
	    follows eoe.man.

	    If the agent does not support this model of
	    software installation, swInvName will 
	    correspond to a product's name."
    ::= {swInvEntry 1}

    swInvInternalVersion  OBJECT-TYPE
	SYNTAX	   Integer32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The internal version number of this
	    installed software component.
	    For example, 1274425944.
	    The agent will return the default value, 
	    if the internal version information is not
	    available."
	DEFVAL {0}
    ::= {swInvEntry 2}

    swInvTextualDescr  OBJECT-TYPE
	SYNTAX	   DisplayString
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " A textual description of this 
	    software component."
	DEFVAL {""}
    ::= {swInvEntry 3}

    swInvInstalledDate  OBJECT-TYPE
	SYNTAX	   DateAndTime
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The date on which this software
	    component was installed.

	    Please refer to the SNMPv2 Textual
	    conventions RFC for the format of
	    DateAndTime."
    ::= {swInvEntry 4}

    swInvCreatedDate  OBJECT-TYPE
	SYNTAX	   DisplayString
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The date on which this software
	    component was created."
    ::= {swInvEntry 5}

    swInvInstallSource  OBJECT-TYPE
	SYNTAX	   DisplayString
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The source directory from where this
	    component was installed.
	    If this information is not available,
	    the agent will return the default value."
	DEFVAL {""}
    ::= {swInvEntry 6}


-- graphics (if present) information

    gfx        OBJECT IDENTIFIER ::= {sgiHost 9}
    
    gfxNumBoards   OBJECT-TYPE
	SYNTAX     INTEGER
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The number of graphics boards in the 
	    system."
    ::= {gfx 1} 

    gfxBoardTable OBJECT-TYPE
	SYNTAX     SEQUENCE OF GfxBoardEntry
	MAX-ACCESS not-accessible
	STATUS	   current
	DESCRIPTION
	    " A list of entries containing
	    information about the graphics boards in
	    the system."
    ::= {gfx 2} 


    gfxBoardEntry OBJECT-TYPE
	SYNTAX     GfxBoardEntry
	MAX-ACCESS not-accessible
	STATUS	   current
	DESCRIPTION
	    " An entry containing information about 
	    a graphics board in the system."
	INDEX {gfxBoardNumber}
    ::= {gfxBoardTable 1} 

    
    GfxBoardEntry  ::= 
	SEQUENCE {
	    gfxBoardNumber	 INTEGER,
	    gfxBoardType	 GFXBoardType,
	    gfxBoardName	 DisplayString,
	    gfxBoardIsManaged    TruthValue,
	    gfxBoardScreenXSz    Integer32,
	    gfxBoardScreenYSz    Integer32,
	    gfxBoardTypeSpecific DisplayString
	}

    gfxBoardNumber  OBJECT-TYPE
	SYNTAX     INTEGER
	MAX-ACCESS not-accessible
	STATUS	   current
	DESCRIPTION
	    " The board number for this graphics
	    board. This object is not accessible,
	    and can only be used to index a row
	    of this conceptual table."
    ::= {gfxBoardEntry 1} 

    gfxBoardType  OBJECT-TYPE
	SYNTAX     GFXBoardType
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The type of this graphics board. 
	    For example, NG1 (10)."
    ::= {gfxBoardEntry 2}

    gfxBoardName  OBJECT-TYPE
	SYNTAX     DisplayString
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The name of this graphics board. 
	    This is different from the BoardType.

	    For example, the name of a Mardigras
	    board on a IP22 system is IMPACT."
    ::= {gfxBoardEntry 3}

    gfxBoardIsManaged  OBJECT-TYPE
	SYNTAX     TruthValue
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " Indicates whether the board is 
	    currently managed."
   ::= {gfxBoardEntry 4}

    gfxBoardScreenXSz  OBJECT-TYPE
	SYNTAX     Integer32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The screen x size in pixels."
    ::= {gfxBoardEntry 5}

    gfxBoardScreenYSz  OBJECT-TYPE
	SYNTAX     Integer32   
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The screen y size in pixels."
    ::= {gfxBoardEntry 6}

    gfxBoardTypeSpecific  OBJECT-TYPE
	SYNTAX     DisplayString
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " Type specific information for
	    this graphics board returned as
	    a string.  If no specific information
	    is available, the agent should return 
	    the default value."
	DEFVAL {""}
    ::= {gfxBoardEntry 7}





-- traps and alarms related stuff

    hostNotification  OBJECT IDENTIFIER ::= {sgiHost 10}
    hostNotifTraps    OBJECT IDENTIFIER ::= {hostNotification 1}


-- The agent returns the important stats information 
-- through the invidual stats objects.  But the values
-- returned are cumulative counters and are more useful
-- in helping a manager continuously tracking the 
-- system activity, via, a Live Graph, for example.

-- But there are situations when the manager wants to
-- get notified by the agent of some abnormal activity
-- in the system, like DiskFull condition.

-- The agent notifications, helpful though, mean that 
-- the agent has to spend sufficient time in monitoring
-- various items.
-- So, an alarm scheme (much like the alarm scheme defined
-- in the RMON, only less sophisticated) seems to be a nice
-- choice, where the manager can choose the objects to be
-- monitered, as well as to set alaram conditions.


    hostNotifTable OBJECT-TYPE
	SYNTAX     SEQUENCE OF HostNotifEntry
	MAX-ACCESS not-accessible
	STATUS	   current
	DESCRIPTION
	    " A list of entries, each defining
	    an alarm for a particular object."
    ::= {hostNotification 2}

    hostNotifEntry OBJECT-TYPE
	SYNTAX	   HostNotifEntry
	MAX-ACCESS not-accessible
	STATUS	   current
	DESCRIPTION
	    " An entry containing alarm info-
	    rmation specific to an object."
	INDEX {hostNotifIndex}
    ::= {hostNotifTable 1}

    HostNotifEntry  ::= 
	SEQUENCE {
	    hostNotifIndex	 INTEGER,
	    hostNotifObject	 OBJECT IDENTIFIER,
	    hostNotifThres	 Integer32,
	    hostNotifThresType   INTEGER,
	    hostNotifType        INTEGER,
	    hostNotifSampleTime  Integer32,
	    hostNotifObjectValue Integer32,
	    hostNotifEntryStatus RowStatus
	}

    hostNotifIndex OBJECT-TYPE
	SYNTAX	   INTEGER
	MAX-ACCESS not-accessible
	STATUS	   current
	DESCRIPTION
	    " An unique index for this entry."
    ::= {hostNotifEntry 1}

    hostNotifObject OBJECT-TYPE
	SYNTAX	   OBJECT IDENTIFIER 
	MAX-ACCESS read-create
	STATUS	   current
	DESCRIPTION
	    " The object identifier corresponding to
	    the variable for which the alarm entry is 
	    created.
	    The object identifier includes the actual
	    instance of the variable to monitor.
           
	    For example, to monitor the idle time of 
	    processor whose corresponding hrDeviceTable 
	    index is 2, the manager can set the value
	    of this object to processorIdle.2.

	    If the particular version of the agent 
	    places some restrictions on the object(s)
	    that can be monitored, it should be made
	    clear through the AGENT-CAPABILITIES 
	    statement(s)."
    ::= {hostNotifEntry 2}

    hostNotifThres OBJECT-TYPE
	SYNTAX	   Integer32
	MAX-ACCESS read-write
	STATUS	   current
	DESCRIPTION
	    " The threshold value for the object.
	    The unit of the value for this object 
	    will be that of the object given in the 
	    object defnition. 

	    The semantics of the threshold value will
	    be determined by hostNotifThresType."
    ::= {hostNotifEntry 3}

    hostNotifThresType  OBJECT-TYPE
	SYNTAX     INTEGER { delta (1),absolute(2)}
	MAX-ACCESS read-write
	STATUS	   current
	DESCRIPTION
	    " The semantics of the threshold.

	    * value = delta
	    This means that the difference 
	    in the value of the object specified by 
	    hostNotifObject between two time intervals
	    will be compared against the value specified
	    by hostNotifThres.  The time interval is 
	    specified by hostNotifSampleTime.
 
	    * value = absolute
	    This means that the absolute value of 
	    hostNotifObject at a time interval
	    will be compared against the value specified
	    by hostNotifThres.  The time interval is 
	    specified by hostNotifSampleTime."
	DEFVAL {2}
    ::= {hostNotifEntry 4}


    hostNotifType OBJECT-TYPE
	SYNTAX	   INTEGER { 
		       raising    (1),
		       falling    (2),
		       both	  (3)
		   }
	MAX-ACCESS read-write
	STATUS	   current
	DESCRIPTION
	    " The value of this object determines
	    when a notification will be sent to the
	    manager(s).

	    * value = raising
	    A notification will be sent when the 
	    delta/absolute value of the object 
	    specified by nostNotifObject goes beyond 
	    that of hostNotifThres.

	    * value = falling
	    A notification will be sent when the delta 
	    value of the object specified by 
	    hostNotifObject goes below that of 
	    hostNotifThres.

	    * value = both
	    On both the conditions given above, a 
	    notification will be sent."
    ::= {hostNotifEntry 5}

    hostNotifSampleTime OBJECT-TYPE
	SYNTAX	   Integer32
	MAX-ACCESS read-write
	STATUS	   current
	DESCRIPTION
	    " The time interval at which the agent will
	    monitor the value of the object specified 
	    by hostNotifObject.
	    The difference between the value obtained 
	    at the time intervals will be compared 
	    against hostNotifThres."
    ::= {hostNotifEntry 6}

    hostNotifObjectValue OBJECT-TYPE
	SYNTAX	   Integer32
	MAX-ACCESS read-only
	STATUS	   current
	DESCRIPTION
	    " The value of the object during the
	    last sample time.  The semantics of
	    the value depends on the sampleType
	    (hostNotifSampleType)."
    ::= {hostNotifEntry 7}

    hostNotifEntryStatus OBJECT-TYPE
	SYNTAX	   RowStatus
	MAX-ACCESS read-write
	STATUS	   current
	DESCRIPTION
	    " The status of this row.  

	    When a new row is created, the value
	    of this object is set to notReady (3).

	    The manager should set the value to 
	    createAndGo (4) for the agent to start 
	    monitoring the object spcified by 
	    hostNotifObject.  
	    But before changing the status of a 
	    row to createAndGo, the manager should
	    make sure that the values of other 
	    objects have been set to proper values.
	     
	    When the manager queries the value of 
	    this object for a particular row, the
 	    agent will return active (1).

	    When a row is active, the manager cannot
	    modify the value of any other object in 
	    that row.  
	    To modify the value of any object, the 
            manager should :
              * change the status of the row to 
	        notInService (2)
	      * modify the value of the particular 
	        object
	      * change the status of the row to 
	        active (1)

	    To destroy a row, the manager should 
	    change the status of the object to 
	    destroy (6).  The agent will stop 
	    monitoring the variable corresponding
	    to the row."
    ::= {hostNotifEntry 8}



-- The trap which the agent will generate 
-- with respect to the host notification entry

    hostNotifEvent  NOTIFICATION-TYPE
	OBJECTS {
	         hostNotifIndex, 
	         hostNotifObject, 
	         hostNotifObjectValue,
	         hostNotifType
	        }
	STATUS current
	DESCRIPTION 
	   " The trap sent out by the agent, when the
	   value of one of the instances of an object
	   specified in the hostNotifTable goes beyond/
	   below the threshold value."
    ::= {hostNotifTraps 1}




-- This portion of the mib actually provides information
-- on the current level of implementation, variation(s),
-- etc. 


END
