summaryrefslogtreecommitdiff
path: root/agent/mibgroup/examples/scalar_int.c
diff options
context:
space:
mode:
Diffstat (limited to 'agent/mibgroup/examples/scalar_int.c')
-rw-r--r--agent/mibgroup/examples/scalar_int.c77
1 files changed, 77 insertions, 0 deletions
diff --git a/agent/mibgroup/examples/scalar_int.c b/agent/mibgroup/examples/scalar_int.c
new file mode 100644
index 0000000..20afabd
--- /dev/null
+++ b/agent/mibgroup/examples/scalar_int.c
@@ -0,0 +1,77 @@
+/** @example scalar_int.c
+ * This example creates some scalar registrations that allows
+ * some simple variables to be accessed via SNMP. In a more
+ * realistic example, it is likely that these variables would also be
+ * manipulated in other ways outside of SNMP gets/sets.
+ *
+ * If this module is compiled into an agent, you should be able to
+ * issue snmp commands that look something like (authentication
+ * information not shown in these commands):
+ *
+ * - snmpget localhost netSnmpExampleInteger.0
+ * - netSnmpExampleScalars = 42
+ *
+ * - snmpset localhost netSnmpExampleInteger.0 = 1234
+ * - netSnmpExampleScalars = 1234
+ *
+ * - snmpget localhost netSnmpExampleInteger.0
+ * - netSnmpExampleScalars = 1234
+ *
+ */
+
+/*
+ * start be including the appropriate header files
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/*
+ * Then, we declare the variables we want to be accessed
+ */
+static int example1 = 42; /* default value */
+
+/*
+ * our initialization routine, automatically called by the agent
+ * (to get called, the function name must match init_FILENAME())
+ */
+void
+init_scalar_int(void)
+{
+ /*
+ * the OID we want to register our integer at. This should be a
+ * fully qualified instance. In our case, it's a scalar at:
+ * NET-SNMP-EXAMPLES-MIB::netSnmpExampleInteger.0 (note the
+ * trailing 0 which is required for any instantiation of any
+ * scalar object)
+ */
+ oid my_registration_oid[] =
+ { 1, 3, 6, 1, 4, 1, 8072, 2, 1, 1, 0 };
+
+ /*
+ * a debugging statement. Run the agent with -Dexample_scalar_int to see
+ * the output of this debugging statement.
+ */
+ DEBUGMSGTL(("example_scalar_int",
+ "Initalizing example scalar int. Default value = %d\n",
+ example1));
+
+ /*
+ * the line below registers our "example1" variable above as
+ * accessible and makes it writable. A read only version of the
+ * same registration would merely call
+ * register_read_only_int_instance() instead.
+ *
+ * If we wanted a callback when the value was retrieved or set
+ * (even though the details of doing this are handled for you),
+ * you could change the NULL pointer below to a valid handler
+ * function.
+ */
+ netsnmp_register_int_instance("my example int variable",
+ my_registration_oid,
+ OID_LENGTH(my_registration_oid),
+ &example1, NULL);
+
+ DEBUGMSGTL(("example_scalar_int",
+ "Done initalizing example scalar int\n"));
+}