SNMP-TARGET-MIB DEFINITIONS ::= BEGIN

IMPORTS
   TEXTUAL-CONVENTION,
   MODULE-IDENTITY,
   OBJECT-TYPE,
   snmpModules,
   Integer32
       FROM SNMPv2-SMI

   TDomain,
   TAddress,
   TimeInterval,
   RowStatus,
   StorageType,
   TestAndIncr
       FROM SNMPv2-TC
   SnmpSecurityModel,
   SnmpMessageProcessingModel,
   SnmpSecurityLevel,
   SnmpAdminString
       FROM SNMP-FRAMEWORK-MIB

   OBJECT-GROUP
       FROM SNMPv2-CONF;

snmpTargetMIB MODULE-IDENTITY
   LAST-UPDATED "9711210000Z"
   ORGANIZATION "IETF SNMPv3 Working Group"
   CONTACT-INFO
       "WG-email:   snmpv3@tis.com
	Subscribe:  majordomo@tis.com
		    In message body:  subscribe snmpv3

	Chair:      Russ Mundy
		    Trusted Information Systems
	Postal:     3060 Washington Rd
		    Glenwood MD 21738
		    USA
	Email:      mundy@tis.com
	Phone:      +1-301-854-6889

	Co-editor:  David B. Levi
		    SNMP Research, Inc.
	Postal:     3001 Kimberlin Heights Road
		    Knoxville, TN 37920-9716
	E-mail:     levi@snmp.com
	Phone:      +1 423 573 1434

	Co-editor:  Paul Meyer
		    Secure Computing Corporation
	Postal:     2675 Long Lake Road
		    Roseville, MN 55113
	E-mail:     paul_meyer@securecomputing.com
	Phone:      +1 612 628 1592

	Co-editor:  Bob Stewart
		    Cisco Systems, Inc.
	Postal:     170 West Tasman Drive
		    San Jose, CA 95134-1706
	E-mail:     bstewart@cisco.com
	Phone:      +1 603 654 6923"
   DESCRIPTION
       "This MIB module defines MIB objects which provide
	mechanisms to remotely configure the parameters used
	by an SNMP entity for the generation of SNMP messages."
   REVISION        "9707140000Z"
   DESCRIPTION
       "The initial revision."
   ::= { snmpModules 12 }

snmpTargetObjects       OBJECT IDENTIFIER ::= { snmpTargetMIB 1 }
snmpTargetConformance   OBJECT IDENTIFIER ::= { snmpTargetMIB 3 }

SnmpTagValue ::= TEXTUAL-CONVENTION
   DISPLAY-HINT "255a"
   STATUS       current
   DESCRIPTION
       "An octet string containing a tag value.
	Tag values are preferably in human-readable form.

	To facilitate internationalization, this information
	is represented using the ISO/IEC IS 10646-1 character
	set, encoded as an octet string using the UTF-8
	character encoding scheme described in RFC 2044.

	Since additional code points are added by amendments
	to the 10646 standard from time to time,
	implementations must be prepared to encounter any code
	point from 0x00000000 to 0x7fffffff.

	The use of control codes should be avoided, and certain
	control codes are not allowed as described below.

	For code points not directly supported by user
	interface hardware or software, an alternative means
	of entry and display, such as hexadecimal, may be
	provided.

	For information encoded in 7-bit US-ASCII, the UTF-8
	representation is identical to the US-ASCII encoding.

	Note that when this TC is used for an object that
	is used or envisioned to be used as an index, then a
	SIZE restriction must be specified so that the number
	sub-identifiers for any object instance do not exceed
	the limit of 128, as defined by [RFC1905].

	An object of this type contains a single tag value
	which is used to select a set of entries in a table.
	A tag value is an arbitrary string of octets, but
	may not contain a delimiter character.  Delimiter
	characters are defined to be one of the following:

	    -  An ASCII space character (0x20).

	    -  An ASCII TAB character (0x09).

	    -  An ASCII carriage return (CR) character (0x0D).

	    -  An ASCII line feed (LF) character (0x0B).

	Delimiter characters are used to separate tag values
	in a tag list.  An object of this type may only
	contain a single tag value, and so delimiter
	characters are not allowed in a value of this type.

	Some examples of valid tag values are:

	    - 'acme'

	    - 'router'

	    - 'host'

	The use of a tag value to select table entries is
	application and MIB specific."
   SYNTAX       OCTET STRING (SIZE (0..255))

SnmpTagList ::= TEXTUAL-CONVENTION
   DISPLAY-HINT "255a"
   STATUS       current
   DESCRIPTION
       "An octet string containing a list of tag values.
	Tag values are preferably in human-readable form.

	To facilitate internationalization, this information
	is represented using the ISO/IEC IS 10646-1 character
	set, encoded as an octet string using the UTF-8
	character encoding scheme described in RFC 2044.
	Since additional code points are added by amendments
	to the 10646 standard from time to time,
	implementations must be prepared to encounter any code
	point from 0x00000000 to 0x7fffffff.

	The use of control codes should be avoided, except as
	described below.

	For code points not directly supported by user
	interface hardware or software, an alternative means
	of entry and display, such as hexadecimal, may be
	provided.

	For information encoded in 7-bit US-ASCII, the UTF-8
	representation is identical to the US-ASCII encoding.

	An object of this type contains a list of tag values
	which are used to select a set of entries in a table.

	A tag value is an arbitrary string of octets, but
	may not contain a delimiter character.  Delimiter
	characters are defined to be one of the following:

	    -  An ASCII space character (0x20).

	    -  An ASCII TAB character (0x09).

	    -  An ASCII carriage return (CR) character (0x0D).

	    -  An ASCII line feed (LF) character (0x0B).

	Delimiter characters are used to separate tag values
	in a tag list.  Only a single delimiter character may
	occur between two tag values.  A tag value may not
	have a zero length.  These constraints imply certain
	restrictions on the contents of this object:

	    - There cannot be a leading or trailing delimiter
	      character.

	    - There cannot be multiple adjacent delimiter
	      characters.

	Some examples of valid tag lists are:

	    - An empty string

	    - 'acme router'
	    - 'host managerStation'

	Note that although a tag value may not have a length of
	zero, an empty string is still valid.  This indicates
	an empty list (i.e. there are no tag values in the list).

	The use of the tag list to select table entries is
	application and MIB specific.  Typically, an application
	will provide one or more tag values, and any entry
	which contains some combination of these tag values
	will be selected."
   SYNTAX       OCTET STRING (SIZE (0..255))

--
--
-- The snmpTargetObjects group
--
--

snmpTargetSpinLock OBJECT-TYPE
   SYNTAX      TestAndIncr
   MAX-ACCESS  read-write
   STATUS      current
   DESCRIPTION
       "This object is used to facilitate modification of table
	entries in the SNMP-TARGET-MIB module by multiple
	managers.  In particular, it is useful when modifying
	the value of the snmpTargetAddrTagList object.

	The procedure for modifying the snmpTargetAddrTagList
	object is as follows:

	    1.  Retrieve the value of snmpTargetSpinLock and
		of snmpTargetAddrTagList.

	    2.  Generate a new value for snmpTargetAddrTagList.

	    3.  Set the value of snmpTargetSpinLock to the
		retrieved value, and the value of
		snmpTargetAddrTagList to the new value.  If
		the set fails for the snmpTargetSpinLock
		object, go back to step 1."
   ::= { snmpTargetObjects 1 }

snmpTargetAddrTable OBJECT-TYPE
   SYNTAX      SEQUENCE OF SnmpTargetAddrEntry
   MAX-ACCESS  not-accessible
   STATUS      current
   DESCRIPTION
       "A table of transport addresses to be used in the generation
	of SNMP messages."

   ::= { snmpTargetObjects 2 }

snmpTargetAddrEntry OBJECT-TYPE
   SYNTAX      SnmpTargetAddrEntry
   MAX-ACCESS  not-accessible
   STATUS      current
   DESCRIPTION
       "A transport address to be used in the generation
	of SNMP operations.

	Entries in the snmpTargetAddrTable are created and
	deleted using the snmpTargetAddrRowStatus object."
   INDEX { IMPLIED snmpTargetAddrName }
   ::= { snmpTargetAddrTable 1 }

