Code Search for Developers
 
 
  

agent__read__config_8c-source.html from net-snmp at Krugle


Show agent__read__config_8c-source.html syntax highlighted

<!--#set var="section" value="development" -->
<!--#include virtual="/page-top.html" -->
<!-- CONTENT START -->
  <!-- Generated by Doxygen 1.3.9.1 -->

  <div class="qindex">
    <a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class=
    "qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class=
    "qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a> | <a class=
    "qindex" href="examples.html">Examples</a>
  </div>

  <div class="nav">
    <a class="el" href="dir_000003.html">agent</a>
  </div>

  <h1>agent_read_config.c</h1>

  <div class="fragment">
    <pre class="fragment">
00001 <span class="comment">/*</span>
00002 <span class="comment"> * agent_read_config.c</span>
00003 <span class="comment"> */</span>
00004 
00005 <span class="preprocessor">#include &lt;net-snmp/net-snmp-config.h&gt;</span>
00006 
00007 <span class="preprocessor">#include &lt;sys/types.h&gt;</span>
00008 <span class="preprocessor">#if HAVE_STDLIB_H</span>
00009 <span class="preprocessor">#include &lt;stdlib.h&gt;</span>
00010 <span class="preprocessor">#endif</span>
00011 <span class="preprocessor">#if HAVE_STRING_H</span>
00012 <span class="preprocessor">#include &lt;string.h&gt;</span>
00013 <span class="preprocessor">#else</span>
00014 <span class="preprocessor">#include &lt;strings.h&gt;</span>
00015 <span class="preprocessor">#endif</span>
00016 <span class="preprocessor">#include &lt;stdio.h&gt;</span>
00017 <span class="preprocessor">#include &lt;ctype.h&gt;</span>
00018 <span class="preprocessor">#include &lt;errno.h&gt;</span>
00019 
00020 <span class="preprocessor">#if TIME_WITH_SYS_TIME</span>
00021 <span class="preprocessor"># ifdef WIN32</span>
00022 <span class="preprocessor">#  include &lt;sys/timeb.h&gt;</span>
00023 <span class="preprocessor"># else</span>
00024 <span class="preprocessor">#  include &lt;sys/time.h&gt;</span>
00025 <span class="preprocessor"># endif</span>
00026 <span class="preprocessor"># include &lt;time.h&gt;</span>
00027 <span class="preprocessor">#else</span>
00028 <span class="preprocessor"># if HAVE_SYS_TIME_H</span>
00029 <span class="preprocessor">#  include &lt;sys/time.h&gt;</span>
00030 <span class="preprocessor"># else</span>
00031 <span class="preprocessor">#  include &lt;time.h&gt;</span>
00032 <span class="preprocessor"># endif</span>
00033 <span class="preprocessor">#endif</span>
00034 <span class="preprocessor">#if HAVE_NETINET_IN_H</span>
00035 <span class="preprocessor">#include &lt;netinet/in.h&gt;</span>
00036 <span class="preprocessor">#endif</span>
00037 <span class="preprocessor">#if HAVE_NETINET_IN_SYSTM_H</span>
00038 <span class="preprocessor">#include &lt;netinet/in_systm.h&gt;</span>
00039 <span class="preprocessor">#endif</span>
00040 <span class="preprocessor">#if HAVE_NETINET_IP_H</span>
00041 <span class="preprocessor">#include &lt;netinet/ip.h&gt;</span>
00042 <span class="preprocessor">#endif</span>
00043 <span class="preprocessor">#ifdef INET6</span>
00044 <span class="preprocessor">#if HAVE_NETINET_IP6_H</span>
00045 <span class="preprocessor">#include &lt;netinet/ip6.h&gt;</span>
00046 <span class="preprocessor">#endif</span>
00047 <span class="preprocessor">#endif</span>
00048 <span class="preprocessor">#if HAVE_SYS_QUEUE_H</span>
00049 <span class="preprocessor">#include &lt;sys/queue.h&gt;</span>
00050 <span class="preprocessor">#endif</span>
00051 <span class="preprocessor">#if HAVE_SYS_SOCKET_H</span>
00052 <span class="preprocessor">#include &lt;sys/socket.h&gt;</span>
00053 <span class="preprocessor">#if HAVE_SYS_SOCKETVAR_H</span>
00054 <span class="preprocessor">#ifndef dynix</span>
00055 <span class="preprocessor">#include &lt;sys/socketvar.h&gt;</span>
00056 <span class="preprocessor">#else</span>
00057 <span class="preprocessor">#include &lt;sys/param.h&gt;</span>
00058 <span class="preprocessor">#endif</span>
00059 <span class="preprocessor">#endif</span>
00060 <span class="preprocessor">#elif HAVE_WINSOCK_H</span>
00061 <span class="preprocessor">#include &lt;winsock.h&gt;</span>
00062 <span class="preprocessor">#endif</span>
00063 <span class="preprocessor">#if HAVE_SYS_STREAM_H</span>
00064 <span class="preprocessor">#   ifdef sysv5UnixWare7</span>
00065 <span class="preprocessor">#      define _KMEMUSER 1   </span><span class=
"comment">/* &lt;sys/stream.h&gt; needs this for queue_t */</span>
00066 <span class="preprocessor">#   endif</span>
00067 <span class="preprocessor">#include &lt;sys/stream.h&gt;</span>
00068 <span class="preprocessor">#endif</span>
00069 <span class="preprocessor">#if HAVE_NET_ROUTE_H</span>
00070 <span class="preprocessor">#include &lt;net/route.h&gt;</span>
00071 <span class="preprocessor">#endif</span>
00072 <span class="preprocessor">#if HAVE_NETINET_IP_VAR_H</span>
00073 <span class="preprocessor">#include &lt;netinet/ip_var.h&gt;</span>
00074 <span class="preprocessor">#endif</span>
00075 <span class="preprocessor">#ifdef INET6</span>
00076 <span class="preprocessor">#if HAVE_NETINET6_IP6_VAR_H</span>
00077 <span class="preprocessor">#include &lt;netinet6/ip6_var.h&gt;</span>
00078 <span class="preprocessor">#endif</span>
00079 <span class="preprocessor">#endif</span>
00080 <span class="preprocessor">#if HAVE_NETINET_IN_PCB_H</span>
00081 <span class="preprocessor">#include &lt;netinet/in_pcb.h&gt;</span>
00082 <span class="preprocessor">#endif</span>
00083 <span class="preprocessor">#if HAVE_INET_MIB2_H</span>
00084 <span class="preprocessor">#include &lt;inet/mib2.h&gt;</span>
00085 <span class="preprocessor">#endif</span>
00086 
00087 <span class="preprocessor">#if HAVE_UNISTD_H</span>
00088 <span class="preprocessor">#include &lt;unistd.h&gt;</span>
00089 <span class="preprocessor">#endif</span>
00090 <span class="preprocessor">#ifdef HAVE_PWD_H</span>
00091 <span class="preprocessor">#include &lt;pwd.h&gt;</span>
00092 <span class="preprocessor">#endif</span>
00093 <span class="preprocessor">#ifdef HAVE_GRP_H</span>
00094 <span class="preprocessor">#include &lt;grp.h&gt;</span>
00095 <span class="preprocessor">#endif</span>
00096 
00097 <span class="preprocessor">#include &lt;net-snmp/net-snmp-includes.h&gt;</span>
00098 <span class="preprocessor">#include &lt;net-snmp/agent/net-snmp-agent-includes.h&gt;</span>
00099 
00100 <span class="preprocessor">#include "mibgroup/struct.h"</span>
00101 <span class="preprocessor">#include &lt;net-snmp/agent/agent_trap.h&gt;</span>
00102 <span class="preprocessor">#include "snmpd.h"</span>
00103 <span class="preprocessor">#include &lt;net-snmp/agent/agent_callbacks.h&gt;</span>
00104 <span class="preprocessor">#include &lt;net-snmp/agent/table.h&gt;</span>
00105 <span class="preprocessor">#include &lt;net-snmp/agent/table_iterator.h&gt;</span>
00106 <span class="preprocessor">#include &lt;net-snmp/agent/table_data.h&gt;</span>
00107 <span class="preprocessor">#include &lt;net-snmp/agent/table_dataset.h&gt;</span>
00108 <span class="preprocessor">#include "agent_module_includes.h"</span>
00109 <span class="preprocessor">#include "mib_module_includes.h"</span>
00110 
00111 <span class="keywordtype">char</span>            dontReadConfigFiles;
00112 <span class="keywordtype">char</span>           *optconfigfile;
00113 
00114 <span class="preprocessor">#ifdef HAVE_UNISTD_H</span>
00115 <span class="keywordtype">void</span>
00116 snmpd_set_agent_user(<span class="keyword">const</span> <span class="keywordtype">char</span> *token, <span class=
"keywordtype">char</span> *cptr)
00117 {
00118 <span class="preprocessor">#if defined(HAVE_GETPWNAM) &amp;&amp; defined(HAVE_PWD_H)</span>
00119     <span class="keyword">struct </span>passwd  *info;
00120 <span class="preprocessor">#endif</span>
00121 
00122     <span class="keywordflow">if</span> (cptr[0] == <span class="charliteral">'#'</span>) {
00123         <span class="keywordtype">char</span>           *ecp;
00124         <span class="keywordtype">int</span>             uid;
00125         uid = strtoul(cptr + 1, &amp;ecp, 10);
00126         <span class="keywordflow">if</span> (*ecp != 0) {
00127             config_perror(<span class="stringliteral">"Bad number"</span>);
00128         } <span class="keywordflow">else</span> {
00129             netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
00130                                NETSNMP_DS_AGENT_USERID, uid);
00131         }
00132     }
00133 <span class="preprocessor">#if defined(HAVE_GETPWNAM) &amp;&amp; defined(HAVE_PWD_H)</span>
00134     <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((info = getpwnam(cptr)) != NULL) {
00135         netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
00136                            NETSNMP_DS_AGENT_USERID, info-&gt;pw_uid);
00137     } <span class="keywordflow">else</span> {
00138         config_perror(<span class="stringliteral">"User not found in passwd database"</span>);
00139     }
00140     endpwent();
00141 <span class="preprocessor">#endif</span>
00142 }
00143 
00144 <span class="keywordtype">void</span>
00145 snmpd_set_agent_group(<span class="keyword">const</span> <span class="keywordtype">char</span> *token, <span class=
"keywordtype">char</span> *cptr)
00146 {
00147 <span class="preprocessor">#if defined(HAVE_GETGRNAM) &amp;&amp; defined(HAVE_GRP_H)</span>
00148     <span class="keyword">struct </span>group   *info;
00149 <span class="preprocessor">#endif</span>
00150 
00151     <span class="keywordflow">if</span> (cptr[0] == <span class="charliteral">'#'</span>) {
00152         <span class="keywordtype">char</span>           *ecp;
00153         <span class="keywordtype">int</span>             gid = strtoul(cptr + 1, &amp;ecp, 10);
00154         <span class="keywordflow">if</span> (*ecp != 0) {
00155             config_perror(<span class="stringliteral">"Bad number"</span>);
00156         } <span class="keywordflow">else</span> {
00157             netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
00158                                NETSNMP_DS_AGENT_GROUPID, gid);
00159         }
00160     }
00161 <span class="preprocessor">#if defined(HAVE_GETGRNAM) &amp;&amp; defined(HAVE_GRP_H)</span>
00162     <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((info = getgrnam(cptr)) != NULL) {
00163         netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
00164                            NETSNMP_DS_AGENT_GROUPID, info-&gt;gr_gid);
00165     } <span class="keywordflow">else</span> {
00166         config_perror(<span class="stringliteral">"Group not found in group database"</span>);
00167     }
00168     endpwent();
00169 <span class="preprocessor">#endif</span>
00170 }
00171 <span class="preprocessor">#endif</span>
00172 
00173 <span class="keywordtype">void</span>
00174 snmpd_set_agent_address(<span class="keyword">const</span> <span class="keywordtype">char</span> *token, <span class=
"keywordtype">char</span> *cptr)
00175 {
00176     <span class="keywordtype">char</span>            buf[SPRINT_MAX_LEN];
00177     <span class="keywordtype">char</span>           *ptr;
00178 
00179     <span class="comment">/*</span>
00180 <span class="comment">     * has something been specified before? </span>
00181 <span class="comment">     */</span>
00182     ptr = netsnmp_ds_get_string(NETSNMP_DS_APPLICATION_ID, 
00183                                 NETSNMP_DS_AGENT_PORTS);
00184 
00185     <span class="keywordflow">if</span> (ptr) {
00186         <span class="comment">/*</span>
00187 <span class="comment">         * append to the older specification string </span>
00188 <span class="comment">         */</span>
00189         sprintf(buf, <span class="stringliteral">"%s,%s"</span>, ptr, cptr);
00190     } <span class="keywordflow">else</span> {
00191         strcpy(buf, cptr);
00192     }
00193 
00194     DEBUGMSGTL((<span class="stringliteral">"snmpd_ports"</span>, <span class=
"stringliteral">"port spec: %s\n"</span>, buf));
00195     netsnmp_ds_set_string(NETSNMP_DS_APPLICATION_ID, 
00196                           NETSNMP_DS_AGENT_PORTS, buf);
00197 }
00198 
00199 <span class="keywordtype">void</span>
00200 init_agent_read_config(<span class="keyword">const</span> <span class="keywordtype">char</span> *app)
00201 {
00202     <span class="keywordflow">if</span> (app != NULL) {
00203         netsnmp_ds_set_string(NETSNMP_DS_LIBRARY_ID, 
00204                               NETSNMP_DS_LIB_APPTYPE, app);
00205     } <span class="keywordflow">else</span> {
00206         app = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, 
00207                                     NETSNMP_DS_LIB_APPTYPE);
00208     }
00209 
00210     register_app_config_handler(<span class="stringliteral">"authtrapenable"</span>,
00211                                 snmpd_parse_config_authtrap, NULL,
00212                                 <span class="stringliteral">"1 | 2\t\t(1 = enable, 2 = disable)"</span>);
00213     register_app_config_handler(<span class="stringliteral">"pauthtrapenable"</span>,
00214                                 snmpd_parse_config_authtrap, NULL, NULL);
00215 
00216 
00217     <span class="keywordflow">if</span> (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, 
00218                                NETSNMP_DS_AGENT_ROLE) == MASTER_AGENT) {
00219 <span class="preprocessor">#ifndef DISABLE_SNMPV1</span>
00220         register_app_config_handler(<span class="stringliteral">"trapsink"</span>,
00221                                     snmpd_parse_config_trapsink,
00222                                     snmpd_free_trapsinks,
00223                                     <span class="stringliteral">"host [community] [port]"</span>);
00224 <span class="preprocessor">#endif</span>
00225 <span class="preprocessor">#ifndef DISABLE_SNMPV2C</span>
00226         register_app_config_handler(<span class="stringliteral">"trap2sink"</span>,
00227                                     snmpd_parse_config_trap2sink, NULL,
00228                                     <span class="stringliteral">"host [community] [port]"</span>);
00229         register_app_config_handler(<span class="stringliteral">"informsink"</span>,
00230                                     snmpd_parse_config_informsink, NULL,
00231                                     <span class="stringliteral">"host [community] [port]"</span>);
00232 <span class="preprocessor">#endif</span>
00233         register_app_config_handler(<span class="stringliteral">"trapsess"</span>,
00234                                     snmpd_parse_config_trapsess, NULL,
00235                                     <span class="stringliteral">"[snmpcmdargs] host"</span>);
00236     }
00237 <span class="preprocessor">#if !defined(DISABLE_SNMPV1) || !defined(DISABLE_SNMPV2C)</span>
00238     register_app_config_handler(<span class="stringliteral">"trapcommunity"</span>,
00239                                 snmpd_parse_config_trapcommunity,
00240                                 snmpd_free_trapcommunity,
00241                                 <span class="stringliteral">"community-string"</span>);
00242 <span class="preprocessor">#endif </span><span class="comment">/* support for community based SNMP */</span>
00243 <span class="preprocessor">#ifdef HAVE_UNISTD_H</span>
00244     register_app_config_handler(<span class="stringliteral">"agentuser"</span>,
00245                                 snmpd_set_agent_user, NULL, <span class="stringliteral">"userid"</span>);
00246     register_app_config_handler(<span class="stringliteral">"agentgroup"</span>,
00247                                 snmpd_set_agent_group, NULL, <span class="stringliteral">"groupid"</span>);
00248 <span class="preprocessor">#endif</span>
00249     register_app_config_handler(<span class="stringliteral">"agentaddress"</span>,
00250                                 snmpd_set_agent_address, NULL,
00251                                 <span class="stringliteral">"SNMP bind address"</span>);
00252     netsnmp_ds_register_config(ASN_BOOLEAN, app, <span class="stringliteral">"quit"</span>, 
00253                                NETSNMP_DS_APPLICATION_ID,
00254                                NETSNMP_DS_AGENT_QUIT_IMMEDIATELY);
00255     netsnmp_ds_register_config(ASN_BOOLEAN, app, <span class="stringliteral">"leave_pidfile"</span>, 
00256                                NETSNMP_DS_APPLICATION_ID,
00257                                NETSNMP_DS_AGENT_LEAVE_PIDFILE);
00258     netsnmp_init_handler_conf();
00259 
00260 <span class="preprocessor">#include "agent_module_dot_conf.h"</span>
00261 <span class="preprocessor">#include "mib_module_dot_conf.h"</span>
00262 <span class="preprocessor">#ifdef TESTING</span>
00263     print_config_handlers();
00264 <span class="preprocessor">#endif</span>
00265 }
00266 
00267 <span class="keywordtype">void</span>
00268 update_config(<span class="keywordtype">void</span>)
00269 {
00270     <a class="code" href="group__callback.html#ga10">snmp_call_callbacks</a>(SNMP_CALLBACK_APPLICATION,
00271                         SNMPD_CALLBACK_PRE_UPDATE_CONFIG, NULL);
00272     free_config();
00273     read_configs();
00274 }
00275 
00276 
00277 <span class="keywordtype">void</span>
00278 snmpd_register_config_handler(<span class="keyword">const</span> <span class="keywordtype">char</span> *token,
00279                               <span class="keywordtype">void</span> (*parser) (<span class=
"keyword">const</span> <span class="keywordtype">char</span> *, <span class="keywordtype">char</span> *),
00280                               <span class="keywordtype">void</span> (*releaser) (<span class=
"keywordtype">void</span>), <span class="keyword">const</span> <span class="keywordtype">char</span> *help)
00281 {
00282     DEBUGMSGTL((<span class="stringliteral">"snmpd_register_app_config_handler"</span>,
00283                 <span class="stringliteral">"registering .conf token for \"%s\"\n"</span>, token));
00284     register_app_config_handler(token, parser, releaser, help);
00285 }
00286 
00287 <span class="keywordtype">void</span>
00288 snmpd_unregister_config_handler(<span class="keyword">const</span> <span class="keywordtype">char</span> *token)
00289 {
00290     unregister_app_config_handler(token);
00291 }
00292 
00293 <span class="comment">/*</span>
00294 <span class="comment"> * this function is intended for use by mib-modules to store permenant</span>
00295 <span class="comment"> * configuration information generated by sets or persistent counters </span>
00296 <span class="comment"> */</span>
00297 <span class="keywordtype">void</span>
00298 snmpd_store_config(<span class="keyword">const</span> <span class="keywordtype">char</span> *line)
00299 {
00300     read_app_config_store(line);
00301 }
</pre>
  </div>
  <hr size="1" />

  <address style="align: right;">
    <small>Generated on Fri Dec 30 13:47:43 2005 for net-snmp by&nbsp; <a href="http://www.doxygen.org/index.html"><img src=
    "doxygen.png" alt="doxygen" align="middle" border="0" /></a> 1.3.9.1</small>
  </address>
