SNMP-NOTIFICATION-MIB(7)

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

πŸ’– SNMP-NOTIFICATION-MIB πŸ’–

okay bestie, welcome to the (7) manual page for SNMP-NOTIFICATION-MIB β€” the Erlang/OTP MIB module that handles remotely configuring the parameters for generating notifications. Yes, it’s giving very specific, very important, very β€œyour SNMP setup needs this” energy. πŸŽ€


🌸 NAME 🌸

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


✨ DESCRIPTION ✨

Bestie, this is the whole MIB definition, and I’m keeping every single definition, contact block, revision, table, object, default, and identifier exactly as-is. Code is sacred, no cap. πŸ’…

          SNMP-NOTIFICATION-MIB DEFINITIONS ::= BEGIN

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

              RowStatus,
              StorageType
                  FROM SNMPv2-TC

              SnmpAdminString
                  FROM SNMP-FRAMEWORK-MIB

              SnmpTagValue,
              snmpTargetParamsName
                  FROM SNMP-TARGET-MIB

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

          snmpNotificationMIB 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
                   notifications."
              REVISION    "9808040000Z"
              DESCRIPTION "Clarifications, published as
                           draft-ietf-snmpv3-appl-v2-01.txt."
              REVISION    "9707140000Z"
              DESCRIPTION "The initial revision, published as RFC2273."
              ::= { snmpModules 13 }

          snmpNotifyObjects       OBJECT IDENTIFIER ::=
                                                    { snmpNotificationMIB 1 }

          snmpNotifyConformance   OBJECT IDENTIFIER ::=
                                                    { snmpNotificationMIB 3 }

          --
          --
          -- The snmpNotifyObjects group
          --
          --

          snmpNotifyTable OBJECT-TYPE
              SYNTAX      SEQUENCE OF SnmpNotifyEntry
              MAX-ACCESS  not-accessible
              STATUS      current
              DESCRIPTION
                  "This table is used to select management targets which should
                   receive notifications, as well as the type of notification
                   which should be sent to each selected management target."
              ::= { snmpNotifyObjects 1 }

          snmpNotifyEntry OBJECT-TYPE
              SYNTAX      SnmpNotifyEntry
              MAX-ACCESS  not-accessible
              STATUS      current
              DESCRIPTION
                  "An entry in this table selects a set of management targets
                   which should receive notifications, as well as the type of
                   notification which should be sent to each selected
                   management target.

                   Entries in the snmpNotifyTable are created and
                   deleted using the snmpNotifyRowStatus object."
              INDEX { IMPLIED snmpNotifyName }
              ::= { snmpNotifyTable 1 }

          SnmpNotifyEntry ::= SEQUENCE {
              snmpNotifyName         SnmpAdminString,
              snmpNotifyTag          SnmpTagValue,
              snmpNotifyType         INTEGER,
              snmpNotifyStorageType  StorageType,
              snmpNotifyRowStatus    RowStatus
          }

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

          snmpNotifyTag OBJECT-TYPE
              SYNTAX      SnmpTagValue
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                  "This object contains a single tag value which is used
                   to select entries in the snmpTargetAddrTable.  Any entry
                   in the snmpTargetAddrTable which contains a tag value
                   which is equal to the value of an instance of this
                   object is selected.  If this object contains a value
                   of zero length, no entries are selected."
              DEFVAL { "" }
              ::= { snmpNotifyEntry 2 }

          snmpNotifyType OBJECT-TYPE
              SYNTAX      INTEGER {
                              trap(1),
                              inform(2)
                          }
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                  "This object determines the type of notification to
                   be generated for entries in the snmpTargetAddrTable
                   selected by the corresponding instance of
                   snmpNotifyTag.  This value is only used when
                   generating notifications, and is ignored when
                   using the snmpTargetAddrTable for other purposes.

                   If the value of this object is trap(1), then any
                   messages generated for selected rows will contain
                   Unconfirmed-Class PDUs.

                   If the value of this object is inform(2), then any
                   messages generated for selected rows will contain
                   Confirmed-Class PDUs.

                   Note that if an SNMP entity only supports
                   generation of Unconfirmed-Class PDUs (and not
                   Confirmed-Class PDUs), then this object may be
                   read-only."
              DEFVAL { trap }
              ::= { snmpNotifyEntry 3 }

          snmpNotifyStorageType OBJECT-TYPE
              SYNTAX      StorageType
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                  "The storage type for this conceptual row."
              DEFVAL { nonVolatile }
              ::= { snmpNotifyEntry 4 }

          snmpNotifyRowStatus 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(5) or
                   createAndWait(5)."
              ::= { snmpNotifyEntry 5 }

          snmpNotifyFilterProfileTable OBJECT-TYPE
              SYNTAX      SEQUENCE OF SnmpNotifyFilterProfileEntry
              MAX-ACCESS  not-accessible
              STATUS      current
              DESCRIPTION
                  "This table is used to associate a notification filter
                   profile with a particular set of target parameters."
              ::= { snmpNotifyObjects 2 }

          snmpNotifyFilterProfileEntry OBJECT-TYPE
              SYNTAX      SnmpNotifyFilterProfileEntry
              MAX-ACCESS  not-accessible
              STATUS      current
              DESCRIPTION
                  "An entry in this table indicates the name of the filter
                   profile to be used when generating notifications using
                   the corresponding entry in the snmpTargetParamsTable.

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

          SnmpNotifyFilterProfileEntry ::= SEQUENCE {
              snmpNotifyFilterProfileName         SnmpAdminString,
              snmpNotifyFilterProfileStorType     StorageType,
              snmpNotifyFilterProfileRowStatus    RowStatus
          }

          snmpNotifyFilterProfileName OBJECT-TYPE
              SYNTAX      SnmpAdminString (SIZE(1..32))
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                  "The name of the filter profile to be used when generating
                   notifications using the corresponding entry in the
                   snmpTargetAddrTable."
              ::= { snmpNotifyFilterProfileEntry 1 }

          snmpNotifyFilterProfileStorType OBJECT-TYPE
              SYNTAX      StorageType
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                  "The storage type of this conceptual row."
              DEFVAL { nonVolatile }
              ::= { snmpNotifyFilterProfileEntry 2 }

          snmpNotifyFilterProfileRowStatus 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(5) or
                   createAndWait(5).

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

                   In particular, a newly created row cannot be made
                   active until the corresponding instance of
                   snmpNotifyFilterProfileName has been set."
              ::= { snmpNotifyFilterProfileEntry 3 }

          snmpNotifyFilterTable OBJECT-TYPE
              SYNTAX      SEQUENCE OF SnmpNotifyFilterEntry
              MAX-ACCESS  not-accessible
              STATUS      current
              DESCRIPTION
                  "The table of filter profiles.  Filter profiles are used
                   to determine whether particular management targets should
                   receive particular notifications.

                   When a notification is generated, it must be compared
                   with the filters associated with each management target
                   which is configured to receive notifications, in order to
                   determine whether it may be sent to each such management
                   target.

                   A more complete discussion of notification filtering
                   can be found in section 6. of [SNMP-APPL]."
              ::= { snmpNotifyObjects 3 }

