snmp_agent_api.3.def
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:5k
- .TH SNMP_AGENT_API 3 "02 Apr 2001" VVERSIONINFO "Net-SNMP"
- .UC 5
- .SH NAME
- snmp_agent_api - embedding an agent into a external application
- .SH SYNOPSIS
- .nf
- #include <net-snmp/net-snmp-config.h>
- #include <net-snmp/net-snmp-includes.h>
- #include <net-snmp/agent/net-snmp-agent-includes.h>
- int
- main (int argc, char *argv[])
- {
- int agentx_subagent = 1; /* Change this if you're a master agent. */
- snmp_enable_stderrlog();
- /* If we're an AgentX subagent... */
- if (agentx_subagent) {
- /* ...make us an AgentX client. */
- netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID,
- NETSNMP_DS_AGENT_ROLE, 1);
- }
- init_agent("yourappname");
- /* Initialize your MIB code here. */
- init_my_mib_code();
- /* `yourappname' will be used to read yourappname.conf files. */
- init_snmp("yourappname");
- /* If we're going to be a SNMP master agent... */
- if (!agentx_subagent)
- init_master_agent(); /* Listen on default port (161). */
- /* Your main loop here... */
- while (whatever) {
- /* if you use select(), see snmp_api(3) */
- /* --- OR --- */
- agent_check_and_process(0); /* 0 == don't block */
- }
- /* At shutdown time: */
- snmp_shutdown("yourappname");
- }
- Then:
- $(CC) ... `net-snmp-config --agent-libs`
- .fi
- .SH DESCRIPTION
- .PP
- Our goal is to create a easy to use interface to the Net-SNMP package
- such that you can take code that you have written that has been
- designed to be a Net-SNMP MIB module and embed it into an external
- application where you can either chose to be a SNMP master agent or an
- AgentX sub-agent using the same MIB module code. Our suggestion is
- that you use our (or another) SNMP agent as the AgentX master agent
- and chose to become an AgentX subagent which then attaches to the
- master.
- .PP
- The Net-SNMP package provides a pair of libraries that enables easy
- embedding of an SNMP or AgentX agent into an external software
- package. AgentX is an extensible protocol designed to allow multiple
- SNMP sub-agents all run on one machine under a single SNMP master
- agent. It is defined in RFC 2741.
- .PP
- You will need to perform a few tasks in order to accomplish
- this. First off, you will need to initialize both the SNMP library and
- the SNMP agent library. As indicated above, this is done slightly
- differently depending on whether or not you are going to perform as a
- master agent or an AgentX sub-agent.
- .SH CONFIGURATION
- .PP
- If you intend to operate as an AgentX sub-agent, you will have to
- configured the Net-SNMP package with agentx support (which is turned
- on by default, so just don't turn it off)
- .PP
- Additionally, you will need to link against the net-snmp libraries
- (use the output of "net-snmp-config --agent-libs" to get a library
- list) and call subagent_pre_init() as indicated above.
- .SH COMPILING
- .PP
- In order to make use of any of the above API, you will need to link
- against at least the four libraries listed above.
- .SH FUNCTIONS
- .PP This is a brief description of the functions called above and
- where to find out more information on them. It is certainly not a
- complete list of what is available within all the net-snmp libraries.
- .IP "snmp_enable_stderrlog()"
- Logs error output from the SNMP agent to the standard error stream.
- .IP "netsnmp_ds_set_boolean()"
- Please see the
- .IR default_store(3)
- manual page for more information
- about this API.
- .IP "init_agent(char *name)"
- Initializes the embedded agent. This should be called before the
- .BR "init_snmp()"
- call.
- .I name
- is used to dictate what .conf file to read when
- .BR "init_snmp()"
- is called later.
- .IP "init_snmp(char *name)"
- Initializes the SNMP library. Note that one of the things this will
- do will be to read configuration files in an effort to configure your
- application. It will attempt to read the configuration files named by
- the
- .I name
- string that you passed in. It can be used to configure access
- control, for instance. Please see the
- .IR read_config(3) ", " snmp_config(5) ", and " snmpd.conf(5)
- manual pages for further details on this subject.
- .IP "init_master_agent(void)"
- Initializes the master agent and causes it to listen for SNMP requests
- on its default UDP port of 161.
- .IP "agent_check_and_process(int block)"
- This checks for packets arriving on the SNMP port and processes them
- if some are found. If
- .I block
- is non-zero, the function call will block until a packet arrives or an
- alarm must be run (see
- .IR snmp_alarm(3) ).
- The return value from this function is a positive integer if packets
- were processed, zero if an alarm occurred and -1 if an error occured.
- .IP "snmp_shutdown(char *name);"
- This shuts down the agent, saving any needed persistent storage, etc.
- .SH "SEE ALSO"
- http://www.net-snmp.org/tutorial-5/toolkit/, select(2), snmp_api(3),
- default_store(3), snmp_alarm(3), read_config(3), snmp_config(5),
- snmpd.conf(5)