agent__handler_8h-source.html from net-snmp at Krugle
Show agent__handler_8h-source.html syntax highlighted
<!--#set var="section" value="development" -->
<!--#include virtual="/page-top.html" -->
<!-- CONTENT START -->
<!-- Generated by Doxygen 1.3.9.1 -->
<div class="qindex">
<a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</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="pages.html">Related Pages</a> | <a class=
"qindex" href="examples.html">Examples</a>
</div>
<div class="nav">
<a class="el" href="dir_000000.html">include</a> / <a class="el" href=
"dir_000001.html">net-snmp</a> / <a class="el" href="dir_000002.html">agent</a>
</div>
<h1>agent_handler.h</h1>
<div class="fragment">
<pre class="fragment">
00001 <span class="comment">/* Portions of this file are subject to the following copyright(s). See</span>
00002 <span class="comment"> * the Net-SNMP's COPYING file for more details and other copyrights</span>
00003 <span class="comment"> * that may apply:</span>
00004 <span class="comment"> */</span>
00005 <span class="comment">/*</span>
00006 <span class="comment"> * Portions of this file are copyrighted by:</span>
00007 <span class="comment"> * Copyright © 2003 Sun Microsystems, Inc. All rights reserved.</span>
00008 <span class="comment"> * Use is subject to license terms specified in the COPYING file</span>
00009 <span class="comment"> * distributed with the Net-SNMP package.</span>
00010 <span class="comment"> */</span>
00011 <span class="preprocessor">#ifndef AGENT_HANDLER_H</span>
00012 <span class="preprocessor">#define AGENT_HANDLER_H</span>
00013
00014 <span class="preprocessor">#ifdef __cplusplus</span>
00015 <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
00016 <span class="preprocessor">#endif</span>
00017
00025 <span class="keyword">struct </span><a class="code" href=
"structnetsnmp__handler__registration__s.html">netsnmp_handler_registration_s</a>;
00026
00027 <span class="comment">/*</span>
00028 <span class="comment"> * per mib handler flags.</span>
00029 <span class="comment"> * NOTE: Lower bits are reserved for the agent handler's use.</span>
00030 <span class="comment"> * The high 4 bits (31-28) are reserved for use by the handler.</span>
00031 <span class="comment"> */</span>
00032 <span class="preprocessor">#define MIB_HANDLER_AUTO_NEXT 0x00000001</span>
00033 <span class="preprocessor">#define MIB_HANDLER_AUTO_NEXT_OVERRIDE_ONCE 0x00000002</span>
00034
00035 <span class="preprocessor">#define MIB_HANDLER_CUSTOM4 0x10000000</span>
00036 <span class="preprocessor">#define MIB_HANDLER_CUSTOM3 0x20000000</span>
00037 <span class="preprocessor">#define MIB_HANDLER_CUSTOM2 0x40000000</span>
00038 <span class="preprocessor">#define MIB_HANDLER_CUSTOM1 0x80000000</span>
00039
00040
<a name="l00047" id="l00047"></a><a class="code" href="structnetsnmp__mib__handler__s.html">00047</a> <span class=
"keyword">typedef</span> <span class="keyword">struct </span><a class="code" href=
"structnetsnmp__mib__handler__s.html">netsnmp_mib_handler_s</a> {
00048 <span class="keywordtype">char</span> *handler_name;
<a name="l00050" id="l00050"></a><a class="code" href="structnetsnmp__mib__handler__s.html#o1">00050</a> <span class=
"keywordtype">void</span> *myvoid;
<a name="l00052" id="l00052"></a><a class="code" href="structnetsnmp__mib__handler__s.html#o2">00052</a> <span class=
"keywordtype">int</span> flags;
00053
00057 int (*access_method) (<span class="keyword">struct </span><a class="code" href=
"structnetsnmp__mib__handler__s.html">netsnmp_mib_handler_s</a> *,
00058 <span class="keyword">struct</span>
00059 <span class="keyword"> </span><a class="code" href=
"structnetsnmp__handler__registration__s.html">netsnmp_handler_registration_s</a> *,
00060 <span class="keyword">struct</span>
00061 <span class="keyword"> </span><a class="code" href=
"structnetsnmp__agent__request__info__s.html">netsnmp_agent_request_info_s</a> *,
00062 <span class="keyword">struct </span><a class="code" href=
"structnetsnmp__request__info__s.html">netsnmp_request_info_s</a> *);
00063
00064 <span class="keyword">struct </span><a class="code" href=
"structnetsnmp__mib__handler__s.html">netsnmp_mib_handler_s</a> *next;
00065 <span class="keyword">struct </span><a class="code" href=
"structnetsnmp__mib__handler__s.html">netsnmp_mib_handler_s</a> *prev;
00066 } <a class="code" href="structnetsnmp__mib__handler__s.html">netsnmp_mib_handler</a>;
00067
00068 <span class="comment">/*</span>
00069 <span class="comment"> * per registration flags</span>
00070 <span class="comment"> */</span>
00071 <span class="preprocessor">#define HANDLER_CAN_GETANDGETNEXT 0x01 </span><span class=
"comment">/* must be able to do both */</span>
00072 <span class="preprocessor">#define HANDLER_CAN_SET 0x02 </span><span class=
"comment">/* implies create, too */</span>
00073 <span class="preprocessor">#define HANDLER_CAN_GETBULK 0x04</span>
00074 <span class="preprocessor">#define HANDLER_CAN_NOT_CREATE 0x08 </span><span class=
"comment">/* auto set if ! CAN_SET */</span>
00075 <span class="preprocessor">#define HANDLER_CAN_BABY_STEP 0x10</span>
00076 <span class="preprocessor">#define HANDLER_CAN_STASH 0x20</span>
00077
00078
00079 <span class="preprocessor">#define HANDLER_CAN_RONLY (HANDLER_CAN_GETANDGETNEXT)</span>
00080 <span class="preprocessor">#define HANDLER_CAN_RWRITE (HANDLER_CAN_GETANDGETNEXT | HANDLER_CAN_SET)</span>
00081 <span class="preprocessor">#define HANDLER_CAN_SET_ONLY (HANDLER_CAN_SET | HANDLER_CAN_NOT_CREATE)</span>
00082 <span class="preprocessor">#define HANDLER_CAN_DEFAULT (HANDLER_CAN_RONLY | HANDLER_CAN_NOT_CREATE)</span>
00083
<a name="l00093" id="l00093"></a><a class="code" href="structnetsnmp__handler__registration__s.html">00093</a> <span class=
"keyword">typedef</span> <span class="keyword">struct </span><a class="code" href=
"structnetsnmp__handler__registration__s.html">netsnmp_handler_registration_s</a> {
00094
<a name="l00096" id="l00096"></a><a class="code" href=
"structnetsnmp__handler__registration__s.html#o0">00096</a> <span class="keywordtype">char</span> *handlerName;
<a name="l00098" id="l00098"></a><a class="code" href=
"structnetsnmp__handler__registration__s.html#o1">00098</a> <span class=
"keywordtype">char</span> *contextName;
00099
<a name="l00103" id="l00103"></a><a class="code" href=
"structnetsnmp__handler__registration__s.html#o2">00103</a> oid *rootoid;
00104 size_t rootoid_len;
00105
<a name="l00109" id="l00109"></a><a class="code" href=
"structnetsnmp__handler__registration__s.html#o4">00109</a> <a class="code" href=
"structnetsnmp__mib__handler__s.html">netsnmp_mib_handler</a> *handler;
00110 <span class="keywordtype">int</span> modes;
00111
<a name="l00115" id="l00115"></a><a class="code" href=
"structnetsnmp__handler__registration__s.html#o6">00115</a> <span class="keywordtype">int</span> priority;
00116 <span class="keywordtype">int</span> range_subid;
00117 oid range_ubound;
00118 <span class="keywordtype">int</span> timeout;
00119 <span class="keywordtype">int</span> global_cacheid;
00120
<a name="l00124" id="l00124"></a><a class="code" href=
"structnetsnmp__handler__registration__s.html#o11">00124</a> <span class=
"keywordtype">void</span> * my_reg_void;
00125
00126 } <a class="code" href="structnetsnmp__handler__registration__s.html">netsnmp_handler_registration</a>;
00127
00128 <span class="comment">/*</span>
00129 <span class="comment"> * function handler definitions </span>
00130 <span class="comment"> */</span>
00131
00132 <span class="keyword">typedef</span> int (Netsnmp_Node_Handler) (<a class="code" href=
"structnetsnmp__mib__handler__s.html">netsnmp_mib_handler</a> *handler,
00134 <a class="code" href="structnetsnmp__handler__registration__s.html">netsnmp_handler_registration</a> *reginfo,
00136 <a class="code" href="structnetsnmp__agent__request__info__s.html">netsnmp_agent_request_info</a> *reqinfo,
00137 <a class="code" href="structnetsnmp__request__info__s.html">netsnmp_request_info</a> *requests);
00138
00139 <span class="keyword">typedef</span> <span class="keyword">struct </span>netsnmp_handler_args_s {
00140 <a class="code" href="structnetsnmp__mib__handler__s.html">netsnmp_mib_handler</a> *handler;
00141 <a class="code" href="structnetsnmp__handler__registration__s.html">netsnmp_handler_registration</a> *reginfo;
00142 <a class="code" href="structnetsnmp__agent__request__info__s.html">netsnmp_agent_request_info</a> *reqinfo;
00143 <a class="code" href="structnetsnmp__request__info__s.html">netsnmp_request_info</a> *requests;
00144 } netsnmp_handler_args;
00145
00146 <span class="keyword">typedef</span> <span class="keyword">struct </span>netsnmp_delegated_cache_s {
00147 <span class="keywordtype">int</span> transaction_id;
00148 <a class="code" href="structnetsnmp__mib__handler__s.html">netsnmp_mib_handler</a> *handler;
00149 <a class="code" href="structnetsnmp__handler__registration__s.html">netsnmp_handler_registration</a> *reginfo;
00150 <a class="code" href="structnetsnmp__agent__request__info__s.html">netsnmp_agent_request_info</a> *reqinfo;
00151 <a class="code" href="structnetsnmp__request__info__s.html">netsnmp_request_info</a> *requests;
00152 <span class="keywordtype">void</span> *localinfo;
00153 } netsnmp_delegated_cache;
00154
00155 <span class="comment">/*</span>
00156 <span class="comment"> * handler API functions </span>
00157 <span class="comment"> */</span>
00158 <span class="keywordtype">void</span> netsnmp_init_handler_conf(<span class="keywordtype">void</span>);
00159 <span class="keywordtype">int</span> <a class="code" href=
"group__handler.html#ga10">netsnmp_register_handler</a>(<a class="code" href=
"structnetsnmp__handler__registration__s.html">netsnmp_handler_registration</a>
00160 *reginfo);
00161 <span class="keywordtype">int</span> <a class="code" href=
"group__handler.html#ga11">netsnmp_unregister_handler</a>(<a class="code" href=
"structnetsnmp__handler__registration__s.html">netsnmp_handler_registration</a>
00162 *reginfo);
00163 <span class="keywordtype">int</span>
00164 <a class="code" href="group__handler.html#ga12">netsnmp_register_handler_nocallback</a>(<a class="code" href=
"structnetsnmp__handler__registration__s.html">netsnmp_handler_registration</a>
00165 *reginfo);
00166 <span class="keywordtype">int</span> <a class="code" href=
"group__handler.html#ga14">netsnmp_inject_handler</a>(<a class="code" href=
"structnetsnmp__handler__registration__s.html">netsnmp_handler_registration</a>
00167 *reginfo,
00168 <a class="code" href=
"structnetsnmp__mib__handler__s.html">netsnmp_mib_handler</a> *handler);
00169 <span class="keywordtype">int</span>
00170 <a class="code" href="group__handler.html#ga13">netsnmp_inject_handler_before</a>(<a class="code" href=
"structnetsnmp__handler__registration__s.html">netsnmp_handler_registration</a> *reginfo,
00171 <a class="code" href=
"structnetsnmp__mib__handler__s.html">netsnmp_mib_handler</a> *handler,
00172 <span class="keyword">const</span> <span class=
"keywordtype">char</span> *before_what);
00173 <a class="code" href="structnetsnmp__mib__handler__s.html">netsnmp_mib_handler</a>
00174 *<a class="code" href="group__handler.html#ga32">netsnmp_find_handler_by_name</a>(<a class="code" href=
"structnetsnmp__handler__registration__s.html">netsnmp_handler_registration</a>
00175 *reginfo, <span class="keyword">const</span> <span class=
"keywordtype">char</span> *name);
00176 <span class="keywordtype">void</span>
00177 *<a class="code" href="group__handler.html#ga33">netsnmp_find_handler_data_by_name</a>(<a class="code" href=
"structnetsnmp__handler__registration__s.html">netsnmp_handler_registration</a>
00178 *reginfo, <span class="keyword">const</span> <span class=
"keywordtype">char</span> *name);
00179 <span class="keywordtype">int</span> netsnmp_call_handlers(<a class="code" href=
"structnetsnmp__handler__registration__s.html">netsnmp_handler_registration</a>
00180 *reginfo,
00181 <a class="code" href=
"structnetsnmp__agent__request__info__s.html">netsnmp_agent_request_info</a>
00182 *reqinfo,
00183 <a class="code" href=
"structnetsnmp__request__info__s.html">netsnmp_request_info</a> *requests);
00184 <span class="keywordtype">int</span> <a class="code" href=
"group__handler.html#ga15">netsnmp_call_handler</a>(<a class="code" href=
"structnetsnmp__mib__handler__s.html">netsnmp_mib_handler</a> *next_handler,
00185 <a class="code" href=
"structnetsnmp__handler__registration__s.html">netsnmp_handler_registration</a>
00186 *reginfo,
00187 <a class="code" href=
"structnetsnmp__agent__request__info__s.html">netsnmp_agent_request_info</a>
00188 *reqinfo,
00189 <a class="code" href=
"structnetsnmp__request__info__s.html">netsnmp_request_info</a> *requests);
00190 <span class="keywordtype">int</span> <a class="code" href=
"group__handler.html#ga17">netsnmp_call_next_handler</a>(<a class="code" href=
"structnetsnmp__mib__handler__s.html">netsnmp_mib_handler</a> *current,
00191 <a class="code" href=
"structnetsnmp__handler__registration__s.html">netsnmp_handler_registration</a>
00192 *reginfo,
00193 <a class="code" href=
"structnetsnmp__agent__request__info__s.html">netsnmp_agent_request_info</a>
00194 *reqinfo,
00195 <a class="code" href=
"structnetsnmp__request__info__s.html">netsnmp_request_info</a>
00196 *requests);
00197 <span class="keywordtype">int</span> <a class="code" href=
"group__handler.html#ga18">netsnmp_call_next_handler_one_request</a>(<a class="code" href=
"structnetsnmp__mib__handler__s.html">netsnmp_mib_handler</a> *current,
00198 <a class="code" href=
"structnetsnmp__handler__registration__s.html">netsnmp_handler_registration</a> *reginfo,
00199 <a class="code" href=
"structnetsnmp__agent__request__info__s.html">netsnmp_agent_request_info</a> *reqinfo,
00200 <a class="code" href=
"structnetsnmp__request__info__s.html">netsnmp_request_info</a> *requests);
00201
00202 <a class="code" href="structnetsnmp__mib__handler__s.html">netsnmp_mib_handler</a> *<a class="code" href=
"group__handler.html#ga7">netsnmp_create_handler</a>(<span class="keyword">const</span> <span class=
"keywordtype">char</span> *name,
00203 Netsnmp_Node_Handler *
00204 handler_access_method);
00205 <a class="code" href="structnetsnmp__handler__registration__s.html">netsnmp_handler_registration</a> *
00206 <a class="code" href="group__handler.html#ga8">netsnmp_handler_registration_create</a>(<span class=
"keyword">const</span> <span class="keywordtype">char</span> *name,
00207 <a class="code" href=
"structnetsnmp__mib__handler__s.html">netsnmp_mib_handler</a> *handler,
00208 oid * reg_oid, size_t reg_oid_len,
00209 <span class="keywordtype">int</span> modes);
00210 <a class="code" href="structnetsnmp__handler__registration__s.html">netsnmp_handler_registration</a> *
00211 netsnmp_create_handler_registration(<span class="keyword">const</span> <span class=
"keywordtype">char</span> *name, Netsnmp_Node_Handler*
00212 handler_access_method, oid *reg_oid,
00213 size_t reg_oid_len, <span class="keywordtype">int</span> modes);
00214
00215 NETSNMP_INLINE netsnmp_delegated_cache
00216 *<a class="code" href="group__handler.html#ga23">netsnmp_create_delegated_cache</a>(<a class="code" href=
"structnetsnmp__mib__handler__s.html">netsnmp_mib_handler</a> *,
00217 <a class="code" href=
"structnetsnmp__handler__registration__s.html">netsnmp_handler_registration</a> *,
00218 <a class="code" href=
"structnetsnmp__agent__request__info__s.html">netsnmp_agent_request_info</a> *,
00219 <a class="code" href=
"structnetsnmp__request__info__s.html">netsnmp_request_info</a> *, <span class="keywordtype">void</span> *);
00220 NETSNMP_INLINE <span class="keywordtype">void</span> <a class="code" href=
"group__handler.html#ga25">netsnmp_free_delegated_cache</a>(netsnmp_delegated_cache
00221 *dcache);
00222 NETSNMP_INLINE netsnmp_delegated_cache
00223 *<a class="code" href="group__handler.html#ga24">netsnmp_handler_check_cache</a>(netsnmp_delegated_cache *dcache);
00224 <span class="keywordtype">void</span> <a class="code" href=
"group__handler.html#ga36">netsnmp_register_handler_by_name</a>(<span class="keyword">const</span> <span class=
"keywordtype">char</span> *,
00225 <a class="code" href=
"structnetsnmp__mib__handler__s.html">netsnmp_mib_handler</a>
00226 *);
00227
00228 <span class="keywordtype">void</span> <a class="code" href=
"group__handler.html#ga37">netsnmp_clear_handler_list</a>(<span class="keywordtype">void</span>);
00229
00230 NETSNMP_INLINE <span class="keywordtype">void</span>
00231 <a class="code" href="group__handler.html#ga27">netsnmp_request_add_list_data</a>(<a class="code" href=
"structnetsnmp__request__info__s.html">netsnmp_request_info</a> *request,
00232 <a class="code" href=
"structnetsnmp__data__list__s.html">netsnmp_data_list</a> *node);
00233
00234 NETSNMP_INLINE <span class="keywordtype">int</span>
00235 <a class="code" href="group__handler.html#ga28">netsnmp_request_remove_list_data</a>(<a class="code" href=
"structnetsnmp__request__info__s.html">netsnmp_request_info</a> *request,
00236 <span class="keyword">const</span> <span class="keywordtype">char</span> *name);
00237
00238 NETSNMP_INLINE <span class="keywordtype">void</span> *<a class="code" href=
"group__handler.html#ga29">netsnmp_request_get_list_data</a>(<a class="code" href=
"structnetsnmp__request__info__s.html">netsnmp_request_info</a>
00239 *request,
00240 <span class="keyword">const</span> <span class=
"keywordtype">char</span> *name);
00241
00242 NETSNMP_INLINE <span class="keywordtype">void</span>
00243 <a class="code" href="group__handler.html#ga30">netsnmp_free_request_data_set</a>(<a class="code" href=
"structnetsnmp__request__info__s.html">netsnmp_request_info</a> *request);
00244
00245 NETSNMP_INLINE <span class="keywordtype">void</span>
00246 <a class="code" href="group__handler.html#ga31">netsnmp_free_request_data_sets</a>(<a class="code" href=
"structnetsnmp__request__info__s.html">netsnmp_request_info</a> *request);
00247
00248 <span class="keywordtype">void</span> <a class="code" href=
"group__handler.html#ga19">netsnmp_handler_free</a>(<a class="code" href=
"structnetsnmp__mib__handler__s.html">netsnmp_mib_handler</a> *);
00249 <a class="code" href="structnetsnmp__mib__handler__s.html">netsnmp_mib_handler</a> *<a class="code" href=
"group__handler.html#ga20">netsnmp_handler_dup</a>(<a class="code" href=
"structnetsnmp__mib__handler__s.html">netsnmp_mib_handler</a> *);
00250 <a class="code" href="structnetsnmp__handler__registration__s.html">netsnmp_handler_registration</a>
00251 *<a class="code" href="group__handler.html#ga22">netsnmp_handler_registration_dup</a>(<a class="code" href=
"structnetsnmp__handler__registration__s.html">netsnmp_handler_registration</a> *);
00252 <span class="keywordtype">void</span>
00253 <a class="code" href="group__handler.html#ga21">netsnmp_handler_registration_free</a>(<a class="code" href=
"structnetsnmp__handler__registration__s.html">netsnmp_handler_registration</a> *);
00254
00255 <span class="preprocessor">#define REQUEST_IS_DELEGATED 1</span>
00256 <span class="preprocessor">#define REQUEST_IS_NOT_DELEGATED 0</span>
00257 <span class="keywordtype">void</span>
00258 <a class="code" href="group__handler.html#ga26">netsnmp_handler_mark_requests_as_delegated</a>(<a class="code"
href="structnetsnmp__request__info__s.html">netsnmp_request_info</a> *,
00259 <span class="keywordtype">int</span>);
00260 <span class="keywordtype">void</span> *netsnmp_handler_get_parent_data(<a class="code" href=
"structnetsnmp__request__info__s.html">netsnmp_request_info</a> *,
00261 <span class="keyword">const</span> <span class=
"keywordtype">char</span> *);
00262
00263 <span class="preprocessor">#ifdef __cplusplus</span>
00264 }
00265 <span class="preprocessor">#endif</span>
00266
00267 <span class="preprocessor">#endif </span><span class="comment">/* AGENT_HANDLER_H */</span>
00268
</pre>
</div>
<hr size="1" />
<address style="align: right;">
<small>Generated on Fri Dec 30 13:47:43 2005 for net-snmp by <a href="http://www.doxygen.org/index.html"><img src=
"doxygen.png" alt="doxygen" align="middle" border="0" /></a> 1.3.9.1</small>
</address>
<!-- CONTENT END -->
<!--#include virtual="/page-bottom.html" -->
See more files for this project here