components/net-snmp-57/sun/sdk/demo/demo_module_10/demo_module_10.c
author Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
Fri, 11 Dec 2015 03:49:26 -0800
changeset 5867 445e2cf1c845
parent 252 components/net-snmp/sun/sdk/demo/demo_module_10/demo_module_10.c@ee0fb1eabcbf
permissions -rw-r--r--
PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1 15685782 SUNBT7005330 NET-SNMP upgrade to 5.7.2.1 15705167 SUNBT7030994 find memory leaks for snmp-notify after doing libfmnotif
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
252
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
     1
/*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
     2
 * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
     3
 *
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
     4
 * U.S. Government Rights - Commercial software. Government users are subject
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
     5
 * to the Sun Microsystems, Inc. standard license agreement and applicable
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
     6
 * provisions of the FAR and its supplements.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
     7
 *
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
     8
 *
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
     9
 * This distribution may include materials developed by third parties. Sun,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    10
 * Sun Microsystems, the Sun logo and Solaris are trademarks or registered
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    11
 * trademarks of Sun Microsystems, Inc. in the U.S. and other countries.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    12
 *
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    13
 */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    14
 
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    15
/*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    16
 * Note: this file originally auto-generated by mib2c using :
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    17
 * mib2c.scalar.conf,v 1.5 2002/07/18 14:18:52 dts12 Exp $
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    18
 */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    19
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    20
#include <net-snmp/net-snmp-config.h>
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    21
#include <net-snmp/net-snmp-includes.h>
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    22
#include <net-snmp/agent/net-snmp-agent-includes.h>
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    23
#include <time.h>
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    24
#include "demo_module_10.h"
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    25
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    26
// Default scalar data value
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    27
static long exampleData = 0;
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    28
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    29
// Status of data collection
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    30
static u_long status = 0;
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    31
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    32
// Default delay time
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    33
static u_long delay_time = 2;
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    34
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    35
// Default alarm interval
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    36
static u_long alarm_time = 5;
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    37
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    38
// Data collection timestamp
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    39
char refreshTime[256];
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    40
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    41
// System date/time
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    42
time_t mytime;
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    43
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    44
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    45
/*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    46
   The following code example demonstrates a module design that handles
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    47
   long running data collections so that their values can be polled by
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    48
   an SNMP manager. The example also shows how to implement objects that
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    49
   normally would block the agent as it waits for external events in such
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    50
   a way that the agent can continue responding to other requests while
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    51
   this implementation waits.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    52
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    53
   This example uses the following features of SMA:
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    54
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    55
   - Setting the delegated member of the requests structure to 1 to indicate to the
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    56
     agent that this request should be delayed.  The agent queues this request
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    57
     to be handled later and then is available to handle other requests.  The
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    58
     agent is not blocked by this request.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    59
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    60
   - Registering an SNMP alarm to update the results at a later time. 
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    61
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    62
   - Use of a status variable to communicate the status of a data collection to
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    63
     the polling SNMP manager.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    64
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    65
   - Use of a refreshTime variable to return the date and time that the data collection
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    66
     completed.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    67
*/
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    68
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    69
/*  Initialialization routine that is automatically called by the agent.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    70
    The function name must match init_FILENAME() */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    71
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    72
void
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    73
init_demo_module_10(void)
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    74
{
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    75
	/*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    76
	 * the OID at which to register the exampleData variable.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    77
	 */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    78
	static oid longRunScalar_oid[] =
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    79
	    {1, 3, 6, 1, 4, 1, 42, 2, 2, 4, 4, 10, 1, 1, 0};
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    80
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    81
	/*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    82
	 * the OID at which to register the status variable.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    83
	 */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    84
	static oid status_oid[] =
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    85
	    {1, 3, 6, 1, 4, 1, 42, 2, 2, 4, 4, 10, 1, 2, 0};
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    86
	
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    87
	/*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    88
	 * the OID at which to register the refreshTime variable.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    89
	 */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    90
	static oid refreshTime_oid[] =
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    91
	    {1, 3, 6, 1, 4, 1, 42, 2, 2, 4, 4, 10, 1, 3, 0};
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    92
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    93
	
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    94
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    95
	netsnmp_handler_registration *myreg;
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    96
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    97
	/*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    98
	 * A debugging statement.  Run the agent with -Ddemo_module_10 to see
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
    99
	 * the output of this debugging statement in /var/log/snmpd.log, by
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   100
	 * default. Use the -L option to write debugging output to the
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   101
	 * screen.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   102
	 */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   103
		DEBUGMSGTL(("demo_module_10", "Initializing\n"));
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   104
	/*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   105
	 * Creates a read-only registration handler named longRunScalar,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   106
	 * which calls the get_longRunScalar function to service snmp
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   107
	 * requests for the longRunScalar_oid object.  The OID_LENGTH
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   108
	 * argument calculates the length of the longRunScalar_oid.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   109
	 */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   110
	myreg = netsnmp_create_handler_registration
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   111
		       ("longRunScalar",
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   112
			get_longRunScalar,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   113
			longRunScalar_oid,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   114
			OID_LENGTH(longRunScalar_oid),
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   115
			HANDLER_CAN_RONLY);
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   116
	/*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   117
	 * Register the instance and handler.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   118
	 *
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   119
	 */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   120
	netsnmp_register_read_only_instance(myreg);
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   121
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   122
	/*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   123
	 * Creates a read/write registration handler named getStatus,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   124
	 * which calls the get_status function to service snmp
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   125
	 * requests for the status_oid object.  The OID_LENGTH
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   126
	 * argument calculates the length of the status_oid.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   127
	 */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   128
	
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   129
	myreg = netsnmp_create_handler_registration
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   130
		       ("delayed_instance_handler",
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   131
			delayed_instance_handler,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   132
			status_oid,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   133
			OID_LENGTH(status_oid),
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   134
			HANDLER_CAN_RWRITE);
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   135
	/*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   136
	 * Register the instance and handler.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   137
	 *
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   138
	 */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   139
	netsnmp_register_instance(myreg);
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   140
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   141
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   142
	/*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   143
	 * Creates a read-only registration handler named getTimestamp,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   144
	 * which calls the get_timestamp function to service snmp
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   145
	 * get requests for the timestamp_oid object.  The OID_LENGTH
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   146
	 * argument calculates the length of the timestamp_oid.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   147
	 */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   148
	
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   149
	myreg = netsnmp_create_handler_registration
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   150
		       ("getTimestamp",
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   151
			get_timestamp,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   152
			refreshTime_oid,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   153
			OID_LENGTH(refreshTime_oid),
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   154
			HANDLER_CAN_RONLY);
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   155
	/*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   156
	 * Register the instance and handler.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   157
	 *
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   158
	 */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   159
	netsnmp_register_instance(myreg);
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   160
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   161
}
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   162
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   163
#define DELAYED_INSTANCE_SET_NAME "test_delayed"
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   164
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   165
int
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   166
delayed_instance_handler(netsnmp_mib_handler *handler,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   167
                         netsnmp_handler_registration *reginfo,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   168
                         netsnmp_agent_request_info *reqinfo,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   169
                         netsnmp_request_info *requests)
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   170
{
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   171
	/*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   172
	This handler is called to handle SNMP GET and SNMP SET
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   173
	requests for the my_delayed_oid object. If it is called to
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   174
	handle SNMP GET requests, the handler does not need to
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   175
	handle a GETNEXT if it is registered as an instance handler.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   176
	Instance handlers only deliver one request at a time, so we
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   177
	do not need to loop over a list of requests. */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   178
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   179
	DEBUGMSGTL(("demo_module_10", "Handler got request, mode = %d:\n",
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   180
                reqinfo->mode));
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   181
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   182
	switch (reqinfo->mode) {
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   183
	/*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   184
	 * here we merely mention that we'll answer this request
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   185
         * later.  we don't actually care about the mode type in this
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   186
         * example, but for certain cases you may, so I'll leave in the
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   187
         * otherwise useless switch and case statements 
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   188
         */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   189
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   190
	default:
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   191
        /*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   192
         * Mark this variable as something that cannot be handled now
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   193
	 * by setting the delegated member of the requests structure
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   194
	 * to 1. The agent queues the request to be handled at a later
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   195
	 * time and continues responding to other client requests.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   196
         *  
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   197
         */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   198
        requests->delegated = 1;
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   199
	DEBUGMSGTL(("demo_module_10", "Delegated is %d\n",
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   200
                requests->delegated));
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   201
        /*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   202
         * Register an alarm to update the results at a later
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   203
         * time.  Normally, we might have to query something else
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   204
         * (like an external request sent to a different network
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   205
         * or system socket, etc), but for this example we'll do
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   206
         * something really simply and just insert an alarm for a
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   207
         * certain period of time. 
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   208
         */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   209
        snmp_alarm_register(alarm_time, /* seconds */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   210
                            0,  /* dont repeat. */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   211
	                    get_status,   /* the function */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   212
	                                  /* to call */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   213
                            /*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   214
                             * Create a "cache" of useful
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   215
                             * information that can be retrieved
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   216
                             * at a later time.  This argument is
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   217
                             * passed back to the module in the callback 
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   218
                             * function for an alarm. 
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   219
                             */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   220
                            (void *)
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   221
                            netsnmp_create_delegated_cache(handler,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   222
                                                           reginfo,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   223
                                                           reqinfo,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   224
                                                           requests,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   225
                                                           NULL));
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   226
        break;
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   227
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   228
    }
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   229
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   230
    return SNMP_ERR_NOERROR;
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   231
}
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   232
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   233
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   234
int
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   235
get_longRunScalar(netsnmp_mib_handler * handler,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   236
	netsnmp_handler_registration * reginfo,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   237
	netsnmp_agent_request_info * reqinfo,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   238
	netsnmp_request_info * requests)
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   239
{
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   240
	/*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   241
	 * This handler returns the data from the data collection, if the
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   242
	 * collection has finished.  If the collection has not finished.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   243
	 * it returns an SNMP_ERR_NOACCESS error.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   244
	 *
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   245
	 * This handler is never called for a getnext if it is registered as
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   246
	 * an instance. An instance handler only delivers one request at a
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   247
	 * time, so we do not need to loop over a list of requests.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   248
	 */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   249
	switch (reqinfo->mode) {
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   250
	case MODE_GET:
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   251
		// if collection done, return data; else return snmp error
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   252
		if (status == 2)
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   253
			snmp_set_var_typed_value(requests->requestvb,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   254
			ASN_INTEGER, (u_char *) & exampleData,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   255
			sizeof (exampleData) /* length in bytes */);
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   256
		else
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   257
			netsnmp_set_request_error(reqinfo, requests,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   258
                                      SNMP_ERR_NOACCESS);
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   259
		break;
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   260
	default:
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   261
		/*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   262
		 * We should never get here, so this is a really bad error.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   263
		 */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   264
		return (SNMP_ERR_GENERR);
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   265
	}
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   266
	return (SNMP_ERR_NOERROR);
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   267
}
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   268
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   269
int
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   270
get_timestamp(netsnmp_mib_handler * handler,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   271
	netsnmp_handler_registration * reginfo,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   272
	netsnmp_agent_request_info * reqinfo,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   273
	netsnmp_request_info * requests)
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   274
{
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   275
	/*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   276
	 * This handler returns the date and time of the current data
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   277
	 * collection. If the collection has not completed, it returns
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   278
	 * an SNMP_ERR_NOACCESS error.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   279
	 *
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   280
	 * This handler is never called for a getnext if it is registered as
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   281
	 * an instance. An instance handler only delivers one request at a
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   282
	 * time, so we do not need to loop over a list of requests.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   283
	 */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   284
	DEBUGMSGTL(("demo_module_10", "get_timestamp CALLED\n"));
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   285
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   286
	switch (reqinfo->mode) {
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   287
	case MODE_GET:
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   288
		// A data collection is ready. Return its timestamp.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   289
		if (status == 2)
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   290
			snmp_set_var_typed_value(requests->requestvb,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   291
			    ASN_OCTET_STR, (u_char *)refreshTime,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   292
			    sizeof (refreshTime));
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   293
		else
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   294
			// no data collection, so no timestamp available.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   295
			netsnmp_set_request_error(reqinfo, requests,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   296
                                      SNMP_ERR_NOACCESS);
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   297
		break;
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   298
	default:
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   299
		/*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   300
		 * We should never get here, so this is a really bad error.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   301
		 */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   302
		return (SNMP_ERR_GENERR);
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   303
	}
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   304
	return (SNMP_ERR_NOERROR);
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   305
}
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   306
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   307
void
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   308
get_status(unsigned int clientreg, void *clientarg)
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   309
{
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   310
  /*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   311
   * This function returns the value of the status variable.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   312
   * If the value of status is 0 (no collection is running), it
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   313
   * calles collect_data to start one.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   314
   *  
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   315
   */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   316
	
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   317
  /*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   318
   * Extract the cache from the passed argument.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   319
   */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   320
    netsnmp_delegated_cache *cache = (netsnmp_delegated_cache *) clientarg;
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   321
    netsnmp_request_info *requests;
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   322
    netsnmp_agent_request_info *reqinfo;
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   323
    u_long         *delay_time_cache = NULL;
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   324
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   325
    /*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   326
     * Make sure the cache created earlier is still
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   327
     * valid.  If not, the request timed out for some reason and we
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   328
     * do not need to keep processing things.  Should never happen, but
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   329
     * this double checks. 
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   330
     */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   331
    cache = netsnmp_handler_check_cache(cache);
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   332
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   333
    if (!cache) {
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   334
        snmp_log(LOG_ERR, "illegal call to return delayed response\n");
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   335
        return;
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   336
    }
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   337
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   338
    /*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   339
     * Re-establish the previous pointers,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   340
     */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   341
    reqinfo = cache->reqinfo;
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   342
    requests = cache->requests;
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   343
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   344
    DEBUGMSGTL(("demo_module_10",
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   345
                "continuing delayed request, mode = %d\n",
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   346
                cache->reqinfo->mode));
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   347
    
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   348
    /*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   349
     * Set delegated to zero to indicate that the request is no longer
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   350
     * delegated and answer the query.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   351
     */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   352
    requests->delegated = 0;
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   353
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   354
    switch (cache->reqinfo->mode) {
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   355
        /*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   356
         * Registering as an instance means we do not need to deal with
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   357
         * GETNEXT processing, so we do not handle it here at all.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   358
         * 
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   359
         * However, since the instance handler already reset the mode
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   360
         * back to GETNEXT from the GET mode, we need to do the
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   361
         * same thing in both cases.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   362
	 *
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   363
         */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   364
	case MODE_GET:
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   365
            // no collection running, start one.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   366
	    if (status == 0)
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   367
		    collect_data();
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   368
	    snmp_set_var_typed_value(requests->requestvb,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   369
	        ASN_INTEGER, (u_char *) & status,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   370
		    sizeof (status) /* length in bytes */);
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   371
		break;
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   372
	case MODE_SET_RESERVE1:
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   373
	    /*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   374
	     * check type 
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   375
	     */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   376
	    if (requests->requestvb->type != ASN_INTEGER) {
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   377
		    /*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   378
		     * If not an integer, return SNMP error. 
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   379
		     */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   380
		    netsnmp_set_request_error(reqinfo, requests,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   381
                                      SNMP_ERR_WRONGTYPE);
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   382
		    /*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   383
		     * Free cache. It is no longer needed. 
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   384
		     */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   385
		    netsnmp_free_delegated_cache(cache);
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   386
		    return;
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   387
	    }
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   388
	    break;
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   389
   	case MODE_SET_RESERVE2:
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   390
		    /*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   391
		     * Store old value for UNDO support in the future. 
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   392
		     */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   393
		    memdup((u_char **) & delay_time_cache,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   394
			(u_char *) & delay_time, sizeof(delay_time));
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   395
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   396
		    /*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   397
		     * malloc failed 
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   398
		     */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   399
		    if (delay_time_cache == NULL) {
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   400
			    netsnmp_set_request_error(reqinfo, requests,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   401
                                      SNMP_ERR_RESOURCEUNAVAILABLE);
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   402
			    netsnmp_free_delegated_cache(cache);
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   403
			    return;
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   404
		    }
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   405
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   406
		    /*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   407
		     * Add our temporary information to the request itself.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   408
		     * This is then retrivable later.  The free function
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   409
		     * passed auto-frees it when the request is later
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   410
		     * deleted.  
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   411
		     */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   412
		    netsnmp_request_add_list_data(requests,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   413
                                      netsnmp_create_data_list
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   414
                                      (DELAYED_INSTANCE_SET_NAME,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   415
                                       delay_time_cache, free));
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   416
		    break;
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   417
	case MODE_SET_ACTION:
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   418
		// get status integer from request
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   419
		// if status == 0, start data collection, else return error
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   420
		if (*(requests->requestvb->val.integer) == 0) {
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   421
			status = *(requests->requestvb->val.integer);
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   422
		        collect_data();
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   423
		} else
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   424
			netsnmp_set_request_error(reqinfo, requests,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   425
			    SNMP_ERR_WRONGTYPE);
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   426
		break;
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   427
	case MODE_SET_UNDO:
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   428
	    /*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   429
	     * A failure occurred. Reset to the
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   430
	     * previously value by extracting the previosuly
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   431
	     * stored information from the request.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   432
	     */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   433
	    delay_time =
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   434
		*((u_long *) netsnmp_request_get_list_data(requests,
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   435
                                                       DELAYED_INSTANCE_SET_NAME));
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   436
	    break;
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   437
	case MODE_SET_COMMIT:
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   438
		break;
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   439
	case MODE_SET_FREE:
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   440
	    /*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   441
	     * The only thing to do here is free the old memdup'ed
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   442
	     * value, but it's auto-freed by the datalist recovery, so
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   443
	     * we don't have anything to actually do here 
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   444
	     */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   445
	    break;
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   446
    }
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   447
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   448
    /*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   449
     * free the information cache 
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   450
     */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   451
    netsnmp_free_delegated_cache(cache);
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   452
		
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   453
}
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   454
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   455
void collect_data()
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   456
{
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   457
    /*
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   458
     * This function starts a data collection.
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   459
     */
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   460
		status = 1; // set collection pending flag
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   461
		sleep(delay_time); // simulate long-running collection
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   462
		// get timestamp for this data collection
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   463
		mytime = time(NULL);
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   464
		strftime (refreshTime, sizeof(refreshTime), "%c", localtime(&mytime));
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   465
		exampleData = 325;
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   466
		status = 2; // set collection complete flag
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   467
		return;
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   468
		
ee0fb1eabcbf 7041085 move net-snmp to userland
gowtham thommandra - Sun Microsystems - Bangalore India <Gowtham.Thommandra@Sun.COM>
parents:
diff changeset
   469
}