SnmpTargetAddrEntry ::= SEQUENCE {
   snmpTargetAddrName         SnmpAdminString,
   snmpTargetAddrTDomain      TDomain,
   snmpTargetAddrTAddress     TAddress,
   snmpTargetAddrTimeout      TimeInterval,
   snmpTargetAddrRetryCount   Integer32,
   snmpTargetAddrTagList      SnmpTagList,
   snmpTargetAddrParams       SnmpAdminString,
   snmpTargetAddrStorageType  StorageType,
   snmpTargetAddrRowStatus    RowStatus
}

snmpTargetAddrName OBJECT-TYPE
   SYNTAX      SnmpAdminString (SIZE(1..32))
   MAX-ACCESS  not-accessible
   STATUS      current
   DESCRIPTION
       "The locally arbitrary, but unique identifier associated
	with this snmpTargetAddrEntry."
   ::= { snmpTargetAddrEntry 1 }

snmpTargetAddrTDomain OBJECT-TYPE
   SYNTAX      TDomain
   MAX-ACCESS  read-create
   STATUS      current
   DESCRIPTION
       "This object indicates the transport type of the address
	contained in the snmpTargetAddrTAddress object."
   ::= { snmpTargetAddrEntry 2 }

snmpTargetAddrTAddress OBJECT-TYPE
   SYNTAX      TAddress
   MAX-ACCESS  read-create
   STATUS      current
   DESCRIPTION
       "This object contains a transport address.  The format of
	this address depends on the value of the
	snmpTargetAddrTDomain object."
   ::= { snmpTargetAddrEntry 3 }

snmpTargetAddrTimeout OBJECT-TYPE
   SYNTAX      TimeInterval
   MAX-ACCESS  read-create
   STATUS      current
   DESCRIPTION
       "This object should reflect the expected maximum round
	trip time for communicating with the transport address
	defined by this row.  When a message is sent to this
	address, and a response (if one is expected) is not
	received within this time period, an implementation
	may assume that the response will not be delivered.

	Note that the time interval that an application waits
	for a response may actually be derived from the value
	of this object.  The method for deriving the actual time
	interval is implementation dependent.  One such method
	is to derive the expected round trip time based on a
	particular retransmission algorithm and on the number
	of timeouts which have occurred.  The type of message may
	also be considered when deriving expected round trip
	times for retransmissions.  For example, if a message is
	being sent with a securityLevel that indicates both
	authentication and privacy, the derived value may be
	increased to compensate for extra processing time spent
	during authentication and encryption processing."
   DEFVAL { 1500 }
   ::= { snmpTargetAddrEntry 4 }

snmpTargetAddrRetryCount OBJECT-TYPE
   SYNTAX      Integer32 (0..255)
   MAX-ACCESS  read-create
   STATUS      current
   DESCRIPTION
       "This object specifies a default number of retries to be
	attempted when a response is not received for a generated
	message.  An application may provide its own retry count,
	in which case the value of this object is ignored."
   DEFVAL { 3 }
   ::= { snmpTargetAddrEntry 5 }

snmpTargetAddrTagList OBJECT-TYPE
   SYNTAX      SnmpTagList
   MAX-ACCESS  read-create
   STATUS      current
   DESCRIPTION
       "This object contains a list of tag values which are
	used to select target addresses for a particular
	operation."
   ::= { snmpTargetAddrEntry 6 }

snmpTargetAddrParams OBJECT-TYPE
   SYNTAX      SnmpAdminString (SIZE(1..32))
   MAX-ACCESS  read-create
   STATUS      current
   DESCRIPTION
       "The value of this object identifies an entry in the
	snmpTargetParamsTable.  The identified entry
	contains SNMP parameters to be used when generating
	messages to be sent to this transport address."
   ::= { snmpTargetAddrEntry 7 }

