| Current File : //usr/share/doc/net-snmp/html/group__util.html |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>net-snmp: Memory Utility Routines</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">net-snmp
 <span id="projectnumber">5.4.1</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- Generated by Doxygen 1.7.6.1 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="pages.html"><span>Related Pages</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Data Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li><a href="examples.html"><span>Examples</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#define-members">Defines</a> |
<a href="#typedef-members">Typedefs</a> |
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">Memory Utility Routines</div> </div>
<div class="ingroups"><a class="el" href="group__library.html">The Net-SNMP library</a></div></div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga688c3aa414ca0df35b96ee5887c96a6f"></a><!-- doxytag: member="util::SNMP_MAXPATH" ref="ga688c3aa414ca0df35b96ee5887c96a6f" args="" -->
#define </td><td class="memItemRight" valign="bottom"><b>SNMP_MAXPATH</b>   1024 /* Should be safe enough */</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gadd4a3c52fccbeb0c1e59e526410359af"></a><!-- doxytag: member="util::SNMP_MAXBUF" ref="gadd4a3c52fccbeb0c1e59e526410359af" args="" -->
#define </td><td class="memItemRight" valign="bottom"><b>SNMP_MAXBUF</b>   (1024 * 4)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2ec66fd78ae497a04fccbbca1d83db72"></a><!-- doxytag: member="util::SNMP_MAXBUF_MEDIUM" ref="ga2ec66fd78ae497a04fccbbca1d83db72" args="" -->
#define </td><td class="memItemRight" valign="bottom"><b>SNMP_MAXBUF_MEDIUM</b>   1024</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga9c464d6073f6e6363a790b73201032bd"></a><!-- doxytag: member="util::SNMP_MAXBUF_SMALL" ref="ga9c464d6073f6e6363a790b73201032bd" args="" -->
#define </td><td class="memItemRight" valign="bottom"><b>SNMP_MAXBUF_SMALL</b>   512</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga15444598872922f2904b3eae9122ef4b"></a><!-- doxytag: member="util::SNMP_MAXBUF_MESSAGE" ref="ga15444598872922f2904b3eae9122ef4b" args="" -->
#define </td><td class="memItemRight" valign="bottom"><b>SNMP_MAXBUF_MESSAGE</b>   1500</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae7ee3a2dedea11458fb7e7bd3eb0c870"></a><!-- doxytag: member="util::SNMP_MAXOID" ref="gae7ee3a2dedea11458fb7e7bd3eb0c870" args="" -->
#define </td><td class="memItemRight" valign="bottom"><b>SNMP_MAXOID</b>   64</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2f677cec78aa9fc04c649c1286d30b39"></a><!-- doxytag: member="util::SNMP_MAX_CMDLINE_OIDS" ref="ga2f677cec78aa9fc04c649c1286d30b39" args="" -->
#define </td><td class="memItemRight" valign="bottom"><b>SNMP_MAX_CMDLINE_OIDS</b>   128</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga01fdf844512e930bb3ecddac4fe56c6e"></a><!-- doxytag: member="util::SNMP_FILEMODE_CLOSED" ref="ga01fdf844512e930bb3ecddac4fe56c6e" args="" -->
#define </td><td class="memItemRight" valign="bottom"><b>SNMP_FILEMODE_CLOSED</b>   0600</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga3ba9dd1e300d94b4bba1f76f00df297f"></a><!-- doxytag: member="util::SNMP_FILEMODE_OPEN" ref="ga3ba9dd1e300d94b4bba1f76f00df297f" args="" -->
#define </td><td class="memItemRight" valign="bottom"><b>SNMP_FILEMODE_OPEN</b>   0644</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa04cfd9a988babfbfbc6bd909ed883be"></a><!-- doxytag: member="util::BYTESIZE" ref="gaa04cfd9a988babfbfbc6bd909ed883be" args="(bitsize)" -->
#define </td><td class="memItemRight" valign="bottom"><b>BYTESIZE</b>(bitsize)   ((bitsize + 7) >> 3)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae0349e25aed55824890bb7bd2fa6af3e"></a><!-- doxytag: member="util::ROUNDUP8" ref="gae0349e25aed55824890bb7bd2fa6af3e" args="(x)" -->
#define </td><td class="memItemRight" valign="bottom"><b>ROUNDUP8</b>(x)   ( ( (x+7) >> 3 ) * 8 )</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga9ee6d897f46cceb17af49d7ff9325e24"></a><!-- doxytag: member="util::SNMP_STRORNULL" ref="ga9ee6d897f46cceb17af49d7ff9325e24" args="(x)" -->
#define </td><td class="memItemRight" valign="bottom"><b>SNMP_STRORNULL</b>(x)   ( x ? x : "(null)")</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga951e93edb6f0ea941e26155e3f8912a6">SNMP_FREE</a>(s)   do { if (s) { free((void *)s); s=NULL; } } while(0)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Frees a pointer only if it is !NULL and sets its value to NULL. <a href="#ga951e93edb6f0ea941e26155e3f8912a6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga15e5a68e6d21430ddd4312fec64e5027">SNMP_SWIPE_MEM</a>(n, s)   do { if (n) free((void *)n); n = s; s=NULL; } while(0)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Frees pointer n only if it is !NULL, sets n to s and sets s to NULL. <a href="#ga15e5a68e6d21430ddd4312fec64e5027"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga6356941968481380ea6f4a646df4aaf9">SNMP_MALLOC_STRUCT</a>(s)   (struct s *) calloc(1, sizeof(struct s))</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Mallocs memory of sizeof(struct s), zeros it and returns a pointer to it. <a href="#ga6356941968481380ea6f4a646df4aaf9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga9cd013bb193de5048149afeb9d94e424">SNMP_MALLOC_TYPEDEF</a>(td)   (td *) calloc(1, sizeof(td))</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Mallocs memory of sizeof(t), zeros it and returns a pointer to it. <a href="#ga9cd013bb193de5048149afeb9d94e424"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga190280d08c828c153ec2755b9c263227">SNMP_ZERO</a>(s, l)   do { if (s) memset(s, 0, l); } while(0)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Zeros l bytes of memory starting at s. <a href="#ga190280d08c828c153ec2755b9c263227"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab54417c7c018570043920af66ba7457f"></a><!-- doxytag: member="util::TOUPPER" ref="gab54417c7c018570043920af66ba7457f" args="(c)" -->
#define </td><td class="memItemRight" valign="bottom"><b>TOUPPER</b>(c)   (c >= 'a' && c <= 'z' ? c - ('a' - 'A') : c)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad4771ad2e5dd6a87c83ecf879b7985de"></a><!-- doxytag: member="util::TOLOWER" ref="gad4771ad2e5dd6a87c83ecf879b7985de" args="(c)" -->
#define </td><td class="memItemRight" valign="bottom"><b>TOLOWER</b>(c)   (c >= 'A' && c <= 'Z' ? c + ('a' - 'A') : c)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga10334939731a211462809df2ec1ae597"></a><!-- doxytag: member="util::HEX2VAL" ref="ga10334939731a211462809df2ec1ae597" args="(s)" -->
#define </td><td class="memItemRight" valign="bottom"><b>HEX2VAL</b>(s)   ((isalpha(s) ? (TOLOWER(s)-'a'+10) : (TOLOWER(s)-'0')) & 0xf)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga7e6e411a3c5e530ed96926a6801e3c20"></a><!-- doxytag: member="util::VAL2HEX" ref="ga7e6e411a3c5e530ed96926a6801e3c20" args="(s)" -->
#define </td><td class="memItemRight" valign="bottom"><b>VAL2HEX</b>(s)   ( (s) + (((s) >= 10) ? ('a'-10) : '0') )</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#gaa70d7b83d1001df95cf64280e9545564">SNMP_MAX</a>(a, b)   ((a) > (b) ? (a) : (b))</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Computers the maximum of a and b. <a href="#gaa70d7b83d1001df95cf64280e9545564"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#gad1976dec11cfd62abaa4ecedad948f18">SNMP_MIN</a>(a, b)   ((a) > (b) ? (b) : (a))</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Computers the minimum of a and b. <a href="#gad1976dec11cfd62abaa4ecedad948f18"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa93f0eb578d23995850d61f7d61c55c1"></a><!-- doxytag: member="util::FALSE" ref="gaa93f0eb578d23995850d61f7d61c55c1" args="" -->
#define </td><td class="memItemRight" valign="bottom"><b>FALSE</b>   0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa8cecfc5c5c054d2875c03e77b7be15d"></a><!-- doxytag: member="util::TRUE" ref="gaa8cecfc5c5c054d2875c03e77b7be15d" args="" -->
#define </td><td class="memItemRight" valign="bottom"><b>TRUE</b>   1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><b>QUITFUN</b>(e, l)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><b>DIFFTIMEVAL</b>(now, then, diff)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae96b45b99bccd0eb7ed9e9766dbe00c9"></a><!-- doxytag: member="util::USM_LENGTH_OID_TRANSFORM" ref="gae96b45b99bccd0eb7ed9e9766dbe00c9" args="" -->
#define </td><td class="memItemRight" valign="bottom"><b>USM_LENGTH_OID_TRANSFORM</b>   10</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><b>ISTRANSFORM</b>(ttype, toid)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga72aa0161c1a423e4e95bfd8069bc91b4"></a><!-- doxytag: member="util::ENGINETIME_MAX" ref="ga72aa0161c1a423e4e95bfd8069bc91b4" args="" -->
#define </td><td class="memItemRight" valign="bottom"><b>ENGINETIME_MAX</b>   2147483647 /* ((2^31)-1) */</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga476dd2e72571d762f3a6c6831735675e"></a><!-- doxytag: member="util::ENGINEBOOT_MAX" ref="ga476dd2e72571d762f3a6c6831735675e" args="" -->
#define </td><td class="memItemRight" valign="bottom"><b>ENGINEBOOT_MAX</b>   2147483647 /* ((2^31)-1) */</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab133b4957931586fabc6ea31b2b76b6d"></a><!-- doxytag: member="util::snmp_cstrcat" ref="gab133b4957931586fabc6ea31b2b76b6d" args="(b, l, o, a, s)" -->
#define </td><td class="memItemRight" valign="bottom"><b>snmp_cstrcat</b>(b, l, o, a, s)   snmp_strcat(b,l,o,a,(const u_char *)s)</td></tr>
<tr><td colspan="2"><h2><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf7a2cb94c76e0414a050651bba3a7c89"></a><!-- doxytag: member="util::marker_t" ref="gaf7a2cb94c76e0414a050651bba3a7c89" args="" -->
typedef void * </td><td class="memItemRight" valign="bottom"><b>marker_t</b></td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga7b42d706225a788adcfeaad9b24717de">snmp_realloc</a> (u_char **buf, size_t *buf_len)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">This function increase the size of the buffer pointed at by *buf, which is initially of size *buf_len. <a href="#ga7b42d706225a788adcfeaad9b24717de"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga26a103aafde4d6dcf72c8e30c7d05bd9">free_zero</a> (void *buf, size_t size)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">zeros memory before freeing it. <a href="#ga26a103aafde4d6dcf72c8e30c7d05bd9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">u_char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga76b7f8b21c44e2f8b274a0db8b57d5a1">malloc_random</a> (size_t *size)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns pointer to allocaed & set buffer on success, size contains number of random bytes filled. <a href="#ga76b7f8b21c44e2f8b274a0db8b57d5a1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf8c38f67fb20fad45695c2b9bca249e5"></a><!-- doxytag: member="util::malloc_zero" ref="gaf8c38f67fb20fad45695c2b9bca249e5" args="(size_t size)" -->
u_char * </td><td class="memItemRight" valign="bottom"><b>malloc_zero</b> (size_t size)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga623784b8aac0469fcd84e24ccdeda0bd">memdup</a> (u_char **to, const u_char *from, size_t size)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Duplicates a memory block. <a href="#ga623784b8aac0469fcd84e24ccdeda0bd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">u_int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#gafb1770dd180ccdd29dafc90cf50d3204">binary_to_hex</a> (const u_char *input, size_t len, char **output)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">converts binary to hexidecimal <a href="#gafb1770dd180ccdd29dafc90cf50d3204"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga8c1a230e987560600de9f81e55480c0a">netsnmp_hex_to_binary</a> (u_char **buf, size_t *buf_len, size_t *offset, int allow_realloc, const char *hex, const char *delim)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">convert an ASCII hex string (with specified delimiters) to binary <a href="#ga8c1a230e987560600de9f81e55480c0a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga1a102bbccc7a51e7f98b0c1da33497db">snmp_hex_to_binary</a> (u_char **buf, size_t *buf_len, size_t *offset, int allow_realloc, const char *hex)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">convert an ASCII hex string to binary <a href="#ga1a102bbccc7a51e7f98b0c1da33497db"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#gafbe460eb2f249c0d347ab38d94a802ae">hex_to_binary2</a> (const u_char *input, size_t len, char **output)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">hex_to_binary2 <a href="#gafbe460eb2f249c0d347ab38d94a802ae"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga96568575d5eeaff613077163cf156856"></a><!-- doxytag: member="util::snmp_decimal_to_binary" ref="ga96568575d5eeaff613077163cf156856" args="(u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const char *decimal)" -->
int </td><td class="memItemRight" valign="bottom"><b>snmp_decimal_to_binary</b> (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const char *decimal)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga23468abcec7955847df399f184ca8fae"></a><!-- doxytag: member="util::snmp_strcat" ref="ga23468abcec7955847df399f184ca8fae" args="(u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const u_char *s)" -->
int </td><td class="memItemRight" valign="bottom"><b>snmp_strcat</b> (u_char **buf, size_t *buf_len, size_t *out_len, int allow_realloc, const u_char *s)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga06867ff53bb86b745f23c52aa5e78829">netsnmp_strdup_and_null</a> (const u_char *from, size_t from_len)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">copies a (possible) unterminated string of a given length into a new buffer and null terminates it as well (new buffer MAY be one byte longer to account for this <a href="#ga06867ff53bb86b745f23c52aa5e78829"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga19ec3048261c57f353c4071f37da732b"></a><!-- doxytag: member="util::dump_chunk" ref="ga19ec3048261c57f353c4071f37da732b" args="(const char *debugtoken, const char *title, const u_char *buf, int size)" -->
void </td><td class="memItemRight" valign="bottom"><b>dump_chunk</b> (const char *debugtoken, const char *title, const u_char *buf, int size)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaec261f3c0ced150c01f5ea49a3d9b0bf"></a><!-- doxytag: member="util::dump_snmpEngineID" ref="gaec261f3c0ced150c01f5ea49a3d9b0bf" args="(const u_char *buf, size_t *buflen)" -->
char * </td><td class="memItemRight" valign="bottom"><b>dump_snmpEngineID</b> (const u_char *buf, size_t *buflen)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">marker_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#gadd8427286d982acba71489f0a3012dfb">atime_newMarker</a> (void)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">create a new time marker. <a href="#gadd8427286d982acba71489f0a3012dfb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#gaac74a9b90a9483019e8872d0c923567c">atime_setMarker</a> (marker_t pm)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">set a time marker. <a href="#gaac74a9b90a9483019e8872d0c923567c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">long </td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#gaee67c956c1fcd842e739e2a8e9f57365">atime_diff</a> (marker_t first, marker_t second)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the difference (in msec) between the two markers. <a href="#gaee67c956c1fcd842e739e2a8e9f57365"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">u_long </td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga1d44372c028e3c38de4161c52c226948">uatime_diff</a> (marker_t first, marker_t second)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the difference (in u_long msec) between the two markers. <a href="#ga1d44372c028e3c38de4161c52c226948"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">u_long </td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga96b8aa8b0c5556f923dcfe9b56443606">uatime_hdiff</a> (marker_t first, marker_t second)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the difference (in u_long 1/100th secs) between the two markers (functionally this is what sysUpTime needs) <a href="#ga96b8aa8b0c5556f923dcfe9b56443606"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga43a00cd4f3496eb42fb99285a2da8481">atime_ready</a> (marker_t pm, int deltaT)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Test: Has (marked time plus delta) exceeded current time (in msec) ? Returns 0 if test fails or cannot be tested (no marker). <a href="#ga43a00cd4f3496eb42fb99285a2da8481"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga15b21d7af289044a10e22b6111f43523">uatime_ready</a> (marker_t pm, unsigned int deltaT)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Test: Has (marked time plus delta) exceeded current time (in msec) ? Returns 0 if test fails or cannot be tested (no marker). <a href="#ga15b21d7af289044a10e22b6111f43523"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#gad8f70e6754e69772a113c07f8607d5eb">marker_tticks</a> (marker_t pm)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the number of timeTicks since the given marker. <a href="#gad8f70e6754e69772a113c07f8607d5eb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga75860e37dee879aaf49c34ea1b0a099c"></a><!-- doxytag: member="util::timeval_tticks" ref="ga75860e37dee879aaf49c34ea1b0a099c" args="(struct timeval *tv)" -->
int </td><td class="memItemRight" valign="bottom"><b>timeval_tticks</b> (struct timeval *tv)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__util.html#ga1816d1ce1e701fcbce27b20159433313">netsnmp_getenv</a> (const char *name)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Non Windows: Returns a pointer to the desired environment variable or NULL if the environment variable does not exist. <a href="#ga1816d1ce1e701fcbce27b20159433313"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga894f095eacb20a9a848d60df4c6f6436"></a><!-- doxytag: member="util::netsnmp_addrstr_hton" ref="ga894f095eacb20a9a848d60df4c6f6436" args="(char *ptr, size_t len)" -->
int </td><td class="memItemRight" valign="bottom"><b>netsnmp_addrstr_hton</b> (char *ptr, size_t len)</td></tr>
</table>
<hr/><h2>Define Documentation</h2>
<a class="anchor" id="gadf702d784ab85e02492b7aa45439b466"></a><!-- doxytag: member="tools.h::DIFFTIMEVAL" ref="gadf702d784ab85e02492b7aa45439b466" args="(now, then, diff)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define DIFFTIMEVAL</td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname">now, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname">then, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname">diff </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">{ \
now.tv_sec--; \
now.tv_usec += 1000000L; \
diff.tv_sec = now.tv_sec - then.tv_sec; \
diff.tv_usec = now.tv_usec - then.tv_usec; \
if (diff.tv_usec > 1000000L){ \
diff.tv_usec -= 1000000L; \
diff.tv_sec++; \
} \
}
</pre></div>
<p>Definition at line <a class="el" href="tools_8h_source.html#l00120">120</a> of file <a class="el" href="tools_8h_source.html">tools.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga683ed1e9aa299b460d28c2ba85dea2ca"></a><!-- doxytag: member="tools.h::ISTRANSFORM" ref="ga683ed1e9aa299b460d28c2ba85dea2ca" args="(ttype, toid)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define ISTRANSFORM</td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname">ttype, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname">toid </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">!<a class="code" href="group__library.html#gab5b48a42c19a801547e025ed40b4561e" title="lexicographical compare two object identifiers.">snmp_oid_compare</a>(ttype, USM_LENGTH_OID_TRANSFORM, \
usm ## toid ## Protocol, USM_LENGTH_OID_TRANSFORM)
</pre></div>
<p>Definition at line <a class="el" href="tools_8h_source.html#l00139">139</a> of file <a class="el" href="tools_8h_source.html">tools.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga8f91aec5dcb8867a1ea8d9a66e5199f2"></a><!-- doxytag: member="tools.h::QUITFUN" ref="ga8f91aec5dcb8867a1ea8d9a66e5199f2" args="(e, l)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define QUITFUN</td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname">e, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname">l </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">if</span> ( (e) != SNMPERR_SUCCESS) { \
rval = SNMPERR_GENERR; \
goto l ; \
}
</pre></div>
<p>Definition at line <a class="el" href="tools_8h_source.html#l00107">107</a> of file <a class="el" href="tools_8h_source.html">tools.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga951e93edb6f0ea941e26155e3f8912a6"></a><!-- doxytag: member="tools.h::SNMP_FREE" ref="ga951e93edb6f0ea941e26155e3f8912a6" args="(s)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define <a class="el" href="group__util.html#ga951e93edb6f0ea941e26155e3f8912a6">SNMP_FREE</a></td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname">s</td><td>)</td>
<td>   do { if (s) { free((void *)s); s=NULL; } } while(0)</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Frees a pointer only if it is !NULL and sets its value to NULL. </p>
<p>Definition at line <a class="el" href="tools_8h_source.html#l00053">53</a> of file <a class="el" href="tools_8h_source.html">tools.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga6356941968481380ea6f4a646df4aaf9"></a><!-- doxytag: member="tools.h::SNMP_MALLOC_STRUCT" ref="ga6356941968481380ea6f4a646df4aaf9" args="(s)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define <a class="el" href="group__util.html#ga6356941968481380ea6f4a646df4aaf9">SNMP_MALLOC_STRUCT</a></td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname">s</td><td>)</td>
<td>   (struct s *) calloc(1, sizeof(struct s))</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Mallocs memory of sizeof(struct s), zeros it and returns a pointer to it. </p>
<p>Definition at line <a class="el" href="tools_8h_source.html#l00064">64</a> of file <a class="el" href="tools_8h_source.html">tools.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga9cd013bb193de5048149afeb9d94e424"></a><!-- doxytag: member="tools.h::SNMP_MALLOC_TYPEDEF" ref="ga9cd013bb193de5048149afeb9d94e424" args="(td)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define <a class="el" href="group__util.html#ga9cd013bb193de5048149afeb9d94e424">SNMP_MALLOC_TYPEDEF</a></td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname">td</td><td>)</td>
<td>   (td *) calloc(1, sizeof(td))</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Mallocs memory of sizeof(t), zeros it and returns a pointer to it. </p>
<p>Definition at line <a class="el" href="tools_8h_source.html#l00068">68</a> of file <a class="el" href="tools_8h_source.html">tools.h</a>.</p>
</div>
</div>
<a class="anchor" id="gaa70d7b83d1001df95cf64280e9545564"></a><!-- doxytag: member="tools.h::SNMP_MAX" ref="gaa70d7b83d1001df95cf64280e9545564" args="(a, b)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define <a class="el" href="group__util.html#gaa70d7b83d1001df95cf64280e9545564">SNMP_MAX</a></td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname">a, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname">b </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td>   ((a) > (b) ? (a) : (b))</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Computers the maximum of a and b. </p>
<p>Definition at line <a class="el" href="tools_8h_source.html#l00085">85</a> of file <a class="el" href="tools_8h_source.html">tools.h</a>.</p>
</div>
</div>
<a class="anchor" id="gad1976dec11cfd62abaa4ecedad948f18"></a><!-- doxytag: member="tools.h::SNMP_MIN" ref="gad1976dec11cfd62abaa4ecedad948f18" args="(a, b)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define <a class="el" href="group__util.html#gad1976dec11cfd62abaa4ecedad948f18">SNMP_MIN</a></td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname">a, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname">b </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td>   ((a) > (b) ? (b) : (a))</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Computers the minimum of a and b. </p>
<p>Definition at line <a class="el" href="tools_8h_source.html#l00089">89</a> of file <a class="el" href="tools_8h_source.html">tools.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga15e5a68e6d21430ddd4312fec64e5027"></a><!-- doxytag: member="tools.h::SNMP_SWIPE_MEM" ref="ga15e5a68e6d21430ddd4312fec64e5027" args="(n, s)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define <a class="el" href="group__util.html#ga15e5a68e6d21430ddd4312fec64e5027">SNMP_SWIPE_MEM</a></td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname">n, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname">s </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td>   do { if (n) free((void *)n); n = s; s=NULL; } while(0)</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Frees pointer n only if it is !NULL, sets n to s and sets s to NULL. </p>
<p>Definition at line <a class="el" href="tools_8h_source.html#l00057">57</a> of file <a class="el" href="tools_8h_source.html">tools.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga190280d08c828c153ec2755b9c263227"></a><!-- doxytag: member="tools.h::SNMP_ZERO" ref="ga190280d08c828c153ec2755b9c263227" args="(s, l)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define <a class="el" href="group__util.html#ga190280d08c828c153ec2755b9c263227">SNMP_ZERO</a></td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname">s, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname">l </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td>   do { if (s) memset(s, 0, l); } while(0)</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Zeros l bytes of memory starting at s. </p>
<p>Definition at line <a class="el" href="tools_8h_source.html#l00072">72</a> of file <a class="el" href="tools_8h_source.html">tools.h</a>.</p>
</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="gaee67c956c1fcd842e739e2a8e9f57365"></a><!-- doxytag: member="tools.h::atime_diff" ref="gaee67c956c1fcd842e739e2a8e9f57365" args="(marker_t first, marker_t second)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">long <a class="el" href="group__util.html#gaee67c956c1fcd842e739e2a8e9f57365">atime_diff</a> </td>
<td>(</td>
<td class="paramtype">marker_t </td>
<td class="paramname"><em>first</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">marker_t </td>
<td class="paramname"><em>second</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Returns the difference (in msec) between the two markers. </p>
<p>Definition at line <a class="el" href="tools_8c_source.html#l00795">795</a> of file <a class="el" href="tools_8c_source.html">tools.c</a>.</p>
</div>
</div>
<a class="anchor" id="gadd8427286d982acba71489f0a3012dfb"></a><!-- doxytag: member="tools.h::atime_newMarker" ref="gadd8427286d982acba71489f0a3012dfb" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">marker_t <a class="el" href="group__util.html#gadd8427286d982acba71489f0a3012dfb">atime_newMarker</a> </td>
<td>(</td>
<td class="paramtype">void </td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>create a new time marker. </p>
<p>NOTE: Caller must free time marker when no longer needed. </p>
<p>Definition at line <a class="el" href="tools_8c_source.html#l00771">771</a> of file <a class="el" href="tools_8c_source.html">tools.c</a>.</p>
</div>
</div>
<a class="anchor" id="ga43a00cd4f3496eb42fb99285a2da8481"></a><!-- doxytag: member="tools.h::atime_ready" ref="ga43a00cd4f3496eb42fb99285a2da8481" args="(marker_t pm, int deltaT)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="group__util.html#ga43a00cd4f3496eb42fb99285a2da8481">atime_ready</a> </td>
<td>(</td>
<td class="paramtype">marker_t </td>
<td class="paramname"><em>pm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>deltaT</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Test: Has (marked time plus delta) exceeded current time (in msec) ? Returns 0 if test fails or cannot be tested (no marker). </p>
<p>Definition at line <a class="el" href="tools_8c_source.html#l00850">850</a> of file <a class="el" href="tools_8c_source.html">tools.c</a>.</p>
</div>
</div>
<a class="anchor" id="gaac74a9b90a9483019e8872d0c923567c"></a><!-- doxytag: member="tools.h::atime_setMarker" ref="gaac74a9b90a9483019e8872d0c923567c" args="(marker_t pm)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__util.html#gaac74a9b90a9483019e8872d0c923567c">atime_setMarker</a> </td>
<td>(</td>
<td class="paramtype">marker_t </td>
<td class="paramname"><em>pm</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>set a time marker. </p>
<p>Definition at line <a class="el" href="tools_8c_source.html#l00782">782</a> of file <a class="el" href="tools_8c_source.html">tools.c</a>.</p>
</div>
</div>
<a class="anchor" id="gafb1770dd180ccdd29dafc90cf50d3204"></a><!-- doxytag: member="tools.h::binary_to_hex" ref="gafb1770dd180ccdd29dafc90cf50d3204" args="(const u_char *input, size_t len, char **output)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">u_int <a class="el" href="group__util.html#gafb1770dd180ccdd29dafc90cf50d3204">binary_to_hex</a> </td>
<td>(</td>
<td class="paramtype">const u_char * </td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t </td>
<td class="paramname"><em>len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char ** </td>
<td class="paramname"><em>output</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>converts binary to hexidecimal </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">*input</td><td>Binary data. </td></tr>
<tr><td class="paramname">len</td><td>Length of binary data. </td></tr>
<tr><td class="paramname">**output</td><td>NULL terminated string equivalent in hex.</td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>olen Length of output string not including NULL terminator.</dd></dl>
<p>FIX Is there already one of these in the UCD SNMP codebase? The old one should be used, or this one should be moved to <a class="el" href="snmp__api_8c_source.html">snmplib/snmp_api.c</a>. </p>
<p>Definition at line <a class="el" href="tools_8c_source.html#l00287">287</a> of file <a class="el" href="tools_8c_source.html">tools.c</a>.</p>
</div>
</div>
<a class="anchor" id="ga26a103aafde4d6dcf72c8e30c7d05bd9"></a><!-- doxytag: member="tools.h::free_zero" ref="ga26a103aafde4d6dcf72c8e30c7d05bd9" args="(void *buf, size_t size)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__util.html#ga26a103aafde4d6dcf72c8e30c7d05bd9">free_zero</a> </td>
<td>(</td>
<td class="paramtype">void * </td>
<td class="paramname"><em>buf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t </td>
<td class="paramname"><em>size</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>zeros memory before freeing it. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">*buf</td><td>Pointer at bytes to free. </td></tr>
<tr><td class="paramname">size</td><td>Number of bytes in buf. </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="tools_8c_source.html#l00185">185</a> of file <a class="el" href="tools_8c_source.html">tools.c</a>.</p>
</div>
</div>
<a class="anchor" id="gafbe460eb2f249c0d347ab38d94a802ae"></a><!-- doxytag: member="tools.h::hex_to_binary2" ref="gafbe460eb2f249c0d347ab38d94a802ae" args="(const u_char *input, size_t len, char **output)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="group__util.html#gafbe460eb2f249c0d347ab38d94a802ae">hex_to_binary2</a> </td>
<td>(</td>
<td class="paramtype">const u_char * </td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t </td>
<td class="paramname"><em>len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char ** </td>
<td class="paramname"><em>output</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>hex_to_binary2 </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">*input</td><td>Printable data in base16. </td></tr>
<tr><td class="paramname">len</td><td>Length in bytes of data. </td></tr>
<tr><td class="paramname">**output</td><td>Binary data equivalent to input.</td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>SNMPERR_GENERR on failure, otherwise length of allocated string.</dd></dl>
<p>Input of an odd length is right aligned.</p>
<p>FIX Another version of "hex-to-binary" which takes odd length input strings. It also allocates the memory to hold the binary data. Should be integrated with the official hex_to_binary() function. </p>
<p>Definition at line <a class="el" href="tools_8c_source.html#l00324">324</a> of file <a class="el" href="tools_8c_source.html">tools.c</a>.</p>
</div>
</div>
<a class="anchor" id="ga76b7f8b21c44e2f8b274a0db8b57d5a1"></a><!-- doxytag: member="tools.h::malloc_random" ref="ga76b7f8b21c44e2f8b274a0db8b57d5a1" args="(size_t *size)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">u_char* <a class="el" href="group__util.html#ga76b7f8b21c44e2f8b274a0db8b57d5a1">malloc_random</a> </td>
<td>(</td>
<td class="paramtype">size_t * </td>
<td class="paramname"><em>size</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Returns pointer to allocaed & set buffer on success, size contains number of random bytes filled. </p>
<p>buf is NULL and *size set to KMT error value upon failure.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">size</td><td>Number of bytes to malloc() and fill with random bytes.</td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>a malloced buffer </dd></dl>
<p>Definition at line <a class="el" href="tools_8c_source.html#l00205">205</a> of file <a class="el" href="tools_8c_source.html">tools.c</a>.</p>
</div>
</div>
<a class="anchor" id="gad8f70e6754e69772a113c07f8607d5eb"></a><!-- doxytag: member="tools.h::marker_tticks" ref="gad8f70e6754e69772a113c07f8607d5eb" args="(marker_t pm)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="group__util.html#gad8f70e6754e69772a113c07f8607d5eb">marker_tticks</a> </td>
<td>(</td>
<td class="paramtype">marker_t </td>
<td class="paramname"><em>pm</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Return the number of timeTicks since the given marker. </p>
<p>Definition at line <a class="el" href="tools_8c_source.html#l00898">898</a> of file <a class="el" href="tools_8c_source.html">tools.c</a>.</p>
</div>
</div>
<a class="anchor" id="ga623784b8aac0469fcd84e24ccdeda0bd"></a><!-- doxytag: member="tools.h::memdup" ref="ga623784b8aac0469fcd84e24ccdeda0bd" args="(u_char **to, const u_char *from, size_t size)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="group__util.html#ga623784b8aac0469fcd84e24ccdeda0bd">memdup</a> </td>
<td>(</td>
<td class="paramtype">u_char ** </td>
<td class="paramname"><em>to</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const u_char * </td>
<td class="paramname"><em>from</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t </td>
<td class="paramname"><em>size</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Duplicates a memory block. </p>
<p>Copies a existing memory location from a pointer to another, newly malloced, pointer.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">to</td><td>Pointer to allocate and copy memory to. </td></tr>
<tr><td class="paramname">from</td><td>Pointer to copy memory from. </td></tr>
<tr><td class="paramname">size</td><td>Size of the data to be copied.</td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>SNMPERR_SUCCESS on success, SNMPERR_GENERR on failure. </dd></dl>
<p>Definition at line <a class="el" href="tools_8c_source.html#l00236">236</a> of file <a class="el" href="tools_8c_source.html">tools.c</a>.</p>
</div>
</div>
<a class="anchor" id="ga1816d1ce1e701fcbce27b20159433313"></a><!-- doxytag: member="tools.h::netsnmp_getenv" ref="ga1816d1ce1e701fcbce27b20159433313" args="(const char *name)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">char* <a class="el" href="group__util.html#ga1816d1ce1e701fcbce27b20159433313">netsnmp_getenv</a> </td>
<td>(</td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>name</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Non Windows: Returns a pointer to the desired environment variable or NULL if the environment variable does not exist. </p>
<p>Windows: Returns a pointer to the desired environment variable if it exists. If it does not, the variable is looked up in the registry in HKCU\Net-SNMP or HKLM\Net-SNMP (whichever it finds first) and stores the result in the environment variable. It then returns a pointer to environment variable. </p>
<p>Definition at line <a class="el" href="tools_8c_source.html#l00926">926</a> of file <a class="el" href="tools_8c_source.html">tools.c</a>.</p>
</div>
</div>
<a class="anchor" id="ga8c1a230e987560600de9f81e55480c0a"></a><!-- doxytag: member="tools.h::netsnmp_hex_to_binary" ref="ga8c1a230e987560600de9f81e55480c0a" args="(u_char **buf, size_t *buf_len, size_t *offset, int allow_realloc, const char *hex, const char *delim)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="group__util.html#ga8c1a230e987560600de9f81e55480c0a">netsnmp_hex_to_binary</a> </td>
<td>(</td>
<td class="paramtype">u_char ** </td>
<td class="paramname"><em>buf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t * </td>
<td class="paramname"><em>buf_len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t * </td>
<td class="paramname"><em>offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>allow_realloc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>hex</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>delim</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>convert an ASCII hex string (with specified delimiters) to binary </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">buf</td><td>address of a pointer (pointer to pointer) for the output buffer. If allow_realloc is set, the buffer may be grown via snmp_realloc to accomodate the data.</td></tr>
<tr><td class="paramname">buf_len</td><td>pointer to a size_t containing the initial size of buf.</td></tr>
<tr><td class="paramname">offset</td><td>On input, a pointer to a size_t indicating an offset into buf. The binary data will be stored at this offset. On output, this pointer will have updated the offset to be the first byte after the converted data.</td></tr>
<tr><td class="paramname">allow_realloc</td><td>If true, the buffer can be reallocated. If false, and the buffer is not large enough to contain the string, an error will be returned.</td></tr>
<tr><td class="paramname">hex</td><td>pointer to hex string to be converted. May be prefixed by "0x" or "0X".</td></tr>
<tr><td class="paramname">delim</td><td>point to a string of allowed delimiters between bytes. If not specified, any non-hex characters will be an error.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt><b>Return values:</b></dt><dd>
<table class="retval">
<tr><td class="paramname">1</td><td>success </td></tr>
<tr><td class="paramname">0</td><td>error </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="tools_8c_source.html#l00425">425</a> of file <a class="el" href="tools_8c_source.html">tools.c</a>.</p>
</div>
</div>
<a class="anchor" id="ga06867ff53bb86b745f23c52aa5e78829"></a><!-- doxytag: member="tools.h::netsnmp_strdup_and_null" ref="ga06867ff53bb86b745f23c52aa5e78829" args="(const u_char *from, size_t from_len)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">char* <a class="el" href="group__util.html#ga06867ff53bb86b745f23c52aa5e78829">netsnmp_strdup_and_null</a> </td>
<td>(</td>
<td class="paramtype">const u_char * </td>
<td class="paramname"><em>from</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t </td>
<td class="paramname"><em>from_len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>copies a (possible) unterminated string of a given length into a new buffer and null terminates it as well (new buffer MAY be one byte longer to account for this </p>
<p>Definition at line <a class="el" href="tools_8c_source.html#l00255">255</a> of file <a class="el" href="tools_8c_source.html">tools.c</a>.</p>
</div>
</div>
<a class="anchor" id="ga1a102bbccc7a51e7f98b0c1da33497db"></a><!-- doxytag: member="tools.h::snmp_hex_to_binary" ref="ga1a102bbccc7a51e7f98b0c1da33497db" args="(u_char **buf, size_t *buf_len, size_t *offset, int allow_realloc, const char *hex)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="group__util.html#ga1a102bbccc7a51e7f98b0c1da33497db">snmp_hex_to_binary</a> </td>
<td>(</td>
<td class="paramtype">u_char ** </td>
<td class="paramname"><em>buf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t * </td>
<td class="paramname"><em>buf_len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t * </td>
<td class="paramname"><em>offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>allow_realloc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>hex</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>convert an ASCII hex string to binary </p>
<dl class="note"><dt><b>Note:</b></dt><dd>This is a wrapper which calls netsnmp_hex_to_binary with a delimiter string of " ".</dd></dl>
<p>See netsnmp_hex_to_binary for parameter descriptions.</p>
<dl class="retval"><dt><b>Return values:</b></dt><dd>
<table class="retval">
<tr><td class="paramname">1</td><td>success </td></tr>
<tr><td class="paramname">0</td><td>error </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="tools_8c_source.html#l00485">485</a> of file <a class="el" href="tools_8c_source.html">tools.c</a>.</p>
</div>
</div>
<a class="anchor" id="ga7b42d706225a788adcfeaad9b24717de"></a><!-- doxytag: member="tools.h::snmp_realloc" ref="ga7b42d706225a788adcfeaad9b24717de" args="(u_char **buf, size_t *buf_len)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="group__util.html#ga7b42d706225a788adcfeaad9b24717de">snmp_realloc</a> </td>
<td>(</td>
<td class="paramtype">u_char ** </td>
<td class="paramname"><em>buf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t * </td>
<td class="paramname"><em>buf_len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>This function increase the size of the buffer pointed at by *buf, which is initially of size *buf_len. </p>
<p>Contents are preserved **AT THE BOTTOM END OF THE BUFFER**. If memory can be (re-)allocated then it returns 1, else it returns 0.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">buf</td><td>pointer to a buffer pointer </td></tr>
<tr><td class="paramname">buf_len</td><td>pointer to current size of buffer in bytes</td></tr>
</table>
</dd>
</dl>
<dl class="note"><dt><b>Note:</b></dt><dd>The current re-allocation algorithm is to increase the buffer size by whichever is the greater of 256 bytes or the current buffer size, up to a maximum increase of 8192 bytes. </dd></dl>
<p>Definition at line <a class="el" href="tools_8c_source.html#l00121">121</a> of file <a class="el" href="tools_8c_source.html">tools.c</a>.</p>
</div>
</div>
<a class="anchor" id="ga1d44372c028e3c38de4161c52c226948"></a><!-- doxytag: member="tools.h::uatime_diff" ref="ga1d44372c028e3c38de4161c52c226948" args="(marker_t first, marker_t second)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">u_long <a class="el" href="group__util.html#ga1d44372c028e3c38de4161c52c226948">uatime_diff</a> </td>
<td>(</td>
<td class="paramtype">marker_t </td>
<td class="paramname"><em>first</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">marker_t </td>
<td class="paramname"><em>second</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Returns the difference (in u_long msec) between the two markers. </p>
<p>Definition at line <a class="el" href="tools_8c_source.html#l00812">812</a> of file <a class="el" href="tools_8c_source.html">tools.c</a>.</p>
</div>
</div>
<a class="anchor" id="ga96b8aa8b0c5556f923dcfe9b56443606"></a><!-- doxytag: member="tools.h::uatime_hdiff" ref="ga96b8aa8b0c5556f923dcfe9b56443606" args="(marker_t first, marker_t second)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">u_long <a class="el" href="group__util.html#ga96b8aa8b0c5556f923dcfe9b56443606">uatime_hdiff</a> </td>
<td>(</td>
<td class="paramtype">marker_t </td>
<td class="paramname"><em>first</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">marker_t </td>
<td class="paramname"><em>second</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Returns the difference (in u_long 1/100th secs) between the two markers (functionally this is what sysUpTime needs) </p>
<p>Definition at line <a class="el" href="tools_8c_source.html#l00830">830</a> of file <a class="el" href="tools_8c_source.html">tools.c</a>.</p>
</div>
</div>
<a class="anchor" id="ga15b21d7af289044a10e22b6111f43523"></a><!-- doxytag: member="tools.h::uatime_ready" ref="ga15b21d7af289044a10e22b6111f43523" args="(marker_t pm, unsigned int deltaT)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="group__util.html#ga15b21d7af289044a10e22b6111f43523">uatime_ready</a> </td>
<td>(</td>
<td class="paramtype">marker_t </td>
<td class="paramname"><em>pm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int </td>
<td class="paramname"><em>deltaT</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Test: Has (marked time plus delta) exceeded current time (in msec) ? Returns 0 if test fails or cannot be tested (no marker). </p>
<p>Definition at line <a class="el" href="tools_8c_source.html#l00872">872</a> of file <a class="el" href="tools_8c_source.html">tools.c</a>.</p>
</div>
</div>
</div><!-- contents -->
<hr class="footer"/><address class="footer"><small>
Generated by  <a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.7.6.1
</small></address>
</body>
</html>