Solaris System Management Agent Developer's Guide

ProcedureHow To Implement Multiple Instance Modules

  1. As root, stop the agent if the agent is already running.


    # svcadm disable -t svc:/application/management/sma:default
    
  2. Set up an SNMPv3 user.

    For example, set up user name myuser with password mypassword as follows:


    # $ /usr/sfw/bin/net-snmp-config 
    --create-snmpv3-user myuser
    
    Enter authentication pass-phrase: 
    mypassword
     
    Enter encryption pass-phrase: 
    [press return to reuse the authentication pass-phrase]
  3. Edit the module to register context names that the module handles.

    Find the init_module routine in the module. Add code to register context names that the module handles.

    For example, you might add the following code:

    void 
    init_filesize(void) 
    { 
    // Declare the OID
    static oid filesize_oid[] = { 1,3,6,1,4,1,42,2,2,4,4,6,1,1,0 };
    
    
    // Declare a registration handler
    netsnmp_handler_registration *myreg1; 
    
    // Declare pointers to character arrays initialized
    // to the context name strings
    char *filexcon = "fileX"; 
    char *fileycon = "fileY"; 
    
    // Create a registration handler for the OID. 
    // filesize is the name of handler.
    // get_filesize is the function to call when an SNMP 
    // request for the OID is received, filesize_oid is the 
    // OID for which the handler is registered,
    // OID_LENGTH(filesize_oid) passes the length of the 
    // OID array to the agent.
    // HANDLER_CAN_RONLY is a constant that specifies that 
    // this handler only handles get requests.
    myreg1 = netsnmp_create_handler_registration 
    ("filesize", get_filesize, 
                 filesize_oid, OID_LENGTH(filesize_oid), 
                 HANDLER_CAN_RONLY);
                          
    // Assign the string fileX to the contextName member of the 
    // netsnmp_handler_registration struct
    myreg1->contextName=filexcon; 
    
    // Register the netsnmp_handler_registration struct with the
    // agent.  netsnmp_register_read_only is a helper function
    // that notifies the agent that this module only handles snmp 
    // get requests. 
    netsnmp_register_read_only_instance(myreg1);
    }