scalar_int.c
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:3k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. /**  @example scalar_int.c
  2.  *  This example creates some scalar registrations that allows
  3.  *  some simple variables to be accessed via SNMP.  In a more
  4.  *  realistic example, it is likely that these variables would also be
  5.  *  manipulated in other ways outside of SNMP gets/sets.
  6.  *
  7.  *  If this module is compiled into an agent, you should be able to
  8.  *  issue snmp commands that look something like (authentication
  9.  *  information not shown in these commands):
  10.  *
  11.  *  - snmpget localhost netSnmpExampleInteger.0
  12.  *  - netSnmpExampleScalars = 42
  13.  *
  14.  *  - snmpset localhost netSnmpExampleInteger.0 = 1234
  15.  *  - netSnmpExampleScalars = 1234
  16.  *  
  17.  *  - snmpget localhost netSnmpExampleInteger.0
  18.  *  - netSnmpExampleScalars = 1234
  19.  *
  20.  */
  21. /*
  22.  * start be including the appropriate header files 
  23.  */
  24. #include <net-snmp/net-snmp-config.h>
  25. #include <net-snmp/net-snmp-includes.h>
  26. #include <net-snmp/agent/net-snmp-agent-includes.h>
  27. /*
  28.  * Then, we declare the variables we want to be accessed 
  29.  */
  30. static int      example1 = 42;  /* default value */
  31. /*
  32.  * our initialization routine, automatically called by the agent 
  33.  * (to get called, the function name must match init_FILENAME())
  34.  */
  35. void
  36. init_scalar_int(void)
  37. {
  38.     /*
  39.      * the OID we want to register our integer at.  This should be a
  40.      * fully qualified instance.  In our case, it's a scalar at:
  41.      * NET-SNMP-EXAMPLES-MIB::netSnmpExampleInteger.0 (note the
  42.      * trailing 0 which is required for any instantiation of any
  43.      * scalar object) 
  44.      */
  45.     oid             my_registration_oid[] =
  46.         { 1, 3, 6, 1, 4, 1, 8072, 2, 1, 1, 0 };
  47.     /*
  48.      * a debugging statement.  Run the agent with -Dexample_scalar_int to see
  49.      * the output of this debugging statement. 
  50.      */
  51.     DEBUGMSGTL(("example_scalar_int",
  52.                 "Initalizing example scalar int.  Default value = %dn",
  53.                 example1));
  54.     /*
  55.      * the line below registers our "example1" variable above as
  56.      * accessible and makes it writable.  A read only version of the
  57.      * same registration would merely call
  58.      * register_read_only_int_instance() instead.
  59.      * 
  60.      * If we wanted a callback when the value was retrieved or set
  61.      * (even though the details of doing this are handled for you),
  62.      * you could change the NULL pointer below to a valid handler
  63.      * function. 
  64.      */
  65.     netsnmp_register_int_instance("my example int variable",
  66.                                   my_registration_oid,
  67.                                   OID_LENGTH(my_registration_oid),
  68.                                   &example1, NULL);
  69.     DEBUGMSGTL(("example_scalar_int",
  70.                 "Done initalizing example scalar intn"));
  71. }