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

                  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 }

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


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

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

          snmpParties     OBJECT IDENTIFIER ::= { mib-2 20 }
          partyAdmin      OBJECT IDENTIFIER ::= { snmpParties 1 }
          partyPublic     OBJECT IDENTIFIER ::= { snmpParties 2 }

          snmpSecrets     OBJECT IDENTIFIER ::= { mib-2 21 }
          partyPrivate    OBJECT IDENTIFIER ::= { snmpSecrets 1 }
          partyAccess     OBJECT IDENTIFIER ::= { snmpSecrets 2 }
          partyViews      OBJECT IDENTIFIER ::= { snmpSecrets 3 }


          --                  Textual Conventions

          --    A textual convention denoting a SNMP party identifier:

          Party ::= OBJECT IDENTIFIER


          --    A party's authentication clock - a non-negative integer
          -- which is incremented as specified/allowed by the party's
          -- Authentication Protocol.
          --    For noAuth, a party's authentication clock is unused and
          -- its value is undefined.
          --    For md5AuthProtocol, a party's authentication clock is a
          -- relative clock with 1-second granularity.

          Clock ::= INTEGER (0..2147483647)


          --    A textual convention denoting a transport service
          -- address.
          --    For rfc1351Domain, 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.

          TAddress ::= OCTET STRING


          --- Definitions of Security Protocols

          partyProtocols
              OBJECT IDENTIFIER ::= { partyAdmin 1 }

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

          noPriv                  -- The protocol without privacy
              OBJECT IDENTIFIER ::= { partyProtocols 3 }

          desPrivProtocol         -- The DES Privacy Protocol
              OBJECT IDENTIFIER ::= { partyProtocols 4 }

          md5AuthProtocol         -- The MD5 Authentication Protocol
              OBJECT IDENTIFIER ::= { partyProtocols 5 }


          --- definitions of Transport Domains

          transportDomains
              OBJECT IDENTIFIER ::= { partyAdmin 2 }

          rfc1351Domain --- RFC-1351 (SNMP over UDP, using SNMP Parties)
              OBJECT IDENTIFIER ::= { transportDomains 1 }






          --- definitions of Proxy Domains

          proxyDomains
              OBJECT IDENTIFIER ::= { partyAdmin 3 }

          noProxy                --- Local operation
              OBJECT IDENTIFIER ::= { proxyDomains 1 }


          ---    Definition of Initial Party Identifiers

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

          initialPartyId
              OBJECT IDENTIFIER ::= { partyAdmin 4 }

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

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

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

          -- partyIdentity            = { initialPartyId a b c d 1 }
          -- partyTDomain             = { rfc1351Domain }
          -- partyTAddress            = a.b.c.d, 161
          -- partyProxyFor            = { noProxy }
          -- partyAuthProtocol        = { noAuth }
          -- partyAuthClock           = 0
          -- partySecretsAuthPrivate  = ''h    (the empty string)
          -- partyAuthPublic          = ''h    (the empty string)
          -- partyAuthLifetime        = 0
          -- partyPrivProtocol        = { noPriv }
          -- partySecretsPrivPrivate  = ''h    (the empty string)
          -- partyPrivPublic          = ''h    (the empty string)

          -- partyIdentity            = { initialPartyId a b c d 2 }
          -- partyTDomain             = { rfc1351Domain }
          -- partyTAddress            = assigned by local administration
          -- partyProxyFor            = { noProxy }
          -- partyAuthProtocol        = { noAuth }
          -- partyAuthClock           = 0
          -- partySecretsAuthPrivate  = ''h    (the empty string)
          -- partyAuthPublic          = ''h    (the empty string)
          -- partyAuthLifetime        = 0
          -- partyPrivProtocol        = { noPriv }
          -- partySecretsPrivPrivate  = ''h    (the empty string)
          -- partyPrivPublic          = ''h    (the empty string)

          -- partyIdentity            = { initialPartyId a b c d 3 }
          -- partyTDomain             = { rfc1351Domain }
          -- partyTAddress            = a.b.c.d, 161
          -- partyProxyFor            = { noProxy }
          -- partyAuthProtocol        = { md5AuthProtocol }
          -- partyAuthClock           = 0
          -- partySecretsAuthPrivate  = assigned by local administration
          -- partyAuthPublic          = ''h    (the empty string)
          -- partyAuthLifetime        = 300
          -- partyPrivProtocol        = { noPriv }
          -- partySecretsPrivPrivate  = ''h    (the empty string)
          -- partyPrivPublic          = ''h    (the empty string)

          -- partyIdentity            = { initialPartyId a b c d 4 }
          -- partyTDomain             = { rfc1351Domain }
          -- partyTAddress            = assigned by local administration
          -- partyProxyFor            = { noProxy }
          -- partyAuthProtocol        = { md5AuthProtocol }
          -- partyAuthClock           = 0
          -- partySecretsAuthPrivate  = assigned by local administration
          -- partyAuthPublic          = ''h    (the empty string)
          -- partyAuthLifetime        = 300
          -- partyPrivProtocol        = { noPriv }
          -- partySecretsPrivPrivate  = ''h    (the empty string)
          -- partyPrivPublic          = ''h    (the empty string)

          -- partyIdentity            = { initialPartyId a b c d 5 }
          -- partyTDomain             = { rfc1351Domain }
          -- partyTAddress            = a.b.c.d, 161
          -- partyProxyFor            = { noProxy }
          -- partyAuthProtocol        = { md5AuthProtocol }
          -- partyAuthClock           = 0
          -- partySecretsAuthPrivate  = assigned by local administration
          -- partyAuthPublic          = ''h    (the empty string)
          -- partyAuthLifetime        = 300
          -- partyPrivProtocol        = { desPrivProtocol }
          -- partySecretsPrivPrivate  = assigned by local administration
          -- partyPrivPublic          = ''h    (the empty string)

          -- partyIdentity            = { initialPartyId a b c d 6 }
          -- partyTDomain             = { rfc1351Domain }
          -- partyTAddress            = assigned by local administration
          -- partyProxyFor            = { noProxy }
          -- partyAuthProtocol        = { md5AuthProtocol }
          -- partyAuthClock           = 0
          -- partySecretsAuthPrivate  = assigned by local administration
          -- partyAuthPublic          = ''h    (the empty string)
          -- partyAuthLifetime        = 300
          -- partyPrivProtocol        = { desPrivProtocol }
          -- partySecretsPrivPrivate  = assigned by local administration
          -- partyPrivPublic          = ''h   (the empty string)


          --  The initial access control parameters assigned, by
          --  convention, to these parties are:

          -- aclTarget     = { initialPartyId a b c d 1 }
          -- aclSubject    = { initialPartyId a b c d 2 }
          -- aclPrivileges = 3 (Get & Get-Next)

          -- aclTarget     = { initialPartyId a b c d 2 }
          -- aclSubject    = { initialPartyId a b c d 1 }
          -- aclPrivileges = 20 (GetResponse & Trap)

          -- aclTarget     = { initialPartyId a b c d 3 }
          -- aclSubject    = { initialPartyId a b c d 4 }
          -- aclPrivileges = 11 (Get, Get-Next & Set)

          -- aclTarget     = { initialPartyId a b c d 4 }
          -- aclSubject    = { initialPartyId a b c d 3 }
          -- aclPrivileges = 20 (GetResponse & Trap)

          -- aclTarget     = { initialPartyId a b c d 5 }
          -- aclSubject    = { initialPartyId a b c d 6 }
          -- aclPrivileges = 11 (Get, Get-Next & Set)

          -- aclTarget     = { initialPartyId a b c d 6 }
          -- aclSubject    = { initialPartyId a b c d 5 }
          -- aclPrivileges = 20 (GetResponse & Trap)
          --  The initial MIB views assigned, by convention, to
          --  these parties are:

          -- viewParty    = { initialPartyId a b c d 1 }
          -- viewSubtree  = { system }
          -- viewStatus   = { included }
          -- viewMask     = { ''h }

          -- viewParty    = { initialPartyId a b c d 1 }
          -- viewSubtree  = { snmpParties }
          -- viewStatus   = { included }
          -- viewMask     = { ''h }

          -- viewParty    = { initialPartyId a b c d 3 }
          -- viewSubtree  = { internet }
          -- viewStatus   = { included }
          -- viewMask     = { ''h }

          -- viewParty    = { initialPartyId a b c d 3 }
          -- viewSubtree  = { partyPrivate }
          -- viewStatus   = { excluded }
          -- viewMask     = { ''h }

          -- viewParty    = { initialPartyId a b c d 5 }
          -- viewSubtree  = { internet }
          -- viewStatus   = { included }
          -- viewMask     = { ''h }


          --   The SNMP Party Public Database Group
          --
          -- The non-secret party information.
          --
          -- Implementation of the objects in this group is mandatory.

          partyTable OBJECT-TYPE
              SYNTAX  SEQUENCE OF PartyEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "The SNMP Party Public database.

                      An agent must ensure that there is, at all times,
                      a one-to-one correspondence between entries in
                      this table and entries in the partySecretsTable.

                      The creation/deletion of instances in this table
                      via SNMP Set-Requests is not allowed.  Instead,
                      entries in this table are created/deleted as a
                      side-effect of the creation/deletion of
                      corresponding entries in the partySecretsTable.

                      Thus, a SNMP Set-Request whose varbinds contain a
                      reference to a non-existent instance of a
                      partyTable object, but no reference to the
                      corresponding instance of a partySecretsTable
                      object, will be rejected."
          ::= { partyPublic 1 }

          partyEntry OBJECT-TYPE
              SYNTAX  PartyEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "Locally held non-secret information about a
                      particular SNMP party, which is available for
                      access by network management.  Note that this does
                      not include all locally held information about a
                      party.  In particular, it does not include the
                      'last-timestamp' (i.e., the timestamp of the last
                      authentic message received) or the 'nonce'
                      values."
              INDEX  { partyIdentity }
              ::= { partyTable 1 }

          PartyEntry ::=
              SEQUENCE {
                  partyIdentity
                      Party,
                  partyTDomain
                      OBJECT IDENTIFIER,
                  partyTAddress
                      TAddress,
                  partyProxyFor
                      Party,
                  partyAuthProtocol
                      OBJECT IDENTIFIER,
                  partyAuthClock
                      Clock,
                  partyAuthPublic
                      OCTET STRING,
                  partyAuthLifetime
                      INTEGER,
                  partyPrivProtocol
                      OBJECT IDENTIFIER,
                  partyPrivPublic
                      OCTET STRING,
                  partyMaxMessageSize
                      INTEGER,
                  partyStatus
                      INTEGER
              }

          partyIdentity  OBJECT-TYPE
              SYNTAX  Party
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "A party identifier uniquely identifying a
                      particular SNMP party."
              ::= { partyEntry 1 }

          partyTDomain  OBJECT-TYPE
              SYNTAX  OBJECT IDENTIFIER
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "Indicates the kind of transport service by which
                      the party receives network management traffic. An
                      example of a transport domain is 'rfc1351Domain'
                      (SNMP over UDP)."
              DEFVAL  { rfc1351Domain }
              ::= { partyEntry 2 }

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

          partyProxyFor OBJECT-TYPE
              SYNTAX  Party
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "The identity of a second SNMP party or other
                      management entity with which interaction may be
                      necessary to satisfy received management requests.
                      In this context, the distinguished value { noProxy
                      } signifies that the party responds to received
                      management requests by entirely local mechanisms."
              DEFVAL  { noProxy }
              ::= { partyEntry 4 }

          partyAuthProtocol OBJECT-TYPE
              SYNTAX  OBJECT IDENTIFIER
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "The authentication protocol by which all messages
                      generated by the party are authenticated as to
                      origin and integrity.  In this context, the value
                      { noAuth } signifies that messages generated by
                      the party are not authenticated."
              DEFVAL  { md5AuthProtocol }
              ::= { partyEntry 5 }

          partyAuthClock OBJECT-TYPE
              SYNTAX  Clock
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "The authentication clock which represents the
                      local notion of the current time specific to the
                      party.  This value must not be decremented unless
                      the party's secret information is changed
                      simultaneously, at which time the party's nonce
                      and last-timestamp values must also be reset to
                      zero, and the new value of the clock,
                      respectively."
              DEFVAL  { 0 }
              ::= { partyEntry 6 }

          partyAuthPublic OBJECT-TYPE
              SYNTAX  OCTET STRING -- for md5AuthProtocol: (SIZE (0..16))
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "A publically-readable value for the party.

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

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

          partyAuthLifetime OBJECT-TYPE
              SYNTAX  INTEGER (0..2147483647)
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "The lifetime (in units of seconds) which
                      represents an administrative upper bound on
                      acceptable delivery delay for protocol messages
                      generated by the party."
              DEFVAL  { 300 }
              ::= { partyEntry 8 }

          partyPrivProtocol OBJECT-TYPE
              SYNTAX  OBJECT IDENTIFIER
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "The privacy protocol by which all protocol
                      messages received by the party are protected from
                      disclosure.  In this context, the value { noPriv }
                      signifies that messages received by the party are
                      not protected."
              DEFVAL  { noPriv }
              ::= { partyEntry 9 }

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

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

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

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

          partyStatus OBJECT-TYPE
              SYNTAX  INTEGER  { valid(1), invalid(2) }
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The status of the locally-held information on a
                      particular SNMP party.

                      The instance of this object for a particular party
                      and the instance of partySecretsStatus for the
                      same party always have the same value.

                      This object will typically provide unrestricted
                      read-only access to the status of parties.  In
                      contrast, partySecretsStatus will typically
                      provide restricted read-write access to the status
                      of parties."
              ::= { partyEntry 12 }


          --   The SNMP Party Secrets Database Group

          -- The secret party information
          --
          -- Implementation of the objects in this group is mandatory.

          partySecretsTable OBJECT-TYPE
              SYNTAX  SEQUENCE OF PartySecretsEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "The SNMP Party Secrets database."
          ::= { partyPrivate 1 }

          partySecretsEntry OBJECT-TYPE
              SYNTAX  PartySecretsEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "Locally held secret information about a
                      particular SNMP party, which is available for
                      access by network management.

                      When a SNMP Set-Request is used to update the
                      values of instances of objects in this table, it
                      is recommended that the same SNMP Set-Request also
                      alter the value of a non-secret object instance
                      (e.g., an instance of partyAuthPublic or
                      partyPrivPublic).  This allows a Get-Request of
                      that non-secret object instance to determine if
                      the Set-Request was successful in the event that
                      no response which matches the Set-Request is
                      received, see RFC 1352."
              INDEX  { partySecretsIdentity }
              ::= { partySecretsTable 1 }

          PartySecretsEntry ::=
              SEQUENCE {
                  partySecretsIdentity
                      Party,
                  partySecretsAuthPrivate
                      OCTET STRING,
                  partySecretsPrivPrivate
                      OCTET STRING,
                  partySecretsStatus
                      INTEGER
              }

          partySecretsIdentity  OBJECT-TYPE
              SYNTAX  Party
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "A party identifier uniquely identifying a
                      particular SNMP party."
              ::= { partySecretsEntry 1 }

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

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

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

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

          partySecretsStatus OBJECT-TYPE
              SYNTAX  INTEGER  { valid(1), invalid(2) }
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "The status of the locally-held information on a
                      particular SNMP party.
                      Setting an instance of this object to the value
                      'valid(1)' has the effect of ensuring that valid
                      local knowledge exists for the corresponding
                      party.  For valid local knowledge to exist, there
                      must be corresponding instances of each object in
                      this table and in the partyTable.  Thus, the
                      creation of instances in the partyTable (but not
                      in the aclTable or viewTable) occurs as a direct
                      result of the creation of instances in this table.

                      Setting an instance of this object to the value
                      'invalid(2)' has the effect of invalidating all
                      local knowledge of the corresponding party,
                      including the invalidating of any/all entries in
                      the partyTable, the partySecretsTable, the
                      aclTable, and the viewTable which reference said
                      party.

                      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 from agents tabular
                      information corresponding to entries not currently
                      in use.  Proper interpretation of such entries
                      requires examination of the relevant
                      partySecretsStatus object."
              DEFVAL  { valid }
              ::= { partySecretsEntry 4 }


          --  The SNMP Access Privileges Database Group

          --  This group of objects allows the SNMP itself to be used to
          --  configure new SNMP parties, or to manipulate the access
          --  privileges of existing parties.
          --
          --  Implementation of the objects in this group is mandatory.


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


          aclEntry OBJECT-TYPE
              SYNTAX  AclEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "The access privileges for a particular requesting
                      SNMP party in accessing a particular target SNMP
                      party."
              INDEX  { aclTarget, aclSubject }
              ::= { aclTable 1 }

          AclEntry ::=
              SEQUENCE {
                  aclTarget
                      Party,
                  aclSubject
                      Party,
                  aclPrivileges
                      INTEGER,
                  aclStatus
                      INTEGER
              }

          aclTarget OBJECT-TYPE
              SYNTAX  Party
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "The target SNMP party whose performance of
                      management operations is constrained by this set
                      of access privileges."
              ::= { aclEntry 1 }

          aclSubject OBJECT-TYPE
              SYNTAX  Party
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "The subject SNMP party whose requests for
                      management operations to be performed is
                      constrained by this set of access privileges."
              ::= { aclEntry 2 }

          aclPrivileges OBJECT-TYPE
              SYNTAX  INTEGER (0..31)
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "The access privileges which govern what
                      management operations a particular target party
                      may perform when requested by a particular subject
                      party.  These privileges are specified as a sum of
                      values, where each value specifies a SNMP PDU type
                      by which the subject party may request a permitted
                      operation.  The value for a particular PDU type is
                      computed as 2 raised to the value of the ASN.1
                      context-specific tag for the appropriate SNMP PDU
                      type.  The values (for the tags defined in RFC
                      1157) are defined in RFC 1351 as:

                       Get         :   1
                       GetNext     :   2
                       GetResponse :   4
                       Set         :   8
                       Trap        :  16

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

          aclStatus OBJECT-TYPE
              SYNTAX  INTEGER  { valid(1), invalid(2) }
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "The status of the access privileges for a
                      particular requesting SNMP party in accessing a
                      particular target SNMP party.  Setting an instance
                      of this object to the value 'invalid(2)' has the
                      effect of invalidating the corresponding access
                      privileges.

                      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 from agents tabular
                      information corresponding to entries not currently
                      in use.  Proper interpretation of such entries
                      requires examination of the relevant aclStatus
                      object."
              DEFVAL  { valid }
              ::= { aclEntry 4 }




          --   The MIB View Database Group

          --  This group of objects allows the SNMP itself to be used to
          --  configure new SNMP parties, or to manipulate the MIB
          --  MIB views of existing parties.
          --
          --  Implementation of the objects in this group is mandatory.


          viewTable OBJECT-TYPE
              SYNTAX  SEQUENCE OF ViewEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "The table contained in the local database which
                      defines local MIB views.  Each SNMP party has a
                      single MIB view which is defined by two
                      collections of view subtrees: the included view
                      subtrees, and the excluded view subtrees.  Every
                      such subtree, both included and excluded, is
                      defined in this table.

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

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

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

          viewEntry OBJECT-TYPE
              SYNTAX  ViewEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "Information on a particular family of view
                      subtrees included in or excluded from a particular
                      SNMP party's MIB view."
              INDEX  { viewParty, viewSubtree }
              ::= { viewTable 1 }

          ViewEntry ::=
              SEQUENCE {
                  viewParty
                      Party,
                  viewSubtree
                      OBJECT IDENTIFIER,
                  viewStatus
                      INTEGER,
                  viewMask
                      OCTET STRING
              }

          viewParty  OBJECT-TYPE
              SYNTAX  Party
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "The SNMP party whose single MIB view includes or
                      excludes a particular family of view subtrees."
              ::= { viewEntry 1 }

          viewSubtree OBJECT-TYPE
              SYNTAX  OBJECT IDENTIFIER
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "The view subtree which, in combination with the
                      corresponding instance of viewMask, defines a
                      family of view subtrees.  This family is included
                      in, or excluded from the particular SNMP party's
                      MIB view, according to the value of the
                      corresponding instance of viewStatus."
              ::= { viewEntry 2 }

          viewStatus OBJECT-TYPE
              SYNTAX  INTEGER  {
                          included(1),
                          excluded(2),
                          invalid(3)
                      }
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "The status of a particular family of view
                      subtrees within the particular SNMP party's MIB
                      view.  The value 'included(1)' indicates that the
                      corresponding instances of viewSubtree and
                      viewMask define a family of view subtrees included
                      in the MIB view.  The  value 'excluded(2)'
                      indicates that the corresponding instances of
                      viewSubtree and viewMask define a family of view
                      subtrees excluded from the MIB view.

                      Setting an instance of this object to the value
                      'invalid(3)' has the effect of invalidating the
                      presence or absence of the corresponding family of
                      view subtrees in the corresponding SNMP party's
                      MIB view.

                      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 from agents tabular
                      information corresponding to entries not currently
                      in use.  Proper interpretation of such entries
                      requires examination of the relevant viewStatus
                      object."
              DEFVAL  { included }
              ::= { viewEntry 3 }

          viewMask  OBJECT-TYPE
              SYNTAX  OCTET STRING (SIZE (0..16))
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "The bit mask which, in combination with the
                      corresponding instance of viewSubtree, defines a
                      family of view subtrees.
                      Each bit of this bit mask corresponds to a sub-
                      identifier of viewSubtree, with the most
                      significant bit of the i-th octet of this octet
                      string value (extended if necessary, see below)
                      corresponding to the (8*i - 7)-th sub-identifier,
                      and the least significant bit of the i-th octet of
                      this octet string corresponding to the (8*i)-th
                      sub-identifier, where i is in the range 1 through
                      16.

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

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

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

                                the i-th bit of viewMask is 0, or

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

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

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



          -- compliance statement for SMP protocol entities

          smp            OBJECT IDENTIFIER ::=
                              { joint-iso-ccitt mhs(6) group(6) mtr(200) 4 }
          smpMappings    OBJECT IDENTIFIER ::= { smp 1 }
          smpObjects     OBJECT IDENTIFIER ::= { smp 2 }

          smpProtocols   OBJECT IDENTIFIER ::= { smp 3 }
          smpMD5AuthProtocol OBJECT IDENTIFIER ::= { smpProtocols 1 }
          smp-compliance OBJECT IDENTIFIER ::= { smpObjects 1 }

          smp-mib-compliance MODULE-COMPLIANCE
		MODULE      RFC1213-MIB
                  MANDATORY-GROUPS { system, snmp }
              -- although the snmp group is mandated, a SMP entity will
              -- not implement these objects:
              --
              --          snmpInBadVersions
              --          snmpInBadCommunityNames
              --          snmpInBadCommunityUses

              MODULE      RFC1351-MIB
                  MANDATORY-GROUPS { partyTable, partySecretsTable,
                                     aclTable, viewTable }

              MODULE      -- this module
                  MANDATORY-GROUPS { smpInOut, smpOR, smpTrap, smpSet }
              ::= { smp-compliance 1 }










          -- the SMP input/output group

          smpInOut OBJECT-GROUP
              OBJECTS { smpInGetBulkRequests, smpOutGetBulkRequests,
                        smpInInformRequests, smpOutInformRequests,
                        smpInTraps, smpOutTraps, smpOutReadOnlys,
                        smpInNoAccesses, smpOutNoAccesses,
                        smpInWrongTypes, smpOutWrongTypes,
                        smpInWrongLengths, smpOutWrongLengths,
                        smpInWrongEncodings, smpOutWrongEncodings,
                        smpInWrongValues, smpOutWrongValues,
                        smpInNoCreations, smpOutNoCreations,
                        smpInInconsistentValues,
                        smpOutInconsistentValues,
                        smpInResourceUnavailables,
                        smpOutResourceUnavailables,
                        smpInCommitFaileds, smpOutCommitFaileds,
                        smpInUndoFaileds, smpOutUndoFaileds,
                        smpInAuthorizationErrors,
                        smpOutAuthorizationErrors,
                        smpInNotWritables, smpOutNotWritables,
                        smpInNoSuchObjects, smpOutNoSuchObjects,
                        smpInNoSuchInstances, smpOutNoSuchInstances,
                        smpInEndOfMibViews, smpOutEndOfMibViews,
                        smpInUnknownSrcParties, smpInUnknownDstParties,
                        smpInBadAuths, smpInNotInLifetimes,
                        smpInWrongDigestValues, smpInBadOperations,
                        smpInSilentDrops }
              DESCRIPTION
                      "A collection of objects providing basic
                      instrumentation of the SMP entity."
              ::= { smpObjects 2 }


          smpInGetBulkRequests OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SMP Get-Bulk PDUs which have
                      been accepted and processed by the SMP entity."
              ::= { smpInOut 1 }

          smpOutGetBulkRequests OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SMP Get-Bulk PDUs which have
                      been generated by the SMP entity."
              ::= { smpInOut 2 }

          smpInInformRequests OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SMP Inform-Request PDUs which
                      have been accepted and processed by the SMP
                      entity."
              ::= { smpInOut 3 }

          smpOutInformRequests OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SMP Inform-Request PDUs which
                      have been generated by the SMP entity."
              ::= { smpInOut 4 }

          smpInTraps OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SMP-Trap PDUs which have been
                      accepted and processed by the SMP entity."
              ::= { smpInOut 5 }

          smpOutTraps OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SMP-Trap PDUs which have been
                      generated by the SMP entity."
              ::= { smpInOut 6 }

          smpOutReadOnlys OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SMP PDUs which were generated
                      by the SMP entity and for which the value of the
                      error-status field is `readOnly'.  (Only a SMP
                      entity acting in the role of a proxy agent may
                      generate a PDU which contains the `read-only'
                      value in the error-status field.)"
              ::= { smpInOut 7 }

          smpInNoAccesses OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SMP PDUs which were delivered
                      to the SMP entity and for which the value of the
                      error-status field is `noAccess'."
              ::= { smpInOut 8 }

          smpOutNoAccesses OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SMP PDUs which were generated
                      by the SMP entity and for which the value of the
                      error-status field is `noAccess'."
              ::= { smpInOut 9 }

          smpInWrongTypes OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SMP PDUs which were delivered
                      to the SMP entity and for which the value of the
                      error-status field is `wrongType'."
              ::= { smpInOut 10 }

          smpOutWrongTypes OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SMP PDUs which were generated
                      by the SMP entity and for which the value of the
                      error-status field is `wrongType'."
              ::= { smpInOut 11 }

          smpInWrongLengths OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SMP PDUs which were delivered
                      to the SMP entity and for which the value of the
                      error-status field is `wrongLength'."
              ::= { smpInOut 12 }

          smpOutWrongLengths OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SMP PDUs which were generated
                      by the SMP entity and for which the value of the
                      error-status field is `wrongLength'."
              ::= { smpInOut 13 }

          smpInWrongEncodings OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SMP PDUs which were delivered
                      to the SMP entity and for which the value of the
                      error-status field is `wrongEncoding'."
              ::= { smpInOut 14 }

          smpOutWrongEncodings OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SMP PDUs which were generated
                      by the SMP entity and for which the value of the
                      error-status field is `wrongEncoding'."
              ::= { smpInOut 15 }

          smpInWrongValues OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SMP PDUs which were delivered
                      to the SMP entity and for which the value of the
                      error-status field is `wrongValue'."
              ::= { smpInOut 16 }

          smpOutWrongValues OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SMP PDUs which were generated
                      by the SMP entity and for which the value of the
                      error-status field is `wrongValue'."
              ::= { smpInOut 17 }

          smpInNoCreations OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SMP PDUs which were delivered
                      to the SMP entity and for which the value of the
                      error-status field is `noCreation'."
              ::= { smpInOut 18 }

          smpOutNoCreations OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SMP PDUs which were generated
                      by the SMP entity and for which the value of the
                      error-status field is `noCreation'."
              ::= { smpInOut 19 }

          smpInInconsistentValues OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SMP PDUs which were delivered
                      to the SMP entity and for which the value of the
                      error-status field is `inconsistentValue'."
              ::= { smpInOut 20 }

          smpOutInconsistentValues OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SMP PDUs which were generated
                      by the SMP entity and for which the value of the
                      error-status field is `inconsistentValue'."
              ::= { smpInOut 21 }

          smpInResourceUnavailables OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SMP PDUs which were delivered
                      to the SMP entity and for which the value of the
                      error-status field is `resourceUnavailable'."
              ::= { smpInOut 22 }

          smpOutResourceUnavailables OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SMP PDUs which were generated
                      by the SMP entity and for which the value of the
                      error-status field is `resourceUnavailable'."
              ::= { smpInOut 23 }

          smpInCommitFaileds OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SMP PDUs which were delivered
                      to the SMP entity and for which the value of the
                      error-status field is `commitFailed'."
              ::= { smpInOut 24 }

          smpOutCommitFaileds OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SMP PDUs which were generated
                      by the SMP entity and for which the value of the
                      error-status field is `commitFailed'."
              ::= { smpInOut 25 }

          smpInUndoFaileds OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SMP PDUs which were delivered
                      to the SMP entity and for which the value of the
                      error-status field is `undoFailed'."
              ::= { smpInOut 26 }

          smpOutUndoFaileds OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SMP PDUs which were generated
                      by the SMP entity and for which the value of the
                      error-status field is `undoFailed'."
              ::= { smpInOut 27 }

          smpInAuthorizationErrors OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SMP PDUs which were delivered
                      to the SMP entity and for which the value of the
                      error-status field is `authorizationError'."
              ::= { smpInOut 28 }

          smpOutAuthorizationErrors OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SMP PDUs which were generated
                      by the SMP entity and for which the value of the
                      error-status field is `authorizationError'."
              ::= { smpInOut 29 }

          smpInNotWritables OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SMP PDUs which were delivered
                      to the SMP entity and for which the value of the
                      error-status field is `notWritable'."
              ::= { smpInOut 30 }

          smpOutNotWritables OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SMP PDUs which were generated
                      by the SMP entity and for which the value of the
                      error-status field is `notWritable'."
              ::= { smpInOut 31 }

          smpInNoSuchObjects OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of variable bindings contained
                      with SMP Response PDUs which were delivered to the
                      SMP entity and for which the value of the error-
                      status field is `noError' and the type of the
                      binding was `noSuchObject'."
              ::= { smpInOut 32 }

          smpOutNoSuchObjects OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of variable bindings contained
                      with SMP Response PDUs which were generated by the
                      SMP entity and for which the value of the error-
                      status field is `noError' and the type of the
                      binding was `noSuchObject'."
              ::= { smpInOut 33 }

          smpInNoSuchInstances OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of variable bindings contained
                      with SMP Response PDUs which were delivered to the
                      SMP entity and for which the value of the error-
                      status field is `noError' and the type of the
                      binding was `noSuchInstance'."
              ::= { smpInOut 34 }

          smpOutNoSuchInstances OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of variable bindings contained
                      with SMP Response PDUs which were generated by the
                      SMP entity and for which the value of the error-
                      status field is `noError' and the type of the
                      binding was `noSuchInstance'."
              ::= { smpInOut 35 }

          smpInEndOfMibViews OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of variable bindings contained
                      with SMP Response PDUs which were delivered to the
                      SMP entity and for which the value of the error-
                      status field is `noError' and the type of the
                      binding was `endOfMibView'."
              ::= { smpInOut 36 }

          smpOutEndOfMibViews OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of variable bindings contained
                      with SMP Response PDUs which were generated by the
                      SMP entity and for which the value of the error-
                      status field is `noError' and the type of the
                      binding was `endOfMibView'."
              ::= { smpInOut 37 }

          smpInUnknownSrcParties OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SmpAuthMsgs delivered to the
                      SMP entity for which the authData.srcParty field
                      was not a known remote party."
              ::= { smpInOut 38 }

          smpInUnknownDstParties OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SmpAuthMsgs delivered to the
                      SMP entity for which the authData.dstParty field
                      was not a known local party."
              ::= { smpInOut 39 }

          smpInBadAuths OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SmpAuthMsgs delivered to the
                      SMP entity which contained an authInfo field which
                      was inconsistent with the authentication protocol
                      associated with the source party."
              ::= { smpInOut 40 }

          smpInNotInLifetimes OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SmpAuthMsgs delivered to the
                      SMP entity which were deemed unauthentic due to
                      their authInfo.authSrcTimestamp field being less
                      than the source party's clock plus lifetime."
              ::= { smpInOut 41 }

          smpInWrongDigestValues OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of SmpAuthMsgs delivered to the
                      SMP entity which were deemed unauthentic due to
                      their authInfo.authDigest field being unequal to
                      the expected digest value."
              ::= { smpInOut 42 }

          smpInBadOperations OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The total number of messages delivered to the SMP
                      entity which were silently dropped because the PDU
                      type was inappropriate for the role in which the
                      SMP entity is configured to act; i.e., a SMP
                      entity acting in an agent role will silently drop
                      the following PDU types: Response-PDU,
                      InformRequest-PDU, and SMP-Trap-PDU; whilst a SMP
                      entity acting in a manager role will silently drop
                      the following PDU types: GetRequest-PDU,
                      GetNextRequest-PDU, GetBulkRequest-PDU, and
                      SetRequest-PDU."
              ::= { smpInOut 43 }

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


          -- the object resource group

          smpOR OBJECT-GROUP
              OBJECTS { smpORLastChange, smpORIndex, smpORID,
                        smpORDescr }
              DESCRIPTION
                      "A collection of objects allowing a SMP entity
                      acting in an agent role to describe its
                      dynamically-configurable object resources."
              ::= { smpObjects 3 }


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

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

          smpOREntry OBJECT-TYPE
              SYNTAX     SmpOREntry
              MAX-ACCESS not-accessible
              STATUS     mandatory
              DESCRIPTION
                      "An entry (conceptual row) in the smpORTable."
              INDEX      { smpORIndex }
              ::= { smpORTable 1 }

          SmpOREntry ::= SEQUENCE {
              smpORIndex                          Integer32,
              smpORID                             OBJECT IDENTIFIER,
              smpORDescr                          DisplayString
          }

          smpORIndex OBJECT-TYPE
              SYNTAX     Integer32
              MAX-ACCESS not-accessible
              STATUS     mandatory
              DESCRIPTION
                      "The auxiliary variable used for identifying
                      instances of the columnar objects in the
                      smpORTable."
                  ::= { smpOREntry 1 }

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

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









          -- the traps group

          smpTrap OBJECT-GROUP
              OBJECTS { smpTrapOID, smpTrapNumbers, smpTrapEnterprise }
              DESCRIPTION
                      "A collection of objects which allow the SMP
                      entity, when acting in an agent role, to be
                      configured to generate SMP-Trap-PDUs."
              ::= { smpObjects 4 }

          smpTrapOID OBJECT-TYPE
              SYNTAX     OBJECT IDENTIFIER
              MAX-ACCESS not-accessible
              STATUS     mandatory
              DESCRIPTION
                      "The authoritative identification of the trap
                      currently being sent.  This variable occurs as the
                      first varbind of a SMP-Trap-PDU."
              ::= { smpTrap 1 }

          smpTrapTable OBJECT-TYPE
              SYNTAX     SEQUENCE OF SmpTrapEntry
              MAX-ACCESS not-accessible
              STATUS     mandatory
              DESCRIPTION
                      "A table which keeps track of how many traps have
                      been sent to each SMP entity."
              ::= { smpTrap 2 }

          smpTrapEntry OBJECT-TYPE
              SYNTAX     SmpTrapEntry
              MAX-ACCESS not-accessible
              STATUS     mandatory
              DESCRIPTION
                      "An entry which keeps track of how many traps have
                      been sent to a particular SMP entity."
              AUGMENTS   { partyEntry }
              ::= { smpTrapTable 1 }

          SmpTrapEntry ::= SEQUENCE {
              smpTrapNumbers                      Counter32
          }

          smpTrapNumbers OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The number of traps which have been sent to a
                      particular SMP party, since the last
                      initialization of the SMP protocol entity, or the
                      creation of the SMP party, which ever occurred
                      most recently."
              ::= { smpTrapEntry 1 }

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


          -- well-known traps

          smpTraps OBJECT IDENTIFIER ::= { smpObjects 5 }


          coldStart TRAP-DEFINITION
              DESCRIPTION
                      "A coldStart trap signifies that the SMP entity,
                      acting in an agent role, is reinitializing itself
                      such that its configuration may be altered."
              ::= { smpTraps 1 }

          warmStart TRAP-DEFINITION
              DESCRIPTION
                      "A warmStart trap signifies that the SMP entity,
                      acting in an agent role, is reinitializing itself
                      such that its configuration is unaltered."
              ::= { smpTraps 2 }

          linkDown TRAP-DEFINITION
              OBJECTS   { ifIndex }
              DESCRIPTION
                      "A linkDown trap signifies that the SMP entity,
                      acting in an agent role, recognizes a failure in
                      one of the communication links represented in its
                      configuration."
              ::= { smpTraps 3 }

          linkUp TRAP-DEFINITION
              OBJECTS   { ifIndex }
              DESCRIPTION
                      "A linkUp trap signifies that the SMP entity,
                      acting in an agent role, recognizes that one of
                      the communication links represented in its
                      configuration has come up."
              ::= { smpTraps 4 }

          authenticationFailure TRAP-DEFINITION
              DESCRIPTION
                      "An authenticationFailure trap signifies that the
                      SMP entity, acting in an agent role, has received
                      a protocol message that is not properly
                      authenticated.  While all implementations of the
                      SMP must be capable of generating this trap, the
                      snmpEnableAuthenTraps object indicates whether
                      this trap will be generated."
              ::= { smpTraps 5 }

          egpNeighborLoss TRAP-DEFINITION
              OBJECTS   { egpNeighAddr }
              DESCRIPTION
                      "An egpNeighborLoss trap signifies that an EGP
                      neighbor has been marked down and the EGP peer
                      relationship no longer obtains."
              ::= { smpTraps 6 }




          -- the set group

          smpSet OBJECT-GROUP
              OBJECTS { smpSetSerialNo }
              DESCRIPTION
                      "A collection of objects which allow several
                      cooperating SMP entities, all acting in a manager
                      role, to coordinate their use of the SMP set
                      operation."
              ::= { smpObjects 6 }

          smpSetSerialNo OBJECT-TYPE
              SYNTAX     TestAndIncr
              MAX-ACCESS read-write
              STATUS     mandatory
              DESCRIPTION
                      "An advisory lock used to allow several
                      cooperating SMP entities, all acting in a manager
                      role, to coordinate their use of the SMP 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."
              ::= { smpSet 1 }


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


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

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

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

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

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

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

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

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

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

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

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

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

          smp-m2m-mib-compliance MODULE-COMPLIANCE
              MODULE      -- this module
                  MANDATORY-GROUPS { smpAlarm, smpEvent }
              ::= { smp-compliance 2 }























          -- the alarm group
          smpAlarm OBJECT-GROUP
              OBJECTS { smpAlarmNextIndex, smpAlarmIndex,
                        smpAlarmSourcePartyID,
                        smpAlarmVariable, smpAlarmInterval,
                        smpAlarmSampleType, smpAlarmValue,
                        smpAlarmStartupAlarm, smpAlarmRisingThreshold,
                        smpAlarmFallingThreshold,
                        smpAlarmRisingEventIndex,
                        smpAlarmFallingEventIndex,
                        smpAlarmUnavailableEventIndex,
                        smpAlarmStatus }
              DESCRIPTION
                      "A collection of objects allowing the description
                      and configuration of threshold alarms from an SMP
                      entity acting in a dual role."
              ::= { smpObjects 7 }

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

          smpAlarmNextIndex OBJECT-TYPE
              SYNTAX     INTEGER (1..65535)
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The index number of the next appropriate
                      unassigned entry in the smpAlarmTable.

                      A management station should create new entries in
                      the smpAlarmTable using this algorithm: first,
                      issue a management protocol retrieval operation to
                      determine the value of smpAlarmNextIndex; and,
                      second, issue a management protocol set operation
                      to create an instance of the smpAlarmStatus object
                      setting its value to `underCreation(1)'.  If this
                      latter operation succeeds, then the management
                      station may continue modifying the instances
                      corresponding to the newly created conceptual row,
                      without fear of collision with other management
                      stations."
              ::= { smpAlarm 1 }

          smpAlarmTable OBJECT-TYPE
              SYNTAX     SEQUENCE OF SmpAlarmEntry
              MAX-ACCESS not-accessible
              STATUS     mandatory
              DESCRIPTION
                      "A list of smpAlarm entries."
              ::= { smpAlarm 2 }

          smpAlarmEntry OBJECT-TYPE
              SYNTAX     SmpAlarmEntry
              MAX-ACCESS not-accessible
              STATUS     mandatory
              DESCRIPTION
                      "A list of parameters that set up a periodic
                      sampling query to check for alarm conditions.  The
                      partyIdentity included in the INDEX clause is the
                      sampling destination party, i.e., the party to
                      which the sampling queries are directed."
              INDEX      { partyIdentity, smpAlarmIndex }
              ::= { smpAlarmTable 1 }

          SmpAlarmEntry ::= SEQUENCE {
              smpAlarmIndex                    INTEGER,
              smpAlarmSourcePartyID            Party,
              smpAlarmVariable                 ObjectName,
              smpAlarmInterval                 Integer32,
              smpAlarmSampleType               INTEGER,
              smpAlarmValue                    Integer32,
              smpAlarmStartupAlarm             INTEGER,
              smpAlarmRisingThreshold          Integer32,
              smpAlarmFallingThreshold         Integer32,
              smpAlarmRisingEventIndex         INTEGER,
              smpAlarmFallingEventIndex        INTEGER,
              smpAlarmUnavailableEventIndex    INTEGER,
              smpAlarmStatus                   RowStatus
          }

          smpAlarmIndex OBJECT-TYPE
              SYNTAX     INTEGER (1..65535)
              MAX-ACCESS not-accessible
              STATUS     mandatory
              DESCRIPTION
                      "An index that uniquely identifies an entry in the
                      smpAlarm table for a particular sampling
                      destination party.  Each such entry defines a
                      diagnostic sample at a particular interval for a
                      variable in the particular party's MIB view."
              ::= { smpAlarmEntry 1 }

          smpAlarmSourcePartyID OBJECT-TYPE
              SYNTAX     Party
              MAX-ACCESS read-create
              STATUS     mandatory
              DESCRIPTION
                      "The sampling source party, i.e., the source party
                      to be used to query the variable's value.  This
                      party must be local to the SMP entity acting in a
                      dual role."
              ::= { smpAlarmEntry 2 }

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

                      If it is detected by an error response of
                      authorizationError, noSuchObject, or
                      noSuchInstance that the variable name of an
                      established smpAlarmEntry is no longer available
                      to the sampling destination party, a single
                      objectUnavailableAlarm event is generated and the
                      status of this smpAlarmEntry is changed to
                      `underDestruction(2)'.  Likewise, if the syntax of
                      the variable retrieved by the query is not
                      Integer32, Counter32, Gauge32, TimeTicks, or
                      Counter64, the same actions will be taken.

                      If the SMP entity acting in a dual role detects
                      that the sampled value can not be obtained due to
                      lack of response to management queries, it should
                      set the status of this smpAlarmEntry to
                      `underDestruction(2)' if it is determined that
                      further communication is not possible; or delete
                      the associated smpAlarmValue instance (but not the
                      entire conceptual row) and continue to attempt to
                      sample the variable and recreate the associated
                      smpAlarmValue instance should communication be
                      reestablished.

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

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

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

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

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

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

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

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

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

                      An attempt to modify this object will fail with an
                      `inconsistentValue' error if the associated
                      smpAlarmStatus object would be equal to
                      `active(4)' both before and after the modification
                      attempt."
              DEFVAL { risingOrFallingAlarm }
              ::= { smpAlarmEntry 7 }

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

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

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

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

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

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

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

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

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

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

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

                      An attempt to modify this object will fail with an
                      `inconsistentValue' error if the associated
                      smpAlarmStatus object would be equal to
                      `active(4)' both before and after the modification
                      attempt."
              ::= { smpAlarmEntry 12 }

          smpAlarmStatus OBJECT-TYPE
              SYNTAX     RowStatus
              MAX-ACCESS read-create
              STATUS     mandatory
              DESCRIPTION
                      "The status of this smpAlarm entry.  This object
                      may not be set to `active(4)' unless the following
                      columnar objects exist in this row:
                      smpAlarmSourcePartyID, smpAlarmVariable,
                      smpAlarmInterval, smpAlarmSampleType,
                      smpAlarmStartupAlarm, smpAlarmRisingThreshold,
                      smpAlarmFallingThreshold,
                      smpAlarmRisingEventIndex,
                      smpAlarmFallingEventIndex, and
                      smpAlarmUnavailableEventIndex."
              ::= { smpAlarmEntry 13 }






























          -- alarm-related traps

          smpAlarmEvents OBJECT IDENTIFIER ::= { smpAlarm 3 }

          risingAlarm TRAP-DEFINITION
              OBJECTS { smpAlarmVariable, smpAlarmSampleType, smpAlarmValue,
                        smpAlarmRisingThreshold }
              DESCRIPTION
                      "An event that is generated when an alarm entry
                      crosses its rising threshold.  The instances of
                      those objects contained within the varbind list
                      are those of the alarm entry which generated this
                      event."
              ::= { smpAlarmEvents 1 }

          fallingAlarm TRAP-DEFINITION
              OBJECTS { smpAlarmVariable, smpAlarmSampleType, smpAlarmValue,
                        smpAlarmFallingThreshold }
              DESCRIPTION
                      "An event that is generated when an alarm entry
                      crosses its falling threshold.  The instances of
                      those objects contained within the varbind list
                      are those of the alarm entry which generated this
                      event."
              ::= { smpAlarmEvents 2 }

          objectUnavailableAlarm TRAP-DEFINITION
              OBJECTS { smpAlarmVariable }
              DESCRIPTION
                      "An event that is generated when a variable
                      monitored by an alarm entry becomes unavailable.
                      The instance of smpAlarmVariable contained within
                      the varbind list is the one associated with the
                      alarm entry which generated this event."
              ::= { smpAlarmEvents 3 }










          -- the event group
          smpEvent OBJECT-GROUP
              OBJECTS { smpEventNextIndex, smpEventIndex,
                        smpEventID, smpEventDescription,
                        smpEventEvents, smpEventLastTimeSent,
                        smpEventStatus, smpEventNotifyMinInterval,
                        smpEventNotifyMaxRetransmissions,
                        smpEventNotifySrcParty,
                        smpEventNotifyIntervalRequested,
                        smpEventNotifyRetransmissionsRequested,
                        smpEventNotifyLifetime, smpEventNotifyStatus }
              DESCRIPTION
                      "A collection of objects allowing the description
                      and configuration of events from an SMP entity
                      acting in a dual role."
              ::= { smpObjects 8 }

          -- The smpEvent table defines the set of events generated on a SMP
          -- entity acting in a dual role.  Each entry in the smpEventTable
          -- associates an event type with the notification method and
          -- associated parameters.  Some smpEvent entries are fired by an
          -- associated condition in the smpAlarmTable.  Others are
          -- fired on behalf of conditions defined in the TRAP-DEFINITION
          -- macro.  The smpNotificationTable defines notifications that
          -- should occur when an associated event is fired.

          smpEventNextIndex OBJECT-TYPE
              SYNTAX     INTEGER (1..65535)
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The index number of the next appropriate
                      unassigned entry in the smpEventTable.

                      A management station should create new entries in
                      the smpEventTable using this algorithm: first,
                      issue a management protocol retrieval operation to
                      determine the value of smpEventNextIndex; and,
                      second, issue a management protocol set operation
                      to create an instance of the smpEventStatus object
                      setting its value to `underCreation(1)'.  If this
                      latter operation succeeds, then the management
                      station may continue modifying the instances
                      corresponding to the newly created conceptual row,
                      without fear of collision with other management
                      stations."
              ::= { smpEvent 1 }

          smpEventTable OBJECT-TYPE
              SYNTAX     SEQUENCE OF SmpEventEntry
              MAX-ACCESS not-accessible
              STATUS     mandatory
              DESCRIPTION
                      "A list of events."
              ::= { smpEvent 2 }

          smpEventEntry OBJECT-TYPE
              SYNTAX     SmpEventEntry
              MAX-ACCESS not-accessible
              STATUS     mandatory
              DESCRIPTION
                      "A set of parameters that describe an event that
                      is generated when certain conditions are met."
              INDEX      { smpEventIndex }
              ::= { smpEventTable 1 }

          SmpEventEntry ::= SEQUENCE {
              smpEventIndex          INTEGER,
              smpEventID             OBJECT IDENTIFIER,
              smpEventDescription    DisplayString,
              smpEventEvents         Counter32,
              smpEventLastTimeSent   TimeStamp,
              smpEventStatus         RowStatus
          }

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

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

          smpEventDescription OBJECT-TYPE
              SYNTAX     DisplayString (SIZE (0..127))
              MAX-ACCESS read-create
              STATUS     mandatory
              DESCRIPTION
                      "A comment describing this smpEvent entry."
              ::= { smpEventEntry 3 }

          smpEventEvents OBJECT-TYPE
              SYNTAX     Counter32
              MAX-ACCESS read-only
              STATUS     mandatory
              DESCRIPTION
                      "The number of events caused by event generators
                      associated with this smpEvent entry."
              ::= { smpEventEntry 4 }

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

          smpEventStatus OBJECT-TYPE
              SYNTAX     RowStatus
              MAX-ACCESS read-create
              STATUS     mandatory
              DESCRIPTION
                      "The status of this smpEvent entry.  This object
                      may not be set to `active(4)' unless the following
                      columnar objects exist in this row: smpEventID,
                      smpEventDescription, smpEventEvents, and
                      smpEventLastTimeSent.

                      Setting an instance of this object to the value
                      any/all entries in the smpEventTable, and the
                      smpEventNotifyTable which reference the
                      corresponding smpEventEntry."
              ::= { smpEventEntry 6 }

          -- The smpEventNotifyTable is used to configure the
          -- destination and type of notifications sent by an SMP
          -- entity acting in a manager role when a particular event
          -- is triggered.

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

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

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

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

          smpEventNotifyTable OBJECT-TYPE
              SYNTAX     SEQUENCE OF SmpEventNotifyEntry
              MAX-ACCESS not-accessible
              STATUS     mandatory
              DESCRIPTION
                      "A list of protocol configuration entries for
                      event notifications from this entity."
              ::= { smpEvent 5 }

          smpEventNotifyEntry OBJECT-TYPE
              SYNTAX     SmpEventNotifyEntry
              MAX-ACCESS not-accessible
              STATUS     mandatory
              DESCRIPTION
                      "A set of parameters that describe the type and
                      destination of InformRequest-PDUs sent for a
                      particular event.  The smpEventIndex in this
                      entry's INDEX clause identifies the smpEventEntry
                      which, when triggered, will generate a
                      notification as configured in this entry.  The
                      partyIdentity in this entry's INDEX clause
                      identifies the destination party to which a
                      notification will be sent."
              INDEX      { smpEventIndex, partyIdentity }
              ::= { smpEventNotifyTable 1 }

          SmpEventNotifyEntry ::= SEQUENCE {
              smpEventNotifySrcParty                 Party,
              smpEventNotifyIntervalRequested        Integer32,
              smpEventNotifyRetransmissionsRequested Integer32,
              smpEventNotifyLifetime                 Integer32,
              smpEventNotifyStatus                   RowStatus
          }

          smpEventNotifySrcParty OBJECT-TYPE
              SYNTAX     Party
              MAX-ACCESS read-create
              STATUS     mandatory
              DESCRIPTION
                      "The source party to be used to send the
                      InformRequest-PDU."
              ::= { smpEventNotifyEntry 1 }

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

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

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

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

          smpEventNotifyLifetime OBJECT-TYPE
              SYNTAX     Integer32
              UNITS      "seconds"
              MAX-ACCESS read-create
              STATUS     mandatory
              DESCRIPTION
                      "The number of seconds this entry shall live until
                      it is put into the underDestruction state.  This
                      value shall count down to zero, at which time the
                      status of this entry will be changed to
                      underDestruction.  Any management station that is
                      using this entry must periodically refresh this
                      value to ensure the continued delivery of events."
              DEFVAL { 86400 }
              ::= { smpEventNotifyEntry 4 }

          smpEventNotifyStatus OBJECT-TYPE
              SYNTAX     RowStatus
              MAX-ACCESS read-create
              STATUS     mandatory
              DESCRIPTION
                      "The state of this smpEventNotifyEntry.  This
                      object may not be set to `active(4)' unless the
                      following columnar objects exist in this row:
                      smpEventNotifySrcParty,
                      smpEventNotifyIntervalRequested,
                      smpEventNotifyRetransmissionsRequested, and
                      smpEventNotifyLifetime."
              ::= { smpEventNotifyEntry 5 }

