DISMAN-NSLOOKUP-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE,
    Unsigned32, mib-2, Integer32
        FROM SNMPv2-SMI                  -- RFC2578
    RowStatus
        FROM SNMPv2-TC                   -- RFC2579
    MODULE-COMPLIANCE, OBJECT-GROUP
        FROM SNMPv2-CONF                 -- RFC2580
    SnmpAdminString
        FROM SNMP-FRAMEWORK-MIB          -- RFC2571

    InetAddressType, InetAddress
        FROM INET-ADDRESS-MIB;           -- RFC2851

 lookupMIB MODULE-IDENTITY
    LAST-UPDATED "200009210000Z"         -- 21 September 2000
    ORGANIZATION "IETF Distributed Management Working Group"
    CONTACT-INFO
        "Kenneth White

        International Business Machines Corporation
        Network Computing Software Division
        Research Triangle Park, NC, USA

        E-mail: wkenneth@us.ibm.com"
    DESCRIPTION
        "The Lookup MIB (DISMAN-NSLOOKUP-MIB) enables determination
        of either the name(s) corresponding to a host address or of
        the address(es) associated with a host name at a remote host."

     --  Revision history

     REVISION     "200009210000Z"         -- 21 September 2000
     DESCRIPTION
         "Initial version, published as RFC 2925."
    ::= { mib-2 82 }

 -- Top level structure of the MIB

 lookupObjects        OBJECT IDENTIFIER ::= { lookupMIB 1 }
 lookupConformance    OBJECT IDENTIFIER ::= { lookupMIB 2 }

 -- Simple Object Definitions

 lookupMaxConcurrentRequests OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "requests"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
       "The maximum number of concurrent active lookup requests
       that are allowed within an agent implementation.  A value
       of 0 for this object implies that there is no limit for
       the number of concurrent active requests in effect."
    DEFVAL { 10 }
    ::= { lookupObjects 1 }

 lookupPurgeTime OBJECT-TYPE
    SYNTAX      Unsigned32 (0..86400)
    UNITS       "seconds"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
       "The amount of time to wait before automatically
       deleting an entry in the lookupCtlTable and any
       dependent lookupResultsTable entries
       after the lookup operation represented by an
       lookupCtlEntry has completed.

       An lookupCtEntry is considered complete
       when its lookupCtlOperStatus object has a
       value of completed(3)."
    DEFVAL { 900 }  -- 15 minutes as default
    ::= { lookupObjects 2 }

 -- Lookup Control Table

 lookupCtlTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF LookupCtlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Defines the Lookup Control Table for providing
        the capability of performing a lookup operation,
        gethostbyname or gethostbyaddr, from a remote host."
   ::= { lookupObjects 3 }

 lookupCtlEntry OBJECT-TYPE
    SYNTAX      LookupCtlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Defines an entry in the lookupCtlTable.  A
        lookupCtlEntry is initially indexed by
        lookupCtlOwnerIndex, which is of type SnmpAdminString,
        a textual convention that allows for use of the SNMPv3
        View-Based Access Control Model (RFC 2575 [11], VACM)
        and also allows an management application to identify
        its entries.  The second index element,
        lookupCtlOperationName, enables the same
        lookupCtlOwnerIndex entity to have multiple outstanding
        requests.

        The value of lookupCtlTargetAddressType determines which
        lookup function to perform.  Specification of dns(16)

        as the value of this index implies that the gethostbyname
        function should be performed to determine the numeric
        addresses associated with a symbolic name via
        lookupResultsTable entries.  Use of a value of either
        ipv4(1) or ipv6(2) implies that the gethostbyaddr function
        should be performed to determine the symbolic name(s)
        associated with a numeric address at a remote host."
    INDEX {
             lookupCtlOwnerIndex,
             lookupCtlOperationName
          }
    ::= { lookupCtlTable 1 }

 LookupCtlEntry ::=
    SEQUENCE {
        lookupCtlOwnerIndex         SnmpAdminString,
        lookupCtlOperationName      SnmpAdminString,
        lookupCtlTargetAddressType  InetAddressType,
        lookupCtlTargetAddress      InetAddress,
        lookupCtlOperStatus         INTEGER,
        lookupCtlTime               Unsigned32,
        lookupCtlRc                 Integer32,
        lookupCtlRowStatus          RowStatus
    }

 lookupCtlOwnerIndex OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE(0..32))
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
       "To facilitate the provisioning of access control by a
       security administrator using the View-Based Access
       Control Model (RFC 2575, VACM) for tables in which
       multiple users may need to independently create or
       modify entries, the initial index is used as an 'owner
       index'.  Such an initial index has a syntax of
       SnmpAdminString, and can thus be trivially mapped to a
       securityName or groupName as defined in VACM, in
       accordance with a security policy.

       When used in conjunction with such a security policy all
       entries in the table belonging to a particular user (or
       group) will have the same value for this initial index.
       For a given user's entries in a particular table, the
       object identifiers for the information in these entries
       will have the same subidentifiers (except for the
       'column' subidentifier) up to the end of the encoded
       owner index. To configure VACM to permit access to this

       portion of the table, one would create
       vacmViewTreeFamilyTable entries with the value of
       vacmViewTreeFamilySubtree including the owner index
       portion, and vacmViewTreeFamilyMask 'wildcarding' the
       column subidentifier.  More elaborate configurations
       are possible."
    ::= { lookupCtlEntry 1 }

 lookupCtlOperationName OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE(0..32))
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The name of a lookup operation.  This is locally unique,
        within the scope of an lookupCtlOwnerIndex."
    ::= { lookupCtlEntry 2 }

 lookupCtlTargetAddressType OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Specifies the type of address for either performing a
        gethostbyname or a gethostbyaddr function at a remote host.
        Specification of dns(16) as the value for this object
        means that the gethostbyname function should be performed
        to return one or more numeric addresses.  Use of a value
        of either ipv4(1) or ipv6(2) means that the gethostbyaddr
        function should be used to return the symbolic names
        associated with a remote host."
    ::= { lookupCtlEntry 3 }

 lookupCtlTargetAddress OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Specifies the address used for a resolver lookup at a
        remote host.  The corresponding lookupCtlAddressType
        objects determines its type as well as the function
        that can be requested.

        A value for this object MUST be set prior to
        transitioning its corresponding lookupCtlEntry to
        active(1) via lookupCtlRowStatus."
    ::= { lookupCtlEntry 4 }

 lookupCtlOperStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                   notStarted(2), -- operation has not started
                   completed(3)   -- operation is done
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Reflects the operational state of an lookupCtlEntry:

           enabled(1)    - Operation is active.
           notStarted(2) - Operation has not been enabled.
           completed(3)  - Operation has completed.

         An operation is automatically enabled(1) when its
         lookupCtlRowStatus object is transitioned to active(1)
         status.  Until this occurs lookupCtlOperStatus MUST
         report a value of notStarted(2).  After the lookup
         operation completes (success or failure) the value
         for lookupCtlOperStatus MUST be transitioned to
         completed(3)."
    ::= { lookupCtlEntry 5 }

 lookupCtlTime OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "milliseconds"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Reports the number of milliseconds that a lookup
        operation required to be completed at a remote host.
        Completed means operation failure as well as
        success."
    ::= { lookupCtlEntry 6 }

 lookupCtlRc OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The system specific return code from a lookup
        operation.  All implementations MUST return a value
        of 0 for this object when the remote lookup
        operation succeeds.  A non-zero value for this
        objects indicates failure.  It is recommended that
        implementations that support errno use it as the
        value of this object to aid a management
        application in determining the cause of failure."
    ::= { lookupCtlEntry 7 }

 lookupCtlRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object allows entries to be created and deleted
        in the lookupCtlTable.

        A remote lookup operation is started when an
        entry in this table is created via an SNMP SET
        request and the entry is activated.  This
        occurs by setting the value of this object
        to CreateAndGo(4) during row creation or
        by setting this object to active(1) after
        the row is created.

        A value MUST be specified for lookupCtlTargetAddress
        prior to a transition to active(1) state being
        accepted.

        A remote lookup operation starts when its entry
        first becomes active(1).  Transitions in and
        out of active(1) state have no effect on the
        operational behavior of a remote lookup
        operation, with the exception that deletion of
        an entry in this table by setting its RowStatus
        object to destroy(6) will stop an active
        remote lookup operation.

        The operational state of a remote lookup operation
        can be determined by examination of its
        lookupCtlOperStatus object."
    REFERENCE
        "See definition of RowStatus in RFC 2579,
        'Textual Conventions for SMIv2.'"
    ::= { lookupCtlEntry 8 }

-- Lookup Results Table

 lookupResultsTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF LookupResultsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Defines the Lookup Results Table for providing
        the capability of determining the results of a
        operation at a remote host.

        One or more entries are added to the
        lookupResultsTable when a lookup operation,
        as reflected by an lookupCtlEntry, completes
        successfully.  All entries related to a
        successful lookup operation MUST be added
        to the lookupResultsTable at the same time
        that the associating lookupCtlOperStatus
        object is transitioned to completed(2).

        The number of entries added depends on the
        results determined for a particular lookup
        operation.  All entries associated with an
        lookupCtlEntry are removed when the
        lookupCtlEntry is deleted.

        A remote host can be multi-homed and have more
        than one IP address associated with it
        (gethostbyname results) and/or it can have more
        than one symbolic name (gethostbyaddr results).

        The gethostbyaddr function is called with a
        host address as its parameter and is used
        primarily to determine a symbolic name to
        associate with the host address.  Entries in
        the lookupResultsTable MUST be made for each
        host name returned.  The official host name MUST
        be assigned a lookupResultsIndex of 1.

        The gethostbyname function is called with a
        symbolic host name and is used primarily to
        retrieve a host address.  If possible the
        primary host address SHOULD be assigned a
        lookupResultsIndex of 1."
   ::= { lookupObjects 4 }

 lookupResultsEntry OBJECT-TYPE
    SYNTAX      LookupResultsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Defines an entry in the lookupResultsTable.  The
        first two index elements identify the
        lookupCtlEntry that a lookupResultsEntry belongs
        to.  The third index element selects a single
        lookup operation result."
    INDEX {
             lookupCtlOwnerIndex,
             lookupCtlOperationName,
             lookupResultsIndex
          }
    ::= { lookupResultsTable 1 }

 LookupResultsEntry ::=
    SEQUENCE {
        lookupResultsIndex        Unsigned32,
        lookupResultsAddressType  InetAddressType,
        lookupResultsAddress      InetAddress
     }

 lookupResultsIndex OBJECT-TYPE
    SYNTAX      Unsigned32 (1..'ffffffff'h)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Entries in the lookupResultsTable are created when
        the result of a lookup operation is determined.

        Entries MUST be stored in the lookupResultsTable in
        the order that they are retrieved.  Values assigned
        to lookupResultsIndex MUST start at 1 and increase
        in order."
    ::= { lookupResultsEntry 1 }

 lookupResultsAddressType OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Indicates the type of result of a remote lookup
        operation.  A value of unknown(0) implies that
        either the operation hasn't been started or that
        it has failed."
    ::= { lookupResultsEntry 2 }

 lookupResultsAddress OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Reflects a result for a remote lookup operation
        as per the value of lookupResultsAddressType."
    ::= { lookupResultsEntry 3 }

 -- Conformance information
 -- Compliance statements

 lookupCompliances OBJECT IDENTIFIER ::= { lookupConformance 1 }
 lookupGroups      OBJECT IDENTIFIER ::= { lookupConformance 2 }

 -- Compliance statements

 lookupCompliance MODULE-COMPLIANCE
    STATUS  current
    DESCRIPTION
            "The compliance statement for the DISMAN-NSLOOKUP-MIB."
    MODULE  -- this module
        MANDATORY-GROUPS {
                            lookupGroup
                          }

        OBJECT lookupMaxConcurrentRequests
        MIN-ACCESS  read-only
        DESCRIPTION
            "The agent is not required to support SET
            operations to this object."

        OBJECT lookupPurgeTime
        MIN-ACCESS  read-only
        DESCRIPTION
            "The agent is not required to support a SET
            operation to this object."
    ::= { lookupCompliances 1 }

 -- MIB groupings

 lookupGroup OBJECT-GROUP
   OBJECTS {
             lookupMaxConcurrentRequests,
             lookupPurgeTime,
             lookupCtlOperStatus,
             lookupCtlTargetAddressType,
             lookupCtlTargetAddress,
             lookupCtlTime,
             lookupCtlRc,
             lookupCtlRowStatus,
             lookupResultsAddressType,
             lookupResultsAddress
           }
   STATUS  current
   DESCRIPTION
       "The group of objects that comprise the remote
       Lookup operation."
    ::= { lookupGroups 1 }

END
