Search code examples
snmpasn.1mib

SNMP MIB SMIv2 Conformance Group Issue


I have a MIB that I started working on but smilint complains about a missing conformance group. How do I add this conformance group to my file?

BLEH-PRODUCT-MIB DEFINITIONS ::= BEGIN

-- Objects in this MIB are implemented in the local SNMP agent.

   IMPORTS
           MODULE-IDENTITY, OBJECT-TYPE, Integer32, enterprises
                   FROM SNMPv2-SMI;

   blehProductMIB MODULE-IDENTITY
     LAST-UPDATED "201305290000Z"
     ORGANIZATION "Bleh Corporation"
     CONTACT-INFO "           Joe Shmoe
                   Postal:    Bleh Corporation
                              23 Telnet Road
                              Ottawa, ON, K1K 1K1
                              Canada

                   Tel:       +1 555 555 5555 x5555
                   Fax:       +1 555 555 5556
                   E-mail:    [email protected]"
     DESCRIPTION "MIB module describing Product objects."
     REVISION    "201305290000Z"
     DESCRIPTION "Initial"
     ::= { bleh 911 }

   bleh              OBJECT IDENTIFIER ::= { enterprises 54321 }

   productStatus OBJECT-TYPE
           SYNTAX       OCTET STRING (SIZE (0..65535))
           MAX-ACCESS   read-only
           STATUS       current
           DESCRIPTION  "The status of the Product system
                         Details are shown as text"
           ::= { blehProductMIB 1 }


   binaryProductStatus OBJECT-TYPE
           SYNTAX      Integer32 (0..1)
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION "The status of the Product system
                        Zero is unhealthy and One is healthy"
           ::= { blehProductMIB 2 }
END

Output of smilint:

$ smilint ./BLEH-PRODUCT-MIB 
./BLEH-PRODUCT-MIB:28: warning: node `productStatus' must be contained in at least one conformance group
./BLEH-PRODUCT-MIB:37: warning: node `binaryProductStatus' must be contained in at least one conformance group

Solution

  • It simply means you should define OBJECT-GROUP entities before defining OBJECT-TYPE entities in your MIB document.

    Take RFC 1907 as example,

    https://www.rfc-editor.org/rfc/rfc1907

    snmpGroup OBJECT-GROUP
        OBJECTS { snmpInPkts,
                  snmpInBadVersions,
                  snmpInASNParseErrs,
                  snmpSilentDrops,
                  snmpProxyDrops,
                  snmpEnableAuthenTraps }
        STATUS  current
        DESCRIPTION
                "A collection of objects providing basic instrumentation and
                control of an SNMPv2 entity."
        ::= { snmpMIBGroups 8 }
    

    is defined first, and then

    snmpInPkts OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                "The total number of messages delivered to the SNMP entity
                from the transport service."
        ::= { snmp 1 }
    

    About why groups are important, you can read RFC 2580.

    https://www.rfc-editor.org/rfc/rfc2580

    Since you are going to define groups, then adding associated MODULE-COMPLIANCE is recommended.