Code Search for Developers
 
 
  

agent__trap_8h.html from net-snmp at Krugle


Show agent__trap_8h.html syntax highlighted

<!--#set var="section" value="development" -->
<!--#include virtual="/page-top.html" -->
<!-- CONTENT START -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>agent_trap.h File Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 1.2.11 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="globals.html">Globals</a> &nbsp; </center>
<hr><h1>agent_trap.h File Reference</h1>
<p>
<a href="agent__trap_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
<tr><td nowrap align=right valign=top>struct &nbsp;</td><td valign=bottom><a class="el" href="structagent__add__trap__args.html">agent_add_trap_args</a></td></tr>
<tr><td colspan=2><br><h2>Functions</h2></td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="agent__trap_8h.html#a0">send_easy_trap</a> (int, int)</td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="agent__trap_8h.html#a1">send_trap_pdu</a> (struct snmp_pdu *)</td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="agent__trap_8h.html#a2">send_v2trap</a> (struct variable_list *)</td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="agent__trap_8h.html#a3">send_trap_vars</a> (int, int, struct variable_list *)</td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="agent__trap_8h.html#a4">send_enterprise_trap_vars</a> (int trap, int specific, oid *enterprise, int enterprise_length, struct variable_list *vars)</td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="agent__trap_8h.html#a5">snmpd_parse_config_authtrap</a> (const char *, char *)</td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="agent__trap_8h.html#a6">snmpd_parse_config_trapsink</a> (const char *, char *)</td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="agent__trap_8h.html#a7">snmpd_parse_config_trap2sink</a> (const char *, char *)</td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="agent__trap_8h.html#a8">snmpd_parse_config_informsink</a> (const char *, char *)</td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="agent__trap_8h.html#a9">snmpd_parse_config_trapsess</a> (const char *, char *)</td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="agent__trap_8h.html#a10">snmpd_free_trapsinks</a> (void)</td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="agent__trap_8h.html#a11">snmpd_parse_config_trapcommunity</a> (const char *, char *)</td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="agent__trap_8h.html#a12">snmpd_free_trapcommunity</a> (void)</td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="agent__trap_8h.html#a13">send_trap_to_sess</a> (struct snmp_session *sess, struct snmp_pdu *template_pdu)</td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="agent__trap_8h.html#a14">create_trap_session</a> (char *, u_short, char *, int, int)</td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="agent__trap_8h.html#a15">add_trap_session</a> (struct snmp_session *, int, int, int)</td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="agent__trap_8h.html#a16">remove_trap_session</a> (struct snmp_session *)</td></tr>
</table>
<hr><h2>Function Documentation</h2>
<a name="a15" doxytag="agent_trap.h::add_trap_session"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int add_trap_session </td>
          <td class="md">(&nbsp;</td>
          <td class="md" nowrap>struct snmp_session *&nbsp;</td>
          <td class="mdname">&nbsp; <em>ss</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname">&nbsp; <em>pdutype</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname">&nbsp; <em>confirm</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname">&nbsp; <em>version</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>

<p>
Definition at line <a class="el" href="agent__trap_8c-source.html#l00129">129</a> of file <a class="el" href="agent__trap_8c-source.html">agent_trap.c</a>.
<p>
Referenced by <a class="el" href="agent__trap_8c-source.html#l00178">create_trap_session</a>(), and <a class="el" href="agent__trap_8c-source.html#l00678">snmpd_parse_config_trapsess</a>().
<p>
<div class="fragment"><pre>00130 {
00131     <font class="keywordflow">if</font> (snmp_callback_available(SNMP_CALLBACK_APPLICATION,
00132                                 <a class="code" href="agent__callbacks_8h.html#a8">SNMPD_CALLBACK_REGISTER_NOTIFICATIONS</a>) ==
00133         SNMPERR_SUCCESS)<font class="keyword"> </font>{
00134         <font class="comment">/* something else wants to handle notification registrations */</font>
00135         <font class="keyword">struct </font><a class="code" href="structagent__add__trap__args.html">agent_add_trap_args</a> args;
00136         DEBUGMSGTL((<font class="stringliteral">"add_trap_session"</font>,<font class="stringliteral">"adding callback trap sink\n"</font>));
00137         args.<a class="code" href="structagent__add__trap__args.html#m0">ss</a> = ss;
00138         args.<a class="code" href="structagent__add__trap__args.html#m1">confirm</a> = confirm;
00139         snmp_call_callbacks(SNMP_CALLBACK_APPLICATION,
00140                        <a class="code" href="agent__callbacks_8h.html#a8">SNMPD_CALLBACK_REGISTER_NOTIFICATIONS</a>,
00141                        (<font class="keywordtype">void</font> *) &amp;args);
00142     } <font class="keywordflow">else</font> {
00143         <font class="comment">/* no other support exists, handle it ourselves. */</font>
00144         <font class="keyword">struct </font><a class="code" href="structtrap__sink.html">trap_sink</a> *new_sink;
00145     
00146         DEBUGMSGTL((<font class="stringliteral">"add_trap_session"</font>,<font class="stringliteral">"adding internal trap sink\n"</font>));
00147         new_sink = (<font class="keyword">struct </font><a class="code" href="structtrap__sink.html">trap_sink</a> *) malloc (sizeof (*new_sink));
00148         <font class="keywordflow">if</font> ( new_sink == NULL )
00149             <font class="keywordflow">return</font> 0;
00150 
00151         new_sink-&gt;<a class="code" href="structtrap__sink.html#m0">sesp</a>    = ss;
00152         new_sink-&gt;<a class="code" href="structtrap__sink.html#m2">pdutype</a> = pdutype;
00153         new_sink-&gt;<a class="code" href="structtrap__sink.html#m3">version</a> = version;
00154         new_sink-&gt;<a class="code" href="structtrap__sink.html#m1">next</a>    = <a class="code" href="agent__trap_8c.html#a5">sinks</a>;
00155         <a class="code" href="agent__trap_8c.html#a5">sinks</a> = new_sink;
00156     }
00157     <font class="keywordflow">return</font> 1;
00158 }
</pre></div>    </td>
  </tr>
</table>
<a name="a14" doxytag="agent_trap.h::create_trap_session"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int create_trap_session </td>
          <td class="md">(&nbsp;</td>
          <td class="md" nowrap>char *&nbsp;</td>
          <td class="mdname">&nbsp; <em>sink</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>u_short&nbsp;</td>
          <td class="mdname">&nbsp; <em>sinkport</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>char *&nbsp;</td>
          <td class="mdname">&nbsp; <em>com</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname">&nbsp; <em>version</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname">&nbsp; <em>pdutype</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>

<p>
Definition at line <a class="el" href="agent__trap_8c-source.html#l00178">178</a> of file <a class="el" href="agent__trap_8c-source.html">agent_trap.c</a>.<div class="fragment"><pre>00181 {
00182     <font class="keyword">struct </font>snmp_session  session, *sesp;
00183 
00184     memset (&amp;session, 0, <font class="keyword">sizeof</font> (<font class="keyword">struct</font> snmp_session));
00185     session.peername = sink;
00186     session.version = version;
00187     <font class="keywordflow">if</font> (com) {
00188         session.community = (u_char *)com;
00189         session.community_len = strlen (com);
00190     }
00191     session.remote_port = sinkport;
00192     sesp = snmp_open (&amp;session);
00193 
00194     <font class="keywordflow">if</font> (sesp) {
00195         <font class="keywordflow">return</font>( <a class="code" href="agent__trap_8h.html#a15">add_trap_session</a>( sesp, pdutype, (pdutype==SNMP_MSG_INFORM), version ));
00196     }
00197 
00198     <font class="comment">/* diagnose snmp_open errors with the input struct snmp_session pointer */</font>
00199     snmp_sess_perror(<font class="stringliteral">"snmpd: create_trap_session"</font>, &amp;session);
00200     <font class="keywordflow">return</font> 0;
00201 }
</pre></div>    </td>
  </tr>
</table>
<a name="a16" doxytag="agent_trap.h::remove_trap_session"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int remove_trap_session </td>
          <td class="md">(&nbsp;</td>
          <td class="md" nowrap>struct snmp_session *&nbsp;</td>
          <td class="mdname1">&nbsp; <em>ss</em>          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>

<p>
Definition at line <a class="el" href="agent__trap_8c-source.html#l00160">160</a> of file <a class="el" href="agent__trap_8c-source.html">agent_trap.c</a>.<div class="fragment"><pre>00160                                                    {
00161     <font class="keyword">struct </font><a class="code" href="structtrap__sink.html">trap_sink</a> *sp = sinks, *prev = 0;
00162     <font class="keywordflow">while</font> (sp) {
00163         <font class="keywordflow">if</font> (sp-&gt;<a class="code" href="structtrap__sink.html#m0">sesp</a> == ss) {
00164             <font class="keywordflow">if</font> (prev) {
00165                 prev-&gt;<a class="code" href="structtrap__sink.html#m1">next</a> = sp-&gt;<a class="code" href="structtrap__sink.html#m1">next</a>;
00166             } <font class="keywordflow">else</font> {
00167                 <a class="code" href="agent__trap_8c.html#a5">sinks</a> = sp-&gt;<a class="code" href="structtrap__sink.html#m1">next</a>;
00168             }
00169             free_trap_session(sp);
00170             <font class="keywordflow">return</font> 1;
00171         }
00172         prev = sp;
00173         sp = sp-&gt;<a class="code" href="structtrap__sink.html#m1">next</a>;
00174     }
00175     <font class="keywordflow">return</font> 0;
00176 }
</pre></div>    </td>
  </tr>
</table>
<a name="a0" doxytag="agent_trap.h::send_easy_trap"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void send_easy_trap </td>
          <td class="md">(&nbsp;</td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname">&nbsp; <em>trap</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname">&nbsp; <em>specific</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>

<p>
Definition at line <a class="el" href="agent__trap_8c-source.html#l00528">528</a> of file <a class="el" href="agent__trap_8c-source.html">agent_trap.c</a>.
<p>
Referenced by <a class="el" href="snmp__agent_8c-source.html#l01030">handle_snmp_packet</a>(), and <a class="el" href="snmpd_8c-source.html#l00291">main</a>().
<p>
<div class="fragment"><pre>00530 {
00531     <a class="code" href="agent__trap_8h.html#a3">send_trap_vars</a>( trap, specific, NULL );
00532 }
</pre></div>    </td>
  </tr>
</table>
<a name="a4" doxytag="agent_trap.h::send_enterprise_trap_vars"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void send_enterprise_trap_vars </td>
          <td class="md">(&nbsp;</td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname">&nbsp; <em>trap</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname">&nbsp; <em>specific</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>oid *&nbsp;</td>
          <td class="mdname">&nbsp; <em>enterprise</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname">&nbsp; <em>enterprise_length</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>struct variable_list *&nbsp;</td>
          <td class="mdname">&nbsp; <em>vars</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>

<p>
Definition at line <a class="el" href="agent__trap_8c-source.html#l00283">283</a> of file <a class="el" href="agent__trap_8c-source.html">agent_trap.c</a>.
<p>
Referenced by <a class="el" href="agent__trap_8c-source.html#l00516">send_trap_vars</a>().
<p>
<div class="fragment"><pre>00287 {
00288     <font class="keyword">struct </font>variable_list uptime_var, snmptrap_var, enterprise_var;
00289     <font class="keyword">struct </font>variable_list *v2_vars, *last_var=NULL;
00290     <font class="keyword">struct </font>snmp_pdu     *template_pdu;
00291     <font class="keyword">struct </font>timeval       now;
00292     <font class="keywordtype">long</font> uptime;
00293     in_addr_t *pdu_in_addr_t;
00294     <font class="keyword">struct </font><a class="code" href="structtrap__sink.html">trap_sink</a> *sink;
00295     oid temp_oid[MAX_OID_LEN];
00296     
00297                 <font class="comment">/*</font>
00298                  * Initialise SNMPv2 required variables
00299                  */
00300     gettimeofday(&amp;now, NULL);
00301     uptime = calculate_time_diff(&amp;now, &amp;starttime);
00302     memset (&amp;uptime_var, 0, <font class="keyword">sizeof</font> (<font class="keyword">struct</font> variable_list));
00303     snmp_set_var_objid( &amp;uptime_var, <a class="code" href="agent__trap_8c.html#a19">sysuptime_oid</a>, OID_LENGTH(<a class="code" href="agent__trap_8c.html#a19">sysuptime_oid</a>));
00304     snmp_set_var_value( &amp;uptime_var, (u_char *)&amp;uptime, <font class="keyword">sizeof</font>(uptime) );
00305     uptime_var.type           = ASN_TIMETICKS;
00306     uptime_var.next_variable  = &amp;snmptrap_var;
00307 
00308     memset (&amp;snmptrap_var, 0, <font class="keyword">sizeof</font> (<font class="keyword">struct</font> variable_list));
00309     snmp_set_var_objid( &amp;snmptrap_var, <a class="code" href="agent__trap_8c.html#a17">snmptrap_oid</a>, OID_LENGTH(<a class="code" href="agent__trap_8c.html#a17">snmptrap_oid</a>));
00310         <font class="comment">/* value set later .... */</font>
00311     snmptrap_var.type           = ASN_OBJECT_ID;
00312     <font class="keywordflow">if</font> ( vars )
00313         snmptrap_var.next_variable  = vars;
00314     <font class="keywordflow">else</font>
00315         snmptrap_var.next_variable  = &amp;enterprise_var;
00316 
00317                         <font class="comment">/* find end of provided varbind list,</font>
00318                            ready to append the enterprise info if necessary */
00319     last_var = vars;
00320     <font class="keywordflow">while</font> ( last_var &amp;&amp; last_var-&gt;next_variable )
00321         last_var = last_var-&gt;next_variable;
00322 
00323     memset (&amp;enterprise_var, 0, <font class="keyword">sizeof</font> (<font class="keyword">struct</font> variable_list));
00324     snmp_set_var_objid( &amp;enterprise_var,
00325                  <a class="code" href="agent__trap_8c.html#a18">snmptrapenterprise_oid</a>, OID_LENGTH(<a class="code" href="agent__trap_8c.html#a18">snmptrapenterprise_oid</a>));
00326     snmp_set_var_value( &amp;enterprise_var, (u_char *)enterprise, enterprise_length*<font class="keyword">sizeof</font>(oid));
00327     enterprise_var.type           = ASN_OBJECT_ID;
00328     enterprise_var.next_variable  = NULL;
00329 
00330     v2_vars = &amp;uptime_var;
00331 
00332                 <font class="comment">/*</font>
00333                  *  Create a template PDU, ready for sending
00334                  */
00335     template_pdu = snmp_pdu_create( SNMP_MSG_TRAP );
00336     <font class="keywordflow">if</font> ( template_pdu == NULL ) {
00337                 <font class="comment">/* Free memory if value stored dynamically */</font>
00338         snmp_set_var_value( &amp;enterprise_var, NULL, 0);
00339         <font class="keywordflow">return</font>;
00340     }
00341     template_pdu-&gt;trap_type     = trap;
00342     template_pdu-&gt;specific_type = specific;
00343     <font class="keywordflow">if</font> ( snmp_clone_mem((<font class="keywordtype">void</font> **)&amp;template_pdu-&gt;enterprise,
00344                                 enterprise, enterprise_length*<font class="keyword">sizeof</font>(oid)))<font class="keyword"> </font>{
00345         snmp_free_pdu( template_pdu );
00346         snmp_set_var_value( &amp;enterprise_var, NULL, 0);
00347         <font class="keywordflow">return</font>;
00348     }
00349     template_pdu-&gt;enterprise_length = enterprise_length;
00350     template_pdu-&gt;flags |= UCD_MSG_FLAG_FORCE_PDU_COPY;
00351     
00352     pdu_in_addr_t = (in_addr_t *)template_pdu-&gt;agent_addr;
00353     *pdu_in_addr_t = get_myaddr();
00354     template_pdu-&gt;time = uptime;
00355 
00356                 <font class="comment">/*</font>
00357                  *  Now use the parameters to determine
00358                  *    which v2 variables are needed,
00359                  *    and what values they should take.
00360                  */
00361     <font class="keywordflow">switch</font> ( trap ) {
00362         <font class="keywordflow">case</font> -1:        <font class="comment">/*</font>
00363                          *      SNMPv2 only
00364                          *  Check to see whether the variables provided
00365                          *    are sufficient for SNMPv2 notifications
00366                          */
00367                 <font class="keywordflow">if</font> (vars &amp;&amp; snmp_oid_compare(vars-&gt;name, vars-&gt;name_length,
00368                                 <a class="code" href="agent__trap_8c.html#a19">sysuptime_oid</a>, OID_LENGTH(<a class="code" href="agent__trap_8c.html#a19">sysuptime_oid</a>)) == 0 )
00369                         v2_vars = vars;
00370                 <font class="keywordflow">else</font>
00371                 <font class="keywordflow">if</font> (vars &amp;&amp; snmp_oid_compare(vars-&gt;name, vars-&gt;name_length,
00372                                 <a class="code" href="agent__trap_8c.html#a17">snmptrap_oid</a>, OID_LENGTH(<a class="code" href="agent__trap_8c.html#a17">snmptrap_oid</a>)) == 0 )
00373                         uptime_var.next_variable = vars;
00374                 <font class="keywordflow">else</font> {
00375                         <font class="comment">/* Hmmm... we don't seem to have a value - oops! */</font>
00376                         snmptrap_var.next_variable = vars;
00377                 }
00378                 last_var = NULL;        <font class="comment">/* Don't need enterprise info */</font>
00379                 <a class="code" href="agent__trap_8c.html#a34">convert_v2_to_v1</a>( vars, template_pdu );
00380                 <font class="keywordflow">break</font>;
00381 
00382                         <font class="comment">/* "Standard" SNMPv1 traps */</font>
00383 
00384         <font class="keywordflow">case</font> SNMP_TRAP_COLDSTART:
00385                 snmp_set_var_value( &amp;snmptrap_var,
00386                                     (u_char *)<a class="code" href="agent__trap_8c.html#a11">cold_start_oid</a>,
00387                                     <font class="keyword">sizeof</font>(<a class="code" href="agent__trap_8c.html#a11">cold_start_oid</a>));
00388                 <font class="keywordflow">break</font>;
00389         <font class="keywordflow">case</font> SNMP_TRAP_WARMSTART:
00390                 snmp_set_var_value( &amp;snmptrap_var,
00391                                     (u_char *)<a class="code" href="agent__trap_8c.html#a12">warm_start_oid</a>,
00392                                     <font class="keyword">sizeof</font>(<a class="code" href="agent__trap_8c.html#a12">warm_start_oid</a>));
00393                 <font class="keywordflow">break</font>;
00394         <font class="keywordflow">case</font> SNMP_TRAP_LINKDOWN:
00395                 snmp_set_var_value( &amp;snmptrap_var,
00396                                     (u_char *)<a class="code" href="agent__trap_8c.html#a13">link_down_oid</a>,
00397                                     <font class="keyword">sizeof</font>(<a class="code" href="agent__trap_8c.html#a13">link_down_oid</a>));
00398                 <font class="keywordflow">break</font>;
00399         <font class="keywordflow">case</font> SNMP_TRAP_LINKUP:
00400                 snmp_set_var_value( &amp;snmptrap_var,
00401                                     (u_char *)<a class="code" href="agent__trap_8c.html#a14">link_up_oid</a>,
00402                                     <font class="keyword">sizeof</font>(<a class="code" href="agent__trap_8c.html#a14">link_up_oid</a>));
00403                 <font class="keywordflow">break</font>;
00404         <font class="keywordflow">case</font> SNMP_TRAP_AUTHFAIL:
00405                 <font class="keywordflow">if</font> (<a class="code" href="agent__trap_8c.html#a23">snmp_enableauthentraps</a> == <a class="code" href="agent__trap_8c.html#a3">SNMP_AUTHENTICATED_TRAPS_DISABLED</a>) {
00406                     snmp_free_pdu(template_pdu);
00407                     snmp_set_var_value( &amp;enterprise_var, NULL, 0);
00408                     <font class="keywordflow">return</font>;
00409                 }
00410                 snmp_set_var_value( &amp;snmptrap_var,
00411                                     (u_char *)<a class="code" href="agent__trap_8c.html#a15">auth_fail_oid</a>,
00412                                     <font class="keyword">sizeof</font>(<a class="code" href="agent__trap_8c.html#a15">auth_fail_oid</a>));
00413                 <font class="keywordflow">break</font>;
00414         <font class="keywordflow">case</font> SNMP_TRAP_EGPNEIGHBORLOSS:
00415                 snmp_set_var_value( &amp;snmptrap_var,
00416                                     (u_char *)<a class="code" href="agent__trap_8c.html#a16">egp_xxx_oid</a>,
00417                                     <font class="keyword">sizeof</font>(<a class="code" href="agent__trap_8c.html#a16">egp_xxx_oid</a>));
00418                 <font class="keywordflow">break</font>;
00419 
00420         <font class="keywordflow">case</font> SNMP_TRAP_ENTERPRISESPECIFIC:
00421                 memcpy( temp_oid,
00422                                     (<font class="keywordtype">char</font> *)enterprise,
00423                                     (enterprise_length)*<font class="keyword">sizeof</font>(oid));
00424                 temp_oid[ enterprise_length   ] = 0;
00425                 temp_oid[ enterprise_length+1 ] = specific;
00426                 snmp_set_var_value( &amp;snmptrap_var,
00427                                     (u_char *)temp_oid,
00428                                     (enterprise_length+2)*<font class="keyword">sizeof</font>(oid));
00429                 snmptrap_var.next_variable  = vars;
00430                 last_var = NULL;        <font class="comment">/* Don't need version info */</font>
00431                 <font class="keywordflow">break</font>;
00432     }
00433     
00434 
00435                 <font class="comment">/*</font>
00436                  *  Now loop through the list of trap sinks,
00437                  *   sending an appropriately formatted PDU to each
00438                  */
00439     <font class="keywordflow">for</font> ( sink = <a class="code" href="agent__trap_8c.html#a5">sinks</a> ; sink ; sink=sink-&gt;<a class="code" href="structtrap__sink.html#m1">next</a> ) {
00440         <font class="keywordflow">if</font> ( sink-&gt;<a class="code" href="structtrap__sink.html#m3">version</a> == SNMP_VERSION_1 &amp;&amp; trap == -1 )
00441                 <font class="keywordflow">continue</font>;       <font class="comment">/* Skip v1 sinks for v2 only traps */</font>
00442         template_pdu-&gt;command = sink-&gt;<a class="code" href="structtrap__sink.html#m2">pdutype</a>;
00443 
00444         <font class="keywordflow">if</font> ( sink-&gt;<a class="code" href="structtrap__sink.html#m3">version</a> != SNMP_VERSION_1 ) {
00445             template_pdu-&gt;variables = v2_vars;
00446             <font class="keywordflow">if</font> ( last_var )
00447                 last_var-&gt;next_variable = &amp;enterprise_var;
00448         }
00449         <font class="keywordflow">else</font>
00450             template_pdu-&gt;variables = vars;
00451 
00452         <a class="code" href="agent__trap_8h.html#a13">send_trap_to_sess</a>(sink-&gt;<a class="code" href="structtrap__sink.html#m0">sesp</a>, template_pdu);
00453 
00454         <font class="keywordflow">if</font> ( sink-&gt;<a class="code" href="structtrap__sink.html#m3">version</a> != SNMP_VERSION_1 &amp;&amp; last_var )
00455             last_var-&gt;next_variable = NULL;
00456     }
00457 
00458     <font class="comment">/* send stuff to registered callbacks */</font>
00459     <font class="comment">/* v2 traps/informs */</font>
00460     template_pdu-&gt;variables = v2_vars;
00461     <font class="keywordflow">if</font> ( last_var )
00462         last_var-&gt;next_variable = &amp;enterprise_var;
00463 
00464     snmp_call_callbacks(SNMP_CALLBACK_APPLICATION, <a class="code" href="agent__callbacks_8h.html#a7">SNMPD_CALLBACK_SEND_TRAP2</a>,
00465                         template_pdu);
00466     
00467     <font class="keywordflow">if</font> ( last_var )
00468         last_var-&gt;next_variable = NULL;
00469 
00470     <font class="comment">/* v1 traps */</font>
00471     template_pdu-&gt;command = SNMP_MSG_TRAP;
00472     template_pdu-&gt;variables = vars;
00473     
00474     snmp_call_callbacks(SNMP_CALLBACK_APPLICATION, <a class="code" href="agent__callbacks_8h.html#a6">SNMPD_CALLBACK_SEND_TRAP1</a>,
00475                         template_pdu);
00476 
00477                 <font class="comment">/* Free memory if values stored dynamically */</font>
00478     snmp_set_var_value( &amp;enterprise_var, NULL, 0);
00479     snmp_set_var_value( &amp;snmptrap_var, NULL, 0);
00480         <font class="comment">/* Ensure we don't free anything we shouldn't */</font>
00481     <font class="keywordflow">if</font> ( last_var )
00482         last_var-&gt;next_variable = NULL;
00483     template_pdu-&gt;variables = NULL;
00484     snmp_free_pdu( template_pdu );
00485 }
</pre></div>    </td>
  </tr>
</table>
<a name="a1" doxytag="agent_trap.h::send_trap_pdu"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void send_trap_pdu </td>
          <td class="md">(&nbsp;</td>
          <td class="md" nowrap>struct snmp_pdu *&nbsp;</td>
          <td class="mdname1">&nbsp; <em>pdu</em>          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>

<p>
Definition at line <a class="el" href="agent__trap_8c-source.html#l00540">540</a> of file <a class="el" href="agent__trap_8c-source.html">agent_trap.c</a>.<div class="fragment"><pre>00541 {
00542     <a class="code" href="agent__trap_8h.html#a3">send_trap_vars</a>( -1, -1, pdu-&gt;variables );
00543 }
</pre></div>    </td>
  </tr>
</table>
<a name="a13" doxytag="agent_trap.h::send_trap_to_sess"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void send_trap_to_sess </td>
          <td class="md">(&nbsp;</td>
          <td class="md" nowrap>struct snmp_session *&nbsp;</td>
          <td class="mdname">&nbsp; <em>sess</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>struct snmp_pdu *&nbsp;</td>
          <td class="mdname">&nbsp; <em>template_pdu</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>

<p>
Definition at line <a class="el" href="agent__trap_8c-source.html#l00489">489</a> of file <a class="el" href="agent__trap_8c-source.html">agent_trap.c</a>.
<p>
Referenced by <a class="el" href="agent__trap_8c-source.html#l00283">send_enterprise_trap_vars</a>().
<p>
<div class="fragment"><pre>00490                                                       {
00491     <font class="keyword">struct </font>snmp_pdu *pdu;
00492 
00493     <font class="keywordflow">if</font> (!sess || !template_pdu)
00494         <font class="keywordflow">return</font>;
00495 
00496     DEBUGMSGTL((<font class="stringliteral">"send_trap_to_sess"</font>,<font class="stringliteral">"sending trap type=%d, version=%d\n"</font>,
00497                 template_pdu-&gt;command, sess-&gt;version));
00498     
00499     <font class="keywordflow">if</font> (sess-&gt;version == SNMP_VERSION_1 &amp;&amp;
00500         (template_pdu-&gt;command == SNMP_MSG_TRAP2 ||
00501          template_pdu-&gt;command == SNMP_MSG_INFORM))
00502         <font class="keywordflow">return</font>; <font class="comment">/* Skip v1 sinks for v2 only traps */</font>
00503     template_pdu-&gt;version = sess-&gt;version;
00504     pdu = snmp_clone_pdu( template_pdu );
00505     pdu-&gt;sessid = sess-&gt;sessid; <font class="comment">/* AgentX only ? */</font>
00506     <font class="keywordflow">if</font> ( snmp_send( sess, pdu) == 0 )<font class="keyword"> </font>{
00507         snmp_sess_perror (<font class="stringliteral">"snmpd: send_trap"</font>, sess);
00508         snmp_free_pdu( pdu );
00509     }
00510     <font class="keywordflow">else</font> {
00511         snmp_increment_statistic(STAT_SNMPOUTTRAPS);
00512         snmp_increment_statistic(STAT_SNMPOUTPKTS);
00513     }
00514 }
</pre></div>    </td>
  </tr>
</table>
<a name="a3" doxytag="agent_trap.h::send_trap_vars"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void send_trap_vars </td>
          <td class="md">(&nbsp;</td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname">&nbsp; <em>trap</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname">&nbsp; <em>specific</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>struct variable_list *&nbsp;</td>
          <td class="mdname">&nbsp; <em>vars</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>

<p>
Definition at line <a class="el" href="agent__trap_8c-source.html#l00516">516</a> of file <a class="el" href="agent__trap_8c-source.html">agent_trap.c</a>.
<p>
Referenced by <a class="el" href="agent__trap_8c-source.html#l00528">send_easy_trap</a>(), <a class="el" href="agent__trap_8c-source.html#l00540">send_trap_pdu</a>(), and <a class="el" href="agent__trap_8c-source.html#l00534">send_v2trap</a>().
<p>
<div class="fragment"><pre>00519 {
00520     <font class="keywordflow">if</font> ( trap == SNMP_TRAP_ENTERPRISESPECIFIC )
00521         <a class="code" href="agent__trap_8h.html#a4">send_enterprise_trap_vars</a>( trap, specific, <a class="code" href="agent__trap_8c.html#a7">objid_enterprisetrap</a>,
00522                         OID_LENGTH(<a class="code" href="agent__trap_8c.html#a7">objid_enterprisetrap</a>), vars );
00523     <font class="keywordflow">else</font>
00524         <a class="code" href="agent__trap_8h.html#a4">send_enterprise_trap_vars</a>( trap, specific, <a class="code" href="agent__trap_8c.html#a8">version_id</a>,
00525                         OID_LENGTH(<a class="code" href="agent__trap_8c.html#a8">version_id</a>), vars );
00526 }
</pre></div>    </td>
  </tr>
</table>
<a name="a2" doxytag="agent_trap.h::send_v2trap"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void send_v2trap </td>
          <td class="md">(&nbsp;</td>
          <td class="md" nowrap>struct variable_list *&nbsp;</td>
          <td class="mdname1">&nbsp; <em>vars</em>          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>

<p>
Definition at line <a class="el" href="agent__trap_8c-source.html#l00534">534</a> of file <a class="el" href="agent__trap_8c-source.html">agent_trap.c</a>.<div class="fragment"><pre>00535 {
00536     <a class="code" href="agent__trap_8h.html#a3">send_trap_vars</a>( -1, -1, vars );
00537 }
</pre></div>    </td>
  </tr>
</table>
<a name="a12" doxytag="agent_trap.h::snmpd_free_trapcommunity"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void snmpd_free_trapcommunity </td>
          <td class="md">(&nbsp;</td>
          <td class="md" nowrap>void&nbsp;</td>
          <td class="mdname1">&nbsp;          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>

<p>
Definition at line <a class="el" href="agent__trap_8c-source.html#l00718">718</a> of file <a class="el" href="agent__trap_8c-source.html">agent_trap.c</a>.<div class="fragment"><pre>00719 {
00720     <font class="keywordflow">if</font> (snmp_trapcommunity) {
00721         free(<a class="code" href="agent__trap_8c.html#a24">snmp_trapcommunity</a>);
00722         <a class="code" href="agent__trap_8c.html#a24">snmp_trapcommunity</a> = NULL;
00723     }
00724 }
</pre></div>    </td>
  </tr>
</table>
<a name="a10" doxytag="agent_trap.h::snmpd_free_trapsinks"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void snmpd_free_trapsinks </td>
          <td class="md">(&nbsp;</td>
          <td class="md" nowrap>void&nbsp;</td>
          <td class="mdname1">&nbsp;          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>

<p>
Definition at line <a class="el" href="agent__trap_8c-source.html#l00225">225</a> of file <a class="el" href="agent__trap_8c-source.html">agent_trap.c</a>.<div class="fragment"><pre>00226 {
00227     <font class="keyword">struct </font><a class="code" href="structtrap__sink.html">trap_sink</a> *sp = sinks;
00228     <font class="keywordflow">while</font> (sp) {
00229         <a class="code" href="agent__trap_8c.html#a5">sinks</a> = <a class="code" href="agent__trap_8c.html#a5">sinks</a>-&gt;<a class="code" href="structtrap__sink.html#m1">next</a>;
00230         free_trap_session(sp);
00231         sp = <a class="code" href="agent__trap_8c.html#a5">sinks</a>;
00232     }
00233 }
</pre></div>    </td>
  </tr>
</table>
<a name="a5" doxytag="agent_trap.h::snmpd_parse_config_authtrap"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void snmpd_parse_config_authtrap </td>
          <td class="md">(&nbsp;</td>
          <td class="md" nowrap>const char *&nbsp;</td>
          <td class="mdname">&nbsp; <em>token</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>char *&nbsp;</td>
          <td class="mdname">&nbsp; <em>cptr</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>

<p>
Definition at line <a class="el" href="agent__trap_8c-source.html#l00553">553</a> of file <a class="el" href="agent__trap_8c-source.html">agent_trap.c</a>.<div class="fragment"><pre>00555 {
00556     <font class="keywordtype">int</font> i;
00557 
00558     i = atoi(cptr);
00559     <font class="keywordflow">if</font> ( i == 0 ) {
00560         <font class="keywordflow">if</font> ( !strcmp( cptr, <font class="stringliteral">"enable"</font> ))
00561             i = <a class="code" href="agent__trap_8c.html#a2">SNMP_AUTHENTICATED_TRAPS_ENABLED</a>;
00562         <font class="keywordflow">else</font> <font class="keywordflow">if</font> ( !strcmp( cptr, <font class="stringliteral">"disable"</font> ))
00563             i = <a class="code" href="agent__trap_8c.html#a3">SNMP_AUTHENTICATED_TRAPS_DISABLED</a>;
00564     }
00565     <font class="keywordflow">if</font> (i &lt; 1 || i &gt; 2)
00566         config_perror(<font class="stringliteral">"authtrapenable must be 1 or 2"</font>);
00567     <font class="keywordflow">else</font>
00568         <a class="code" href="agent__trap_8c.html#a23">snmp_enableauthentraps</a> = i;
00569 }
</pre></div>    </td>
  </tr>
</table>
<a name="a8" doxytag="agent_trap.h::snmpd_parse_config_informsink"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void snmpd_parse_config_informsink </td>
          <td class="md">(&nbsp;</td>
          <td class="md" nowrap>const char *&nbsp;</td>
          <td class="mdname">&nbsp; <em>word</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>char *&nbsp;</td>
          <td class="mdname">&nbsp; <em>cptr</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>

<p>
Definition at line <a class="el" href="agent__trap_8c-source.html#l00627">627</a> of file <a class="el" href="agent__trap_8c-source.html">agent_trap.c</a>.<div class="fragment"><pre>00628 {
00629     <font class="keywordtype">char</font> tmpbuf[1024];
00630     <font class="keywordtype">char</font> *sp, *cp, *pp = NULL;
00631     u_short sinkport;
00632   
00633     <font class="keywordflow">if</font> (!<a class="code" href="agent__trap_8c.html#a24">snmp_trapcommunity</a>) <a class="code" href="agent__trap_8c.html#a24">snmp_trapcommunity</a> = strdup(<font class="stringliteral">"public"</font>);
00634     sp = strtok(cptr, <font class="stringliteral">" \t\n"</font>);
00635     cp = strtok(NULL, <font class="stringliteral">" \t\n"</font>);
00636     <font class="keywordflow">if</font> (cp) pp = strtok(NULL, <font class="stringliteral">" \t\n"</font>);
00637     <font class="keywordflow">if</font> (cp &amp;&amp; pp) {
00638         sinkport = atoi(pp);
00639         <font class="keywordflow">if</font> ((sinkport &lt; 1) || (sinkport &gt; 0xffff)) {
00640             config_perror(<font class="stringliteral">"trapsink port out of range"</font>);
00641             sinkport = SNMP_TRAP_PORT;
00642         }
00643     } <font class="keywordflow">else</font> {
00644         sinkport = SNMP_TRAP_PORT;
00645     }
00646     <font class="keywordflow">if</font> (create_v2_inform_session(sp, sinkport,
00647                                  cp ? cp : <a class="code" href="agent__trap_8c.html#a24">snmp_trapcommunity</a>) == 0)<font class="keyword"> </font>{
00648         sprintf(tmpbuf,<font class="stringliteral">"cannot create informsink: %s"</font>, cptr);
00649         config_perror(tmpbuf);
00650     }
00651 }
</pre></div>    </td>
  </tr>
</table>
<a name="a7" doxytag="agent_trap.h::snmpd_parse_config_trap2sink"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void snmpd_parse_config_trap2sink </td>
          <td class="md">(&nbsp;</td>
          <td class="md" nowrap>const char *&nbsp;</td>
          <td class="mdname">&nbsp; <em>word</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>char *&nbsp;</td>
          <td class="mdname">&nbsp; <em>cptr</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>

<p>
Definition at line <a class="el" href="agent__trap_8c-source.html#l00600">600</a> of file <a class="el" href="agent__trap_8c-source.html">agent_trap.c</a>.<div class="fragment"><pre>00601 {
00602     <font class="keywordtype">char</font> tmpbuf[1024];
00603     <font class="keywordtype">char</font> *sp, *cp, *pp = NULL;
00604     u_short sinkport;
00605   
00606     <font class="keywordflow">if</font> (!<a class="code" href="agent__trap_8c.html#a24">snmp_trapcommunity</a>) <a class="code" href="agent__trap_8c.html#a24">snmp_trapcommunity</a> = strdup(<font class="stringliteral">"public"</font>);
00607     sp = strtok(cptr, <font class="stringliteral">" \t\n"</font>);
00608     cp = strtok(NULL, <font class="stringliteral">" \t\n"</font>);
00609     <font class="keywordflow">if</font> (cp) pp = strtok(NULL, <font class="stringliteral">" \t\n"</font>);
00610     <font class="keywordflow">if</font> (cp &amp;&amp; pp) {
00611         sinkport = atoi(pp);
00612         <font class="keywordflow">if</font> ((sinkport &lt; 1) || (sinkport &gt; 0xffff)) {
00613             config_perror(<font class="stringliteral">"trapsink port out of range"</font>);
00614             sinkport = SNMP_TRAP_PORT;
00615         }
00616     } <font class="keywordflow">else</font> {
00617         sinkport = SNMP_TRAP_PORT;
00618     }
00619     <font class="keywordflow">if</font> (create_v2_trap_session(sp, sinkport,
00620                                cp ? cp : <a class="code" href="agent__trap_8c.html#a24">snmp_trapcommunity</a>) == 0)<font class="keyword"> </font>{
00621         sprintf(tmpbuf,<font class="stringliteral">"cannot create trap2sink: %s"</font>, cptr);
00622         config_perror(tmpbuf);
00623     }
00624 }
</pre></div>    </td>
  </tr>
</table>
<a name="a11" doxytag="agent_trap.h::snmpd_parse_config_trapcommunity"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void snmpd_parse_config_trapcommunity </td>
          <td class="md">(&nbsp;</td>
          <td class="md" nowrap>const char *&nbsp;</td>
          <td class="mdname">&nbsp; <em>word</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>char *&nbsp;</td>
          <td class="mdname">&nbsp; <em>cptr</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>

<p>
Definition at line <a class="el" href="agent__trap_8c-source.html#l00711">711</a> of file <a class="el" href="agent__trap_8c-source.html">agent_trap.c</a>.<div class="fragment"><pre>00712 {
00713     <font class="keywordflow">if</font> (snmp_trapcommunity) free(<a class="code" href="agent__trap_8c.html#a24">snmp_trapcommunity</a>);
00714     <a class="code" href="agent__trap_8c.html#a24">snmp_trapcommunity</a> = (<font class="keywordtype">char</font> *)malloc (strlen(cptr)+1);
00715     copy_nword(cptr, <a class="code" href="agent__trap_8c.html#a24">snmp_trapcommunity</a>, strlen(cptr)+1);
00716 }
</pre></div>    </td>
  </tr>
</table>
<a name="a9" doxytag="agent_trap.h::snmpd_parse_config_trapsess"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void snmpd_parse_config_trapsess </td>
          <td class="md">(&nbsp;</td>
          <td class="md" nowrap>const char *&nbsp;</td>
          <td class="mdname">&nbsp; <em>word</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>char *&nbsp;</td>
          <td class="mdname">&nbsp; <em>cptr</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>

<p>
Definition at line <a class="el" href="agent__trap_8c-source.html#l00678">678</a> of file <a class="el" href="agent__trap_8c-source.html">agent_trap.c</a>.<div class="fragment"><pre>00678                                                           {
00679     <font class="keywordtype">char</font> *argv[<a class="code" href="agent__trap_8c.html#a4">MAX_ARGS</a>];
00680     <font class="keywordtype">int</font> argn, arg;
00681     <font class="keyword">struct </font>snmp_session session, *ss;
00682 
00683     <font class="comment">/* inform or trap?  default to trap */</font>
00684     traptype = SNMP_MSG_TRAP2;
00685 
00686     <font class="comment">/* create the argv[] like array */</font>
00687     argv[0] = strdup(<font class="stringliteral">"snmpd-trapsess"</font>); <font class="comment">/* bogus entry for getopt() */</font>
00688     <font class="keywordflow">for</font>(argn = 1; cptr &amp;&amp; argn &lt; <a class="code" href="agent__trap_8c.html#a4">MAX_ARGS</a>; argn++) {
00689         argv[argn] = strdup(cptr); <font class="comment">/* more than enough room */</font>
00690     }
00691 
00692     arg = snmp_parse_args(argn, argv, &amp;session, <font class="stringliteral">"C:"</font>, trapOptProc);
00693     <font class="keywordflow">do</font> { free(argv[--argn]); } <font class="keywordflow">while</font> (argn &gt; 0);
00694 
00695     ss = snmp_open (&amp;session);
00696 
00697     <font class="keywordflow">if</font> (!ss) {
00698         config_perror(<font class="stringliteral">"snmpd: failed to parse this line"</font>);
00699         snmp_sess_perror(<font class="stringliteral">"snmpd: snmpd_parse_config_trapsess()"</font>, &amp;session);
00700         <font class="keywordflow">return</font>;
00701     }
00702     
00703     <font class="keywordflow">if</font> (ss-&gt;version == SNMP_VERSION_1) {
00704         <a class="code" href="agent__trap_8h.html#a15">add_trap_session</a>(ss, SNMP_MSG_TRAP, 0, SNMP_VERSION_1);
00705     } <font class="keywordflow">else</font> {
00706         <a class="code" href="agent__trap_8h.html#a15">add_trap_session</a>( ss, traptype, (traptype==SNMP_MSG_INFORM), ss-&gt;version );
00707     }
00708 }
</pre></div>    </td>
  </tr>
</table>
<a name="a6" doxytag="agent_trap.h::snmpd_parse_config_trapsink"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void snmpd_parse_config_trapsink </td>
          <td class="md">(&nbsp;</td>
          <td class="md" nowrap>const char *&nbsp;</td>
          <td class="mdname">&nbsp; <em>token</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>char *&nbsp;</td>
          <td class="mdname">&nbsp; <em>cptr</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>

<p>
Definition at line <a class="el" href="agent__trap_8c-source.html#l00571">571</a> of file <a class="el" href="agent__trap_8c-source.html">agent_trap.c</a>.<div class="fragment"><pre>00573 {
00574     <font class="keywordtype">char</font> tmpbuf[1024];
00575     <font class="keywordtype">char</font> *sp, *cp, *pp = NULL;
00576     u_short sinkport;
00577     
00578     <font class="keywordflow">if</font> (!<a class="code" href="agent__trap_8c.html#a24">snmp_trapcommunity</a>) <a class="code" href="agent__trap_8c.html#a24">snmp_trapcommunity</a> = strdup(<font class="stringliteral">"public"</font>);
00579     sp = strtok(cptr, <font class="stringliteral">" \t\n"</font>);
00580     cp = strtok(NULL, <font class="stringliteral">" \t\n"</font>);
00581     <font class="keywordflow">if</font> (cp) pp = strtok(NULL, <font class="stringliteral">" \t\n"</font>);
00582     <font class="keywordflow">if</font> (cp &amp;&amp; pp) {
00583         sinkport = atoi(pp);
00584         <font class="keywordflow">if</font> ((sinkport &lt; 1) || (sinkport &gt; 0xffff)) {
00585             config_perror(<font class="stringliteral">"trapsink port out of range"</font>);
00586             sinkport = SNMP_TRAP_PORT;
00587         }
00588     } <font class="keywordflow">else</font> {
00589         sinkport = SNMP_TRAP_PORT;
00590     }
00591     <font class="keywordflow">if</font> (create_v1_trap_session(sp, sinkport,
00592                                cp ? cp : <a class="code" href="agent__trap_8c.html#a24">snmp_trapcommunity</a>) == 0)<font class="keyword"> </font>{
00593         sprintf(tmpbuf,<font class="stringliteral">"cannot create trapsink: %s"</font>, cptr);
00594         config_perror(tmpbuf);
00595     }
00596 }
</pre></div>    </td>
  </tr>
</table>
<hr><address><small>Generated on Sat Nov 10 14:09:54 2001 for net-snmp by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.gif" alt="doxygen" align="middle" border=0 
width=110 height=53></a>1.2.11 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
 &copy;&nbsp;1997-2001</small></address>
</body>
</html>
<!--#include virtual="/sfbutton.html" -->
<!--#include virtual="/sfbutton.html" -->
<!-- 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