SNMPv2-CONF(7)
π NAME π
SNMPv2-CONF β the SNMPv2 configuration definitions, from the manual named MIB. So if you're like "bestie what are these macros", this is literally your page. It's giving MIB energy, no cap. π¦π
π DESCRIPTION π
Okay so the whole thing is the SNMPv2-CONF module. It starts with SNMPv2-CONF DEFINITIONS ::= BEGIN and ends with END. Inside, you get four MACRO definitions:
OBJECT-GROUPNOTIFICATION-GROUPMODULE-COMPLIANCEAGENT-CAPABILITIES
Each one has its own TYPE NOTATION, VALUE NOTATION, and a bunch of helper productions. Some comments are in there too, like the NVT ASCII character set reminder. Every single line matters, so we're keeping it all. πβ¨
π THE MODULE OPENS π
SNMPv2-CONF DEFINITIONS ::= BEGIN
π§ OBJECT-GROUP MACRO π§
This macro is for defining a group of objects. The TYPE NOTATION has ObjectsPart, then "STATUS" Status, then "DESCRIPTION" Text, then ReferPart. The VALUE NOTATION is value(VALUE OBJECT IDENTIFIER). The ObjectsPart is "OBJECTS" "{" Objects "}", and so on. Status can be current, deprecated, or obsolete. ReferPart can be "REFERENCE" Text or empty. And Text uses the NVT ASCII character set. Here's the exact code, bestie:
OBJECT-GROUP MACRO ::=
BEGIN
TYPE NOTATION ::=
ObjectsPart
"STATUS" Status
"DESCRIPTION" Text
ReferPart
VALUE NOTATION ::=
value(VALUE OBJECT IDENTIFIER)
ObjectsPart ::=
"OBJECTS" "{" Objects "}"
Objects ::=
Object
| Objects "," Object
Object ::=
value(Name ObjectName)
Status ::=
"current"
| "deprecated"
| "obsolete"
ReferPart ::=
"REFERENCE" Text
| empty
-- uses the NVT ASCII character set
Text ::= """" string """"
END
π§ NOTIFICATION-GROUP MACRO π§
Next up, NOTIFICATION-GROUP. It's like OBJECT-GROUP but for notifications. The TYPE NOTATION has NotificationsPart, "STATUS" Status, "DESCRIPTION" Text, ReferPart. NotificationsPart is "NOTIFICATIONS" "{" Notifications "}". Same Status and ReferPart and Text as above. Here's the exact code:
NOTIFICATION-GROUP MACRO ::=
BEGIN
TYPE NOTATION ::=
NotificationsPart
"STATUS" Status
"DESCRIPTION" Text
ReferPart
VALUE NOTATION ::=
value(VALUE OBJECT IDENTIFIER)
NotificationsPart ::=
"NOTIFICATIONS" "{" Notifications "}"
Notifications ::=
Notification
| Notifications "," Notification
Notification ::=
value(Name NotificationName)
Status ::=
"current"
| "deprecated"
| "obsolete"
ReferPart ::=
"REFERENCE" Text
| empty
-- uses the NVT ASCII character set
Text ::= """" string """"
END
π§ MODULE-COMPLIANCE MACRO π§
Now, MODULE-COMPLIANCE. This one is bigger. It has "STATUS" Status, "DESCRIPTION" Text, ReferPart, ModulePart. Status is same three. ReferPart can be "REFERENCE" Text or empty. ModulePart is Modules or empty. Modules is Module or Modules Module. Module has a comment -- name of module -- then "MODULE" ModuleName, MandatoryPart, CompliancePart. ModuleName is modulereference ModuleIdentifier with a comment -- must not be empty unless contained and -- in MIB Module, or empty. ModuleIdentifier is value(ModuleID OBJECT IDENTIFIER) or empty. MandatoryPart is "MANDATORY-GROUPS" "{" Groups "}" or empty. Groups is Group or Groups "," Group. Group is value(Group OBJECT IDENTIFIER). CompliancePart is Compliances or empty. Compliances is Compliance or Compliances Compliance. Compliance is ComplianceGroup or Object. ComplianceGroup is "GROUP" value(Name OBJECT IDENTIFIER) "DESCRIPTION" Text. Object is "OBJECT" value(Name ObjectName) SyntaxPart WriteSyntaxPart AccessPart "DESCRIPTION" Text. SyntaxPart has comment -- must be a refinement for object's SYNTAX clause then "SYNTAX" type(SYNTAX) or empty. WriteSyntaxPart same comment then "WRITE-SYNTAX" type(WriteSYNTAX) or empty. AccessPart is "MIN-ACCESS" Access or empty. Access can be not-accessible, accessible-for-notify, read-only, read-write, read-create. Text uses NVT ASCII. Here's the exact code:
MODULE-COMPLIANCE MACRO ::=
BEGIN
TYPE NOTATION ::=
"STATUS" Status
"DESCRIPTION" Text
ReferPart
ModulePart
VALUE NOTATION ::=
value(VALUE OBJECT IDENTIFIER)
Status ::=
"current"
| "deprecated"
| "obsolete"
ReferPart ::=
"REFERENCE" Text
| empty
ModulePart ::=
Modules
| empty
Modules ::=
Module
| Modules Module
Module ::=
-- name of module --
"MODULE" ModuleName
MandatoryPart
CompliancePart
ModuleName ::=
modulereference ModuleIdentifier
-- must not be empty unless contained
-- in MIB Module
| empty
ModuleIdentifier ::=
value(ModuleID OBJECT IDENTIFIER)
| empty
MandatoryPart ::=
"MANDATORY-GROUPS" "{" Groups "}"
| empty
Groups ::=
Group
| Groups "," Group
Group ::=
value(Group OBJECT IDENTIFIER)
CompliancePart ::=
Compliances
| empty
Compliances ::=
Compliance
| Compliances Compliance
Compliance ::=
ComplianceGroup
| Object
ComplianceGroup ::=
"GROUP" value(Name OBJECT IDENTIFIER)
"DESCRIPTION" Text
Object ::=
"OBJECT" value(Name ObjectName)
SyntaxPart
WriteSyntaxPart
AccessPart
"DESCRIPTION" Text
-- must be a refinement for object's SYNTAX clause
SyntaxPart ::=
"SYNTAX" type(SYNTAX)
| empty
-- must be a refinement for object's SYNTAX clause
WriteSyntaxPart ::=
"WRITE-SYNTAX" type(WriteSYNTAX)
| empty
AccessPart ::=
"MIN-ACCESS" Access
| empty
Access ::=
"not-accessible"
| "accessible-for-notify"
| "read-only"
| "read-write"
| "read-create"
-- uses the NVT ASCII character set
Text ::= """" string """"
END
π§ AGENT-CAPABILITIES MACRO π§
Finally, AGENT-CAPABILITIES. It has "PRODUCT-RELEASE" Text, "STATUS" Status, "DESCRIPTION" Text, ReferPart, ModulePart. Status here can only be current or obsolete (no deprecated!). ReferPart same. ModulePart same. Module has comment -- name of module -- then "SUPPORTS" ModuleName, "INCLUDES" "{" Groups "}", VariationPart. ModuleName is identifier ModuleIdentifier. ModuleIdentifier is value(ModuleID OBJECT IDENTIFIER) or empty. Groups same. VariationPart is Variations or empty. Variations is Variation or Variations Variation. Variation is ObjectVariation or NotificationVariation. NotificationVariation is "VARIATION" value(Name NotificationName) AccessPart "DESCRIPTION" Text. ObjectVariation is "VARIATION" value(Name ObjectName) SyntaxPart WriteSyntaxPart AccessPart CreationPart DefValPart "DESCRIPTION" Text. SyntaxPart and WriteSyntaxPart same comments. AccessPart is "ACCESS" Access or empty. Access can be not-implemented (with comment -- only "not-implemented" for notifications), accessible-for-notify, read-only, read-write, read-create, and write-only (with comment -- following is for backward-compatibility only). CreationPart is "CREATION-REQUIRES" "{" Cells "}" or empty. Cells is Cell or Cells "," Cell. Cell is value(Cell ObjectName). DefValPart is "DEFVAL" "{" value(Defval ObjectSyntax) "}" or empty. Text uses NVT ASCII. Here's the exact code:
AGENT-CAPABILITIES MACRO ::=
BEGIN
TYPE NOTATION ::=
"PRODUCT-RELEASE" Text
"STATUS" Status
"DESCRIPTION" Text
ReferPart
ModulePart
VALUE NOTATION ::=
value(VALUE OBJECT IDENTIFIER)
Status ::=
"current"
| "obsolete"
ReferPart ::=
"REFERENCE" Text
| empty
ModulePart ::=
Modules
| empty
Modules ::=
Module
| Modules Module
Module ::=
-- name of module --
"SUPPORTS" ModuleName
"INCLUDES" "{" Groups "}"
VariationPart
ModuleName ::=
identifier ModuleIdentifier
ModuleIdentifier ::=
value(ModuleID OBJECT IDENTIFIER)
| empty
Groups ::=
Group
| Groups "," Group
Group ::=
value(Name OBJECT IDENTIFIER)
VariationPart ::=
Variations
| empty
Variations ::=
Variation
| Variations Variation
Variation ::=
ObjectVariation
| NotificationVariation
NotificationVariation ::=
"VARIATION" value(Name NotificationName)
AccessPart
"DESCRIPTION" Text
ObjectVariation ::=
"VARIATION" value(Name ObjectName)
SyntaxPart
WriteSyntaxPart
AccessPart
CreationPart
DefValPart
"DESCRIPTION" Text
-- must be a refinement for object's SYNTAX clause
SyntaxPart ::=
"SYNTAX" type(SYNTAX)
| empty
-- must be a refinement for object's SYNTAX clause
WriteSyntaxPart ::=
"WRITE-SYNTAX" type(WriteSYNTAX)
| empty
AccessPart ::=
"ACCESS" Access
| empty
Access ::=
"not-implemented"
-- only "not-implemented" for notifications
| "accessible-for-notify"
| "read-only"
| "read-write"
| "read-create"
-- following is for backward-compatibility only
| "write-only"
CreationPart ::=
"CREATION-REQUIRES" "{" Cells "}"
| empty
Cells ::=
Cell
| Cells "," Cell
Cell ::=
value(Cell ObjectName)
DefValPart ::=
"DEFVAL" "{" value(Defval ObjectSyntax) "}"
| empty
-- uses the NVT ASCII character set
Text ::= """" string """"
END
π THE MODULE CLOSES π
END
π SIGN-OFF π
And that's the whole page, bestie! This manual comes from Erlang/OTP, in the SNMP manual, as page SNMPv2-CONF(7). No date on this one, just vibes. Stay iconic, keep your MIBs compliant, and remember: Text uses the NVT ASCII character set. Periodt. π
β¨
π¦ where this page comes from
- alpine 3.24: erlang28-doc 28.5.0.8-r0 Β· Apache-2.0
- arch rolling: erlang-core 29.1.1-1 Β· Apache-2.0
- nixos 26.05: erlang 29.1.2
- nixpkgs unstable: erlang 29.1.2
- ubuntu stonking: erlang-doc 1:29.0.6+dfsg-1 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms