components/net-snmp-57/sun/sdk/demo/demo_module_7/README_demo_module_7
changeset 5867 445e2cf1c845
parent 252 ee0fb1eabcbf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/net-snmp-57/sun/sdk/demo/demo_module_7/README_demo_module_7	Fri Dec 11 03:49:26 2015 -0800
@@ -0,0 +1,235 @@
+#
+# 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_7
+***********************************************************************
+
+This code example demonstrates how to dynamically update multi-instance 
+modules. See the System Management Agent Developer's Guide for
+more information about dynamically updating multi-instance modules.
+
+You can follow these guidelines when you need to add new instances after 
+a module has been registered with the agent.
+
+
+Introduction
+============
+
+The demo_module_7 code example module registers context name strings that 
+represent files. Get requests to these contexts will retrieve the size of 
+the file.
+
+The module can be dynamically updated to register new file names, by issuing 
+an snmpset command.  You do not need to edit the module. An application passes
+the file name to the module by issuing an snmpset command, such as the 
+following:
+
+	/usr/bin/snmpset -v 3 -u < user_name >
+	-l authNoPriv -A " <password >" < agent_host_name > 
+	< createContext OID > s <file_name>
+
+The module registers the set_createContext handler to handle incoming snmpset
+requests for this OID. The set_createContext handler registers the new filename
+as a context string in the contextName member of the 
+netsnmp_registration_handler struct for the me1filesize_oid.
+
+Subsequent snmpget requests for the size of the file will return its size in
+blocks:  For example:
+
+	/usr/bin/snmpget -v 3 -u < user_name >  -n < context_name>
+	-l authNoPriv -A "< password  >" < agent_host_name > < filesize_oid > 
+
+Note that you can use -m MIB[:...] to load given list of MIBs 
+(ALL loads everything).
+For more information on loading MIBs refer to the snmpcmd man page.  
+
+
+
+How to Build the demo_module_7 Code Example
+===========================================
+
+The demo_module_7 code example includes the following files, by default located
+in the directory /usr/demo/sma_snmp/demo_module_7.
+
+Files:
+
+Makefile - makefile to build the demo_module_7.so shared library file
+demo_module_7.c  - module source code
+demo_module_7.h - module header file
+get_filesize - Script that executes snmpget on a file.
+register_file - Script that executes snmpset on the createContext OID
+unregister_file - Script that executes snmpset on the removeContext OID
+SDK-DEMO6-MIB.txt - MIB file from demo_module_6, also used in demo_module_7
+
+
+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_7  /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_7
+   
+
+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_7.so /home/username/demo/lib
+   
+
+4. This module uses the SDK-DEMO6-MIB.txt file from demo_module_6.  If you have
+   not already done so, copy this 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_7 /home/username/demo/lib/demo_module_7.so
+   
+    
+ 4. Start the SMA snmp agent. If the agent is already running, stop and 
+    restart it in debug mode.
+    For example:
+   
+    # /usr/sbin/snmpd -Ddemo_module_7
+    
+    The optional -Ddemo_module_7 argument sends debugging statements from 
+    demo_module_7 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_7 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_filesize script to get the filesize of the file 
+   /home/username/demo/lib/demo_module_7.so. For example:
+
+   % get_filesize
+
+   This file has not yet been registered so the agent will timeout.
+
+   Timeout: No Response from localhost.
+
+
+3. Run the register_file script to register the file 
+   /home/username/demo/lib/demo_module_7.so with the module:
+
+   % register_file
+      
+    SDK-DEMO6-MIB::me1createContext.0 = STRING: "/home/username/demo/lib/demo_module_7.so"
+  
+  
+4. Run the get_filesize script again to query for the filesize.
+
+   % get_filesize
+   
+    SDK-DEMO6-MIB::me1FileSize.0 = INTEGER: 28144
+    
+      
+5. Run the unregister_file script to unregister the file.
+
+   % unregister_file
+
+    SDK-DEMO6-MIB::me1removeContext.0 = STRING: "/home/username/demo/lib/demo_module_7.so"
+ 
+ 
+