diff -r f527656d334f -r ee0fb1eabcbf components/net-snmp/sun/sdk/demo/demo_module_6/README_demo_module_6 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/net-snmp/sun/sdk/demo/demo_module_6/README_demo_module_6 Fri May 20 12:17:45 2011 +0530 @@ -0,0 +1,202 @@ +# +# Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. +# +# U.S. Government Rights - Commercial software. Government users are subject +# to the Sun Microsystems, Inc. standard license agreement and applicable +# provisions of the FAR and its supplements. +# +# +# This distribution may include materials developed by third parties. Sun, +# Sun Microsystems, the Sun logo and Solaris are trademarks or registered +# trademarks of Sun Microsystems, Inc. in the U.S. and other countries. +# +# + +README for demo_module_6 +*********************************************************************** + +This code example demonstrates how to implement a module in such a way that +more than one instance of the module can run simultaneously on a single host. +See the System Management Agent Developer's Guide for more information about +implementing multi-instance modules. + + +Introduction +============ + +The demo_module_6.c file shows how to write a module that registers an object +in two different contexts. It also shows how to check for the contextName in +a request and return a different value depending on the value of the +contextName. + +The code example registers one object, filesize, in two different contexts, +fileX and fileY. This example registers the OIDs using a read-only instance +handler helper. The OIDs do not need to be read-only. You could also register +the OIDs using any of the SMA instance handler helper APIs. + +The function get_filesize is registered to handle get requests for instances +of the filesize object. This function checks the contextName in the reginfo +structure that is passed to the function by the SMA agent. If the value of +contextName is fileX, the function returns fileX_data, which has been set to +the integer 111. If the value of contextName is fileY, the function returns +fileY_data, which has been set to the integer 999. + + +How to Build the demo_module_6 Code Example +=========================================== + +The demo_module_6 code example includes the following files, by default located +in the directory /usr/demo/sma_snmp/demo_module_6. + + +Files: + +Makefile - makefile to build demo_module_6.so shared library file +demo_module_6.c - module source code +demo_module_6.h - module header file +SDK-DEMO6-MIB.txt - MIB file +get_demo_module_6 - Script that executes snmpget against the OID defined + in the module. + + +To set up your build environment for the demo: + +1. Copy the demo code to a directory for which you have write permission. + For example: + % cp -R /usr/demo/sma_snmp/demo_module_6 /home/username/demo + + +2. Create a lib directory that you can use to store shared object libraries + that you generate from demo code examples, if you have not already done so. + For example: + % mkdir /home/username/demo/lib + + +3. Create a mibs directory that you can use to store MIB files for the demo + code examples, if you have not already done so. + For example: + % mkdir /home/username/demo/mibs + + +4. Set the CC environment variable to the location of the C compiler to be + used. For example, if you are using Sun ONE Studio: + % setenv CC /opt/SUNWspro/bin/cc + + +5. Set your PATH environment variable to include the appropriate paths, so that + needed binaries can be found during the compilation process. + For example, in the csh: + + % setenv PATH .:/usr/bin:$PATH + + +To build the example: + +1. Change to the directory where you copied the demo module files. + For example: + + % cd /home/username/demo/demo_module_6 + + +2. Use the make command to generate object files. + + If you are running the 64-bit SPARC Solaris kernel, type: + % /usr/ccs/bin/make + + If you are running the 32-bit SPARC Solaris kernel, type: + % /usr/ccs/bin/make ARCH=32 + + If you are running the Solaris x86 kernel, type: + % /usr/ccs/bin/make ARCH=32 + + +3. Copy the module shared library object to the lib directory you created. + For example: + + % cp demo_module_6.so /home/username/demo/lib + + +4. Copy the SDK-DEMO6-MIB.tx file to the mibs directory you created for the + demos. + For example: + + % cp SDK-DEMO6-MIB.txt /home/username/demo/mibs + + + +Setting Up Agent to Run the Multi-Instance Module +================================================= + +To run this module, the agent must be configured for SNMPv3. + + + 1. As root, stop the SNMP agent if it is running. + For example: + + # /etc/init.d/init.sma stop + + + 2. Set up an SNMP v3 user as follows, if you have not already done so. + Note that you should use "myuser" and "mypassword" -- do not replace with + other values because the test script expects these values. + + # /usr/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 agent's configuration file /etc/sma/snmp/snmpd.conf, + and insert a dlmod statement for the module. This statement enables + the agent to load the module. + For example: + + dlmod demo_module_6 /home/username/demo/lib/demo_module_6.so + + + 4. Start the SMA snmp agent in debug mode. + For example: + + # /usr/sbin/snmpd -Ddemo_module_6 + + The optional -Ddemo_module_6 argument sends debugging statements from + demo_module_6 to the /var/log/snmpd.log file. You can also use the -L + and -f options to send debugging statements to the screen instead. + + + + + +Testing the demo_module_6 Module +================================ + +1. Set your MIBS and MIBDIRS environment variables to + include the appropriate paths. + For example, in the csh: + + % setenv MIBDIRS .:/home/username/demo/mibs:/etc/sma/snmp/mibs + % setenv MIBS +SDK-DEMO6-MIB + + Note that step 1 is not required, but it enables snmpget to access the MIB + to provide variable names instead of OIDs in its output. + + +2. Run the get_demo_module_6 script to access the agent: + + % get_demo_module_6 + + SMA-SDK-MODULE-EXAMPLE1-MIB::me1FileSize.0 = INTEGER: 111 + SMA-SDK-MODULE-EXAMPLE1-MIB::me1FileSize.0 = INTEGER: 999 + + + The first snmpget in the script accesses the module whose contextName is + fileX, and the second snmpget accesses the module whose contextName is + fileY. + + + +