ADC Home > Reference Library > Reference > Mac OS X > Mac OS X Man Pages

 

This document is a Mac OS X manual page. Manual pages are a command-line technology for providing documentation. You can view these manual pages locally using the man(1) command. These manual pages come from many different sources, and thus, have a variety of writing styles.

For more information about the manual page format, see the manual page for manpages(5).



SNMP_AGENT_API(3)                                 Net-SNMP                                 SNMP_AGENT_API(3)



NAME
       snmp_agent_api - embedding an agent into a external application

SYNOPSIS
       #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`


DESCRIPTION
       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  exter-nal external
       nal 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  mas-ter master
       ter agent and chose to become an AgentX subagent which then attaches to the master.

       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.

       You will need to perform a few tasks in order to accomplish this. First off, you will  need  to  ini-tialize initialize
       tialize  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. subagent.
       agent.

CONFIGURATION
       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)

       Additionally, you will need to link against the net-snmp libraries (use the output of  "net-snmp-con-fig "net-snmp-config
       fig --agent-libs" to get a library list) and call subagent_pre_init() as indicated above.

COMPILING
       In  order  to  make  use  of  any  of  the above API, you will need to link against at least the four
       libraries listed above.

FUNCTIONS
       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.

       snmp_enable_stderrlog()
              Logs error output from the SNMP agent to the standard error stream.

       netsnmp_ds_set_boolean()
              Please see the default_store(3) manual page for more information about this API.

       init_agent(char *name)
              Initializes  the  embedded agent.  This should be called before the init_snmp() call.  name is
              used to dictate what .conf file to read when init_snmp() is called later.

       init_snmp(char *name)
              Initializes the SNMP library.  Note that one of the things this will do will be to  read  con-figuration configuration
              figuration  files in an effort to configure your application. It will attempt to read the con-figuration configuration
              figuration files named by the name string that you passed in.  It can  be  used  to  configure
              access   control,   for   instance.    Please  see  the  read_config(3),  snmp_config(5),  and
              snmpd.conf(5) manual pages for further details on this subject.

       init_master_agent(void)
              Initializes the master agent and causes it to listen for SNMP requests on its default UDP port
              of 161.

       agent_check_and_process(int block)
              This  checks  for  packets arriving on the SNMP port and processes them if some are found.  If
              block is non-zero, the function call will block 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 occurred and -1 if an error occured.

       snmp_shutdown(char *name);
              This shuts down the agent, saving any needed persistent storage, etc.

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)



4.2 Berkeley Distribution                        02 Apr 2001                               SNMP_AGENT_API(3)

Did this document help you?
Yes: Tell us what works for you.
It’s good, but: Report typos, inaccuracies, and so forth.
It wasn’t helpful: Tell us what would have helped.