snmpTargetAddrStorageType OBJECT-TYPE
   SYNTAX      StorageType
   MAX-ACCESS  read-create
   STATUS      current
   DESCRIPTION
       "The storage type for this conceptual row."
   ::= { snmpTargetAddrEntry 8 }

snmpTargetAddrRowStatus OBJECT-TYPE
   SYNTAX      RowStatus
   MAX-ACCESS  read-create
   STATUS      current
   DESCRIPTION
       "The status of this conceptual row.

	To create a row in this table, a manager must
	set this object to either createAndGo(4) or
	createAndWait(5).

	Until instances of all corresponding columns are
	appropriately configured, the value of the
	corresponding instance of the snmpTargetAddrRowStatus
	column is 'notReady'.

	In particular, a newly created row cannot be made
	active until the corresponding snmpTargetAddrTDomain
	and snmpTargetAddrTAddress have both been set.

	The following objects may not be modified while the
	value of this object is active(1):
	    - snmpTargetAddrTDomain
	    - snmpTargetAddrTAddress"
   ::= { snmpTargetAddrEntry 9 }

snmpTargetParamsTable OBJECT-TYPE
   SYNTAX      SEQUENCE OF SnmpTargetParamsEntry
   MAX-ACCESS  not-accessible
   STATUS      current
   DESCRIPTION
       "A table of SNMP target information to be used
	in the generation of SNMP messages."
   ::= { snmpTargetObjects 3 }

snmpTargetParamsEntry OBJECT-TYPE
   SYNTAX      SnmpTargetParamsEntry
   MAX-ACCESS  not-accessible
   STATUS      current
   DESCRIPTION
       "A set of SNMP target information.

	Entries in the snmpTargetParamsTable are created and
	deleted using the snmpTargetParamsRowStatus object."
   INDEX { IMPLIED snmpTargetParamsName }
   ::= { snmpTargetParamsTable 1 }

SnmpTargetParamsEntry ::= SEQUENCE {
   snmpTargetParamsName           SnmpAdminString,
   snmpTargetParamsMPModel        SnmpMessageProcessingModel,
   snmpTargetParamsSecurityModel  SnmpSecurityModel,
   snmpTargetParamsSecurityName   SnmpAdminString,
   snmpTargetParamsSecurityLevel  SnmpSecurityLevel,
   snmpTargetParamsStorageType    StorageType,
   snmpTargetParamsRowStatus      RowStatus
}

snmpTargetParamsName OBJECT-TYPE
   SYNTAX      SnmpAdminString (SIZE(1..32))
   MAX-ACCESS  not-accessible
   STATUS      current
   DESCRIPTION
       "The locally arbitrary, but unique identifier associated
	with this snmpTargetParamsEntry."
   ::= { snmpTargetParamsEntry 1 }

snmpTargetParamsMPModel OBJECT-TYPE
   SYNTAX      SnmpMessageProcessingModel
   MAX-ACCESS  read-create
   STATUS      current
   DESCRIPTION
       "The Message Processing Model to be used when generating
	SNMP messages using this entry."
   ::= { snmpTargetParamsEntry 2 }

snmpTargetParamsSecurityModel OBJECT-TYPE
   SYNTAX      SnmpSecurityModel (0..254 | 256..2147483647)
   MAX-ACCESS  read-create
   STATUS      current
   DESCRIPTION
       "The Security Model to be used when generating SNMP
	 messages using this entry."
   ::= { snmpTargetParamsEntry 3 }

snmpTargetParamsSecurityName OBJECT-TYPE
   SYNTAX      SnmpAdminString
   MAX-ACCESS  read-create
   STATUS      current
   DESCRIPTION
       "The securityName which identifies the Principal on
	whose behalf SNMP messages will be generated using
	this entry."
   ::= { snmpTargetParamsEntry 4 }

snmpTargetParamsSecurityLevel OBJECT-TYPE
   SYNTAX      SnmpSecurityLevel
   MAX-ACCESS  read-create
   STATUS      current
   DESCRIPTION
       "The Level of Security to be used when generating
	SNMP messages using this entry."
   ::= { snmpTargetParamsEntry 5 }

