SNMP-COMMUNITY-MIB(7)

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

🌸 NAME 🌸

Okay bestie, this is SNMP-COMMUNITY-MIB(7) β€” the Erlang/OTP MIB module for supporting coexistence between SNMPv1, SNMPv2, and SNMPv3. That's literally the whole NAME vibe: coexistence, no cap. πŸ’…

πŸ’– DESCRIPTION πŸ’–

This page is a MIB module, so it's basically a whole bunch of SNMP definitions doing their thing. It opens with SNMP-COMMUNITY-MIB DEFINITIONS ::= BEGIN, then the imports show up. Here's the exact opening block, untouched:

SNMP-COMMUNITY-MIB DEFINITIONS ::= BEGIN

IMPORTS
    IpAddress
        FROM RFC1155-SMI
    MODULE-IDENTITY,
    OBJECT-TYPE,
    Integer32,
    snmpModules
        FROM SNMPv2-SMI
    RowStatus,
    TestAndIncr,
    StorageType
        FROM SNMPv2-TC
    SnmpAdminString,
    SnmpEngineID
        FROM SNMP-FRAMEWORK-MIB
    SnmpTagValue,
    snmpTargetAddrEntry
        FROM SNMP-TARGET-MIB
    MODULE-COMPLIANCE,
    OBJECT-GROUP
        FROM SNMPv2-CONF;

Quick vibe translation of the import guest list:

  • IpAddress from RFC1155-SMI
  • MODULE-IDENTITY, OBJECT-TYPE, Integer32, and snmpModules from SNMPv2-SMI
  • RowStatus, TestAndIncr, and StorageType from SNMPv2-TC
  • SnmpAdminString and SnmpEngineID from SNMP-FRAMEWORK-MIB
  • SnmpTagValue and snmpTargetAddrEntry from SNMP-TARGET-MIB
  • MODULE-COMPLIANCE and OBJECT-GROUP from SNMPv2-CONF

✨

πŸŽ€ the module identity, aka the SNMPv3 Working Group flex

Next is snmpCommunityMIB MODULE-IDENTITY. LAST-UPDATED is "9805110000Z" β€” the comment says -- 11 May 1998, midnight β€” and ORGANIZATION is "SNMPv3 Working Group". The CONTACT-INFO is long and iconic, so here's the whole exact thing. Do not skip the contact info, bestie, it's part of the lore:

snmpCommunityMIB MODULE-IDENTITY
    LAST-UPDATED "9805110000Z"            -- 11 May 1998, midnight
    ORGANIZATION "SNMPv3 Working Group"
    CONTACT-INFO "WG-email:   snmpv3@tis.com
                  Subscribe:  majordomo@tis.com
                              In msg 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:  Rob Frye
                              MCI Communications Corp.
                  Postal:     2100 Reston Parkway, Suite 600
                              Reston, VA 20191
                              USA
                  E-mail:     Rob.Frye@mci.com
                  Phone:      +1 703 715 7225

                  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:  Shawn A. Routhier
                              Integrated Systems Inc.
                  Postal:     333 North Ave 4th Floor
                              Wakefield, MA 01880
                  E-mail:     sar@epilogue.com
                  Phone:      +1 781 245 0804

                  Co-editor:  Bert Wijnen
                              IBM T. J. Watson Research
                  postal:     Schagen 33
                              3461 GL Linschoten
                              Netherlands
                  email:      wijnen@vnet.ibm.com
                  phone:      +31-348-432-794
                 "

    DESCRIPTION
        "This MIB module defines objects to help support coexistence
         between SNMPv1, SNMPv2, and SNMPv3."
    ::= { snmpModules 18 }

The module's own DESCRIPTION says it defines objects to help support coexistence between SNMPv1, SNMPv2, and SNMPv3. And the OID assignment is ::= { snmpModules 18 }. Periodt. πŸ‘‘

🧚 administrative assignments

Administrative assignments are up next. It's literally:

-- Administrative assignments ****************************************

snmpCommunityMIBObjects     OBJECT IDENTIFIER ::= { snmpCommunityMIB 1 }
snmpCommunityMIBConformance OBJECT IDENTIFIER ::= { snmpCommunityMIB 2 }

πŸ¦‹ the snmpCommunityTable comment block

Before the table, there's a comment block. Here it is exact:

--
-- The snmpCommunityTable contains a database of community strings.
-- This table provides mappings between community strings, and the
-- parameters required for View-based Access Control.
--

So yeah, snmpCommunityTable contains a database of community strings, and it provides mappings between community strings and the parameters required for View-based Access Control. Main character table behavior. 🌈

🌸 snmpCommunityTable and snmpCommunityEntry

