SNMP-TARGET-MIB(7)

πŸ“¦
version 25.3.2.8 Β· 3 versions
, in debian bookworm, ubuntu jammy, ubuntu noble

πŸ’– SNMP-TARGET-MIB(7) πŸ’–

okay bestie, welcome to the SNMP-TARGET-MIB(7) page β€” this is from the MIB manual, and it is literally the Erlang/OTP MIB module for mechanisms to remotely configure the parameters for the generation of SNMP messages. no cap, that is the whole NAME section, but we are gonna make it cute.

🌸 NAME 🌸

SNMP-TARGET-MIB β€” The Erlang/OTP MIB module for mechanisms to remotely configure the parameters for the generation of SNMP messages.

πŸ’… DESCRIPTION πŸ’…

okay so here is the thing: this page is basically a giant ASN.1 glow-up. The module defines MIB objects that provide mechanisms to remotely configure the parameters used by an SNMP entity for the generation of SNMP messages. That is the official vibe. Below is the actual definition, copied exactly because we do not mess with code β€” periodt.

SNMP-TARGET-MIB DEFINITIONS ::= BEGIN

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

    TEXTUAL-CONVENTION,
    TDomain,
    TAddress,
    TimeInterval,
    RowStatus,
    StorageType,
    TestAndIncr
        FROM SNMPv2-TC

    SnmpSecurityModel,
    SnmpMessageProcessingModel,
    SnmpSecurityLevel,
    SnmpAdminString
        FROM SNMP-FRAMEWORK-MIB

    MODULE-COMPLIANCE,
    OBJECT-GROUP
        FROM SNMPv2-CONF;

snmpTargetMIB MODULE-IDENTITY
    LAST-UPDATED "9808040000Z"
    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
         EMail:      levi@snmp.com
         Phone:      +1 423 573 1434

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

         Co-editor:  Bob Stewart
                     Cisco Systems, Inc.
         Postal:     170 West Tasman Drive
                     San Jose, CA 95134-1706
         EMail:      bstewart@cisco.com
         Phone:      +1 603 654 2686"
    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    "9808040000Z"
    DESCRIPTION "Clarifications, published as
                 draft-ietf-snmpv3-appl-v2-01.txt."
    REVISION    "9707140000Z"
    DESCRIPTION "The initial revision, published as RFC2273."
    ::= { 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 2279.

         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
         of sub-identifiers for any object instance does 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 2279.

         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 }

okay so here's literally the shape of one row in the target address table β€” every field, in order, nothing skipped, no cap:

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

πŸ’… the snmpTargetAddrTable columns, one by one πŸ’…

πŸ¦‹ snmpTargetAddrName

  • SYNTAX β€” SnmpAdminString (SIZE(1..32))
  • MAX-ACCESS β€” not-accessible
  • STATUS β€” current
  • OID β€” ::= { snmpTargetAddrEntry 1 }

the locally arbitrary but unique identifier for this snmpTargetAddrEntry, bestie. it's the row's name β€” arbitrary because you pick it, unique because you can't have two of the same, obviously πŸ’….


πŸ¦‹ snmpTargetAddrTDomain

  • SYNTAX β€” TDomain
  • MAX-ACCESS β€” read-create
  • STATUS β€” current
  • OID β€” ::= { snmpTargetAddrEntry 2 }

tells you the transport type of whatever address is sitting in snmpTargetAddrTAddress. like, what flavour of address are we dealing with here. πŸ“

πŸ¦‹ snmpTargetAddrTAddress

  • SYNTAX β€” TAddress
  • MAX-ACCESS β€” read-create
  • STATUS β€” current
  • OID β€” ::= { snmpTargetAddrEntry 3 }

the actual transport address lives here. and the format? depends entirely on snmpTargetAddrTDomain β€” so check the domain first, bestie, don't just assume. πŸ™ˆ

πŸ¦‹ snmpTargetAddrTimeout

  • SYNTAX β€” TimeInterval
  • MAX-ACCESS β€” read-create
  • STATUS β€” current
  • DEFVAL β€” { 1500 }
  • OID β€” ::= { snmpTargetAddrEntry 4 }

