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> <a class="qindex" href="annotated.html">Data Structures</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Data Fields</a> <a class="qindex" href="globals.html">Globals</a> </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 </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 </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 </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 </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 </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 </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 </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 </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 </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 </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 </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 </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 </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 </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 </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 </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 </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 </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">( </td>
<td class="md" nowrap>struct snmp_session * </td>
<td class="mdname"> <em>ss</em>, </td>
</tr>
<tr>
<td></td>
<td></td>
<td class="md" nowrap>int </td>
<td class="mdname"> <em>pdutype</em>, </td>
</tr>
<tr>
<td></td>
<td></td>
<td class="md" nowrap>int </td>
<td class="mdname"> <em>confirm</em>, </td>
</tr>
<tr>
<td></td>
<td></td>
<td class="md" nowrap>int </td>
<td class="mdname"> <em>version</em></td>
</tr>
<tr>
<td></td>
<td class="md">) </td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</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> *) &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-><a class="code" href="structtrap__sink.html#m0">sesp</a> = ss;
00152 new_sink-><a class="code" href="structtrap__sink.html#m2">pdutype</a> = pdutype;
00153 new_sink-><a class="code" href="structtrap__sink.html#m3">version</a> = version;
00154 new_sink-><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">( </td>
<td class="md" nowrap>char * </td>
<td class="mdname"> <em>sink</em>, </td>
</tr>
<tr>
<td></td>
<td></td>
<td class="md" nowrap>u_short </td>
<td class="mdname"> <em>sinkport</em>, </td>
</tr>
<tr>
<td></td>
<td></td>
<td class="md" nowrap>char * </td>
<td class="mdname"> <em>com</em>, </td>
</tr>
<tr>
<td></td>
<td></td>
<td class="md" nowrap>int </td>
<td class="mdname"> <em>version</em>, </td>
</tr>
<tr>
<td></td>
<td></td>
<td class="md" nowrap>int </td>
<td class="mdname"> <em>pdutype</em></td>
</tr>
<tr>
<td></td>
<td class="md">) </td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</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 (&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 (&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>, &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">( </td>
<td class="md" nowrap>struct snmp_session * </td>
<td class="mdname1"> <em>ss</em> </td>
<td class="md">) </td>
<td class="md"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</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-><a class="code" href="structtrap__sink.html#m0">sesp</a> == ss) {
00164 <font class="keywordflow">if</font> (prev) {
00165 prev-><a class="code" href="structtrap__sink.html#m1">next</a> = sp-><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-><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-><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">( </td>
<td class="md" nowrap>int </td>
<td class="mdname"> <em>trap</em>, </td>
</tr>
<tr>
<td></td>
<td></td>
<td class="md" nowrap>int </td>
<td class="mdname"> <em>specific</em></td>
</tr>
<tr>
<td></td>
<td class="md">) </td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</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">( </td>
<td class="md" nowrap>int </td>
<td class="mdname"> <em>trap</em>, </td>
</tr>
<tr>
<td></td>
<td></td>
<td class="md" nowrap>int </td>
<td class="mdname"> <em>specific</em>, </td>
</tr>
<tr>
<td></td>
<td></td>
<td class="md" nowrap>oid * </td>
<td class="mdname"> <em>enterprise</em>, </td>
</tr>
<tr>
<td></td>
<td></td>
<td class="md" nowrap>int </td>
<td class="mdname"> <em>enterprise_length</em>, </td>
</tr>
<tr>
<td></td>
<td></td>
<td class="md" nowrap>struct variable_list * </td>
<td class="mdname"> <em>vars</em></td>
</tr>
<tr>
<td></td>
<td class="md">) </td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</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(&now, NULL);
00301 uptime = calculate_time_diff(&now, &starttime);
00302 memset (&uptime_var, 0, <font class="keyword">sizeof</font> (<font class="keyword">struct</font> variable_list));
00303 snmp_set_var_objid( &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( &uptime_var, (u_char *)&uptime, <font class="keyword">sizeof</font>(uptime) );
00305 uptime_var.type = ASN_TIMETICKS;
00306 uptime_var.next_variable = &snmptrap_var;
00307
00308 memset (&snmptrap_var, 0, <font class="keyword">sizeof</font> (<font class="keyword">struct</font> variable_list));
00309 snmp_set_var_objid( &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 = &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 && last_var->next_variable )
00321 last_var = last_var->next_variable;
00322
00323 memset (&enterprise_var, 0, <font class="keyword">sizeof</font> (<font class="keyword">struct</font> variable_list));
00324 snmp_set_var_objid( &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( &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 = &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( &enterprise_var, NULL, 0);
00339 <font class="keywordflow">return</font>;
00340 }
00341 template_pdu->trap_type = trap;
00342 template_pdu->specific_type = specific;
00343 <font class="keywordflow">if</font> ( snmp_clone_mem((<font class="keywordtype">void</font> **)&template_pdu->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( &enterprise_var, NULL, 0);
00347 <font class="keywordflow">return</font>;
00348 }
00349 template_pdu->enterprise_length = enterprise_length;
00350 template_pdu->flags |= UCD_MSG_FLAG_FORCE_PDU_COPY;
00351
00352 pdu_in_addr_t = (in_addr_t *)template_pdu->agent_addr;
00353 *pdu_in_addr_t = get_myaddr();
00354 template_pdu->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 && snmp_oid_compare(vars->name, vars->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 && snmp_oid_compare(vars->name, vars->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( &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( &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( &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( &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( &enterprise_var, NULL, 0);
00408 <font class="keywordflow">return</font>;
00409 }
00410 snmp_set_var_value( &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( &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( &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-><a class="code" href="structtrap__sink.html#m1">next</a> ) {
00440 <font class="keywordflow">if</font> ( sink-><a class="code" href="structtrap__sink.html#m3">version</a> == SNMP_VERSION_1 && trap == -1 )
00441 <font class="keywordflow">continue</font>; <font class="comment">/* Skip v1 sinks for v2 only traps */</font>
00442 template_pdu->command = sink-><a class="code" href="structtrap__sink.html#m2">pdutype</a>;
00443
00444 <font class="keywordflow">if</font> ( sink-><a class="code" href="structtrap__sink.html#m3">version</a> != SNMP_VERSION_1 ) {
00445 template_pdu->variables = v2_vars;
00446 <font class="keywordflow">if</font> ( last_var )
00447 last_var->next_variable = &enterprise_var;
00448 }
00449 <font class="keywordflow">else</font>
00450 template_pdu->variables = vars;
00451
00452 <a class="code" href="agent__trap_8h.html#a13">send_trap_to_sess</a>(sink-><a class="code" href="structtrap__sink.html#m0">sesp</a>, template_pdu);
00453
00454 <font class="keywordflow">if</font> ( sink-><a class="code" href="structtrap__sink.html#m3">version</a> != SNMP_VERSION_1 && last_var )
00455 last_var->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->variables = v2_vars;
00461 <font class="keywordflow">if</font> ( last_var )
00462 last_var->next_variable = &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->next_variable = NULL;
00469
00470 <font class="comment">/* v1 traps */</font>
00471 template_pdu->command = SNMP_MSG_TRAP;
00472 template_pdu->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( &enterprise_var, NULL, 0);
00479 snmp_set_var_value( &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->next_variable = NULL;
00483 template_pdu->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">( </td>
<td class="md" nowrap>struct snmp_pdu * </td>
<td class="mdname1"> <em>pdu</em> </td>
<td class="md">) </td>
<td class="md"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</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->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">( </td>
<td class="md" nowrap>struct snmp_session * </td>
<td class="mdname"> <em>sess</em>, </td>
</tr>
<tr>
<td></td>
<td></td>
<td class="md" nowrap>struct snmp_pdu * </td>
<td class="mdname"> <em>template_pdu</em></td>
</tr>
<tr>
<td></td>
<td class="md">) </td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</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->command, sess->version));
00498
00499 <font class="keywordflow">if</font> (sess->version == SNMP_VERSION_1 &&
00500 (template_pdu->command == SNMP_MSG_TRAP2 ||
00501 template_pdu->command == SNMP_MSG_INFORM))
00502 <font class="keywordflow">return</font>; <font class="comment">/* Skip v1 sinks for v2 only traps */</font>
00503 template_pdu->version = sess->version;
00504 pdu = snmp_clone_pdu( template_pdu );
00505 pdu->sessid = sess->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">( </td>
<td class="md" nowrap>int </td>
<td class="mdname"> <em>trap</em>, </td>
</tr>
<tr>
<td></td>
<td></td>
<td class="md" nowrap>int </td>
<td class="mdname"> <em>specific</em>, </td>
</tr>
<tr>
<td></td>
<td></td>
<td class="md" nowrap>struct variable_list * </td>
<td class="mdname"> <em>vars</em></td>
</tr>
<tr>
<td></td>
<td class="md">) </td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</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">( </td>
<td class="md" nowrap>struct variable_list * </td>
<td class="mdname1"> <em>vars</em> </td>
<td class="md">) </td>
<td class="md"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</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">( </td>
<td class="md" nowrap>void </td>
<td class="mdname1"> </td>
<td class="md">) </td>
<td class="md"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</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">( </td>
<td class="md" nowrap>void </td>
<td class="mdname1"> </td>
<td class="md">) </td>
<td class="md"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</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>-><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">( </td>
<td class="md" nowrap>const char * </td>
<td class="mdname"> <em>token</em>, </td>
</tr>
<tr>
<td></td>
<td></td>
<td class="md" nowrap>char * </td>
<td class="mdname"> <em>cptr</em></td>
</tr>
<tr>
<td></td>
<td class="md">) </td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</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 < 1 || i > 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">( </td>
<td class="md" nowrap>const char * </td>
<td class="mdname"> <em>word</em>, </td>
</tr>
<tr>
<td></td>
<td></td>
<td class="md" nowrap>char * </td>
<td class="mdname"> <em>cptr</em></td>
</tr>
<tr>
<td></td>
<td class="md">) </td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</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 && pp) {
00638 sinkport = atoi(pp);
00639 <font class="keywordflow">if</font> ((sinkport < 1) || (sinkport > 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">( </td>
<td class="md" nowrap>const char * </td>
<td class="mdname"> <em>word</em>, </td>
</tr>
<tr>
<td></td>
<td></td>
<td class="md" nowrap>char * </td>
<td class="mdname"> <em>cptr</em></td>
</tr>
<tr>
<td></td>
<td class="md">) </td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</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 && pp) {
00611 sinkport = atoi(pp);
00612 <font class="keywordflow">if</font> ((sinkport < 1) || (sinkport > 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">( </td>
<td class="md" nowrap>const char * </td>
<td class="mdname"> <em>word</em>, </td>
</tr>
<tr>
<td></td>
<td></td>
<td class="md" nowrap>char * </td>
<td class="mdname"> <em>cptr</em></td>
</tr>
<tr>
<td></td>
<td class="md">) </td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</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">( </td>
<td class="md" nowrap>const char * </td>
<td class="mdname"> <em>word</em>, </td>
</tr>
<tr>
<td></td>
<td></td>
<td class="md" nowrap>char * </td>
<td class="mdname"> <em>cptr</em></td>
</tr>
<tr>
<td></td>
<td class="md">) </td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</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 && argn < <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, &session, <font class="stringliteral">"C:"</font>, trapOptProc);
00693 <font class="keywordflow">do</font> { free(argv[--argn]); } <font class="keywordflow">while</font> (argn > 0);
00694
00695 ss = snmp_open (&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>, &session);
00700 <font class="keywordflow">return</font>;
00701 }
00702
00703 <font class="keywordflow">if</font> (ss->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->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">( </td>
<td class="md" nowrap>const char * </td>
<td class="mdname"> <em>token</em>, </td>
</tr>
<tr>
<td></td>
<td></td>
<td class="md" nowrap>char * </td>
<td class="mdname"> <em>cptr</em></td>
</tr>
<tr>
<td></td>
<td class="md">) </td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</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 && pp) {
00583 sinkport = atoi(pp);
00584 <font class="keywordflow">if</font> ((sinkport < 1) || (sinkport > 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>,
© 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