components/net-snmp/sun/sdk/demo/demo_module_8/demo_module_8.c
changeset 252 ee0fb1eabcbf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/net-snmp/sun/sdk/demo/demo_module_8/demo_module_8.c	Fri May 20 12:17:45 2011 +0530
@@ -0,0 +1,109 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ *
+ * U.S. Government Rights - Commercial software. Government users are subject
+ * to the Sun Microsystems, Inc. standard license agreement and applicable
+ * provisions of the FAR and its supplements.
+ *
+ *
+ * This distribution may include materials developed by third parties. Sun,
+ * Sun Microsystems, the Sun logo and Solaris are trademarks or registered
+ * trademarks of Sun Microsystems, Inc. in the U.S. and other countries.
+ *
+ */
+ 
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <signal.h>
+
+#include <me1LoadGroup.h>
+
+static int keep_running;
+
+RETSIGTYPE
+stop_server(int a)
+{
+	keep_running = 0;
+}
+
+int
+main(int argc, char **argv)
+{
+	int agentx_subagent = 1;
+	//Change to make an SNMP master agent
+
+	/* print log errors to stderr */
+		snmp_enable_stderrlog();
+
+	/* we're an agentx subagent? */
+	if (agentx_subagent) {
+		/*
+		 * This is an agentx client. Specify 0 for
+		 * NETSNMP_DS_AGENT_ROLE if the agent is master agent.
+		 * Specify 1 for NETSNMP_DS_AGENT_ROLE, if the agent is a
+		 * client.
+		 */
+		netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID,
+				NETSNMP_DS_AGENT_ROLE, 1);
+		DEBUGMSGTL(("demo_module_8",
+				"NETSNMP_DS_APPLICATION_ID = %s:\n",
+				NETSNMP_DS_APPLICATION_ID));
+		DEBUGMSGTL(("demo_module_8", "NETSNMP_DS_AGENT_ROLE = %s:\n",
+				NETSNMP_DS_AGENT_ROLE));
+	}
+	/*
+	 * Initializes the embedded agent.  Call this function before the
+	 * init_snmp() call. The string name specifies which .conf file to
+	 * read when init_snmp() is called later.
+	 */
+	init_agent("demo_module_8");
+	DEBUGMSGTL(("demo_module_8", "CALLING init_agent\n"));
+
+	/* initialize mib code here */
+
+	/* mib code: init_me1LoadGroup from me1LoadGroup.c */
+	init_me1LoadGroup();
+
+	/*
+	 * Initializes the SNMP library, which causes the agent to read your
+	 * application's configuration files. The agent first tries to read
+	 * the configuration files named by the string passed as an argument.
+	 * You might use this to configure  access  control, for example.
+	 */
+	init_snmp("demo_module_8");
+
+	/*
+	 * Initializes the master agent and causes it to listen for SNMP
+	 * requests on its default UDP port of 161. Open the port to listen
+	 * (defaults to udp: 161)
+	 */
+	if (!agentx_subagent)
+		init_master_agent();
+
+	/* In case we get a request to stop (kill -TERM or kill -INT) */
+	keep_running = 1;
+	signal(SIGTERM, stop_server);
+	signal(SIGINT, stop_server);
+
+	/*
+	 * The main loop. If you use select(), see snmp_select_info() in
+	 * snmp_api(3). This checks for packets arriving on the SNMP port and
+	 * processes them if some are found. If block is non zero, the
+	 * function call blocks until a packet arrives or an alarm must be
+	 * run (see snmp_alarm(3)).
+	 *
+	 * The return value from this function is a positive integer if packets
+	 * were processed, zero if an alarm occurre, and -1 if an error
+	 * occured.
+	 */
+
+	while (keep_running) {
+		/* OR */
+		agent_check_and_process(1);	/* 0 == don't block */
+	}
+	/*
+	 * Shuts down the agent, saving any needed persistent storage.
+	 */
+	snmp_shutdown("demo_module_8");
+}