snmp_agent_api.3.def
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:5k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. .TH SNMP_AGENT_API 3 "02 Apr 2001" VVERSIONINFO "Net-SNMP"
  2. .UC 5
  3. .SH NAME
  4. snmp_agent_api - embedding an agent into a external application
  5. .SH SYNOPSIS
  6. .nf
  7. #include <net-snmp/net-snmp-config.h>
  8. #include <net-snmp/net-snmp-includes.h>
  9. #include <net-snmp/agent/net-snmp-agent-includes.h>
  10. int
  11. main (int argc, char *argv[])
  12. {
  13.   int agentx_subagent = 1;  /* Change this if you're a master agent.  */
  14.   snmp_enable_stderrlog();
  15.   /*  If we're an AgentX subagent...  */
  16.   if (agentx_subagent) {
  17.       /* ...make us an AgentX client.  */
  18.       netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID,
  19.                              NETSNMP_DS_AGENT_ROLE, 1);
  20.   }
  21.   init_agent("yourappname");
  22.   /*  Initialize your MIB code here.  */
  23.   init_my_mib_code();
  24.   /*  `yourappname' will be used to read yourappname.conf files.  */
  25.   init_snmp("yourappname");
  26.   /*  If we're going to be a SNMP master agent...  */
  27.   if (!agentx_subagent)
  28.       init_master_agent();  /*  Listen on default port (161).  */
  29.   /*  Your main loop here...  */
  30.   while (whatever) {
  31.       /* if you use select(), see snmp_api(3) */
  32.       /*     --- OR ---  */
  33.       agent_check_and_process(0); /* 0 == don't block */
  34.   }
  35.   /*  At shutdown time:  */
  36.   snmp_shutdown("yourappname");
  37. }
  38. Then:
  39. $(CC) ... `net-snmp-config --agent-libs`
  40. .fi
  41. .SH DESCRIPTION
  42. .PP
  43. Our goal is to create a easy to use interface to the Net-SNMP package
  44. such that you can take code that you have written that has been
  45. designed to be a Net-SNMP MIB module and embed it into an external
  46. application where you can either chose to be a SNMP master agent or an
  47. AgentX sub-agent using the same MIB module code.  Our suggestion is
  48. that you use our (or another) SNMP agent as the AgentX master agent
  49. and chose to become an AgentX subagent which then attaches to the
  50. master.
  51. .PP
  52. The Net-SNMP package provides a pair of libraries that enables easy
  53. embedding of an SNMP or AgentX agent into an external software
  54. package. AgentX is an extensible protocol designed to allow multiple
  55. SNMP sub-agents all run on one machine under a single SNMP master
  56. agent.  It is defined in RFC 2741.
  57. .PP
  58. You will need to perform a few tasks in order to accomplish
  59. this. First off, you will need to initialize both the SNMP library and
  60. the SNMP agent library. As indicated above, this is done slightly
  61. differently depending on whether or not you are going to perform as a
  62. master agent or an AgentX sub-agent.
  63. .SH CONFIGURATION
  64. .PP
  65. If you intend to operate as an AgentX sub-agent, you will have to
  66. configured the Net-SNMP package with agentx support (which is turned
  67. on by default, so just don't turn it off)
  68. .PP
  69. Additionally, you will need to link against the net-snmp libraries
  70. (use the output of "net-snmp-config --agent-libs" to get a library
  71. list) and call subagent_pre_init() as indicated above.
  72. .SH COMPILING
  73. .PP
  74. In order to make use of any of the above API, you will need to link
  75. against at least the four libraries listed above.
  76. .SH FUNCTIONS
  77. .PP This is a brief description of the functions called above and
  78. where to find out more information on them.  It is certainly not a
  79. complete list of what is available within all the net-snmp libraries. 
  80. .IP "snmp_enable_stderrlog()"
  81. Logs error output from the SNMP agent to the standard error stream.
  82. .IP "netsnmp_ds_set_boolean()"
  83. Please see the
  84. .IR default_store(3)
  85. manual page for more information
  86. about this API.
  87. .IP "init_agent(char *name)"
  88. Initializes the embedded agent.  This should be called before the
  89. .BR "init_snmp()"
  90. call.  
  91. .I name
  92. is used to dictate what .conf file to read when
  93. .BR "init_snmp()"
  94. is called later.
  95. .IP "init_snmp(char *name)"
  96. Initializes the SNMP library.  Note that one of the things this will
  97. do will be to read configuration files in an effort to configure your
  98. application. It will attempt to read the configuration files named by
  99. the
  100. .I name
  101. string that you passed in.  It can be used to configure access
  102. control, for instance.   Please see the
  103. .IR read_config(3) ", " snmp_config(5) ", and " snmpd.conf(5)
  104. manual pages for further details on this subject.
  105. .IP "init_master_agent(void)"
  106. Initializes the master agent and causes it to listen for SNMP requests 
  107. on its default UDP port of 161.
  108. .IP "agent_check_and_process(int block)"
  109. This checks for packets arriving on the SNMP port and processes them
  110. if some are found.  If 
  111. .I block
  112. is non-zero, the function call will block until a packet arrives or an 
  113. alarm must be run (see
  114. .IR snmp_alarm(3) ).
  115. The return value from this function is a positive integer if packets
  116. were processed, zero if an alarm occurred and -1 if an error occured.
  117. .IP "snmp_shutdown(char *name);"
  118. This shuts down the agent, saving any needed persistent storage, etc.
  119. .SH "SEE ALSO"
  120. http://www.net-snmp.org/tutorial-5/toolkit/, select(2), snmp_api(3),
  121. default_store(3), snmp_alarm(3), read_config(3), snmp_config(5),
  122. snmpd.conf(5)