this one should reflect the expected maximum round trip time for talking to the transport address in this row. so when a message gets sent out and a response (if one's even expected) doesn't show up within that time period, the implementation may just assume the response isn't gonna be delivered. bye πŸ‘‹.

okay and here's the fine print, bc it matters: the time interval your app actually waits for a response may itself be derived from this object's value β€” and how that derivation works is implementation dependent. one method is deriving the expected round trip time from a particular retransmission algorithm plus how many timeouts have already happened. the type of message can also factor into the expected round trip times for retransmissions. for example β€” if a message is sent with a securityLevel that says both authentication and privacy, the derived value may get bumped up to compensate for the extra processing time spent on authentication and encryption. so yeah, more security, more waiting, highkey 😭.

πŸ¦‹ snmpTargetAddrRetryCount

  • SYNTAX β€” Integer32 (0..255)
  • MAX-ACCESS β€” read-create
  • STATUS β€” current
  • DEFVAL β€” { 3 }
  • OID β€” ::= { snmpTargetAddrEntry 5 }

the default number of retries to attempt when no response comes back for a generated message. but plot twist β€” an application can bring its own retry count, and if it does, this object's value gets ignored. not me being replaceable πŸ’€.

πŸ¦‹ snmpTargetAddrTagList

  • SYNTAX β€” SnmpTagList
  • MAX-ACCESS β€” read-create
  • STATUS β€” current
  • DEFVAL β€” { "" }
  • OID β€” ::= { snmpTargetAddrEntry 6 }

a list of tag values, and those tags are what select target addresses for a particular operation. it's giving little name-tags so the right addresses get picked for the right job πŸŽ€.

πŸ¦‹ snmpTargetAddrParams

  • SYNTAX β€” SnmpAdminString (SIZE(1..32))
  • MAX-ACCESS β€” read-create
  • STATUS β€” current
  • OID β€” ::= { snmpTargetAddrEntry 7 }

this value points at an entry in snmpTargetParamsTable. and that entry is where the SNMP parameters live β€” the ones used when generating messages to send to this transport address. so it's basically the "how do I talk to this address" settings pointer πŸ”₯.

πŸ¦‹ snmpTargetAddrStorageType

  • SYNTAX β€” StorageType
  • MAX-ACCESS β€” read-create
  • STATUS β€” current
  • DEFVAL β€” { nonVolatile }
  • OID β€” ::= { snmpTargetAddrEntry 8 }

the storage type for this conceptual row. that's it, that's the whole thing. short and iconic ✨.

πŸ¦‹ snmpTargetAddrRowStatus

  • SYNTAX β€” RowStatus
  • MAX-ACCESS β€” read-create
  • STATUS β€” current
  • OID β€” ::= { snmpTargetAddrEntry 9 }

the status of this conceptual row. to create one, a manager has to set this object to either createAndGo(5) or createAndWait(5) β€” those are the two entries into the club 🫢.

until all the corresponding columns are appropriately configured, the matching instance of snmpTargetAddrRowStatus just sits there as 'notReady'. and specifically β€” a newly created row cannot be made active until these three have all been set:

  • snmpTargetAddrTDomain
  • snmpTargetAddrTAddress
  • snmpTargetAddrParams
also, while this object is active(1), these two are unmodifiable bad boys: - snmpTargetAddrTDomain - snmpTargetAddrTAddress try to set them while snmpTargetAddrRowStatus is active(1) and you get an inconsistentValue error. no cap, don't do it πŸ’€.

πŸ¦‹ snmpTargetParamsTable β€” target params, the sequel πŸ¦‹

  • SYNTAX β€” SEQUENCE OF SnmpTargetParamsEntry
  • MAX-ACCESS β€” not-accessible
  • STATUS β€” current
  • OID β€” ::= { snmpTargetObjects 3 }

a table of SNMP target information to be used when generating SNMP messages. yes bestie, this is the one the address rows point into πŸ’–.

πŸŽ€ snmpTargetParamsEntry

  • SYNTAX β€” SnmpTargetParamsEntry
  • MAX-ACCESS β€” not-accessible
  • STATUS β€” current
  • INDEX β€” { IMPLIED snmpTargetParamsName }
  • OID β€” ::= { snmpTargetParamsTable 1 }

a set of SNMP target information. entries in snmpTargetParamsTable get created and deleted using the snmpTargetParamsRowStatus object β€” that's the on/off switch for the whole row, iykyk.

and here's the SEQUENCE, literally:

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

πŸ¦‹ snmpTargetParamsName

  • SYNTAX β€” SnmpAdminString (SIZE(1..32))
  • MAX-ACCESS β€” not-accessible
  • STATUS β€” current
  • OID β€” ::= { snmpTargetParamsEntry 1 }

the locally arbitrary but unique identifier hooked to this snmpTargetParamsEntry. same deal as before β€” you name it, it just has to be unique 🌸.

πŸ¦‹ snmpTargetParamsMPModel

  • SYNTAX β€” SnmpMessageProcessingModel
  • MAX-ACCESS β€” read-create
  • STATUS β€” current
  • OID β€” ::= { snmpTargetParamsEntry 2 }

the Message Processing Model used when generating SNMP messages with this entry. pick your model, bestie πŸ’….

πŸ¦‹ snmpTargetParamsSecurityModel

  • SYNTAX β€” SnmpSecurityModel (1..2147483647)
  • MAX-ACCESS β€” read-create
  • STATUS β€” current
  • OID β€” ::= { snmpTargetParamsEntry 3 }

the Security Model used when generating SNMP messages with this entry. and heads up β€” an implementation may choose to return an inconsistentValue error if you try to set this to a value for a security model it doesn't actually support. so like, read the room (and the supported list) πŸ™ˆ.

πŸ¦‹ snmpTargetParamsSecurityName

  • SYNTAX β€” SnmpAdminString
  • MAX-ACCESS β€” read-create
  • STATUS β€” current
  • OID β€” ::= { snmpTargetParamsEntry 4 }

the securityName that identifies the Principal on whose behalf SNMP messages get generated using this entry. main character energy, but make it a security principal πŸ‘‘.

πŸ¦‹ snmpTargetParamsSecurityLevel

  • SYNTAX β€” SnmpSecurityLevel
  • MAX-ACCESS β€” read-create
  • STATUS β€” current
  • OID β€” ::= { snmpTargetParamsEntry 5 }

the Level of Security used when generating SNMP messages with this entry. that's the whole description, she's brief and she's flawless ✨.

πŸ¦‹ snmpTargetParamsStorageType

  • SYNTAX β€” StorageType
  • MAX-ACCESS β€” read-create
  • STATUS β€” current
  • DEFVAL β€” { nonVolatile }
  • OID β€” ::= { snmpTargetParamsEntry 6 }

the storage type for this conceptual row. same energy as the address one, just vibing in a different table πŸ’œ.

πŸ¦‹ snmpTargetParamsRowStatus

  • SYNTAX β€” RowStatus
  • MAX-ACCESS β€” read-create
  • STATUS β€” current
  • OID β€” ::= { snmpTargetParamsEntry 7 }

the status of this conceptual row. to create a row in this table, a manager must set this object to either createAndGo(5) or createAndWait(5) β€” same two magic words as before 🫢.

until all corresponding columns are properly configured, the matching instance of snmpTargetParamsRowStatus stays 'notReady'. and specifically, a freshly created row can't go active until all four of these are set:

  • snmpTargetParamsMPModel
  • snmpTargetParamsSecurityModel
  • snmpTargetParamsSecurityName
  • snmpTargetParamsSecurityLevel
and while this object is active(1), these four are locked down: - snmpTargetParamsMPModel - snmpTargetParamsSecurityModel - snmpTargetParamsSecurityName - snmpTargetParamsSecurityLevel try to set any of them while snmpTargetParamsRowStatus is active(1) and boom β€” inconsistentValue error. bestie, the row said not now πŸ’€.

snmpUnavailableContexts OBJECT-TYPE πŸ’…

  • SYNTAX β€” Counter32
  • MAX-ACCESS β€” read-only
  • STATUS β€” current
  • DESCRIPTION β€” bestie, this is the total number of packets received by the SNMP engine that got dropped because the context contained in the message was unavailable. Not unknown β€” unavailable. Very important distinction, iykyk πŸ‘€
  • OID assignment β€” ::= { snmpTargetObjects 4 }

snmpUnknownContexts OBJECT-TYPE πŸ¦‹

  • SYNTAX β€” Counter32
  • MAX-ACCESS β€” read-only
  • STATUS β€” current
  • DESCRIPTION β€” and this one is the total number of packets received by the SNMP engine that got dropped because the context contained in the message was unknown. Again: unknown, not unavailable. The MIB is being very precise about its little context drama ✨
  • OID assignment β€” ::= { snmpTargetObjects 5 }

πŸŽ€ Conformance information πŸŽ€

The original page drops these little comment banners here, so we're keeping the vibe:

--
--
-- Conformance information
--
--

And then the object identifiers show up like:

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

πŸŽ€ Compliance statements πŸŽ€

Original comment banner, preserved with love:

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

snmpTargetCommandResponderCompliance MODULE-COMPLIANCE πŸ‘‘

  • STATUS β€” current
  • DESCRIPTION β€” the compliance statement for SNMP entities that include a command responder application. Basically: if your thing is a command responder, this is the compliance statement for you, bestie πŸ’–
  • MODULE β€” -- This Module
    • MANDATORY-GROUPS β€” { snmpTargetCommandResponderGroup }
  • OID assignment β€” ::= { snmpTargetCompliances 1 }

snmpTargetBasicGroup OBJECT-GROUP 🌸

  • OBJECTS β€” okay, this group is a whole little collection, and every single object is here:
    • 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. It's giving "starter pack for remote config" energy πŸŽ€
  • OID assignment β€” ::= { snmpTargetGroups 1 }

snmpTargetResponseGroup OBJECT-GROUP πŸ”₯

  • OBJECTS β€” just these two icons:
    • 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. Translation: apps that send SNMP messages and expect a response get their remote config from here, periodt πŸ’…
  • OID assignment β€” ::= { snmpTargetGroups 2 }

snmpTargetCommandResponderGroup OBJECT-GROUP 🫢

  • OBJECTS β€” the error-counting duo:
    • snmpUnavailableContexts
    • snmpUnknownContexts
  • STATUS β€” current
  • DESCRIPTION β€” a collection of objects required for command responder applications, used for counting error conditions. Lowkey essential for command responder apps keeping track of error conditions πŸ‘‘
  • OID assignment β€” ::= { snmpTargetGroups 3 }

And then, iconic behaviour, the page just says:

END

Okay that's the whole page, bestie 🫢 Footer sign-off: Erlang/OTP / SNMP / SNMP-TARGET-MIB(7), plus the date line that your manpage footer carries. That's the whole vibe, periodt 🌈πŸ’