<!-- CONTENT END -->
<!--#include virtual="/page-bottom.html" -->





See more files for this project here

net-snmp

net-snmp provides tools and libraries relating to the Simple Network\r\nManagement Protocol including: An extensible agent, An SNMP library,\r\ntools to request or set information from SNMP agents, tools to\r\ngenerate and handle SNMP traps, etc.\r\n

Project homepage: http://sourceforge.net/projects/net-snmp
Programming language(s): C,Perl,Shell Script
License: other

  mfd/
  acconfig_8h-source.html
  acconfig_8h.html
  agent_2snmp__perl_8c-source.html
  agent__callbacks_8h-source.html
  agent__callbacks_8h.html
  agent__handler_8c-source.html
  agent__handler_8c.html
  agent__handler_8h-source.html
  agent__handler_8h.html
  agent__index_8c-source.html
  agent__index_8c.html
  agent__index_8h-source.html
  agent__index_8h.html
  agent__module__config_8h-source.html
  agent__read__config_8c-source.html
  agent__read__config_8c.html
  agent__read__config_8h-source.html
  agent__read__config_8h.html
  agent__registry_8c-source.html
  agent__registry_8c.html
  agent__registry_8h-source.html
  agent__registry_8h.html
  agent__trap_8c-source.html
  agent__trap_8c.html
  agent__trap_8h-source.html
  agent__trap_8h.html
  all__helpers_8c-source.html
  all__helpers_8h-source.html
  annotated.html
  asn1_8c-source.html
  asn1_8h-source.html
  auto__nlist_8c-source.html
  auto__nlist_8c.html
  auto__nlist_8h-source.html
  auto__nlist_8h.html
  autonlist_8h-source.html
  autonlist_8h.html
  baby__steps_8c-source.html
  baby__steps_8h-source.html
  blah.html
  bulk__to__next_8c-source.html
  bulk__to__next_8h-source.html
  cache__handler_8c-source.html
  cache__handler_8h-source.html
  callback_8c-source.html
  callback_8h-source.html
  check__varbind_8c-source.html
  check__varbind_8h-source.html
  cmu__compat_8c-source.html
  cmu__compat_8h-source.html
  config_8h-source.html
  config_8h.html
  config__api_8h-source.html
  container_8c-source.html
  container_8h-source.html
  container__binary__array_8c-source.html
  container__binary__array_8h-source.html
  container__iterator_8c-source.html
  container__iterator_8h-source.html
  container__list__ssll_8c-source.html
  container__list__ssll_8h-source.html
  container__null_8c-source.html
  container__null_8h-source.html
  data__list_8c-source.html
  data__list_8h-source.html
  data__set_8c-example.html
  data__set_8c-source.html
  data__set_8h-source.html
  debug__handler_8c-source.html
  debug__handler_8h-source.html
  default__store_8c-source.html
  default__store_8h-source.html
  default_store.html
  definitions_8h-source.html
  delayed__instance_8c-example.html
  delayed__instance_8c-source.html
  delayed__instance_8h-source.html
  deprecated.html
  dir_000000.html
  dir_000001.html
  dir_000002.html
  dir_000003.html
  dir_000004.html
  dir_000005.html
  dir_000006.html
  dir_000007.html
  dir_000008.html
  doxygen.css
  doxygen.gif
  doxygen.png
  ds__agent_8h-source.html
  ds__agent_8h.html
  example_8c-source.html
  example_8h-source.html
  examples.html
  factory_8h-source.html
  fd__event__manager_8c-source.html
  fd__event__manager_8h-source.html
  file__utils_8c-source.html
  file__utils_8h-source.html
  files.html