<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>ldns documentation</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> <link href="tabs.css" rel="stylesheet" type="text/css"> </head><body> <div class="logo"> <img src="LogoInGradientBar2-y100.png"/> </div> <!-- Generated by Doxygen 1.7.4 --> <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="annotated.html"><span>Data Structures</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> <li><a href="dirs.html"><span>Directories</span></a></li> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>Globals</span></a></li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#define-members">Defines</a> | <a href="#func-members">Functions</a> </div> <div class="headertitle"> <div class="title">util.c File Reference</div> </div> </div> <div class="contents"> <p><a href="util_8c_source.html">Go to the source code of this file.</a></p> <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">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="util_8c.html#ac1618f49b289533d8f580b56046bac72">LDNS_MOD</a>(x, y)   (((x) % (y) < 0) ? ((x) % (y) + (y)) : ((x) % (y)))</td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="util_8c.html#ae2ab6f20afc9ee75e430582db23432ae">LDNS_DIV</a>(x, y)   (((x) % (y) < 0) ? ((x) / (y) - 1 ) : ((x) / (y)))</td></tr> <tr><td colspan="2"><h2><a name="func-members"></a> Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="util_8c.html#a0f955a99269b49c9c857d27d4e1ea29f">xprintf_rdf</a> (<a class="el" href="structldns__struct__rdf.html">ldns_rdf</a> *rd)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="util_8c.html#a77646dc44a14d6353a7db138f8aaf1fe">xprintf_rr</a> (<a class="el" href="structldns__struct__rr.html">ldns_rr</a> *rr)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="util_8c.html#a0c88a8d947b8210d62fa58fc9d0e7e6d">xprintf_hex</a> (uint8_t *data, size_t len)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structldns__struct__lookup__table.html">ldns_lookup_table</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="util_8c.html#af8897a478378bd8d5c7d434b71b0f4f8">ldns_lookup_by_name</a> (<a class="el" href="structldns__struct__lookup__table.html">ldns_lookup_table</a> *table, const char *name)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structldns__struct__lookup__table.html">ldns_lookup_table</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="util_8c.html#a42a73e82a0f0bf3ee979190b9cf81957">ldns_lookup_by_id</a> (<a class="el" href="structldns__struct__lookup__table.html">ldns_lookup_table</a> *table, int id)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="util_8c.html#ac0cfcc1f93a2aaf7fb61804cf844faef">ldns_get_bit</a> (uint8_t bits[], size_t index)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the value of the specified bit The bits are counted from left to right, so bit #0 is the left most bit. <a href="#ac0cfcc1f93a2aaf7fb61804cf844faef"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="util_8c.html#a7b16da6f889d76e6653a28038a50824c">ldns_get_bit_r</a> (uint8_t bits[], size_t index)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the value of the specified bit The bits are counted from right to left, so bit #0 is the right most bit. <a href="#a7b16da6f889d76e6653a28038a50824c"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="util_8c.html#a2d1ca37b28b9053aedc68d9ab4c62cae">ldns_set_bit</a> (uint8_t *byte, int bit_nr, bool value)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">sets the specified bit in the specified byte to 1 if value is true, 0 if false The bits are counted from right to left, so bit #0 is the right most bit. <a href="#a2d1ca37b28b9053aedc68d9ab4c62cae"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="util_8c.html#a04593d78f06d288151bba4719704fa99">ldns_hexdigit_to_int</a> (char ch)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the int value of the given (hex) digit. <a href="#a04593d78f06d288151bba4719704fa99"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">char </td><td class="memItemRight" valign="bottom"><a class="el" href="util_8c.html#af756fbd794c21244c76ffc1f1e70530d">ldns_int_to_hexdigit</a> (int i)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the char (hex) representation of the given int. <a href="#af756fbd794c21244c76ffc1f1e70530d"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="util_8c.html#a22fb80e94a21a7700835b83279e9110c">ldns_hexstring_to_data</a> (uint8_t *data, const char *str)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Converts a hex string to binary data. <a href="#a22fb80e94a21a7700835b83279e9110c"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="util_8c.html#acfa02e74a31c812d2e4ecf40915b418f">ldns_version</a> (void)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Show the internal library version. <a href="#acfa02e74a31c812d2e4ecf40915b418f"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">time_t </td><td class="memItemRight" valign="bottom"><a class="el" href="util_8c.html#ad4a71c049ae1e0b4849a64040a7360fa">mktime_from_utc</a> (const struct tm *tm)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Convert TM to seconds since epoch (midnight, January 1st, 1970). <a href="#ad4a71c049ae1e0b4849a64040a7360fa"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct tm * </td><td class="memItemRight" valign="bottom"><a class="el" href="util_8c.html#a093298fb6914785d45feb3be61597aed">ldns_serial_arithmitics_gmtime_r</a> (int32_t time, time_t now, struct tm *result)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The function interprets time as the number of seconds since epoch with respect to now using serial arithmitics (rfc1982). <a href="#a093298fb6914785d45feb3be61597aed"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="util_8c.html#aeda2f1b732e46a3e761aba81129d71e0">ldns_init_random</a> (FILE *fd, unsigned int size)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Init the random source applications should call this if they need entropy data within ldns If openSSL is available, it is automatically seeded from /dev/urandom or /dev/random. <a href="#aeda2f1b732e46a3e761aba81129d71e0"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">uint16_t </td><td class="memItemRight" valign="bottom"><a class="el" href="util_8c.html#ad59e2ce028b25f1fbe8d4dbdb2a5b315">ldns_get_random</a> (void)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get random number. <a href="#ad59e2ce028b25f1fbe8d4dbdb2a5b315"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="util_8c.html#ada923722a7a97fbb7a531cf48b977b8e">ldns_bubblebabble</a> (uint8_t *data, size_t len)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Encode data as BubbleBabble. <a href="#ada923722a7a97fbb7a531cf48b977b8e"></a><br/></td></tr> </table> <hr/><h2>Define Documentation</h2> <a class="anchor" id="ac1618f49b289533d8f580b56046bac72"></a><!-- doxytag: member="util.c::LDNS_MOD" ref="ac1618f49b289533d8f580b56046bac72" args="(x, y)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define LDNS_MOD</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">x, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">y </td> </tr> <tr> <td></td> <td>)</td> <td></td><td>   (((x) % (y) < 0) ? ((x) % (y) + (y)) : ((x) % (y)))</td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="util_8c_source.html#l00202">202</a> of file <a class="el" href="util_8c_source.html">util.c</a>.</p> </div> </div> <a class="anchor" id="ae2ab6f20afc9ee75e430582db23432ae"></a><!-- doxytag: member="util.c::LDNS_DIV" ref="ae2ab6f20afc9ee75e430582db23432ae" args="(x, y)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define LDNS_DIV</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">x, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">y </td> </tr> <tr> <td></td> <td>)</td> <td></td><td>   (((x) % (y) < 0) ? ((x) / (y) - 1 ) : ((x) / (y)))</td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="util_8c_source.html#l00203">203</a> of file <a class="el" href="util_8c_source.html">util.c</a>.</p> </div> </div> <hr/><h2>Function Documentation</h2> <a class="anchor" id="a0f955a99269b49c9c857d27d4e1ea29f"></a><!-- doxytag: member="util.c::xprintf_rdf" ref="a0f955a99269b49c9c857d27d4e1ea29f" args="(ldns_rdf *rd)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void xprintf_rdf </td> <td>(</td> <td class="paramtype"><a class="el" href="structldns__struct__rdf.html">ldns_rdf</a> * </td> <td class="paramname"><em>rd</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="util_8c_source.html#l00030">30</a> of file <a class="el" href="util_8c_source.html">util.c</a>.</p> <p>References <a class="el" href="rdata_8c_source.html#l00038">ldns_rdf_data()</a>, <a class="el" href="rdata_8c_source.html#l00031">ldns_rdf_get_type()</a>, and <a class="el" href="rdata_8c_source.html#l00024">ldns_rdf_size()</a>.</p> </div> </div> <a class="anchor" id="a77646dc44a14d6353a7db138f8aaf1fe"></a><!-- doxytag: member="util.c::xprintf_rr" ref="a77646dc44a14d6353a7db138f8aaf1fe" args="(ldns_rr *rr)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void xprintf_rr </td> <td>(</td> <td class="paramtype"><a class="el" href="structldns__struct__rr.html">ldns_rr</a> * </td> <td class="paramname"><em>rr</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="util_8c_source.html#l00040">40</a> of file <a class="el" href="util_8c_source.html">util.c</a>.</p> <p>References <a class="el" href="rr_8h_source.html#l00289">ldns_struct_rr::_rdata_fields</a>, <a class="el" href="rr_8c_source.html#l00867">ldns_rr_rd_count()</a>, and <a class="el" href="util_8c_source.html#l00030">xprintf_rdf()</a>.</p> </div> </div> <a class="anchor" id="a0c88a8d947b8210d62fa58fc9d0e7e6d"></a><!-- doxytag: member="util.c::xprintf_hex" ref="a0c88a8d947b8210d62fa58fc9d0e7e6d" args="(uint8_t *data, size_t len)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void xprintf_hex </td> <td>(</td> <td class="paramtype">uint8_t * </td> <td class="paramname"><em>data</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></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="util_8c_source.html#l00053">53</a> of file <a class="el" href="util_8c_source.html">util.c</a>.</p> </div> </div> <a class="anchor" id="af8897a478378bd8d5c7d434b71b0f4f8"></a><!-- doxytag: member="util.c::ldns_lookup_by_name" ref="af8897a478378bd8d5c7d434b71b0f4f8" args="(ldns_lookup_table *table, const char *name)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structldns__struct__lookup__table.html">ldns_lookup_table</a>* ldns_lookup_by_name </td> <td>(</td> <td class="paramtype"><a class="el" href="structldns__struct__lookup__table.html">ldns_lookup_table</a> * </td> <td class="paramname"><em>table</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>name</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="util_8c_source.html#l00066">66</a> of file <a class="el" href="util_8c_source.html">util.c</a>.</p> <p>References <a class="el" href="util_8h_source.html#l00158">ldns_struct_lookup_table::name</a>.</p> </div> </div> <a class="anchor" id="a42a73e82a0f0bf3ee979190b9cf81957"></a><!-- doxytag: member="util.c::ldns_lookup_by_id" ref="a42a73e82a0f0bf3ee979190b9cf81957" args="(ldns_lookup_table *table, int id)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structldns__struct__lookup__table.html">ldns_lookup_table</a>* ldns_lookup_by_id </td> <td>(</td> <td class="paramtype"><a class="el" href="structldns__struct__lookup__table.html">ldns_lookup_table</a> * </td> <td class="paramname"><em>table</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>id</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="util_8c_source.html#l00077">77</a> of file <a class="el" href="util_8c_source.html">util.c</a>.</p> <p>References <a class="el" href="util_8h_source.html#l00157">ldns_struct_lookup_table::id</a>, and <a class="el" href="util_8h_source.html#l00158">ldns_struct_lookup_table::name</a>.</p> </div> </div> <a class="anchor" id="ac0cfcc1f93a2aaf7fb61804cf844faef"></a><!-- doxytag: member="util.c::ldns_get_bit" ref="ac0cfcc1f93a2aaf7fb61804cf844faef" args="(uint8_t bits[], size_t index)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ldns_get_bit </td> <td>(</td> <td class="paramtype">uint8_t </td> <td class="paramname"><em>bits</em>[], </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>index</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the value of the specified bit The bits are counted from left to right, so bit #0 is the left most bit. </p> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">bits</td><td>array holding the bits </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">index</td><td>to the wanted bit </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd></dd></dl> <p>Definition at line <a class="el" href="util_8c_source.html#l00088">88</a> of file <a class="el" href="util_8c_source.html">util.c</a>.</p> </div> </div> <a class="anchor" id="a7b16da6f889d76e6653a28038a50824c"></a><!-- doxytag: member="util.c::ldns_get_bit_r" ref="a7b16da6f889d76e6653a28038a50824c" args="(uint8_t bits[], size_t index)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ldns_get_bit_r </td> <td>(</td> <td class="paramtype">uint8_t </td> <td class="paramname"><em>bits</em>[], </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>index</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the value of the specified bit The bits are counted from right to left, so bit #0 is the right most bit. </p> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">bits</td><td>array holding the bits </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">index</td><td>to the wanted bit </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>1 or 0 depending no the bit state </dd></dl> <p>Definition at line <a class="el" href="util_8c_source.html#l00098">98</a> of file <a class="el" href="util_8c_source.html">util.c</a>.</p> </div> </div> <a class="anchor" id="a2d1ca37b28b9053aedc68d9ab4c62cae"></a><!-- doxytag: member="util.c::ldns_set_bit" ref="a2d1ca37b28b9053aedc68d9ab4c62cae" args="(uint8_t *byte, int bit_nr, bool value)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void ldns_set_bit </td> <td>(</td> <td class="paramtype">uint8_t * </td> <td class="paramname"><em>byte</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>bit_nr</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool </td> <td class="paramname"><em>value</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>sets the specified bit in the specified byte to 1 if value is true, 0 if false The bits are counted from right to left, so bit #0 is the right most bit. </p> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">byte</td><td>the bit to set the bit in </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">bit_nr</td><td>the bit to set (0 <= n <= 7) </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>whether to set the bit to 1 or 0 </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>1 or 0 depending no the bit state </dd></dl> <p>Definition at line <a class="el" href="util_8c_source.html#l00108">108</a> of file <a class="el" href="util_8c_source.html">util.c</a>.</p> </div> </div> <a class="anchor" id="a04593d78f06d288151bba4719704fa99"></a><!-- doxytag: member="util.c::ldns_hexdigit_to_int" ref="a04593d78f06d288151bba4719704fa99" args="(char ch)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ldns_hexdigit_to_int </td> <td>(</td> <td class="paramtype">char </td> <td class="paramname"><em>ch</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the int value of the given (hex) digit. </p> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">ch</td><td>the hex char to convert </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>the converted decimal value </dd></dl> <p>Definition at line <a class="el" href="util_8c_source.html#l00120">120</a> of file <a class="el" href="util_8c_source.html">util.c</a>.</p> </div> </div> <a class="anchor" id="af756fbd794c21244c76ffc1f1e70530d"></a><!-- doxytag: member="util.c::ldns_int_to_hexdigit" ref="af756fbd794c21244c76ffc1f1e70530d" args="(int i)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">char ldns_int_to_hexdigit </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"><em>ch</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the char (hex) representation of the given int. </p> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">ch</td><td>the int to convert </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>the converted hex char </dd></dl> <p>Definition at line <a class="el" href="util_8c_source.html#l00145">145</a> of file <a class="el" href="util_8c_source.html">util.c</a>.</p> </div> </div> <a class="anchor" id="a22fb80e94a21a7700835b83279e9110c"></a><!-- doxytag: member="util.c::ldns_hexstring_to_data" ref="a22fb80e94a21a7700835b83279e9110c" args="(uint8_t *data, const char *str)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ldns_hexstring_to_data </td> <td>(</td> <td class="paramtype">uint8_t * </td> <td class="paramname"><em>data</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>str</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Converts a hex string to binary data. </p> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramdir">[out]</td><td class="paramname">data</td><td>The binary result is placed here. At least strlen(str)/2 bytes should be allocated </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">str</td><td>The hex string to convert. This string should not contain spaces </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>The number of bytes of converted data, or -1 if one of the arguments * is NULL, or -2 if the string length is not an even number </dd></dl> <p>Definition at line <a class="el" href="util_8c_source.html#l00170">170</a> of file <a class="el" href="util_8c_source.html">util.c</a>.</p> <p>References <a class="el" href="util_8c_source.html#l00120">ldns_hexdigit_to_int()</a>.</p> </div> </div> <a class="anchor" id="acfa02e74a31c812d2e4ecf40915b418f"></a><!-- doxytag: member="util.c::ldns_version" ref="acfa02e74a31c812d2e4ecf40915b418f" args="(void)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* ldns_version </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Show the internal library version. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>a string with the version in it </dd></dl> <p>Definition at line <a class="el" href="util_8c_source.html#l00192">192</a> of file <a class="el" href="util_8c_source.html">util.c</a>.</p> <p>References <a class="el" href="util_8h_source.html#l00030">LDNS_VERSION</a>.</p> </div> </div> <a class="anchor" id="ad4a71c049ae1e0b4849a64040a7360fa"></a><!-- doxytag: member="util.c::mktime_from_utc" ref="ad4a71c049ae1e0b4849a64040a7360fa" args="(const struct tm *tm)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">time_t mktime_from_utc </td> <td>(</td> <td class="paramtype">const struct tm * </td> <td class="paramname"><em>tm</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Convert TM to seconds since epoch (midnight, January 1st, 1970). </p> <p>Like timegm(3), which is not always available. </p> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">tm</td><td>a struct tm* with the date </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>the seconds since epoch </dd></dl> <p>Definition at line <a class="el" href="util_8c_source.html#l00226">226</a> of file <a class="el" href="util_8c_source.html">util.c</a>.</p> </div> </div> <a class="anchor" id="a093298fb6914785d45feb3be61597aed"></a><!-- doxytag: member="util.c::ldns_serial_arithmitics_gmtime_r" ref="a093298fb6914785d45feb3be61597aed" args="(int32_t time, time_t now, struct tm *result)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">struct tm* ldns_serial_arithmitics_gmtime_r </td> <td>(</td> <td class="paramtype">int32_t </td> <td class="paramname"><em>time</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">time_t </td> <td class="paramname"><em>now</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct tm * </td> <td class="paramname"><em>result</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [read]</code></td> </tr> </table> </div> <div class="memdoc"> <p>The function interprets time as the number of seconds since epoch with respect to now using serial arithmitics (rfc1982). </p> <p>That number of seconds is then converted to broken-out time information. This is especially usefull when converting the inception and expiration fields of RRSIG records.</p> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">time</td><td>number of seconds since epoch (midnight, January 1st, 1970) to be intepreted as a serial arithmitics number relative to now. </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">now</td><td>number of seconds since epoch (midnight, January 1st, 1970) to which the time value is compared to determine the final value. </td></tr> <tr><td class="paramdir">[out]</td><td class="paramname">result</td><td>the struct with the broken-out time information </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>result on success or NULL on error </dd></dl> <p>Definition at line <a class="el" href="util_8c_source.html#l00330">330</a> of file <a class="el" href="util_8c_source.html">util.c</a>.</p> <p>References <a class="el" href="config_8h.html#a6ef8fd14c34a80c3fee2ef2694491514">gmtime_r()</a>.</p> </div> </div> <a class="anchor" id="aeda2f1b732e46a3e761aba81129d71e0"></a><!-- doxytag: member="util.c::ldns_init_random" ref="aeda2f1b732e46a3e761aba81129d71e0" args="(FILE *fd, unsigned int size)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ldns_init_random </td> <td>(</td> <td class="paramtype">FILE * </td> <td class="paramname"><em>fd</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned int </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>Init the random source applications should call this if they need entropy data within ldns If openSSL is available, it is automatically seeded from /dev/urandom or /dev/random. </p> <p>Seed the random function.</p> <p>If you need more entropy, or have no openssl available, this function MUST be called at the start of the program</p> <p>If openssl *is* available, this function just adds more entropy </p> <p>Definition at line <a class="el" href="util_8c_source.html#l00353">353</a> of file <a class="el" href="util_8c_source.html">util.c</a>.</p> <p>References <a class="el" href="util_8h_source.html#l00060">LDNS_FREE</a>, <a class="el" href="util_8h_source.html#l00051">LDNS_XMALLOC</a>, and <a class="el" href="config_8h_source.html#l00507">srandom</a>.</p> </div> </div> <a class="anchor" id="ad59e2ce028b25f1fbe8d4dbdb2a5b315"></a><!-- doxytag: member="util.c::ldns_get_random" ref="ad59e2ce028b25f1fbe8d4dbdb2a5b315" args="(void)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">uint16_t ldns_get_random </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Get random number. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>random number. </dd></dl> <p>Definition at line <a class="el" href="util_8c_source.html#l00425">425</a> of file <a class="el" href="util_8c_source.html">util.c</a>.</p> <p>References <a class="el" href="config_8h_source.html#l00508">random</a>.</p> </div> </div> <a class="anchor" id="ada923722a7a97fbb7a531cf48b977b8e"></a><!-- doxytag: member="util.c::ldns_bubblebabble" ref="ada923722a7a97fbb7a531cf48b977b8e" args="(uint8_t *data, size_t len)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">char* ldns_bubblebabble </td> <td>(</td> <td class="paramtype">uint8_t * </td> <td class="paramname"><em>data</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></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Encode data as BubbleBabble. </p> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>a pointer to data to be encoded </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">len</td><td>size the number of bytes of data </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>a string of BubbleBabble </dd></dl> <p>Definition at line <a class="el" href="util_8c_source.html#l00443">443</a> of file <a class="el" href="util_8c_source.html">util.c</a>.</p> <p>References <a class="el" href="util_8h_source.html#l00051">LDNS_XMALLOC</a>.</p> </div> </div> </div> <hr class="footer"/><address class="footer"><small>Generated on Wed Jan 11 2012 for ldns by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> </body> </html>