πŸŽ€ snmpNotifyFilterEntry

okay so bestie, this is an element of a filter profile β€” literally one single row in the filter table, that's the whole vibe. And the way you make them and unmake them? You don't poke at them directly, you use snmpNotifyFilterRowStatus. That's the only door in and out, periodt.

Also clock the INDEX clause β€” the index is snmpNotifyFilterProfileName plus IMPLIED snmpNotifyFilterSubtree. Yes IMPLIED is doing main character work there, we love to see it.

          snmpNotifyFilterEntry OBJECT-TYPE
              SYNTAX      SnmpNotifyFilterEntry
              MAX-ACCESS  not-accessible
              STATUS      current
              DESCRIPTION
                  "An element of a filter profile.

                   Entries in the snmpNotifyFilterTable are created and
                   deleted using the snmpNotifyFilterRowStatus object."
              INDEX {         snmpNotifyFilterProfileName,
                      IMPLIED snmpNotifyFilterSubtree }
              ::= { snmpNotifyFilterTable 1 }

and here's the shape of the whole entry β€” the SEQUENCE of what lives inside one row 🫢

          SnmpNotifyFilterEntry ::= SEQUENCE {
              snmpNotifyFilterSubtree           OBJECT IDENTIFIER,
              snmpNotifyFilterMask              OCTET STRING,
              snmpNotifyFilterType              INTEGER,
              snmpNotifyFilterStorageType       StorageType,
              snmpNotifyFilterRowStatus         RowStatus
          }

🌸 snmpNotifyFilterSubtree

so this is the MIB subtree, and when you pair it up with the matching instance of snmpNotifyFilterMask, the two of them together define a whole family of subtrees β€” and that family is either included in or excluded from the filter profile. it's giving "two besties, one destiny" ngl.

heads up tho: MAX-ACCESS here is not-accessible β€” you can't touch it directly, it's part of the index, iykyk πŸ’…

          snmpNotifyFilterSubtree OBJECT-TYPE
              SYNTAX      OBJECT IDENTIFIER
              MAX-ACCESS  not-accessible
              STATUS      current
              DESCRIPTION
                  "The MIB subtree which, when combined with the corresponding
                   instance of snmpNotifyFilterMask, defines a family of
                   subtrees which are included in or excluded from the
                   filter profile."
              ::= { snmpNotifyFilterEntry 1 }

πŸ’– snmpNotifyFilterMask

okay this one is the iconic one, the actual bitmask. SYNTAX OCTET STRING (SIZE(0..16)) β€” so zero to sixteen octets, no more, no notes. it works together with the corresponding instance of snmpNotifyFilterSubtree to define that family of subtrees, included or excluded, you know the drill.

the mapping is a whole thing, so lemme lay it out exactly as the MIB does, because getting this wrong is a vibe check failure:

  • each bit of the mask corresponds to a sub-identifier of snmpNotifyFilterSubtree
  • the most significant bit of the i-th octet of this octet string value (extended if necessary, see below) corresponds to the (8*i - 7)-th sub-identifier
  • the least significant bit of the i-th octet of this octet string corresponds to the (8*i)-th sub-identifier
  • where i is in the range 1 through 16

and what do the bits mean? each bit says whether that sub-identifier has to match when you're figuring out if an OBJECT IDENTIFIER belongs to this family of filter subtrees:

  • a '1' = exact match must occur
  • a '0' = wild card, i.e. any sub-identifier value matches πŸ™ˆ

so, an OBJECT IDENTIFIER X of an object instance is contained in a family of filter subtrees if, for each sub-identifier of the value of snmpNotifyFilterSubtree, either:

  1. the i-th bit of snmpNotifyFilterMask is 0, or
  2. the i-th sub-identifier of X is equal to the i-th sub-identifier of the value of snmpNotifyFilterSubtree

then there's the extension rule and honestly it's a little unhinged but here goes: if the value of this bit mask is M bits long and there are more than M sub-identifiers in the corresponding instance of snmpNotifyFilterSubtree, then the bit mask gets extended with 1's to be the required length. that's the rule, don't shoot the messenger 😭

and okay, the zero-length case β€” when the value of this object is the zero-length string, that extension rule means a mask of all-1's gets used (i.e. no wild card). so the family of filter subtrees is the one subtree uniquely identified by the corresponding instance of snmpNotifyFilterSubtree. one subtree, no games.

DEFVAL { ''H } β€” yeah, that zero-length string is the default, so that "all-1's" behaviour is your starting point fr fr.

          snmpNotifyFilterMask OBJECT-TYPE
              SYNTAX      OCTET STRING (SIZE(0..16))
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                  "The bit mask which, in combination with the corresponding
                   instance of snmpNotifyFilterSubtree, defines a family of
                   subtrees which are included in or excluded from the
                   filter profile.

                   Each bit of this bit mask corresponds to a
                   sub-identifier of snmpNotifyFilterSubtree, with the
                   most significant bit of the i-th octet of this octet
                   string value (extended if necessary, see below)
                   corresponding to the (8*i - 7)-th sub-identifier, and
                   the least significant bit of the i-th octet of this
                   octet string corresponding to the (8*i)-th
                   sub-identifier, where i is in the range 1 through 16.

                   Each bit of this bit mask specifies whether or not
                   the corresponding sub-identifiers must match when
                   determining if an OBJECT IDENTIFIER matches this
                   family of filter subtrees; a '1' indicates that an
                   exact match must occur; a '0' indicates 'wild card',
                   i.e., any sub-identifier value matches.

                   Thus, the OBJECT IDENTIFIER X of an object instance
                   is contained in a family of filter subtrees if, for
                   each sub-identifier of the value of
                   snmpNotifyFilterSubtree, either:

                     the i-th bit of snmpNotifyFilterMask is 0, or

                     the i-th sub-identifier of X is equal to the i-th
                     sub-identifier of the value of
                     snmpNotifyFilterSubtree.

                   If the value of this bit mask is M bits long and
                   there are more than M sub-identifiers in the
                   corresponding instance of snmpNotifyFilterSubtree,
                   then the bit mask is extended with 1's to be the
                   required length.

                   Note that when the value of this object is the
                   zero-length string, this extension rule results in
                   a mask of all-1's being used (i.e., no 'wild card'),
                   and the family of filter subtrees is the one
                   subtree uniquely identified by the corresponding
                   instance of snmpNotifyFilterSubtree."
              DEFVAL { ''H }
              ::= { snmpNotifyFilterEntry 2 }

πŸ¦‹ snmpNotifyFilterType

short and sweet, we love a low-effort icon ✨ this one says whether the family of filter subtrees defined by this entry gets included in or excluded from a filter. the values are literally just:

  • included(1)
  • excluded(2)

and if you want the whole deep-dive discussion on how this object gets used, it's in section 6. of [SNMP-APPL] β€” go read, bestie, it's giving required reading πŸ“š

DEFVAL { included } β€” defaults to included, as it should πŸ’…

          snmpNotifyFilterType OBJECT-TYPE
              SYNTAX      INTEGER {
                              included(1),
                              excluded(2)
                          }
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                  "This object indicates whether the family of filter subtrees
                   defined by this entry are included in or excluded from a
                   filter.  A more detailed discussion of the use of this
                   object can be found in section 6. of [SNMP-APPL]."
              DEFVAL { included }
              ::= { snmpNotifyFilterEntry 3 }

πŸ“ snmpNotifyFilterStorageType

SYNTAX StorageType, MAX-ACCESS read-create, and the description is literally just "the storage type of this conceptual row." four words of pure confidence. DEFVAL { nonVolatile }. no notes πŸ‘‘

          snmpNotifyFilterStorageType OBJECT-TYPE
              SYNTAX      StorageType
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                  "The storage type of this conceptual row."
              DEFVAL { nonVolatile }
              ::= { snmpNotifyFilterEntry 4 }

🧚 snmpNotifyFilterRowStatus

SYNTAX RowStatus, MAX-ACCESS read-create β€” the status of this conceptual row. and here's the part that actually matters: to create a row in this table, a manager must set this object to either createAndGo(5) or createAndWait(5). that's it, those are the two options, no cap 🫢

          snmpNotifyFilterRowStatus 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(5) or
                   createAndWait(5)."
              ::= { snmpNotifyFilterEntry 5 }

πŸ‘‘ Conformance information

okay we're moving out of the filter table and into the conformance era β€” two OID assignments, that's all, but they're load-bearing:

          --
          --
          -- Conformance information
          --
          --
          snmpNotifyCompliances OBJECT IDENTIFIER ::=
                                                  { snmpNotifyConformance 1 }
          snmpNotifyGroups      OBJECT IDENTIFIER ::=
                                                  { snmpNotifyConformance 2 }

🌈 Compliance statements

and now the compliance statements, aka the "what do you actually have to implement" receipts. three of them, all STATUS current, all iconic in their own way. I'm keeping these verbatim because every MIN-ACCESS, every SYNTAX restriction and every "not required" clause is load-bearing β€” do not trim these, bestie 😭

πŸ’œ snmpNotifyBasicCompliance

