check__varbind_8c-source.html from net-snmp at Krugle
Show check__varbind_8c-source.html syntax highlighted
<!--#set var="section" value="development" -->
<!--#include virtual="/page-top.html" -->
<!-- CONTENT START -->
<!-- Generated by Doxygen 1.3.9.1 -->
<div class="qindex">
<a class="qindex" href="index.html">Main 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_000005.html">snmplib</a>
</div>
<h1>check_varbind.c</h1>
<div class="fragment">
<pre class="fragment">
00001 <span class="preprocessor">#include <net-snmp/net-snmp-config.h></span>
00002
00003 <span class="preprocessor">#include <net-snmp/net-snmp-includes.h></span>
00004
00005 <span class="preprocessor">#include <net-snmp/library/check_varbind.h></span>
00006
00007 NETSNMP_INLINE <span class="keywordtype">int</span>
00008 netsnmp_check_vb_type(<span class="keyword">const</span> <a class="code" href=
"structvariable__list.html">netsnmp_variable_list</a> *var, <span class="keywordtype">int</span> type )
00009 {
00010 <span class="keyword">register</span> <span class="keywordtype">int</span> rc = SNMP_ERR_NOERROR;
00011
00012 <span class="keywordflow">if</span> (NULL == var)
00013 <span class="keywordflow">return</span> SNMP_ERR_GENERR;
00014
00015 <span class="keywordflow">if</span> (var-><a class="code" href="structvariable__list.html#o3">type</a> != type) {
00016 rc = SNMP_ERR_WRONGTYPE;
00017 }
00018
00019 <span class="keywordflow">return</span> rc;
00020 }
00021
00022 NETSNMP_INLINE <span class="keywordtype">int</span>
00023 netsnmp_check_vb_size(<span class="keyword">const</span> <a class="code" href=
"structvariable__list.html">netsnmp_variable_list</a> *var, size_t size )
00024 {
00025 <span class="keyword">register</span> <span class="keywordtype">int</span> rc = SNMP_ERR_NOERROR;
00026
00027 <span class="keywordflow">if</span> (NULL == var)
00028 <span class="keywordflow">return</span> SNMP_ERR_GENERR;
00029
00030 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (var-><a class="code" href=
"structvariable__list.html#o5">val_len</a> != size) {
00031 rc = SNMP_ERR_WRONGLENGTH;
00032 }
00033
00034 <span class="keywordflow">return</span> rc;
00035 }
00036
00037 NETSNMP_INLINE <span class="keywordtype">int</span>
00038 netsnmp_check_vb_max_size(<span class="keyword">const</span> <a class="code" href=
"structvariable__list.html">netsnmp_variable_list</a> *var, size_t size )
00039 {
00040 <span class="keyword">register</span> <span class="keywordtype">int</span> rc = SNMP_ERR_NOERROR;
00041
00042 <span class="keywordflow">if</span> (NULL == var)
00043 <span class="keywordflow">return</span> SNMP_ERR_GENERR;
00044
00045 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (var-><a class="code" href=
"structvariable__list.html#o5">val_len</a> > size) {
00046 rc = SNMP_ERR_WRONGLENGTH;
00047 }
00048
00049 <span class="keywordflow">return</span> rc;
00050 }
00051
00052 NETSNMP_INLINE <span class="keywordtype">int</span>
00053 netsnmp_check_vb_range(<span class="keyword">const</span> <a class="code" href=
"structvariable__list.html">netsnmp_variable_list</a> *var,
00054 size_t low, size_t high )
00055 {
00056 <span class="keyword">register</span> <span class="keywordtype">int</span> rc = SNMP_ERR_NOERROR;
00057
00058 <span class="keywordflow">if</span> (NULL == var)
00059 <span class="keywordflow">return</span> SNMP_ERR_GENERR;
00060
00061 <span class="keywordflow">if</span> ((*var-><a class="code" href=
"structvariable__list.html#o4">val</a>.integer < low) || (*var-><a class="code" href=
"structvariable__list.html#o4">val</a>.integer > high)) {
00062 rc = SNMP_ERR_WRONGVALUE;
00063 }
00064
00065 <span class="keywordflow">return</span> rc;
00066 }
00067
00068 NETSNMP_INLINE <span class="keywordtype">int</span>
00069 netsnmp_check_vb_size_range(<span class="keyword">const</span> <a class="code" href=
"structvariable__list.html">netsnmp_variable_list</a> *var,
00070 size_t low, size_t high )
00071 {
00072 <span class="keyword">register</span> <span class="keywordtype">int</span> rc = SNMP_ERR_NOERROR;
00073
00074 <span class="keywordflow">if</span> (NULL == var)
00075 <span class="keywordflow">return</span> SNMP_ERR_GENERR;
00076
00077 <span class="keywordflow">if</span> ((var-><a class="code" href=
"structvariable__list.html#o5">val_len</a> < low) || (var-><a class="code" href=
"structvariable__list.html#o5">val_len</a> > high)) {
00078 rc = SNMP_ERR_WRONGLENGTH;
00079 }
00080
00081 <span class="keywordflow">return</span> rc;
00082 }
00083
00084 NETSNMP_INLINE <span class="keywordtype">int</span>
00085 netsnmp_check_vb_type_and_size(<span class="keyword">const</span> <a class="code" href=
"structvariable__list.html">netsnmp_variable_list</a> *var,
00086 <span class="keywordtype">int</span> type, size_t size)
00087 {
00088 <span class="keyword">register</span> <span class="keywordtype">int</span> rc = SNMP_ERR_NOERROR;
00089
00090 <span class="keywordflow">if</span> (NULL == var)
00091 <span class="keywordflow">return</span> SNMP_ERR_GENERR;
00092
00093 <span class="keywordflow">if</span> ((rc = netsnmp_check_vb_type(var,type)))
00094 ;
00095 <span class="keywordflow">else</span>
00096 rc = netsnmp_check_vb_size(var, size);
00097
00098 <span class="keywordflow">return</span> rc;
00099 }
00100
00101 NETSNMP_INLINE <span class="keywordtype">int</span>
00102 netsnmp_check_vb_type_and_max_size(<span class="keyword">const</span> <a class="code" href=
"structvariable__list.html">netsnmp_variable_list</a> *var,
00103 <span class="keywordtype">int</span> type, size_t size)
00104 {
00105 <span class="keyword">register</span> <span class="keywordtype">int</span> rc = SNMP_ERR_NOERROR;
00106
00107 <span class="keywordflow">if</span> (NULL == var)
00108 <span class="keywordflow">return</span> SNMP_ERR_GENERR;
00109
00110 <span class="keywordflow">if</span> ((rc = netsnmp_check_vb_type(var,type)))
00111 ;
00112 <span class="keywordflow">else</span>
00113 rc = netsnmp_check_vb_max_size(var, size);
00114
00115 <span class="keywordflow">return</span> rc;
00116 }
00117
00118 NETSNMP_INLINE <span class="keywordtype">int</span>
00119 netsnmp_check_vb_oid(<span class="keyword">const</span> <a class="code" href=
"structvariable__list.html">netsnmp_variable_list</a> *var)
00120 {
00121 <span class="keyword">register</span> <span class="keywordtype">int</span> rc = SNMP_ERR_NOERROR;
00122
00123 <span class="keywordflow">if</span> (NULL == var)
00124 <span class="keywordflow">return</span> SNMP_ERR_GENERR;
00125
00126 <span class="keywordflow">if</span> ((rc = netsnmp_check_vb_type(var,ASN_OBJECT_ID)))
00127 ;
00128 <span class="keywordflow">else</span>
00129 rc = netsnmp_check_vb_max_size(var, MAX_OID_LEN*<span class="keyword">sizeof</span>(oid));
00130
00131 <span class="keywordflow">return</span> rc;
00132 }
00133
00134 NETSNMP_INLINE <span class="keywordtype">int</span>
00135 netsnmp_check_vb_int(<span class="keyword">const</span> <a class="code" href=
"structvariable__list.html">netsnmp_variable_list</a> *var)
00136 {
00137 <span class="keywordflow">if</span> (NULL == var)
00138 <span class="keywordflow">return</span> SNMP_ERR_GENERR;
00139
00140 <span class="keywordflow">return</span> netsnmp_check_vb_type_and_size(var, ASN_INTEGER, <span class=
"keyword">sizeof</span>(<span class="keywordtype">long</span>));
00141 }
00142
00143 NETSNMP_INLINE <span class="keywordtype">int</span>
00144 netsnmp_check_vb_uint(<span class="keyword">const</span> <a class="code" href=
"structvariable__list.html">netsnmp_variable_list</a> *var)
00145 {
00146 <span class="keywordflow">if</span> (NULL == var)
00147 <span class="keywordflow">return</span> SNMP_ERR_GENERR;
00148
00149 <span class="keywordflow">return</span> netsnmp_check_vb_type_and_size(var, ASN_UNSIGNED, <span class=
"keyword">sizeof</span>(<span class="keywordtype">long</span>));
00150 }
00151
00152 NETSNMP_INLINE <span class="keywordtype">int</span>
00153 netsnmp_check_vb_int_range(<span class="keyword">const</span> <a class="code" href=
"structvariable__list.html">netsnmp_variable_list</a> *var, <span class="keywordtype">int</span> low, <span class=
"keywordtype">int</span> high)
00154 {
00155 <span class="keyword">register</span> <span class="keywordtype">int</span> rc = SNMP_ERR_NOERROR;
00156
00157 <span class="keywordflow">if</span> (NULL == var)
00158 <span class="keywordflow">return</span> SNMP_ERR_GENERR;
00159
00160 <span class="keywordflow">if</span> ((rc = netsnmp_check_vb_type_and_size(var, ASN_INTEGER, <span class=
"keyword">sizeof</span>(<span class="keywordtype">long</span>))))
00161 <span class="keywordflow">return</span> rc;
00162
00163 <span class="keywordflow">if</span> ((*var-><a class="code" href=
"structvariable__list.html#o4">val</a>.integer < low) || (*var-><a class="code" href=
"structvariable__list.html#o4">val</a>.integer > high)) {
00164 rc = SNMP_ERR_WRONGVALUE;
00165 }
00166
00167 <span class="keywordflow">return</span> rc;
00168 }
00169
00170 <span class="keywordtype">int</span>
00171 netsnmp_check_vb_truthvalue(<span class="keyword">const</span> <a class="code" href=
"structvariable__list.html">netsnmp_variable_list</a> *var)
00172 {
00173 <span class="keyword">register</span> <span class="keywordtype">int</span> rc = SNMP_ERR_NOERROR;
00174
00175 <span class="keywordflow">if</span> (NULL == var)
00176 <span class="keywordflow">return</span> SNMP_ERR_GENERR;
00177
00178 <span class="keywordflow">if</span> ((rc = netsnmp_check_vb_type_and_size(var, ASN_INTEGER, <span class=
"keyword">sizeof</span>(<span class="keywordtype">int</span>))))
00179 <span class="keywordflow">return</span> rc;
00180
00181 <span class="keywordflow">return</span> netsnmp_check_vb_int_range(var, 1, 2);
00182 }
00183
00184 NETSNMP_INLINE <span class="keywordtype">int</span>
00185 netsnmp_check_vb_rowstatus_value(<span class="keyword">const</span> <a class="code" href=
"structvariable__list.html">netsnmp_variable_list</a> *var)
00186 {
00187 <span class="keyword">register</span> <span class="keywordtype">int</span> rc = SNMP_ERR_NOERROR;
00188
00189 <span class="keywordflow">if</span> (NULL == var)
00190 <span class="keywordflow">return</span> SNMP_ERR_GENERR;
00191
00192 <span class="keywordflow">if</span> ((rc = netsnmp_check_vb_type_and_size(var, ASN_INTEGER, <span class=
"keyword">sizeof</span>(<span class="keywordtype">int</span>))))
00193 <span class="keywordflow">return</span> rc;
00194
00195 <span class="keywordflow">if</span> (*var-><a class="code" href=
"structvariable__list.html#o4">val</a>.integer == RS_NOTREADY)
00196 <span class="keywordflow">return</span> SNMP_ERR_WRONGVALUE;
00197
00198 <span class="keywordflow">return</span> netsnmp_check_vb_int_range(var, SNMP_ROW_NONEXISTENT,
00199 SNMP_ROW_DESTROY);
00200 }
00201
00202 <span class="keywordtype">int</span>
00203 netsnmp_check_vb_rowstatus(<span class="keyword">const</span> <a class="code" href=
"structvariable__list.html">netsnmp_variable_list</a> *var, <span class="keywordtype">int</span> old_value)
00204 {
00205 <span class="keyword">register</span> <span class="keywordtype">int</span> rc = SNMP_ERR_NOERROR;
00206
00207 <span class="keywordflow">if</span> (NULL == var)
00208 <span class="keywordflow">return</span> SNMP_ERR_GENERR;
00209
00210 <span class="keywordflow">if</span> ((rc = netsnmp_check_vb_rowstatus_value(var)))
00211 <span class="keywordflow">return</span> rc;
00212
00213 <span class="keywordflow">return</span> check_rowstatus_transition(old_value, *var-><a class="code" href=
"structvariable__list.html#o4">val</a>.integer);
00214 }
00215
00216 <span class="keywordtype">int</span>
00217 netsnmp_check_vb_storagetype(<span class="keyword">const</span> <a class="code" href=
"structvariable__list.html">netsnmp_variable_list</a> *var, <span class="keywordtype">int</span> old_value)
00218 {
00219 <span class="keywordtype">int</span> rc = SNMP_ERR_NOERROR;
00220
00221 <span class="keywordflow">if</span> (NULL == var)
00222 <span class="keywordflow">return</span> SNMP_ERR_GENERR;
00223
00224 <span class="keywordflow">if</span> ((rc = netsnmp_check_vb_type_and_size(var, ASN_INTEGER, <span class=
"keyword">sizeof</span>(<span class="keywordtype">int</span>))))
00225 <span class="keywordflow">return</span> rc;
00226
00227 <span class="keywordflow">if</span> ((rc = netsnmp_check_vb_int_range(var, SNMP_STORAGE_NONE,
00228 SNMP_STORAGE_READONLY)))
00229 <span class="keywordflow">return</span> rc;
00230
00231 <span class="keywordflow">return</span> check_storage_transition(old_value, *var-><a class="code" href=
"structvariable__list.html#o4">val</a>.integer);
00232 }
</pre>
</div>
<hr size="1" />
<address style="align: right;">
<small>Generated on Fri Dec 30 13:47:44 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