snmpTargetParamsStorageType OBJECT-TYPE
   SYNTAX      StorageType
   MAX-ACCESS  read-create
   STATUS      current
   DESCRIPTION
       "The storage type for this conceptual row."
   ::= { snmpTargetParamsEntry 6 }

snmpTargetParamsRowStatus OBJECT-TYPE
   SYNTAX      RowStatus
   MAX-ACCESS  read-create
   STATUS      current
   DESCRIPTION
       "The status of this conceptual row.

	To create a row in this table, a manager must
	set this object to either createAndGo(4) or
	createAndWait(5).

	Until instances of all corresponding columns are
	appropriately configured, the value of the
	corresponding instance of the snmpTargetParamsRowStatus
	column is 'notReady'.

	In particular, a newly created row cannot be made
	active until the corresponding
	snmpTargetParamsMPModel,
	snmpTargetParamsSecurityModel,
	snmpTargetParamsSecurityName,
	and snmpTargetParamsSecurityLevel have all been set.

	The following objects may not be modified while the
	value of this object is active(1):
	    - snmpTargetParamsMPModel
	    - snmpTargetParamsSecurityModel
	    - snmpTargetParamsSecurityName
	    - snmpTargetParamsSecurityLevel"
   ::= { snmpTargetParamsEntry 7 }

snmpUnavailableContexts OBJECT-TYPE
   SYNTAX       Counter32
   MAX-ACCESS   read-only
   STATUS       current
   DESCRIPTION
       "The total number of packets received by the SNMP
	engine which were dropped because the context
	contained in the mesage was unavailable."
   ::= { snmpTargetObjects 4 }

snmpUnknownContexts OBJECT-TYPE
   SYNTAX       Counter32
   MAX-ACCESS   read-only
   STATUS       current
   DESCRIPTION
       "The total number of packets received by the SNMP
	engine which were dropped because the context
	contained in the mesage was unknown."

   ::= { snmpTargetObjects 5 }
--
--
-- Conformance information
--
--

snmpTargetCompliances OBJECT IDENTIFIER ::=
				       { snmpTargetConformance 1 }
snmpTargetGroups      OBJECT IDENTIFIER ::=
				       { snmpTargetConformance 2 }

--
--
-- Compliance statements
--
--


snmpTargetCommandResponderCompliance MODULE-COMPLIANCE
   STATUS      current
   DESCRIPTION
       "The compliance statement for SNMP entities which include
	a command responder application."
   MODULE -- This Module
       MANDATORY-GROUPS { snmpTargetCommandResponderGroup }
   ::= { snmpTargetCompliances 1 }

snmpTargetBasicGroup OBJECT-GROUP
   OBJECTS {
       snmpTargetSpinLock,
       snmpTargetAddrTDomain,
       snmpTargetAddrTAddress,
       snmpTargetAddrTagList,
       snmpTargetAddrParams,
       snmpTargetAddrStorageType,
       snmpTargetAddrRowStatus,
       snmpTargetParamsMPModel,
       snmpTargetParamsSecurityModel,
       snmpTargetParamsSecurityName,
       snmpTargetParamsSecurityLevel,
       snmpTargetParamsStorageType,
       snmpTargetParamsRowStatus
   }
   STATUS      current
   DESCRIPTION

       "A collection of objects providing basic remote
	configuration of management targets."
   ::= { snmpTargetGroups 1 }

snmpTargetResponseGroup OBJECT-GROUP
   OBJECTS {
       snmpTargetAddrTimeout,
       snmpTargetAddrRetryCount
   }
   STATUS      current
   DESCRIPTION
       "A collection of objects providing remote configuration
	of management targets for applications which generate
	SNMP messages for which a response message would be
	expected."
   ::= { snmpTargetGroups 2 }

snmpTargetCommandResponderGroup OBJECT-GROUP
   OBJECTS {
       snmpUnavailableContexts,
       snmpUnknownContexts
   }
   STATUS      current
   DESCRIPTION
       "A collection of objects required for command responder
	applications, used for counting error conditions."
   ::= { snmpTargetGroups 3 }

END