Here are the table and entry definitions, exact. snmpCommunityTable has SYNTAX SEQUENCE OF SnmpCommunityEntry, MAX-ACCESS not-accessible, and STATUS current. Its description says it's the table of community strings configured in the SNMP engine's Local Configuration Datastore (LCD). The entry is indexed by IMPLIED snmpCommunityIndex and describes info about a particular community string.

snmpCommunityTable OBJECT-TYPE
    SYNTAX       SEQUENCE OF SnmpCommunityEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "The table of community strings configured in the SNMP
         engine's Local Configuration Datastore (LCD)."
    ::= { snmpCommunityMIBObjects 1 }

snmpCommunityEntry OBJECT-TYPE
    SYNTAX       SnmpCommunityEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "Information about a particular community string."
    INDEX       { IMPLIED snmpCommunityIndex }
    ::= { snmpCommunityTable 1 }

πŸŽ€ SnmpCommunityEntry SEQUENCE

This is the SnmpCommunityEntry ::= SEQUENCE β€” all eight columns, exactly:

SnmpCommunityEntry ::= SEQUENCE {
    snmpCommunityIndex               SnmpAdminString,
    snmpCommunityName                OCTET STRING,
    snmpCommunitySecurityName        SnmpAdminString,
    snmpCommunityContextEngineID     SnmpEngineID,
    snmpCommunityContextName         SnmpAdminString,
    snmpCommunityTransportTag        SnmpTagValue,
    snmpCommunityStorageType         StorageType,
    snmpCommunityStatus              RowStatus
}

πŸ’… snmpCommunityIndex

Unique index value of a row in this table. It's SnmpAdminString (SIZE(1..32)), and it's not-accessible.

snmpCommunityIndex OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE(1..32))
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The unique index value of a row in this table."
    ::= { snmpCommunityEntry 1 }

πŸ’… snmpCommunityName

This is the community string for which a row in this table represents a configuration. Syntax is OCTET STRING (SIZE(1..64)), and it's read-create.

snmpCommunityName OBJECT-TYPE
    SYNTAX       OCTET STRING (SIZE(1..64))
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION
        "The community string for which a row in this table
         represents a configuration."
    ::= { snmpCommunityEntry 2 }

πŸ’… snmpCommunitySecurityName

A human readable string representing the corresponding value of snmpCommunityName in a Security Model independent format. It's SnmpAdminString, and it's read-create.

snmpCommunitySecurityName OBJECT-TYPE
    SYNTAX       SnmpAdminString
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION
        "A human readable string representing the corresponding
         value of snmpCommunityName in a Security Model
         independent format."
    ::= { snmpCommunityEntry 3 }

πŸ’… snmpCommunityContextEngineID

This is the contextEngineID indicating the location of the context in which management information is accessed when using the community string specified by the corresponding instance of snmpCommunityName. The default value is the snmpEngineID of the entity in which this object is instantiated. It's SnmpEngineID, read-create.

snmpCommunityContextEngineID OBJECT-TYPE
    SYNTAX       SnmpEngineID
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION
        "The contextEngineID indicating the location of the
         context in which management information is accessed
         when using the community string specified by the
         corresponding instance of snmpCommunityName.

         The default value is the snmpEngineID of the entity in
         which this object is instantiated."
    ::= { snmpCommunityEntry 4 }

πŸ’… snmpCommunityContextName

The context in which management information is accessed when using the community string specified by the corresponding instance of snmpCommunityName. DEFVAL is { ''H } β€” the empty string. It's SnmpAdminString, read-create.

snmpCommunityContextName OBJECT-TYPE
    SYNTAX       SnmpAdminString
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION
        "The context in which management information is accessed
         when using the community string specified by the corresponding
         instance of snmpCommunityName."
    DEFVAL      { ''H }   -- the empty string
    ::= { snmpCommunityEntry 5 }

πŸ’… snmpCommunityTransportTag

This one specifies a set of transport endpoints from which an agent will accept management requests. If a management request containing this community is received on a transport endpoint other than the transport endpoints identified by this object, the request is deemed unauthentic. The transports identified by this object are specified in the snmpTargetAddrTable; entries in that table whose snmpTargetAddrTagList contains this tag value are identified. If the value of this object has zero-length, transport endpoints are not checked when authenticating messages containing this community string. DEFVAL is { ''H } β€” the empty string. It's SnmpTagValue, read-create.

snmpCommunityTransportTag OBJECT-TYPE
    SYNTAX       SnmpTagValue
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION
        "This object specifies a set of transport endpoints
         from which an agent will accept management requests.
         If a management request containing this community
         is received on a transport endpoint other than the
         transport endpoints identified by this object, the
         request is deemed unauthentic.

         The transports identified by this object are specified
         in the snmpTargetAddrTable.  Entries in that table
         whose snmpTargetAddrTagList contains this tag value
         are identified.

         If the value of this object has zero-length, transport
         endpoints are not checked when authenticating messages
         containing this community string."
    DEFVAL      { ''H }   -- the empty string
    ::= { snmpCommunityEntry 6 }

πŸ’… snmpCommunityStorageType

The storage type for this conceptual row in the snmpCommunityTable. Conceptual rows having the value 'permanent' need not allow write-access to any columnar object in the row. It's StorageType, read-create.

snmpCommunityStorageType OBJECT-TYPE
    SYNTAX       StorageType
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION
        "The storage type for this conceptual row in the
         snmpCommunityTable.  Conceptual rows having the value
         'permanent' need not allow write-access to any
         columnar object in the row."
    ::= { snmpCommunityEntry 7 }

πŸ’… snmpCommunityStatus

The status of this conceptual row in the snmpCommunityTable. An entry in this table is not qualified for activation until instances of all corresponding columns have been initialized, either through default values, or through Set operations. The snmpCommunityName and snmpCommunitySecurityName objects must be explicitly set. It's RowStatus, read-create.

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

         An entry in this table is not qualified for activation
         until instances of all corresponding columns have been
         initialized, either through default values, or through
         Set operations.  The snmpCommunityName and
         snmpCommunitySecurityName objects must be explicitly set."
    ::= { snmpCommunityEntry 8 }

πŸ¦‹ the snmpTargetAddrExtTable comment block

Then there's this comment block about how snmpTargetAddrExtTable augments the snmpTargetAddrTable. Exact:

--
-- The snmpTargetAddrExtTable augments the snmpTargetAddrTable with
-- a transport address mask value and a maximum message size value.
-- The transport address mask allows entries in the
-- snmpTargetAddrTable to define a set of addresses instead of just
-- a single address.  The maximum message size value allows the
-- maximum message size of another SNMP entity to be configured
-- for use in SNMPv1 (and SNMPv2c) transactions, where the message
-- format does not specify a maximum message size.
--

✨ snmpTargetAddrExtTable and snmpTargetAddrExtEntry

Here's the table and entry. snmpTargetAddrExtTable is SEQUENCE OF SnmpTargetAddrExtEntry, not-accessible, and its description says it's the table of mask and mms values associated with the snmpTargetAddrTable. The entry is SnmpTargetAddrExtEntry, not-accessible, describes information about a particular mask and mms value, and it AUGMENTS { snmpTargetAddrEntry }.

snmpTargetAddrExtTable OBJECT-TYPE
    SYNTAX       SEQUENCE OF SnmpTargetAddrExtEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "The table of mask and mms values associated with the
         snmpTargetAddrTable."
    ::= { snmpCommunityMIBObjects 2 }

snmpTargetAddrExtEntry OBJECT-TYPE
    SYNTAX       SnmpTargetAddrExtEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "Information about a particular mask and mms value."
    AUGMENTS       { snmpTargetAddrEntry }
    ::= { snmpTargetAddrExtTable 1 }

πŸŽ€ SnmpTargetAddrExtEntry SEQUENCE

This sequence has exactly two columns:

SnmpTargetAddrExtEntry ::= SEQUENCE {
    snmpTargetAddrTMask              OCTET STRING,
    snmpTargetAddrMMS                Integer32
}

πŸ’… snmpTargetAddrTMask

The mask value associated with an entry in the snmpTargetAddrTable. The value of this object must have the same length as the corresponding instance of snmpTargetAddrTAddress, or must have length 0. Syntax is OCTET STRING (SIZE (0..255)), it's read-create, and DEFVAL { ''H }.

snmpTargetAddrTMask OBJECT-TYPE
    SYNTAX      OCTET STRING (SIZE (0..255))
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The mask value associated with an entry in the
         snmpTargetAddrTable.  The value of this object must
         have the same length as the corresponding instance of
         snmpTargetAddrTAddress, or must have length 0."
    DEFVAL { ''H }
    ::= { snmpTargetAddrExtEntry 1 }

πŸ’… snmpTargetAddrMMS

The maximum message size value associated with an entry in the snmpTargetAddrTable. Syntax is Integer32 (484..65535), it's read-create, and DEFVAL { 2048 }.

snmpTargetAddrMMS OBJECT-TYPE
    SYNTAX      Integer32 (484..65535)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The maximum message size value associated with an entry
         in the snmpTargetAddrTable."
    DEFVAL { 2048 }
    ::= { snmpTargetAddrExtEntry 2 }

πŸ‘‘ final comment for part 1

This is where part 1 lands β€” with the comment about snmpTrapAddress and snmpTrapCommunity. Exact:

--
-- The snmpTrapAddress and snmpTrapCommunity objects are included
-- in notifications that are forwarded by a proxy, which were
-- originally received as SNMPv1 Trap messages.
--

Part 2 literally continues from this comment, bestie. 🫢

okay so now we get to the actual objects, and bestie, these two are the proxy-forwarder girlies πŸ’…

πŸŽ€ snmpTrapAddress

SYNTAX      IpAddress
MAX-ACCESS  accessible-for-notify
STATUS      current

The way this one is literally the agent-addr field of a Trap PDU that a proxy forwarder application is forwarding using an SNMP version that is not SNMPv1. 🫢 And the value SHOULD (we love a SHOULD, it's giving "you really should but we're not gonna make a whole thing of it") contain the agent-addr field value from the original Trap PDU, exactly as generated by an SNMPv1 agent.

::= { snmpCommunityMIBObjects 3 } β€” that's where she lives, iykyk ✨

πŸŽ€ snmpTrapCommunity

same energy, different field:

SYNTAX      OCTET STRING
MAX-ACCESS  accessible-for-notify
STATUS      current

This one is the community string field of an SNMPv1 message containing a Trap PDU, and that message is being forwarded by a proxy forwarder application using an SNMP version other than SNMPv1. Its value SHOULD contain the community string field value from the original SNMPv1 message containing that Trap PDU, as generated by the SNMPv1 agent. no cap, it's just the original community tag riding along so the other end knows what's up 🌸

::= { snmpCommunityMIBObjects 4 }


✨ Conformance Information ✨

two OID anchors, that's the whole vibe:

  • snmpCommunityMIBCompliances β€” OBJECT IDENTIFIER ::= { snmpCommunityMIBConformance 1 }
  • snmpCommunityMIBGroups β€” OBJECT IDENTIFIER ::= { snmpCommunityMIBConformance 2 }

πŸ‘‘ Compliance statements πŸ‘‘

πŸ’œ snmpCommunityMIBCompliance

She's a MODULE-COMPLIANCE, STATUS current, and her description is: the compliance statement for SNMP engines which implement the SNMP-COMMUNITY-MIB. periodt. If your engine does the MIB, this is the paperwork πŸ’…

Under MODULE β€” this module β€” the only mandatory group is:

  • MANDATORY-GROUPS { snmpCommunityGroup }

Then comes a whole stack of OBJECT clauses, and here's the tea πŸ“: every single one is MIN-ACCESS read-only with the exact same description, "Write access is not required." So nobody is out here forcing you to make these writable. It's optional. breathe.

  • snmpCommunityName β€” MIN-ACCESS read-only, "Write access is not required."
  • snmpCommunitySecurityName β€” MIN-ACCESS read-only, "Write access is not required."
  • snmpCommunitySecurityLevel β€” MIN-ACCESS read-only, "Write access is not required."
  • snmpCommunityContextEngineID β€” MIN-ACCESS read-only, "Write access is not required."
  • snmpCommunityContextName β€” MIN-ACCESS read-only, "Write access is not required."
  • snmpCommunityTransportTag β€” MIN-ACCESS read-only, "Write access is not required."
  • snmpCommunityStorageType β€” MIN-ACCESS read-only, "Write access is not required."
  • snmpCommunityStatus β€” MIN-ACCESS read-only, "Write access is not required."

(multiply that by eight, it is exactly as repetitive as it looks, and yes the MIB really does spell it out eight separate times 😭)

::= { snmpCommunityMIBCompliances 1 } β€” locked in πŸ”₯

🌈 snmpCommunityGroup

An OBJECT-GROUP and honestly the main character of this whole page. Her OBJECTS list is:

snmpCommunityName,
snmpCommunitySecurityName,
snmpCommunityContextEngineID,
snmpCommunityContextName,
snmpCommunityTransportTag,
snmpCommunityStorageType,
snmpCommunityStatus,
snmpTargetAddrTMask,
snmpTargetAddrMMS,
snmpTrapCommunity,
snmpTrapAddress

STATUS current, and the description is literally: a collection of objects providing for configuration of community strings for SNMPv1 (and SNMPv2c) usage. cute, concise, ate πŸ’–

::= { snmpCommunityMIBGroups 1 }


and then she justβ€”

END

iconic exit, no notes πŸ‘‘


okay that's the whole MIB bestie, go configure your community strings responsibly and remember: SNMPv1 (and SNMPv2c) only, we don't claim anything else here 🧚

so yeah, this page is brought to you by Erlang/OTP, filed under the SNMP section (which is why she's SNMP-COMMUNITY-MIB(7), section 7, very demure, very manual-page πŸ’…). mwah, go touch some OIDs πŸŽ€βœ¨