the compliance statement for minimal SNMP entities which implement only SNMP Unconfirmed-Class notifications and read-create operations on only the snmpTargetAddrTable.

          snmpNotifyBasicCompliance MODULE-COMPLIANCE
              STATUS      current
              DESCRIPTION
                  "The compliance statement for minimal SNMP entities which
                   implement only SNMP Unconfirmed-Class notifications and
                   read-create operations on only the snmpTargetAddrTable."
              MODULE SNMP-TARGET-MIB
                  MANDATORY-GROUPS { snmpTargetBasicGroup }

                  OBJECT snmpTargetParamsMPModel
                  MIN-ACCESS    read-only
                  DESCRIPTION
                      "Create/delete/modify access is not required."

                  OBJECT snmpTargetParamsSecurityModel
                  MIN-ACCESS    read-only
                  DESCRIPTION
                      "Create/delete/modify access is not required."

                  OBJECT snmpTargetParamsSecurityName
                  MIN-ACCESS    read-only
                  DESCRIPTION
                      "Create/delete/modify access is not required."

                  OBJECT snmpTargetParamsSecurityLevel
                  MIN-ACCESS    read-only
                  DESCRIPTION
                      "Create/delete/modify access is not required."

                  OBJECT snmpTargetParamsStorageType
                  SYNTAX INTEGER {
                      readOnly(5)
                  }
                  MIN-ACCESS    read-only
                  DESCRIPTION
                      "Create/delete/modify access is not required.
                       Support of the values other(1), volatile(2),
                       nonVolatile(3erl), and permanent(5) is not required."

                  OBJECT snmpTargetParamsRowStatus
                  SYNTAX INTEGER {
                      active(1)
                  }
                  MIN-ACCESS    read-only
                  DESCRIPTION
                      "Create/delete/modify access to the
                       snmpTargetParamsTable is not required.
                       Support of the values notInService(2), notReady(3erl),
                       createAndGo(5), createAndWait(5), and destroy(7) is
                       not required."

              MODULE -- This Module
                  MANDATORY-GROUPS { snmpNotifyGroup }

                  OBJECT snmpNotifyTag
                  MIN-ACCESS    read-only
                  DESCRIPTION
                      "Create/delete/modify access is not required."

                  OBJECT snmpNotifyType
                  SYNTAX INTEGER {
                      trap(1)
                  }
                  MIN-ACCESS    read-only
                  DESCRIPTION
                      "Create/delete/modify access is not required.
                       Support of the value notify(2) is not required."

                  OBJECT snmpNotifyStorageType
                  SYNTAX INTEGER {
                      readOnly(5)
                  }
                  MIN-ACCESS    read-only
                  DESCRIPTION
                      "Create/delete/modify access is not required.
                       Support of the values other(1), volatile(2),
                       nonVolatile(3erl), and permanent(5) is not required."

                  OBJECT snmpNotifyRowStatus
                  SYNTAX INTEGER {
                      active(1)
                  }
                  MIN-ACCESS    read-only
                  DESCRIPTION
                      "Create/delete/modify access to the
                       snmpNotifyTable is not required.
                       Support of the values notInService(2), notReady(3erl),
                       createAndGo(5), createAndWait(5), and destroy(7) is
                       not required."

              ::= { snmpNotifyCompliances 1 }

πŸ’™ snmpNotifyBasicFiltersCompliance

the compliance statement for SNMP entities which implement SNMP Unconfirmed-Class notifications with filtering, plus read-create operations on all the related tables. mandatory groups: snmpTargetBasicGroup over in SNMP-TARGET-MIB, and snmpNotifyGroup + snmpNotifyFilterGroup here. that's the whole statement, and honestly? clean, minimal, ate πŸ’…

          snmpNotifyBasicFiltersCompliance MODULE-COMPLIANCE
              STATUS      current
              DESCRIPTION
                  "The compliance statement for SNMP entities which implement
                   SNMP Unconfirmed-Class notifications with filtering, and
                   read-create operations on all related tables."
              MODULE SNMP-TARGET-MIB
                  MANDATORY-GROUPS { snmpTargetBasicGroup }
              MODULE -- This Module
                  MANDATORY-GROUPS { snmpNotifyGroup,
                                     snmpNotifyFilterGroup }
              ::= { snmpNotifyCompliances 2 }

🩷 snmpNotifyFullCompliance

