Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > 87b89b73c41f4440bb86afd421c7548f > files > 172

libnl-devel-1.1-14.fc14.x86_64.rpm

<!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"/>
<title>libnl: Utilities</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.3 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">libnl&#160;<span id="projectnumber">1.1</span></div>
  </td>
 </tr>
 </tbody>
</table>
</div>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#groups">Modules</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#var-members">Variables</a>  </div>
  <div class="headertitle">
<h1>Utilities</h1>  </div>
</div>
<div class="contents">
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structnl__dump__params.html">nl_dump_params</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Dumping parameters.  <a href="structnl__dump__params.html#_details">More...</a><br/></td></tr>
<tr><td colspan="2"><h2><a name="groups"></a>
Modules</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__addr.html">Abstract Address</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__data.html">Abstract Data</a></td></tr>
<tr><td colspan="2"><h2><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__utils.html#gacfb5566c73f0965c5241d7d49bc717e9">nl_dump_type</a> { <br/>
&#160;&#160;<a class="el" href="group__utils.html#ggacfb5566c73f0965c5241d7d49bc717e9a5597887c080d5ecae358b6065a4048fd">NL_DUMP_BRIEF</a>, 
<a class="el" href="group__utils.html#ggacfb5566c73f0965c5241d7d49bc717e9a1445106c7af529b2c99ee289fbcd3179">NL_DUMP_FULL</a>, 
<a class="el" href="group__utils.html#ggacfb5566c73f0965c5241d7d49bc717e9a8ebedc55094df6175b84fb1230047a65">NL_DUMP_STATS</a>, 
<a class="el" href="group__utils.html#ggacfb5566c73f0965c5241d7d49bc717e9aa5b83654e99e53423c39b0d6e835d768">NL_DUMP_XML</a>, 
<br/>
&#160;&#160;<a class="el" href="group__utils.html#ggacfb5566c73f0965c5241d7d49bc717e9a7178b29f7f68857970540f2d1dabbaf1">NL_DUMP_ENV</a>, 
<a class="el" href="group__utils.html#ggacfb5566c73f0965c5241d7d49bc717e9a0a6b9179a51fa838c1f662b6557e0dce">NL_DUMP_EVENTS</a>, 
<b>__NL_DUMP_MAX</b>
<br/>
 }</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><p>Dumping types (dp_type) </p>
 <a href="group__utils.html#gacfb5566c73f0965c5241d7d49bc717e9">More...</a><br/></td></tr>
<tr><td colspan="2"><h2><a name="var-members"></a>
Variables</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2e170840b2132881f543285ea6323f52"></a><!-- doxytag: member="utils::nl_debug" ref="ga2e170840b2132881f543285ea6323f52" args="" -->
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__utils.html#ga2e170840b2132881f543285ea6323f52">nl_debug</a> = 0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Debug level. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structnl__dump__params.html">nl_dump_params</a>&#160;</td><td class="memItemRight" valign="bottom"><b>nl_debug_dp</b></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Error Code Helpers</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gabff59a9ff34c9b99f1427b4727b4137f"></a><!-- doxytag: member="utils::nl_get_errno" ref="gabff59a9ff34c9b99f1427b4727b4137f" args="(void)" -->
int&#160;</td><td class="memItemRight" valign="bottom"><b>nl_get_errno</b> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__utils.html#ga4586cbc3086399f08e42708098ea2045">nl_geterror</a> (void)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Return error message for an error code.  <a href="#ga4586cbc3086399f08e42708098ea2045"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__utils.html#ga8c631e35dc822837a1e10354f96ea0b7">nl_perror</a> (const char *s)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Print a libnl error message.  <a href="#ga8c631e35dc822837a1e10354f96ea0b7"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Unit Pretty-Printing</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__utils.html#ga5a280448ae9e17ff5dc7e822b9f47b11">nl_cancel_down_bytes</a> (unsigned long long l, char **unit)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Cancel down a byte counter.  <a href="#ga5a280448ae9e17ff5dc7e822b9f47b11"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__utils.html#ga195db70bc2c97b1eb6f40c2d60a6f823">nl_cancel_down_bits</a> (unsigned long long l, char **unit)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Cancel down a bit counter.  <a href="#ga195db70bc2c97b1eb6f40c2d60a6f823"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__utils.html#ga190dcd7725dd4f6a7e635a99a0b8b0db">nl_cancel_down_us</a> (uint32_t l, char **unit)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Cancel down a micro second value.  <a href="#ga190dcd7725dd4f6a7e635a99a0b8b0db"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Generic Unit Translations</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__utils.html#ga1f10fc847364fc4f02624ba3b5b00954">nl_size2int</a> (const char *str)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a character string to a size.  <a href="#ga1f10fc847364fc4f02624ba3b5b00954"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__utils.html#ga60e3d95f99eba0e01e0d127653e1da6b">nl_prob2int</a> (const char *str)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a character string to a probability.  <a href="#ga60e3d95f99eba0e01e0d127653e1da6b"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Time Translations</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga9aa52772ddedc62e60f5ecfc9a66ea89"></a><!-- doxytag: member="utils::nl_get_hz" ref="ga9aa52772ddedc62e60f5ecfc9a66ea89" args="(void)" -->
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__utils.html#ga9aa52772ddedc62e60f5ecfc9a66ea89">nl_get_hz</a> (void)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the value of HZ. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__utils.html#gaf630014f3b23909759921b8ef9f85d3e">nl_us2ticks</a> (uint32_t us)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert micro seconds to ticks.  <a href="#gaf630014f3b23909759921b8ef9f85d3e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__utils.html#gade35baf670a48177d9469905159089e7">nl_ticks2us</a> (uint32_t ticks)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert ticks to micro seconds.  <a href="#gade35baf670a48177d9469905159089e7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4b115f802262eede3c5d30ef716638ed"></a><!-- doxytag: member="utils::nl_time2int" ref="ga4b115f802262eede3c5d30ef716638ed" args="(const char *str)" -->
long&#160;</td><td class="memItemRight" valign="bottom"><b>nl_time2int</b> (const char *str)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__utils.html#gace816c5bf9a61cd74bbb0444ffa7029f">nl_msec2str</a> (uint64_t msec, char *buf, size_t len)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert milliseconds to a character string.  <a href="#gace816c5bf9a61cd74bbb0444ffa7029f"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Link Layer Protocol Translations</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae30f0457bae3bb7f6a8ca96b1077c938"></a><!-- doxytag: member="utils::nl_llproto2str" ref="gae30f0457bae3bb7f6a8ca96b1077c938" args="(int llproto, char *buf, size_t len)" -->
char *&#160;</td><td class="memItemRight" valign="bottom"><b>nl_llproto2str</b> (int llproto, char *buf, size_t len)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga87ecd438587fefddda75f2de4f0fd73f"></a><!-- doxytag: member="utils::nl_str2llproto" ref="ga87ecd438587fefddda75f2de4f0fd73f" args="(const char *name)" -->
int&#160;</td><td class="memItemRight" valign="bottom"><b>nl_str2llproto</b> (const char *name)</td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Ethernet Protocol Translations</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga04b596e2f079563c52b460fc0225e4aa"></a><!-- doxytag: member="utils::nl_ether_proto2str" ref="ga04b596e2f079563c52b460fc0225e4aa" args="(int eproto, char *buf, size_t len)" -->
char *&#160;</td><td class="memItemRight" valign="bottom"><b>nl_ether_proto2str</b> (int eproto, char *buf, size_t len)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gadf04725625bf9a0954c3770c851a4781"></a><!-- doxytag: member="utils::nl_str2ether_proto" ref="gadf04725625bf9a0954c3770c851a4781" args="(const char *name)" -->
int&#160;</td><td class="memItemRight" valign="bottom"><b>nl_str2ether_proto</b> (const char *name)</td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
IP Protocol Translations</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2ab07cb7a0830ebd237d2dda1a35425f"></a><!-- doxytag: member="utils::nl_ip_proto2str" ref="ga2ab07cb7a0830ebd237d2dda1a35425f" args="(int proto, char *buf, size_t len)" -->
char *&#160;</td><td class="memItemRight" valign="bottom"><b>nl_ip_proto2str</b> (int proto, char *buf, size_t len)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga6a3ff310e77d66b05e75c660bea5e248"></a><!-- doxytag: member="utils::nl_str2ip_proto" ref="ga6a3ff310e77d66b05e75c660bea5e248" args="(const char *name)" -->
int&#160;</td><td class="memItemRight" valign="bottom"><b>nl_str2ip_proto</b> (const char *name)</td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Dumping Helpers</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__utils.html#ga8d036ba05aa233203e8d7fb79f925c2c">nl_new_line</a> (struct <a class="el" href="structnl__dump__params.html">nl_dump_params</a> *params, int line)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Handle a new line while dumping.  <a href="#ga8d036ba05aa233203e8d7fb79f925c2c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__utils.html#ga527075856a5427170865a6f409298cdf">nl_dump</a> (struct <a class="el" href="structnl__dump__params.html">nl_dump_params</a> *params, const char *fmt,...)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Dump a formatted character string.  <a href="#ga527075856a5427170865a6f409298cdf"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Probability Constants</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaafb0b157f144782cae4a9a0665988e03"></a><!-- doxytag: member="utils::NL_PROB_MIN" ref="gaafb0b157f144782cae4a9a0665988e03" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__utils.html#gaafb0b157f144782cae4a9a0665988e03">NL_PROB_MIN</a>&#160;&#160;&#160;0x0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Lower probability limit. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga031d6bce1af7c5547c814bd7b16bb605"></a><!-- doxytag: member="utils::NL_PROB_MAX" ref="ga031d6bce1af7c5547c814bd7b16bb605" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__utils.html#ga031d6bce1af7c5547c814bd7b16bb605">NL_PROB_MAX</a>&#160;&#160;&#160;0xffffffff</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Upper probability limit. <br/></td></tr>
</table>
<hr/><h2>Enumeration Type Documentation</h2>
<a class="anchor" id="gacfb5566c73f0965c5241d7d49bc717e9"></a><!-- doxytag: member="types.h::nl_dump_type" ref="gacfb5566c73f0965c5241d7d49bc717e9" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group__utils.html#gacfb5566c73f0965c5241d7d49bc717e9">nl_dump_type</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="ggacfb5566c73f0965c5241d7d49bc717e9a5597887c080d5ecae358b6065a4048fd"></a><!-- doxytag: member="NL_DUMP_BRIEF" ref="ggacfb5566c73f0965c5241d7d49bc717e9a5597887c080d5ecae358b6065a4048fd" args="" -->NL_DUMP_BRIEF</em>&nbsp;</td><td>
<p>Dump object in a brief one-liner. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggacfb5566c73f0965c5241d7d49bc717e9a1445106c7af529b2c99ee289fbcd3179"></a><!-- doxytag: member="NL_DUMP_FULL" ref="ggacfb5566c73f0965c5241d7d49bc717e9a1445106c7af529b2c99ee289fbcd3179" args="" -->NL_DUMP_FULL</em>&nbsp;</td><td>
<p>Dump all attributes but no statistics. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggacfb5566c73f0965c5241d7d49bc717e9a8ebedc55094df6175b84fb1230047a65"></a><!-- doxytag: member="NL_DUMP_STATS" ref="ggacfb5566c73f0965c5241d7d49bc717e9a8ebedc55094df6175b84fb1230047a65" args="" -->NL_DUMP_STATS</em>&nbsp;</td><td>
<p>Dump all attributes including statistics. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggacfb5566c73f0965c5241d7d49bc717e9aa5b83654e99e53423c39b0d6e835d768"></a><!-- doxytag: member="NL_DUMP_XML" ref="ggacfb5566c73f0965c5241d7d49bc717e9aa5b83654e99e53423c39b0d6e835d768" args="" -->NL_DUMP_XML</em>&nbsp;</td><td>
<p>Dump all attribtes in XML format. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggacfb5566c73f0965c5241d7d49bc717e9a7178b29f7f68857970540f2d1dabbaf1"></a><!-- doxytag: member="NL_DUMP_ENV" ref="ggacfb5566c73f0965c5241d7d49bc717e9a7178b29f7f68857970540f2d1dabbaf1" args="" -->NL_DUMP_ENV</em>&nbsp;</td><td>
<p>Dump all attribtues as env variables. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggacfb5566c73f0965c5241d7d49bc717e9a0a6b9179a51fa838c1f662b6557e0dce"></a><!-- doxytag: member="NL_DUMP_EVENTS" ref="ggacfb5566c73f0965c5241d7d49bc717e9a0a6b9179a51fa838c1f662b6557e0dce" args="" -->NL_DUMP_EVENTS</em>&nbsp;</td><td>
<p>Dump event. </p>
</td></tr>
</table>
</dd>
</dl>

<p>Definition at line <a class="el" href="types_8h_source.html#l00021">21</a> of file <a class="el" href="types_8h_source.html">types.h</a>.</p>
<div class="fragment"><pre class="fragment">                  {
        <a class="code" href="group__utils.html#ggacfb5566c73f0965c5241d7d49bc717e9a5597887c080d5ecae358b6065a4048fd" title="Dump object in a brief one-liner.">NL_DUMP_BRIEF</a>,          <span class="comment">/**&lt; Dump object in a brief one-liner */</span>
        <a class="code" href="group__utils.html#ggacfb5566c73f0965c5241d7d49bc717e9a1445106c7af529b2c99ee289fbcd3179" title="Dump all attributes but no statistics.">NL_DUMP_FULL</a>,           <span class="comment">/**&lt; Dump all attributes but no statistics */</span>
        <a class="code" href="group__utils.html#ggacfb5566c73f0965c5241d7d49bc717e9a8ebedc55094df6175b84fb1230047a65" title="Dump all attributes including statistics.">NL_DUMP_STATS</a>,          <span class="comment">/**&lt; Dump all attributes including statistics */</span>
        <a class="code" href="group__utils.html#ggacfb5566c73f0965c5241d7d49bc717e9aa5b83654e99e53423c39b0d6e835d768" title="Dump all attribtes in XML format.">NL_DUMP_XML</a>,            <span class="comment">/**&lt; Dump all attribtes in XML format */</span>
        <a class="code" href="group__utils.html#ggacfb5566c73f0965c5241d7d49bc717e9a7178b29f7f68857970540f2d1dabbaf1" title="Dump all attribtues as env variables.">NL_DUMP_ENV</a>,            <span class="comment">/**&lt; Dump all attribtues as env variables */</span>
        <a class="code" href="group__utils.html#ggacfb5566c73f0965c5241d7d49bc717e9a0a6b9179a51fa838c1f662b6557e0dce" title="Dump event.">NL_DUMP_EVENTS</a>,         <span class="comment">/**&lt; Dump event */</span>
        __NL_DUMP_MAX,
};
</pre></div>
</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="ga4586cbc3086399f08e42708098ea2045"></a><!-- doxytag: member="utils.c::nl_geterror" ref="ga4586cbc3086399f08e42708098ea2045" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* nl_geterror </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>error message </dd></dl>

<p>Definition at line <a class="el" href="utils_8c_source.html#l00142">142</a> of file <a class="el" href="utils_8c_source.html">utils.c</a>.</p>

<p>Referenced by <a class="el" href="utils_8c_source.html#l00163">nl_perror()</a>.</p>
<div class="fragment"><pre class="fragment">{
        <span class="keywordflow">if</span> (errbuf)
                <span class="keywordflow">return</span> errbuf;

        <span class="keywordflow">if</span> (nlerrno)
                <span class="keywordflow">return</span> strerror(nlerrno);

        <span class="keywordflow">return</span> <span class="stringliteral">&quot;Sucess\n&quot;</span>;
}
</pre></div>
</div>
</div>
<a class="anchor" id="ga8c631e35dc822837a1e10354f96ea0b7"></a><!-- doxytag: member="utils.c::nl_perror" ref="ga8c631e35dc822837a1e10354f96ea0b7" args="(const char *s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void nl_perror </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>s</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">s</td><td>error message prefix</td></tr>
  </table>
  </dd>
</dl>
<p>Prints the error message of the call that failed last.</p>
<p>If s is not NULL and *s is not a null byte the argument string is printed, followed by a colon and a blank. Then the error message and a new-line. </p>

<p>Definition at line <a class="el" href="utils_8c_source.html#l00163">163</a> of file <a class="el" href="utils_8c_source.html">utils.c</a>.</p>

<p>References <a class="el" href="utils_8c_source.html#l00142">nl_geterror()</a>.</p>
<div class="fragment"><pre class="fragment">{
        <span class="keywordflow">if</span> (s &amp;&amp; *s)
                fprintf(stderr, <span class="stringliteral">&quot;%s: %s\n&quot;</span>, s, <a class="code" href="group__utils.html#ga4586cbc3086399f08e42708098ea2045" title="Return error message for an error code.">nl_geterror</a>());
        <span class="keywordflow">else</span>
                fprintf(stderr, <span class="stringliteral">&quot;%s\n&quot;</span>, <a class="code" href="group__utils.html#ga4586cbc3086399f08e42708098ea2045" title="Return error message for an error code.">nl_geterror</a>());
}
</pre></div>
</div>
</div>
<a class="anchor" id="ga5a280448ae9e17ff5dc7e822b9f47b11"></a><!-- doxytag: member="utils.c::nl_cancel_down_bytes" ref="ga5a280448ae9e17ff5dc7e822b9f47b11" args="(unsigned long long l, char **unit)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double nl_cancel_down_bytes </td>
          <td>(</td>
          <td class="paramtype">unsigned long long&#160;</td>
          <td class="paramname"><em>l</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char **&#160;</td>
          <td class="paramname"><em>unit</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">l</td><td>byte counter </td></tr>
    <tr><td class="paramname">unit</td><td>destination unit pointer</td></tr>
  </table>
  </dd>
</dl>
<p>Cancels down a byte counter until it reaches a reasonable unit. The chosen unit is assigned to <em>unit</em>.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>The cancelled down byte counter in the new unit. </dd></dl>

<p>Definition at line <a class="el" href="utils_8c_source.html#l00188">188</a> of file <a class="el" href="utils_8c_source.html">utils.c</a>.</p>
<div class="fragment"><pre class="fragment">{
        <span class="keywordflow">if</span> (l &gt;= 1099511627776LL) {
                *unit = <span class="stringliteral">&quot;TiB&quot;</span>;
                <span class="keywordflow">return</span> ((<span class="keywordtype">double</span>) l) / 1099511627776LL;
        } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (l &gt;= 1073741824) {
                *unit = <span class="stringliteral">&quot;GiB&quot;</span>;
                <span class="keywordflow">return</span> ((<span class="keywordtype">double</span>) l) / 1073741824;
        } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (l &gt;= 1048576) {
                *unit = <span class="stringliteral">&quot;MiB&quot;</span>;
                <span class="keywordflow">return</span> ((<span class="keywordtype">double</span>) l) / 1048576;
        } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (l &gt;= 1024) {
                *unit = <span class="stringliteral">&quot;KiB&quot;</span>;
                <span class="keywordflow">return</span> ((<span class="keywordtype">double</span>) l) / 1024;
        } <span class="keywordflow">else</span> {
                *unit = <span class="stringliteral">&quot;B&quot;</span>;
                <span class="keywordflow">return</span> (<span class="keywordtype">double</span>) l;
        }
}
</pre></div>
</div>
</div>
<a class="anchor" id="ga195db70bc2c97b1eb6f40c2d60a6f823"></a><!-- doxytag: member="utils.c::nl_cancel_down_bits" ref="ga195db70bc2c97b1eb6f40c2d60a6f823" args="(unsigned long long l, char **unit)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double nl_cancel_down_bits </td>
          <td>(</td>
          <td class="paramtype">unsigned long long&#160;</td>
          <td class="paramname"><em>l</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char **&#160;</td>
          <td class="paramname"><em>unit</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">l</td><td>bit counter </td></tr>
    <tr><td class="paramname">unit</td><td>destination unit pointer</td></tr>
  </table>
  </dd>
</dl>
<p>Cancels downa bit counter until it reaches a reasonable unit. The chosen unit is assigned to <em>unit</em>.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>The cancelled down bit counter in the new unit. </dd></dl>

<p>Definition at line <a class="el" href="utils_8c_source.html#l00218">218</a> of file <a class="el" href="utils_8c_source.html">utils.c</a>.</p>
<div class="fragment"><pre class="fragment">{
        <span class="keywordflow">if</span> (l &gt;= 1099511627776ULL) {
                *unit = <span class="stringliteral">&quot;Tbit&quot;</span>;
                <span class="keywordflow">return</span> ((<span class="keywordtype">double</span>) l) / 1099511627776ULL;
        } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (l &gt;= 1073741824) {
                *unit = <span class="stringliteral">&quot;Gbit&quot;</span>;
                <span class="keywordflow">return</span> ((<span class="keywordtype">double</span>) l) / 1073741824;
        } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (l &gt;= 1048576) {
                *unit = <span class="stringliteral">&quot;Mbit&quot;</span>;
                <span class="keywordflow">return</span> ((<span class="keywordtype">double</span>) l) / 1048576;
        } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (l &gt;= 1024) {
                *unit = <span class="stringliteral">&quot;Kbit&quot;</span>;
                <span class="keywordflow">return</span> ((<span class="keywordtype">double</span>) l) / 1024;
        } <span class="keywordflow">else</span> {
                *unit = <span class="stringliteral">&quot;bit&quot;</span>;
                <span class="keywordflow">return</span> (<span class="keywordtype">double</span>) l;
        }
                
}
</pre></div>
</div>
</div>
<a class="anchor" id="ga190dcd7725dd4f6a7e635a99a0b8b0db"></a><!-- doxytag: member="utils.c::nl_cancel_down_us" ref="ga190dcd7725dd4f6a7e635a99a0b8b0db" args="(uint32_t l, char **unit)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double nl_cancel_down_us </td>
          <td>(</td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>l</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char **&#160;</td>
          <td class="paramname"><em>unit</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">l</td><td>micro seconds </td></tr>
    <tr><td class="paramname">unit</td><td>destination unit pointer</td></tr>
  </table>
  </dd>
</dl>
<p>Cancels down a microsecond counter until it reaches a reasonable unit. The chosen unit is assigned to <em>unit</em>.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>The cancelled down microsecond in the new unit </dd></dl>

<p>Definition at line <a class="el" href="utils_8c_source.html#l00249">249</a> of file <a class="el" href="utils_8c_source.html">utils.c</a>.</p>
<div class="fragment"><pre class="fragment">{
        <span class="keywordflow">if</span> (l &gt;= 1000000) {
                *unit = <span class="stringliteral">&quot;s&quot;</span>;
                <span class="keywordflow">return</span> ((<span class="keywordtype">double</span>) l) / 1000000;
        } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (l &gt;= 1000) {
                *unit = <span class="stringliteral">&quot;ms&quot;</span>;
                <span class="keywordflow">return</span> ((<span class="keywordtype">double</span>) l) / 1000;
        } <span class="keywordflow">else</span> {
                *unit = <span class="stringliteral">&quot;us&quot;</span>;
                <span class="keywordflow">return</span> (<span class="keywordtype">double</span>) l;
        }
}
</pre></div>
</div>
</div>
<a class="anchor" id="ga1f10fc847364fc4f02624ba3b5b00954"></a><!-- doxytag: member="utils.c::nl_size2int" ref="ga1f10fc847364fc4f02624ba3b5b00954" args="(const char *str)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">long nl_size2int </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>str</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">str</td><td>size encoded as character string</td></tr>
  </table>
  </dd>
</dl>
<p>Converts the specified size as character to the corresponding number of bytes.</p>
<p>Supported formats are:</p>
<ul>
<li>b,kb/k,m/mb,gb/g for bytes</li>
<li>bit,kbit/mbit/gbit</li>
</ul>
<dl class="return"><dt><b>Returns:</b></dt><dd>The number of bytes or -1 if the string is unparseable </dd></dl>

<p>Definition at line <a class="el" href="utils_8c_source.html#l00283">283</a> of file <a class="el" href="utils_8c_source.html">utils.c</a>.</p>
<div class="fragment"><pre class="fragment">{
        <span class="keywordtype">char</span> *p;
        <span class="keywordtype">long</span> l = strtol(str, &amp;p, 0);
        <span class="keywordflow">if</span> (p == str)
                <span class="keywordflow">return</span> -1;

        <span class="keywordflow">if</span> (*p) {
                <span class="keywordflow">if</span> (!strcasecmp(p, <span class="stringliteral">&quot;kb&quot;</span>) || !strcasecmp(p, <span class="stringliteral">&quot;k&quot;</span>))
                        l *= 1024;
                <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!strcasecmp(p, <span class="stringliteral">&quot;gb&quot;</span>) || !strcasecmp(p, <span class="stringliteral">&quot;g&quot;</span>))
                        l *= 1024*1024*1024;
                <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!strcasecmp(p, <span class="stringliteral">&quot;gbit&quot;</span>))
                        l *= 1024*1024*1024/8;
                <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!strcasecmp(p, <span class="stringliteral">&quot;mb&quot;</span>) || !strcasecmp(p, <span class="stringliteral">&quot;m&quot;</span>))
                        l *= 1024*1024;
                <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!strcasecmp(p, <span class="stringliteral">&quot;mbit&quot;</span>))
                        l *= 1024*1024/8;
                <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!strcasecmp(p, <span class="stringliteral">&quot;kbit&quot;</span>))
                        l *= 1024/8;
                <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!strcasecmp(p, <span class="stringliteral">&quot;bit&quot;</span>))
                        l /= 8;
                <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strcasecmp(p, <span class="stringliteral">&quot;b&quot;</span>) != 0)
                        <span class="keywordflow">return</span> -1;
        }

        <span class="keywordflow">return</span> l;
}
</pre></div>
</div>
</div>
<a class="anchor" id="ga60e3d95f99eba0e01e0d127653e1da6b"></a><!-- doxytag: member="utils.c::nl_prob2int" ref="ga60e3d95f99eba0e01e0d127653e1da6b" args="(const char *str)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">long nl_prob2int </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>str</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">str</td><td>probability encoded as character string</td></tr>
  </table>
  </dd>
