components/net-snmp/sun/sdk/demo/demo_module_6/README_demo_module_6
changeset 252 ee0fb1eabcbf
--- /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]
+    <Return>
+ 
+      
+ 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.  
+      
+
+
+