the big one. the compliance statement for SNMP entities which either implement only SNMP Confirmed-Class notifications, or both SNMP Unconfirmed-Class and Confirmed-Class notifications, plus filtering and read-create operations on all related tables. mandatory groups: snmpTargetBasicGroup and snmpTargetResponseGroup from SNMP-TARGET-MIB, plus snmpNotifyGroup and snmpNotifyFilterGroup here. full send, no half measures πŸ”₯

          snmpNotifyFullCompliance MODULE-COMPLIANCE
              STATUS      current
              DESCRIPTION
                  "The compliance statement for SNMP entities which either
                   implement only SNMP Confirmed-Class notifications, or both
                   SNMP Unconfirmed-Class and Confirmed-Class notifications,
                   plus filtering and read-create operations on all related
                   tables."
              MODULE SNMP-TARGET-MIB
                  MANDATORY-GROUPS { snmpTargetBasicGroup,
                                     snmpTargetResponseGroup }
              MODULE -- This Module
                  MANDATORY-GROUPS { snmpNotifyGroup,
                                     snmpNotifyFilterGroup }
              ::= { snmpNotifyCompliances 3 }

⭐ snmpNotifyGroup

and finally (for this part, anyway 🫢) the object group β€” a collection of objects for selecting which management targets get used to generate notifications, and the type of notification generated for each selected management target. the roster:

          snmpNotifyGroup OBJECT-GROUP
              OBJECTS {
                  snmpNotifyTag,
                  snmpNotifyType,
                  snmpNotifyStorageType,
                  snmpNotifyRowStatus
              }
              STATUS      current
              DESCRIPTION
                  "A collection of objects for selecting which management
                   targets are used for generating notifications, and the
                   type of notification to be generated for each selected
                   management target."
              ::= { snmpNotifyGroups 1 }

okay don't go anywhere, the next bit's coming right up πŸ’–

...and the very last thing in the whole MIB is this little group right here, bestie β€” the object group that bundles up everything you need to configure notification filters remotely. That's the whole vibe of it: you don't have to be sitting at the box, you do it over the network like a main character.

          snmpNotifyFilterGroup OBJECT-GROUP
              OBJECTS {
                  snmpNotifyFilterProfileName,
                  snmpNotifyFilterProfileStorType,
                  snmpNotifyFilterProfileRowStatus,
                  snmpNotifyFilterMask,
                  snmpNotifyFilterType,
                  snmpNotifyFilterStorageType,
                  snmpNotifyFilterRowStatus
              }
              STATUS      current
              DESCRIPTION
                  "A collection of objects providing remote configuration
                   of notification filters."
              ::= { snmpNotifyGroups 2 }

Let's break down the cute little details so nothing sneaks past you:

  • snmpNotifyFilterGroup β€” the group itself, and everything listed under OBJECTS is a member. Seven little icons, all in the same group chat. 🫢
  • The OBJECTS list, one by one, exactly as written: snmpNotifyFilterProfileName, snmpNotifyFilterProfileStorType, snmpNotifyFilterProfileRowStatus, snmpNotifyFilterMask, snmpNotifyFilterType, snmpNotifyFilterStorageType, snmpNotifyFilterRowStatus.
  • Yeah β€” snmpNotifyFilterProfileStorType is spelled StorType, not StorageType, and snmpNotifyFilterStorageType right below it is spelled out in full. That's just how it is in here, don't come for me, I'm reading it off the page πŸ’…
  • STATUS current β€” it's current, meaning this definition is the live, valid one. No deprecated energy here, we're thriving ✨
  • The DESCRIPTION says it's "A collection of objects providing remote configuration of notification filters." Remote config, periodt β€” filters get managed from elsewhere over the network.
  • ::= { snmpNotifyGroups 2 } β€” this group lives at OID node 2 under snmpNotifyGroups, and that's its exact registration point.
ngl, if you're typing any of these object names out by hand, copy-paste them. One wrong character and the whole thing is giving error message instead of icon. 😭

And then, because everything has to end sometime:

          END

That's it β€” END, capital letters, no notes. The MIB module is closed, the curtains are down, and the whole SNMP-NOTIFICATION-MIB definition is complete. πŸŽ€


🌸 one last lil sign-off 🌸

This page comes to you from Erlang/OTP, in the SNMP corner of the world, and it's filed under the name SNMP-NOTIFICATION-MIB(7) β€” and that's the whole footer, babes. No date sitting down there with it, so don't ask me to make one up. πŸ™ˆ

Go forth, configure those notification filters remotely, and may all your rows be active. You ate that entire page, fr fr. πŸ’–βœ¨πŸ¦‹