diff options
Diffstat (limited to 'usr/src/cmd/cmd-inet/usr.lib/mipagent/snmp_appl.c')
| -rw-r--r-- | usr/src/cmd/cmd-inet/usr.lib/mipagent/snmp_appl.c | 409 |
1 files changed, 0 insertions, 409 deletions
diff --git a/usr/src/cmd/cmd-inet/usr.lib/mipagent/snmp_appl.c b/usr/src/cmd/cmd-inet/usr.lib/mipagent/snmp_appl.c deleted file mode 100644 index a28dd89456..0000000000 --- a/usr/src/cmd/cmd-inet/usr.lib/mipagent/snmp_appl.c +++ /dev/null @@ -1,409 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License"). You may not use this file except in compliance - * with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ -/* - * Copyright (c) 1999-2001 by Sun Microsystems, Inc. - * All rights reserved. - */ - -#pragma ident "%Z%%M% %I% %E% SMI" - -/* - * file: mipagentsnmp_appl.c - * - * This file contains the main SNMP routines used for - * initialization and shutdown. - */ - -#include <sys/types.h> -#include <netinet/in.h> -#include <pthread.h> -#include <stdlib.h> -#include <syslog.h> - -#include <impl.h> -#include <pagent.h> - -#include "snmp_stub.h" -#include "mip.h" - -/* GLOBAL VARIABLES */ - -#ifndef lint -char default_config_file[] = "/etc/snmp/conf/mipagent.reg"; -char default_sec_config_file[] = "/etc/snmp/conf/mipagent.acl"; -char default_error_file[] = "/var/snmp/mipagent.log"; -#endif - -static pthread_t snmpThreadId = 0; - -typedef struct { - int argc; - char *argv; -} StartupArgs; - -static void mipagent_snmp_thread(StartupArgs *args); - -#define DEFAULT_SNMP_PORT 161 - -extern ipaddr_t subagent_addr; /* this was set in setup.c */ - -extern int SSASubagentOpen(int, char *); -extern int SSARegSubagent(Agent *); -extern int SSAMain(int, char **); - -/* - * Function: register_with_master - * - * Arguments: subagent_addr - Sub-Agent Address - * - * Description: This function will register the SNMP - * sub-agent with the master SNMP agent. - * - * Returns: int, 0 if successful - */ -static int -/* LINTED E_FUNC_ARG_UNUSED */ -register_with_master(ipaddr_t subagent_addr) -{ - /* LINTED E_FUNC_VAR_UNUSED */ - Agent subagent; - - return (0); - -#if 0 - /* NOTREACHED */ - - agentid = SSASubagentOpen(0, "mipagent"); - (void) memset(&subagent, 0, sizeof (Agent)); - subagent.agent_id = agentid; - - /* - * Tell master we are ready - */ - subagent.agent_status = SSA_OPER_STATUS_ACTIVE; - subagent.address.sin_family = AF_INET; - subagent.address.sin_port = DEFAULT_SNMP_PORT; - subagent.address.sin_addr.s_addr = subagent_addr; - if ((SSARegSubagent(&subagent)) == 0) { - return (-1); - } - return (0); -#endif -} - -/* - * Function: deregister_with_master - * - * Arguments: subagent_addr - Sub-Agent Address - * - * Description: This function will inform the - * SNMP Master agent that we are - * going away. - * - * Returns: int, 0 if successful - */ -static int -/* LINTED E_FUNC_ARG_UNUSED */ -deregister_with_master(ipaddr_t subagent_addr) -{ - /* LINTED E_FUNC_VAR_UNUSED */ - Agent subagent; - - return (0); -#if 0 - /* NOTREACHED */ - - if (agentid) { - (void) memset(&subagent, 0, sizeof (Agent)); - subagent.agent_id = agentid; - - /* - * Tell master we are going away - */ - subagent.agent_status = SSA_OPER_STATUS_DESTROY; - subagent.address.sin_family = AF_INET; - subagent.address.sin_port = DEFAULT_SNMP_PORT; - subagent.address.sin_addr.s_addr = subagent_addr; - if ((SSARegSubagent(&subagent)) == 0) { - return (-1); - } - - agentid = 0; - } - return (0); -#endif -} - -#ifndef lint -/* - * Function: agent_init - * - * Arguments: - * - * Description: Stub provided for the SNMP Sub-Agent - * initialization. We do not have anything - * to do here. - * - * Returns: - */ -void -agent_init() -{ -} - - -/* - * Function: agent_end - * - * Arguments: - * - * Description: Stub provided for the SNMP Sub-Agent - * shutdown. We do not have anything - * to do here. - * - * Returns: - */ -void -agent_end() -{ -} - - -/* - * Function: agent_loop - * - * Arguments: - * - * Description: The SNMP Loop function, which is - * provided because the sub-agent needs it. - * - * Returns: - */ -void -agent_loop() -{ -} - - -/* - * Function: agent_select_info - * - * Arguments: fdset - File Descriptor set - * numfds - number of file descriptors - * - * Description: Another stub provided for the SNMP - * sub-agent. - * - * Returns: - */ -/* ARGSUSED */ -void -agent_select_info(fd_set *fdset, int *numfds) -{ -} - - -/* - * Function: agent_select_callback - * - * Arguments: fdset - File Descriptor set - * - * Description: Callback routine for the SNMP Sub-Agent, - * which we are providing as a stub. - * - * Returns: - */ -/* ARGSUSED */ -void -agent_select_callback(fd_set *fdset) -{ -} -#endif -/* - * Function: startSNMPTaskThread - * - * Arguments: none - * - * Description: This function will start the SNMP - * sub-agent thread, and register with - * the Master SNMP thread. - * - * Returns: int, 0 if successful - */ -int -startSNMPTaskThread(void) -{ - StartupArgs *args; - static char *all_args[3]; - static char arg0[] = "mipagent"; - static char arg1[] = "-d"; - static char arg2[] = "1"; - pthread_attr_t pthreadAttribute; - int result; - - result = pthread_attr_init(&pthreadAttribute); - if (result) { - syslog(LOG_CRIT, "Error Initializing pthread."); - return (-1); - } - - args = (StartupArgs *) malloc(sizeof (StartupArgs)); - if (args == NULL) { - syslog(LOG_CRIT, "Unable to allocate memory."); - return (-1); - } - - /* - * Call the SSAMain() with "-d 1" argument, so that it doesn't - * daemonize the process. "-d 1" attempts to generate debug output. - * When mipagent is daemonized, since the stdout is closed, this - * will have no effect. When mipagent is not deamonized for debugging - * purposes, this will generate useful debug info for SNMP. - */ - all_args[0] = (char *)arg0; - all_args[1] = (char *)arg1; - all_args[2] = (char *)arg2; - - args->argc = 3; - args->argv = (char *)all_args; - - /* - * The thread is then started It is mandatory that all - * applications have a slaveThread() function declared, - * which will be called with the TCB. - */ - result = pthread_create(&snmpThreadId, &pthreadAttribute, - (void *(*)()) mipagent_snmp_thread, - (void *)args); - - if (result) { - syslog(LOG_CRIT, "pthread_create() failed."); - free(args); - return (-1); - } - - /* - * In order for system resources the be properly cleaned up, - * we need to detach the thread. Otherwise, we need to wait for - * a pthread_join(), which we do not want. - */ - result = pthread_detach(snmpThreadId); - - if (result) { - syslog(LOG_CRIT, "pthread_detach() failed."); - free(args); - return (-1); - } - - return (0); - -} - -/* - * Function: killSNMPTaskThread - * - * Arguments: - * - * Description: This function is used to shutdown the - * SNMP Sub-Agent thread. - * - * Returns: - */ -int -killSNMPTaskThread() -{ - int result; - - if (snmpThreadId) { - if (deregister_with_master(subagent_addr)) { - syslog(LOG_CRIT, "Unable to deregister with sub-agent"); - } - - /* - * Next we need to kill the dispatching thread. - */ - result = pthread_cancel(snmpThreadId); - - if (result) { - /* - * Well, there's not much we can do here.. - */ - syslog(LOG_CRIT, "Unable to kill snmp thread"); - } - } - - return (0); -} - -/* - * Function: mipagent_snmp_thread - * - * Arguments: args - Command Line Arguments - * - * Description: This function is the main SNMP Sub-Agent - * thread. The function will call SSAMain, which - * never returns (unless an error occured). - * - * This thread will remain active until either - * the SNMP Sub-Agent main routines returns or - * the killSNMPTaskThread() function is called. - * - * Returns: - */ -static void -mipagent_snmp_thread(StartupArgs *args) -{ - int argc; - int result; - char **argv; - - /* - * Register ourselves as a sub-agent with the master SNMP - * agent. - */ - result = register_with_master(subagent_addr); - - if (result) { - syslog(LOG_CRIT, "Could not register with master SNMP agent."); - free(args); - pthread_exit(NULL); - } - - /* - * Let's do the SSAMain thingy... Note that this function should, - * in theory, never return. This function will interface with the - * SNMP Master Agent. - */ - argc = args->argc; - /* LINTED E_BAD_PTR_CAST_ALIGN */ - argv = (char **)args->argv; - - SSAMain(argc, argv); - - free(args); - - if (deregister_with_master(subagent_addr)) { - syslog(LOG_CRIT, "Unable to deregister with sub-agent"); - } - - pthread_exit(NULL); -} |