</dl>
<p>Converts the specified probability as character to the corresponding probability number.</p>
<p>Supported formats are:</p>
<ul>
<li>0.0-1.0</li>
<li>0-100%</li>
</ul>
<dl class="return"><dt><b>Returns:</b></dt><dd>The probability relative to NL_PROB_MIN and NL_PROB_MAX </dd></dl>

<p>Definition at line <a class="el" href="utils_8c_source.html#l00325">325</a> of file <a class="el" href="utils_8c_source.html">utils.c</a>.</p>

<p>References <a class="el" href="utils_8h_source.html#l00037">NL_PROB_MAX</a>.</p>
<div class="fragment"><pre class="fragment">{
        <span class="keywordtype">char</span> *p;
        <span class="keywordtype">double</span> d = strtod(str, &amp;p);

        <span class="keywordflow">if</span> (p == str)
                <span class="keywordflow">return</span> -1;

        <span class="keywordflow">if</span> (d &gt; 1.0)
                d /= 100.0f;

        <span class="keywordflow">if</span> (d &gt; 1.0f || d &lt; 0.0f)
                <span class="keywordflow">return</span> -1;

        <span class="keywordflow">if</span> (*p &amp;&amp; strcmp(p, <span class="stringliteral">&quot;%&quot;</span>) != 0)
                <span class="keywordflow">return</span> -1;

        <span class="keywordflow">return</span> rint(d * <a class="code" href="group__utils.html#ga031d6bce1af7c5547c814bd7b16bb605" title="Upper probability limit.">NL_PROB_MAX</a>);
}
</pre></div>
</div>
</div>
<a class="anchor" id="gaf630014f3b23909759921b8ef9f85d3e"></a><!-- doxytag: member="utils.c::nl_us2ticks" ref="gaf630014f3b23909759921b8ef9f85d3e" args="(uint32_t us)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint32_t nl_us2ticks </td>
          <td>(</td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>us</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">us</td><td>micro seconds </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of ticks </dd></dl>

<p>Definition at line <a class="el" href="utils_8c_source.html#l00429">429</a> of file <a class="el" href="utils_8c_source.html">utils.c</a>.</p>

<p>Referenced by <a class="el" href="netem_8c_source.html#l00481">rtnl_netem_set_delay()</a>, and <a class="el" href="netem_8c_source.html#l00517">rtnl_netem_set_jitter()</a>.</p>
<div class="fragment"><pre class="fragment">{
        <span class="keywordflow">return</span> us * ticks_per_usec;
}
</pre></div>
</div>
</div>
<a class="anchor" id="gade35baf670a48177d9469905159089e7"></a><!-- doxytag: member="utils.c::nl_ticks2us" ref="gade35baf670a48177d9469905159089e7" args="(uint32_t ticks)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint32_t nl_ticks2us </td>
          <td>(</td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>ticks</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ticks</td><td>number of ticks </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>microseconds </dd></dl>

<p>Definition at line <a class="el" href="utils_8c_source.html#l00440">440</a> of file <a class="el" href="utils_8c_source.html">utils.c</a>.</p>

<p>Referenced by <a class="el" href="netem_8c_source.html#l00500">rtnl_netem_get_delay()</a>, and <a class="el" href="netem_8c_source.html#l00536">rtnl_netem_get_jitter()</a>.</p>
<div class="fragment"><pre class="fragment">{
        <span class="keywordflow">return</span> ticks / ticks_per_usec;
}
</pre></div>
</div>
</div>
<a class="anchor" id="gace816c5bf9a61cd74bbb0444ffa7029f"></a><!-- doxytag: member="utils.c::nl_msec2str" ref="gace816c5bf9a61cd74bbb0444ffa7029f" args="(uint64_t msec, char *buf, size_t len)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* nl_msec2str </td>
          <td>(</td>
          <td class="paramtype">uint64_t&#160;</td>
          <td class="paramname"><em>msec</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>len</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">msec</td><td>number of milliseconds </td></tr>
    <tr><td class="paramname">buf</td><td>destination buffer </td></tr>
    <tr><td class="paramname">len</td><td>buffer length</td></tr>
  </table>
  </dd>
</dl>
<p>Converts milliseconds to a character string split up in days, hours, minutes, seconds, and milliseconds and stores it in the specified destination buffer.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>The destination buffer. </dd></dl>

<p>Definition at line <a class="el" href="utils_8c_source.html#l00478">478</a> of file <a class="el" href="utils_8c_source.html">utils.c</a>.</p>
<div class="fragment"><pre class="fragment">{
        <span class="keywordtype">int</span> i, split[5];
        <span class="keywordtype">char</span> *units[] = {<span class="stringliteral">&quot;d&quot;</span>, <span class="stringliteral">&quot;h&quot;</span>, <span class="stringliteral">&quot;m&quot;</span>, <span class="stringliteral">&quot;s&quot;</span>, <span class="stringliteral">&quot;msec&quot;</span>};

<span class="preprocessor">#define _SPLIT(idx, unit) if ((split[idx] = msec / unit) &gt; 0) msec %= unit</span>
<span class="preprocessor"></span>        _SPLIT(0, 86400000);    <span class="comment">/* days */</span>
        _SPLIT(1, 3600000);     <span class="comment">/* hours */</span>
        _SPLIT(2, 60000);       <span class="comment">/* minutes */</span>
        _SPLIT(3, 1000);        <span class="comment">/* seconds */</span>
<span class="preprocessor">#undef  _SPLIT</span>
<span class="preprocessor"></span>        split[4] = msec;

        memset(buf, 0, len);

        <span class="keywordflow">for</span> (i = 0; i &lt; ARRAY_SIZE(split); i++) {
                <span class="keywordflow">if</span> (split[i] &gt; 0) {
                        <span class="keywordtype">char</span> t[64];
                        snprintf(t, <span class="keyword">sizeof</span>(t), <span class="stringliteral">&quot;%s%d%s&quot;</span>,
                                 strlen(buf) ? <span class="stringliteral">&quot; &quot;</span> : <span class="stringliteral">&quot;&quot;</span>, split[i], units[i]);
                        strncat(buf, t, len - strlen(buf) - 1);
                }
        }

        <span class="keywordflow">return</span> buf;
}
</pre></div>
</div>
</div>
<a class="anchor" id="ga8d036ba05aa233203e8d7fb79f925c2c"></a><!-- doxytag: member="utils.c::nl_new_line" ref="ga8d036ba05aa233203e8d7fb79f925c2c" args="(struct nl_dump_params *params, int line)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void nl_new_line </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structnl__dump__params.html">nl_dump_params</a> *&#160;</td>
          <td class="paramname"><em>params</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>line</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">params</td><td>Dumping parameters </td></tr>
    <tr><td class="paramname">line</td><td>Number of lines dumped already.</td></tr>
  </table>
  </dd>
</dl>
<p>This function must be called before dumping any onto a new line. It will ensure proper prefixing as specified by the dumping parameters.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>This function will NOT dump any newlines itself </dd></dl>

<p>Definition at line <a class="el" href="utils_8c_source.html#l00725">725</a> of file <a class="el" href="utils_8c_source.html">utils.c</a>.</p>

<p>References <a class="el" href="types_8h_source.html#l00091">nl_dump_params::dp_buf</a>, <a class="el" href="types_8h_source.html#l00096">nl_dump_params::dp_buflen</a>, <a class="el" href="types_8h_source.html#l00086">nl_dump_params::dp_fd</a>, <a class="el" href="types_8h_source.html#l00076">nl_dump_params::dp_nl_cb</a>, and <a class="el" href="types_8h_source.html#l00047">nl_dump_params::dp_prefix</a>.</p>
<div class="fragment"><pre class="fragment">{
        <span class="keywordflow">if</span> (params-&gt;<a class="code" href="structnl__dump__params.html#a6fd1500e450689a268d89b1ee20311cc" title="Specifies the number of whitespaces to be put in front of every new line (indentation).">dp_prefix</a>) {
                <span class="keywordtype">int</span> i;
                <span class="keywordflow">for</span> (i = 0; i &lt; params-&gt;<a class="code" href="structnl__dump__params.html#a6fd1500e450689a268d89b1ee20311cc" title="Specifies the number of whitespaces to be put in front of every new line (indentation).">dp_prefix</a>; i++) {
                        <span class="keywordflow">if</span> (params-&gt;<a class="code" href="structnl__dump__params.html#afe6d9b7154f8f6a4fa9469e859f1f652" title="File descriptor the dumping output should go to.">dp_fd</a>)
                                fprintf(params-&gt;<a class="code" href="structnl__dump__params.html#afe6d9b7154f8f6a4fa9469e859f1f652" title="File descriptor the dumping output should go to.">dp_fd</a>, <span class="stringliteral">&quot; &quot;</span>);
                        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (params-&gt;<a class="code" href="structnl__dump__params.html#ad069c751442fcf74c9f1bf25f0f5af92" title="Alternatively the output may be redirected into a buffer.">dp_buf</a>)
                                strncat(params-&gt;<a class="code" href="structnl__dump__params.html#ad069c751442fcf74c9f1bf25f0f5af92" title="Alternatively the output may be redirected into a buffer.">dp_buf</a>, <span class="stringliteral">&quot; &quot;</span>,
                                        params-&gt;<a class="code" href="structnl__dump__params.html#a63a511bbc4d12484ada704dcfc0818c0" title="Length of the buffer dp_buf.">dp_buflen</a> -
                                        <span class="keyword">sizeof</span>(params-&gt;<a class="code" href="structnl__dump__params.html#ad069c751442fcf74c9f1bf25f0f5af92" title="Alternatively the output may be redirected into a buffer.">dp_buf</a>) - 1);
                }
        }

        <span class="keywordflow">if</span> (params-&gt;<a class="code" href="structnl__dump__params.html#abdd722478abe803079e06cfb2a62c6a8" title="A callback invoked for every new line, can be used to customize the indentation.">dp_nl_cb</a>)
                params-&gt;<a class="code" href="structnl__dump__params.html#abdd722478abe803079e06cfb2a62c6a8" title="A callback invoked for every new line, can be used to customize the indentation.">dp_nl_cb</a>(params, line);
}
</pre></div>
</div>
</div>
<a class="anchor" id="ga527075856a5427170865a6f409298cdf"></a><!-- doxytag: member="utils.c::nl_dump" ref="ga527075856a5427170865a6f409298cdf" args="(struct nl_dump_params *params, const char *fmt,...)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void nl_dump </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structnl__dump__params.html">nl_dump_params</a> *&#160;</td>
          <td class="paramname"><em>params</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>fmt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>...</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">params</td><td>Dumping parameters </td></tr>
    <tr><td class="paramname">fmt</td><td>printf style formatting string </td></tr>
    <tr><td class="paramname">...</td><td>Arguments to formatting string</td></tr>
  </table>
  </dd>
</dl>
<p>Dumps a printf style formatting string to the output device as specified by the dumping parameters. </p>

<p>Definition at line <a class="el" href="utils_8c_source.html#l00752">752</a> of file <a class="el" href="utils_8c_source.html">utils.c</a>.</p>
<div class="fragment"><pre class="fragment">{
        va_list args;

        va_start(args, fmt);
        __dp_dump(params, fmt, args);
        va_end(args);
}
</pre></div>
</div>
</div>
<hr/><h2>Variable Documentation</h2>
<a class="anchor" id="ga1fcae8b3332ad15250a8843266ee847a"></a><!-- doxytag: member="utils.c::nl_debug_dp" ref="ga1fcae8b3332ad15250a8843266ee847a" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structnl__dump__params.html">nl_dump_params</a> nl_debug_dp</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Initial value:</b><div class="fragment"><pre class="fragment"> {
        .dp_type = <a class="code" href="group__utils.html#ggacfb5566c73f0965c5241d7d49bc717e9a1445106c7af529b2c99ee289fbcd3179" title="Dump all attributes but no statistics.">NL_DUMP_FULL</a>,
}
</pre></div>
<p>Definition at line <a class="el" href="utils_8c_source.html#l00027">27</a> of file <a class="el" href="utils_8c_source.html">utils.c</a>.</p>

</div>
</div>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Mar 21 2011 for libnl by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.3 </small></address>
</body>
</html>