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-GROUP
  • NOTIFICATION-GROUP
  • MODULE-COMPLIANCE
  • AGENT-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