-- extracted from rfc2925.txt
-- at Wed Oct  4 07:11:21 2000

DISMAN-NSLOOKUP-MIB DEFINITIONS ::= BEGIN

IMPORTS
        MODULE-IDENTITY,
        OBJECT-TYPE,
        Unsigned32,
        mib-2,
        Integer32
                FROM SNMPv2-SMI
        RowStatus
                FROM SNMPv2-TC
        MODULE-COMPLIANCE,
        OBJECT-GROUP
                FROM SNMPv2-CONF
        SnmpAdminString
                FROM SNMP-FRAMEWORK-MIB
        InetAddressType,
        InetAddress
                FROM INET-ADDRESS-MIB;

-- RFC2851

lookupMIB MODULE-IDENTITY
        LAST-UPDATED "200009210000Z"       -- Sep 21, 2000 12:00:00 AM
        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 "200009210000Z"   -- Sep 21, 2000 12:00:00 AM
        DESCRIPTION
               "Initial version, published as RFC 2925."
 -- 1.3.6.1.2.1.82 --  ::= { mib-2 82 }


-- Top level structure of the MIB

lookupObjects OBJECT IDENTIFIER 
 -- 1.3.6.1.2.1.82.1 --  ::= { lookupMIB 1 }

lookupConformance OBJECT IDENTIFIER 
 -- 1.3.6.1.2.1.82.2 --  ::= { 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 }
 -- 1.3.6.1.2.1.82.1.1 --  ::= { 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 }
 -- 1.3.6.1.2.1.82.1.2 --  ::= { 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."
 -- 1.3.6.1.2.1.82.1.3 --  ::= { 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 }
 -- 1.3.6.1.2.1.82.1.3.1 --  ::= { 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."
 -- 1.3.6.1.2.1.82.1.3.1.1 --  ::= { 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."
 -- 1.3.6.1.2.1.82.1.3.1.2 --  ::= { 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."
 -- 1.3.6.1.2.1.82.1.3.1.3 --  ::= { 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."
 -- 1.3.6.1.2.1.82.1.3.1.4 --  ::= { 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)."
 -- 1.3.6.1.2.1.82.1.3.1.5 --  ::= { 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."
 -- 1.3.6.1.2.1.82.1.3.1.6 --  ::= { 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."
 -- 1.3.6.1.2.1.82.1.3.1.7 --  ::= { 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.'"
 -- 1.3.6.1.2.1.82.1.3.1.8 --  ::= { 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."
 -- 1.3.6.1.2.1.82.1.4 --  ::= { 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 }
 -- 1.3.6.1.2.1.82.1.4.1 --  ::= { lookupResultsTable 1 }


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


lookupResultsIndex OBJECT-TYPE
        SYNTAX Unsigned32 (1..4294967295)
        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."
 -- 1.3.6.1.2.1.82.1.4.1.1 --  ::= { 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."
 -- 1.3.6.1.2.1.82.1.4.1.2 --  ::= { 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."
 -- 1.3.6.1.2.1.82.1.4.1.3 --  ::= { lookupResultsEntry 3 }


-- Conformance information
-- Compliance statements

lookupCompliances OBJECT IDENTIFIER 
 -- 1.3.6.1.2.1.82.2.1 --  ::= { lookupConformance 1 }

lookupGroups OBJECT IDENTIFIER 
 -- 1.3.6.1.2.1.82.2.2 --  ::= { lookupConformance 2 }


-- Compliance statements

lookupCompliance MODULE-COMPLIANCE
        STATUS current
        DESCRIPTION
               "The compliance statement for the DISMAN-NSLOOKUP-MIB."

        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."
 -- 1.3.6.1.2.1.82.2.1.1 --  ::= { 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."
 -- 1.3.6.1.2.1.82.2.2.1 --  ::= { lookupGroups 1 }

END
-- 
--    Copyright (C) The Internet Society (2000).  All Rights Reserved.
-- 
--    This document and translations of it may be copied and furnished to
--    others, and derivative works that comment on or otherwise explain it
--    or assist in its implementation may be prepared, copied, published
--    and distributed, in whole or in part, without restriction of any
--    kind, provided that the above copyright notice and this paragraph are
--    included on all such copies and derivative works.  However, this
--    document itself may not be modified in any way, such as by removing
--    the copyright notice or references to the Internet Society or other
--    Internet organizations, except as needed for the purpose of
--    developing Internet standards in which case the procedures for
--    copyrights defined in the Internet Standards process must be
--    followed, or as required to translate it into languages other than
--    English.
-- 
--    The limited permissions granted above are perpetual and will not be
--    revoked by the Internet Society or its successors or assigns.
-- 
--    This document and the information contained herein is provided on an
--    "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
--    TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
--    BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
--    HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
--    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
--