AGENTX-MIB DEFINITIONS ::= BEGIN

IMPORTS
 MODULE-IDENTITY, OBJECT-TYPE, Unsigned32, mib-2
    FROM SNMPv2-SMI
 SnmpAdminString
    FROM SNMP-FRAMEWORK-MIB
 MODULE-COMPLIANCE, OBJECT-GROUP
    FROM SNMPv2-CONF
 TEXTUAL-CONVENTION, TimeStamp, TruthValue, TDomain
    FROM SNMPv2-TC;
agentxMIB MODULE-IDENTITY
 LAST-UPDATED "200001100000Z" -- Midnight 10 January 2000
 ORGANIZATION "AgentX Working Group"
 CONTACT-INFO "WG-email:   agentx@dorothy.bmc.com
               Subscribe:  agentx-request@dorothy.bmc.com
               WG-email Archive:  ftp://ftp.peer.com/pub/agentx/archives
               FTP repository:  ftp://ftp.peer.com/pub/agentx
               http://www.ietf.org/html.charters/agentx-charter.html

               Chair:      Bob Natale
                           ACE*COMM Corporation
               Email:      bnatale@acecomm.com

               WG editor:  Mark Ellison
                           Ellison Software Consulting, Inc.
               Email:      ellison@world.std.com

               Co-author:  Lauren Heintz
                           Cisco Systems,
               EMail:      lheintz@cisco.com

               Co-author:  Smitha Gudur
                           Independent Consultant
               Email:      sgudur@hotmail.com
              "
 DESCRIPTION    "This is the MIB module for the SNMP Agent Extensibility
     Protocol (AgentX).  This MIB module will be implemented by
     the master agent.
    "

  REVISION     "200001100000Z" -- Midnight 10 January 2000
 DESCRIPTION
    "Initial version published as RFC 2742."
  ::= { mib-2  74 }

 -- Textual Conventions

 AgentxTAddress ::= TEXTUAL-CONVENTION
   STATUS       current
   DESCRIPTION
     "Denotes a transport service address.  This is identical to
      the TAddress textual convention (SNMPv2-SMI) except that
      zero-length values are permitted.
     "
   SYNTAX       OCTET STRING (SIZE (0..255))

 -- Administrative assignments

 agentxObjects OBJECT IDENTIFIER      ::= { agentxMIB 1 }
 agentxGeneral OBJECT IDENTIFIER      ::= { agentxObjects 1 }
 agentxConnection OBJECT IDENTIFIER   ::= { agentxObjects 2 }
 agentxSession OBJECT IDENTIFIER      ::= { agentxObjects 3 }
 agentxRegistration OBJECT IDENTIFIER ::= { agentxObjects 4 }

 agentxDefaultTimeout OBJECT-TYPE
  SYNTAX      INTEGER (0..255)
  UNITS       "seconds"
  MAX-ACCESS  read-only
  STATUS      current
  DESCRIPTION
     "The default length of time, in seconds, that the master
      agent should allow to elapse after dispatching a message
      to a session before it regards the subagent as not
      responding.  This is a system-wide value that may
      override the timeout value associated with a particular
      session (agentxSessionTimeout) or a particular registered
      MIB region (agentxRegTimeout).  If the associated value of
      agentxSessionTimeout and agentxRegTimeout are zero, or
      impractical in accordance with implementation-specific
      procedure of the master agent, the value represented by
      this object will be the effective timeout value for the

      master agent to await a response to a dispatch from a
      given subagent.
     "
  DEFVAL      { 5 }
  ::= { agentxGeneral 1 }

 agentxMasterAgentXVer OBJECT-TYPE
  SYNTAX      INTEGER (1..255)
  MAX-ACCESS  read-only
  STATUS      current
  DESCRIPTION
     "The AgentX protocol version supported by this master agent.
      The current protocol version is 1.  Note that the master agent
      must also allow interaction with earlier version subagents.
     "
  ::= { agentxGeneral 2 }

 --      The AgentX Subagent Connection Group

 agentxConnTableLastChange OBJECT-TYPE
  SYNTAX      TimeStamp
  MAX-ACCESS  read-only
  STATUS      current
  DESCRIPTION
     "The value of sysUpTime when the last row creation or deletion
      occurred in the agentxConnectionTable.
     "
  ::= { agentxConnection 1 }

 agentxConnectionTable OBJECT-TYPE
   SYNTAX      SEQUENCE OF AgentxConnectionEntry
   MAX-ACCESS  not-accessible
   STATUS      current
   DESCRIPTION
     "The agentxConnectionTable tracks all current AgentX transport
      connections.  There may be zero, one, or more AgentX sessions
      carried on a given AgentX connection.
     "
   ::= { agentxConnection 2 }

 agentxConnectionEntry OBJECT-TYPE
   SYNTAX      AgentxConnectionEntry
   MAX-ACCESS  not-accessible
   STATUS      current
   DESCRIPTION
     "An agentxConnectionEntry contains information describing a
      single AgentX transport connection.  A connection may be

      used to support zero or more AgentX sessions.  An entry is
      created when a new transport connection is established,
      and is destroyed when the transport connection is terminated.
     "
   INDEX { agentxConnIndex }
   ::= { agentxConnectionTable 1 }

 AgentxConnectionEntry ::= SEQUENCE {
          agentxConnIndex            Unsigned32,
          agentxConnOpenTime         TimeStamp,
          agentxConnTransportDomain  TDomain,
          agentxConnTransportAddress AgentxTAddress }

 agentxConnIndex OBJECT-TYPE
   SYNTAX       Unsigned32 (1..4294967295)
   MAX-ACCESS   not-accessible
   STATUS       current
   DESCRIPTION
     "agentxConnIndex contains the value that uniquely identifies
      an open transport connection used by this master agent
      to provide AgentX service.  Values of this index should
      not be re-used.  The value assigned to a given transport
      connection is constant for the lifetime of that connection.
     "
   ::= { agentxConnectionEntry 1 }

 agentxConnOpenTime OBJECT-TYPE
   SYNTAX       TimeStamp
   MAX-ACCESS   read-only
   STATUS       current
   DESCRIPTION
     "The value of sysUpTime when this connection was established
      and, therefore, its value when this entry was added to the table.
     "
   ::= { agentxConnectionEntry 2 }

 agentxConnTransportDomain OBJECT-TYPE
   SYNTAX       TDomain
   MAX-ACCESS   read-only
   STATUS       current
   DESCRIPTION
     "The transport protocol in use for this connection to the
      subagent.
     "
   ::= { agentxConnectionEntry 3 }

 agentxConnTransportAddress OBJECT-TYPE
   SYNTAX       AgentxTAddress
   MAX-ACCESS   read-only
   STATUS       current
   DESCRIPTION
     "The transport address of the remote (subagent) end of this
      connection to the master agent.  This object may be zero-length
      for unix-domain sockets (and possibly other types of transport
      addresses) since the subagent need not bind a filename to its
      local socket.
     "
   ::= { agentxConnectionEntry 4 }

 -- The AgentX Subagent Session Group

 agentxSessionTableLastChange OBJECT-TYPE
  SYNTAX      TimeStamp
  MAX-ACCESS  read-only
  STATUS      current
  DESCRIPTION
     "The value of sysUpTime when the last row creation or deletion
      occurred in the agentxSessionTable.
     "
  ::= { agentxSession 1 }

 agentxSessionTable OBJECT-TYPE
  SYNTAX      SEQUENCE OF AgentxSessionEntry
  MAX-ACCESS  not-accessible
  STATUS      current
  DESCRIPTION
     "A table of AgentX subagent sessions currently in effect.
     "
  ::= { agentxSession 2 }

 agentxSessionEntry OBJECT-TYPE
  SYNTAX      AgentxSessionEntry
  MAX-ACCESS  not-accessible
  STATUS      current
  DESCRIPTION
     "Information about a single open session between the AgentX
      master agent and a subagent is contained in this entry.  An
      entry is created when a new session is successfully established
      and is destroyed either when the subagent transport connection
      has terminated or when the subagent session is closed.
     "
  INDEX       { agentxConnIndex, agentxSessionIndex }
  ::= { agentxSessionTable 1 }

 AgentxSessionEntry ::= SEQUENCE {
  agentxSessionIndex         Unsigned32,
  agentxSessionObjectID      OBJECT IDENTIFIER,
  agentxSessionDescr         SnmpAdminString,
  agentxSessionAdminStatus   INTEGER,
  agentxSessionOpenTime      TimeStamp,
  agentxSessionAgentXVer     INTEGER,
  agentxSessionTimeout       INTEGER
 }

 agentxSessionIndex OBJECT-TYPE
  SYNTAX      Unsigned32 (0..4294967295)
  MAX-ACCESS  not-accessible
  STATUS      current
  DESCRIPTION
     "A unique index for the subagent session.  It is the same as
      h.sessionID defined in the agentx header.  Note that if
      a subagent's session with the master agent is closed for
      any reason its index should not be re-used.
      A value of zero(0) is specifically allowed in order
      to be compatible with the definition of h.sessionId.
     "
  ::= { agentxSessionEntry 1 }

 agentxSessionObjectID OBJECT-TYPE
  SYNTAX      OBJECT IDENTIFIER
  MAX-ACCESS  read-only
  STATUS      current
  DESCRIPTION
     "This is taken from the o.id field of the agentx-Open-PDU.
      This attribute will report a value of '0.0' for subagents
      not supporting the notion of an AgentX session object
      identifier.
     "
  ::= { agentxSessionEntry 2 }

 agentxSessionDescr OBJECT-TYPE
  SYNTAX      SnmpAdminString
  MAX-ACCESS  read-only
  STATUS      current
  DESCRIPTION
     "A textual description of the session.  This is analogous to
      sysDescr defined in the SNMPv2-MIB in RFC 1907 [19] and is
      taken from the o.descr field of the agentx-Open-PDU.
      This attribute will report a zero-length string value for
      subagents not supporting the notion of a session description.
     "
  ::= { agentxSessionEntry 3 }

 agentxSessionAdminStatus OBJECT-TYPE
  SYNTAX      INTEGER {
                 up(1),
                 down(2)
              }
  MAX-ACCESS  read-write
  STATUS      current
  DESCRIPTION
     "The administrative (desired) status of the session.  Setting
      the value to 'down(2)' closes the subagent session (with c.reason
      set to 'reasonByManager').
     "
  ::= { agentxSessionEntry 4 }

 agentxSessionOpenTime OBJECT-TYPE
  SYNTAX      TimeStamp
  MAX-ACCESS  read-only
  STATUS      current
  DESCRIPTION
     "The value of sysUpTime when this session was opened and,
      therefore, its value when this entry was added to the table.
     "
  ::= { agentxSessionEntry 5 }

 agentxSessionAgentXVer OBJECT-TYPE
  SYNTAX      INTEGER (1..255)
  MAX-ACCESS  read-only
  STATUS      current
  DESCRIPTION
     "The version of the AgentX protocol supported by the
      session.  This must be less than or equal to the value of
      agentxMasterAgentXVer.
     "
  ::= { agentxSessionEntry 6 }

 agentxSessionTimeout OBJECT-TYPE
  SYNTAX     INTEGER (0..255)
  UNITS      "seconds"
  MAX-ACCESS read-only
  STATUS     current
  DESCRIPTION
     "The length of time, in seconds, that a master agent should
      allow to elapse after dispatching a message to this session
      before it regards the subagent as not responding.  This value
      is taken from the o.timeout field of the agentx-Open-PDU.
      This is a session-specific value that may be overridden by
      values associated with the specific registered MIB regions
      (see agentxRegTimeout). A value of zero(0) indicates that
      the master agent's default timeout value should be used

      (see agentxDefaultTimeout).
     "
  ::= { agentxSessionEntry 7 }

 -- The AgentX Registration Group

 agentxRegistrationTableLastChange OBJECT-TYPE
  SYNTAX      TimeStamp
  MAX-ACCESS  read-only
  STATUS      current
  DESCRIPTION
     "The value of sysUpTime when the last row creation or deletion
      occurred in the agentxRegistrationTable.
     "
  ::= { agentxRegistration 1 }

 agentxRegistrationTable OBJECT-TYPE
  SYNTAX      SEQUENCE OF AgentxRegistrationEntry
  MAX-ACCESS  not-accessible
  STATUS      current
  DESCRIPTION
     "A table of registered regions.
     "
  ::= { agentxRegistration 2 }

 agentxRegistrationEntry OBJECT-TYPE
  SYNTAX      AgentxRegistrationEntry
  MAX-ACCESS  not-accessible
  STATUS      current
  DESCRIPTION
     "Contains information for a single registered region.  An
      entry is created when a session  successfully registers a
      region and is destroyed for any of three reasons: this region
      is unregistered by the session, the session is closed,
      or the subagent connection is closed.
     "
  INDEX       { agentxConnIndex, agentxSessionIndex, agentxRegIndex }
  ::= { agentxRegistrationTable 1 }

 AgentxRegistrationEntry ::= SEQUENCE {
  agentxRegIndex           Unsigned32,
  agentxRegContext         OCTET STRING,
  agentxRegStart           OBJECT IDENTIFIER,
  agentxRegRangeSubId      Unsigned32,
  agentxRegUpperBound      Unsigned32,
  agentxRegPriority        Unsigned32,
  agentxRegTimeout         INTEGER,
  agentxRegInstance        TruthValue }

 agentxRegIndex OBJECT-TYPE
  SYNTAX      Unsigned32 (1..4294967295)
  MAX-ACCESS  not-accessible
  STATUS      current
  DESCRIPTION
     "agentxRegIndex uniquely identifies a registration entry.
      This value is constant for the lifetime of an entry.
     "
  ::= { agentxRegistrationEntry 1 }

 agentxRegContext OBJECT-TYPE
  SYNTAX      OCTET STRING
  MAX-ACCESS  read-only
  STATUS      current
  DESCRIPTION
     "The context in which the session supports the objects in this
      region.  A zero-length context indicates the default context.
     "
  ::= { agentxRegistrationEntry 2 }

 agentxRegStart OBJECT-TYPE
  SYNTAX      OBJECT IDENTIFIER
  MAX-ACCESS  read-only
  STATUS      current
  DESCRIPTION
     "The starting OBJECT IDENTIFIER of this registration entry.  The
      session identified by agentxSessionIndex implements objects
      starting at this value (inclusive).  Note that this value could
      identify an object type, an object instance, or a partial object
      instance.
     "
  ::= { agentxRegistrationEntry 3 }

 agentxRegRangeSubId OBJECT-TYPE
  SYNTAX      Unsigned32
  MAX-ACCESS  read-only
  STATUS      current
  DESCRIPTION
     "agentxRegRangeSubId is used to specify the range.  This is
      taken from r.region_subid in the registration PDU.  If the value
      of this object is zero, no range is specified.  If it is non-zero,
      it identifies the `nth' sub-identifier in r.region for which
      this entry's agentxRegUpperBound value is substituted in the
      OID for purposes of defining the region's upper bound.
     "
  ::= { agentxRegistrationEntry 4 }

 agentxRegUpperBound OBJECT-TYPE
  SYNTAX      Unsigned32
  MAX-ACCESS  read-only
  STATUS      current
  DESCRIPTION
    "agentxRegUpperBound represents the upper-bound sub-identifier in
     a registration.  This is taken from the r.upper_bound in the
     registration PDU.  If agentxRegRangeSubid (r.region_subid) is
     zero, this value is also zero and is not used to define an upper
     bound for this registration.
    "
  ::= { agentxRegistrationEntry 5 }

 agentxRegPriority OBJECT-TYPE
  SYNTAX      Unsigned32
  MAX-ACCESS  read-only
  STATUS      current
  DESCRIPTION
     "The registration priority.  Lower values have higher priority.
      This value is taken from r.priority in the register PDU.
      Sessions should use the value of 127 for r.priority if a
      default value is desired.
     "
  ::= { agentxRegistrationEntry 6 }

 agentxRegTimeout OBJECT-TYPE
  SYNTAX      INTEGER (0..255)
  UNITS       "seconds"
  MAX-ACCESS  read-only
  STATUS      current
  DESCRIPTION
     "The timeout value, in seconds, for responses to
      requests associated with this registered MIB region.
      A value of zero(0) indicates the default value (indicated
      by by agentxSessionTimeout or agentxDefaultTimeout) is to
      be used.  This value is taken from the r.timeout field of
      the agentx-Register-PDU.
     "
  ::= { agentxRegistrationEntry 7 }

 agentxRegInstance OBJECT-TYPE
  SYNTAX      TruthValue
  MAX-ACCESS  read-only
  STATUS      current
  DESCRIPTION
     "The value of agentxRegInstance is `true' for
      registrations for which the INSTANCE_REGISTRATION
      was set, and is `false' for all other registrations.
     "
  ::= { agentxRegistrationEntry 8 }

 -- Conformance Statements for AgentX

 agentxConformance     OBJECT IDENTIFIER ::= { agentxMIB 2 }
 agentxMIBGroups       OBJECT IDENTIFIER ::= { agentxConformance 1 }
 agentxMIBCompliances  OBJECT IDENTIFIER ::= { agentxConformance 2 }

 -- Compliance Statements for AgentX

 agentxMIBCompliance MODULE-COMPLIANCE
  STATUS      current
  DESCRIPTION
     "The compliance statement for SNMP entities that implement the
      AgentX protocol.  Note that a compliant agent can implement all
      objects in this MIB module as read-only.
     "
  MODULE -- this module
     MANDATORY-GROUPS  { agentxMIBGroup }

     OBJECT agentxSessionAdminStatus
        MIN-ACCESS read-only
        DESCRIPTION
           "Write access is not required.
           "
  ::= { agentxMIBCompliances 1 }

 agentxMIBGroup OBJECT-GROUP
  OBJECTS {
     agentxDefaultTimeout,
     agentxMasterAgentXVer,
     agentxConnTableLastChange,
     agentxConnOpenTime,
     agentxConnTransportDomain,
     agentxConnTransportAddress,
     agentxSessionTableLastChange,
     agentxSessionTimeout,
     agentxSessionObjectID,
     agentxSessionDescr,
     agentxSessionAdminStatus,
     agentxSessionOpenTime,
     agentxSessionAgentXVer,
     agentxRegistrationTableLastChange,
     agentxRegContext,
     agentxRegStart,
     agentxRegRangeSubId,
     agentxRegUpperBound,
     agentxRegPriority,
     agentxRegTimeout,
     agentxRegInstance
    }
  STATUS      current
  DESCRIPTION
     "All accessible objects in the AgentX MIB.
     "
  ::= { agentxMIBGroups 1 }

 END
