Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 550bbe86d83a7870fdddc73c68e5d2b2 > files > 215

libunbound-devel-1.3.4-1mdv2010.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>unbound: util/net_help.c File Reference</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.5.9 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;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 class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="dir_4b581c88b01efb1cf178857b56f0f2fb.html">util</a>
  </div>
</div>
<div class="contents">
<h1>net_help.c File Reference</h1>Implementation of <a class="el" href="net__help_8h.html" title="This file contains functions to perform network related tasks.">net_help.h</a>.  
<a href="#_details">More...</a>
<p>
<code>#include &quot;config.h&quot;</code><br>
<code>#include &quot;<a class="el" href="net__help_8h.html">util/net_help.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="log_8h.html">util/log.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="dname_8h.html">util/data/dname.h</a>&quot;</code><br>
<code>#include &lt;fcntl.h&gt;</code><br>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="18c493521bcee75f23acf723225b3d55"></a><!-- doxytag: member="net_help.c::MAX_ADDR_STRLEN" ref="18c493521bcee75f23acf723225b3d55" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="net__help_8c.html#18c493521bcee75f23acf723225b3d55">MAX_ADDR_STRLEN</a>&nbsp;&nbsp;&nbsp;128</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">max length of an IP address (the address portion) that we allow <br></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="net__help_8c.html#e316693c20c15f409d79e67b3c100baa">str_is_ip6</a> (const char *str)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">See if string is ip4 or ip6.  <a href="#e316693c20c15f409d79e67b3c100baa"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="net__help_8c.html#04d950b1332f46afea8ddce2f2dd0442">write_socket</a> (int s, const void *buf, size_t size)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Write (blocking) to a nonblocking socket.  <a href="#04d950b1332f46afea8ddce2f2dd0442"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="net__help_8c.html#ab52a4484d2ae202b6699447682983d8">fd_set_nonblock</a> (int s)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set fd nonblocking.  <a href="#ab52a4484d2ae202b6699447682983d8"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="net__help_8c.html#1e5a79ba801cb69b5409d7024c74bbdd">fd_set_block</a> (int s)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set fd (back to) blocking.  <a href="#1e5a79ba801cb69b5409d7024c74bbdd"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="net__help_8c.html#b7e3ba5e0a9308467e24d29bb92b2804">is_pow2</a> (size_t num)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">See if number is a power of 2.  <a href="#b7e3ba5e0a9308467e24d29bb92b2804"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="net__help_8c.html#0e6f2f91aee65479905f3064f5a3e097">memdup</a> (void *data, size_t len)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Allocate memory and copy over contents.  <a href="#0e6f2f91aee65479905f3064f5a3e097"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="net__help_8c.html#5e6c962c469d7f39c4393d0ad729e7f4">log_addr</a> (enum <a class="el" href="log_8h.html#a6e4bbdddab8be2b3694da9631d23979">verbosity_value</a> v, const char *str, struct sockaddr_storage *addr, socklen_t addrlen)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Prints the sockaddr in readable format with log_info.  <a href="#5e6c962c469d7f39c4393d0ad729e7f4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="net__help_8c.html#1f1fc522f099064b1a019b8fbe2deb90">extstrtoaddr</a> (const char *str, struct sockaddr_storage *addr, socklen_t *addrlen)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert address string, with "@port" appendix, to sockaddr.  <a href="#1f1fc522f099064b1a019b8fbe2deb90"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="net__help_8c.html#f6edf3f0002a3c757ff5c33dedc55754">ipstrtoaddr</a> (const char *ip, int port, struct sockaddr_storage *addr, socklen_t *addrlen)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert ip address string and port to sockaddr.  <a href="#f6edf3f0002a3c757ff5c33dedc55754"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="net__help_8c.html#6053a2d15c7465450afc5dbbbef48f36">netblockstrtoaddr</a> (const char *str, int port, struct sockaddr_storage *addr, socklen_t *addrlen, int *net)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert ip netblock (ip/netsize) string and port to sockaddr.  <a href="#6053a2d15c7465450afc5dbbbef48f36"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="net__help_8c.html#067c6a7fa92e847b309b013a06a35ba6">log_nametypeclass</a> (enum <a class="el" href="log_8h.html#a6e4bbdddab8be2b3694da9631d23979">verbosity_value</a> v, const char *str, uint8_t *name, uint16_t type, uint16_t dclass)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Print string with neat domain name, type and class.  <a href="#067c6a7fa92e847b309b013a06a35ba6"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="net__help_8c.html#f02f35984cb2c7dc08853d8091c1b3b9">log_name_addr</a> (enum <a class="el" href="log_8h.html#a6e4bbdddab8be2b3694da9631d23979">verbosity_value</a> v, const char *str, uint8_t *zone, struct sockaddr_storage *addr, socklen_t addrlen)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Prints zone name and sockaddr in readable format with log_info.  <a href="#f02f35984cb2c7dc08853d8091c1b3b9"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="net__help_8c.html#705dca70af35fb9a48fab38bb4c6cc67">sockaddr_cmp</a> (struct sockaddr_storage *addr1, socklen_t len1, struct sockaddr_storage *addr2, socklen_t len2)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Compare two sockaddrs.  <a href="#705dca70af35fb9a48fab38bb4c6cc67"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="net__help_8c.html#6be1ea828bc8a22a1ce027781c090b9d">sockaddr_cmp_addr</a> (struct sockaddr_storage *addr1, socklen_t len1, struct sockaddr_storage *addr2, socklen_t len2)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Compare two sockaddrs.  <a href="#6be1ea828bc8a22a1ce027781c090b9d"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="net__help_8c.html#588bd675080585862a257150a48f6d18">addr_is_ip6</a> (struct sockaddr_storage *addr, socklen_t len)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Checkout address family.  <a href="#588bd675080585862a257150a48f6d18"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="net__help_8c.html#306dfdb4efee7f02cc54115bddbc151c">addr_mask</a> (struct sockaddr_storage *addr, socklen_t len, int net)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Make sure the sockaddr ends in zeroes.  <a href="#306dfdb4efee7f02cc54115bddbc151c"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="net__help_8c.html#9aecd2e29f483597862f806ffa787cff">addr_in_common</a> (struct sockaddr_storage *addr1, int net1, struct sockaddr_storage *addr2, int net2, socklen_t addrlen)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">See how many bits are shared, equal, between two addrs.  <a href="#9aecd2e29f483597862f806ffa787cff"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="net__help_8c.html#3a7c0bb3cb2387a5f427450d58696d27">addr_to_str</a> (struct sockaddr_storage *addr, socklen_t addrlen, char *buf, size_t len)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Put address into string, works for IPv4 and IPv6.  <a href="#3a7c0bb3cb2387a5f427450d58696d27"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="net__help_8c.html#554b4bbd395c2170718dd8a9f197455f">addr_is_ip4mapped</a> (struct sockaddr_storage *addr, socklen_t addrlen)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">See if sockaddr is an ipv6 mapped ipv4 address, ffff:0.0.0.0.  <a href="#554b4bbd395c2170718dd8a9f197455f"></a><br></td></tr>
</table>
<hr><h2>Detailed Description</h2>
Implementation of <a class="el" href="net__help_8h.html" title="This file contains functions to perform network related tasks.">net_help.h</a>. 
<p>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="e316693c20c15f409d79e67b3c100baa"></a><!-- doxytag: member="net_help.c::str_is_ip6" ref="e316693c20c15f409d79e67b3c100baa" args="(const char *str)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int str_is_ip6           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>str</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
See if string is ip4 or ip6. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>str,:</em>&nbsp;</td><td>IP specification. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>: true if string addr is an ip6 specced address. </dd></dl>

<p>Referenced by <a class="el" href="outside__network_8c_source.html#l00383">calc_num46()</a>, <a class="el" href="net__help_8c_source.html#l00203">ipstrtoaddr()</a>, <a class="el" href="listen__dnsport_8c_source.html#l00633">listening_ports_open()</a>, <a class="el" href="unitmain_8c_source.html#l00090">net_test()</a>, <a class="el" href="net__help_8c_source.html#l00231">netblockstrtoaddr()</a>, <a class="el" href="outside__network_8c_source.html#l00468">outside_network_create()</a>, <a class="el" href="delayer_8c_source.html#l00985">service()</a>, and <a class="el" href="libunbound_8c_source.html#l00831">ub_ctx_hosts()</a>.</p>

</div>
</div><p>
<a class="anchor" name="04d950b1332f46afea8ddce2f2dd0442"></a><!-- doxytag: member="net_help.c::write_socket" ref="04d950b1332f46afea8ddce2f2dd0442" args="(int s, const void *buf, size_t size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int write_socket           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>s</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Write (blocking) to a nonblocking socket. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>s,:</em>&nbsp;</td><td>fd. Is set to be nonblocking at exit. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buf,:</em>&nbsp;</td><td>data buffer. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size,:</em>&nbsp;</td><td>length of data to send. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>: 0 on error. errno is set. </dd></dl>

<p>References <a class="el" href="net__help_8c_source.html#l00107">fd_set_block()</a>, and <a class="el" href="net__help_8c_source.html#l00083">fd_set_nonblock()</a>.</p>

</div>
</div><p>
<a class="anchor" name="ab52a4484d2ae202b6699447682983d8"></a><!-- doxytag: member="net_help.c::fd_set_nonblock" ref="ab52a4484d2ae202b6699447682983d8" args="(int s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int fd_set_nonblock           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>s</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set fd nonblocking. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>s,:</em>&nbsp;</td><td>file descriptor. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>: 0 on error (error is printed to log). </dd></dl>

<p>References <a class="el" href="log_8c_source.html#l00241">log_err()</a>.</p>

<p>Referenced by <a class="el" href="netevent_8c_source.html#l00594">comm_point_perform_accept()</a>, <a class="el" href="listen__dnsport_8c_source.html#l00229">create_tcp_accept_sock()</a>, <a class="el" href="listen__dnsport_8c_source.html#l00091">create_udp_sock()</a>, <a class="el" href="delayer_8c_source.html#l00434">find_create_proxy()</a>, <a class="el" href="outside__network_8c_source.html#l00132">outnet_tcp_take_into_use()</a>, <a class="el" href="delayer_8c_source.html#l00985">service()</a>, <a class="el" href="delayer_8c_source.html#l00559">service_tcp_listen()</a>, <a class="el" href="tube_8c_source.html#l00051">tube_create()</a>, <a class="el" href="tube_8c_source.html#l00317">tube_read_msg()</a>, <a class="el" href="tube_8c_source.html#l00281">tube_write_msg()</a>, and <a class="el" href="net__help_8c_source.html#l00059">write_socket()</a>.</p>

</div>
</div><p>
<a class="anchor" name="1e5a79ba801cb69b5409d7024c74bbdd"></a><!-- doxytag: member="net_help.c::fd_set_block" ref="1e5a79ba801cb69b5409d7024c74bbdd" args="(int s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int fd_set_block           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>s</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set fd (back to) blocking. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>s,:</em>&nbsp;</td><td>file descriptor. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>: 0 on error (error is printed to log). </dd></dl>

<p>References <a class="el" href="log_8c_source.html#l00241">log_err()</a>.</p>

<p>Referenced by <a class="el" href="remote_8c_source.html#l01577">handle_req()</a>, <a class="el" href="tube_8c_source.html#l00317">tube_read_msg()</a>, <a class="el" href="tube_8c_source.html#l00281">tube_write_msg()</a>, and <a class="el" href="net__help_8c_source.html#l00059">write_socket()</a>.</p>

</div>
</div><p>
<a class="anchor" name="b7e3ba5e0a9308467e24d29bb92b2804"></a><!-- doxytag: member="net_help.c::is_pow2" ref="b7e3ba5e0a9308467e24d29bb92b2804" args="(size_t num)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int is_pow2           </td>
          <td>(</td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>num</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
See if number is a power of 2. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>num,:</em>&nbsp;</td><td>the value. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>: true if the number is a power of 2. </dd></dl>

<p>Referenced by <a class="el" href="unitmain_8c_source.html#l00090">net_test()</a>.</p>

</div>
</div><p>
<a class="anchor" name="0e6f2f91aee65479905f3064f5a3e097"></a><!-- doxytag: member="net_help.c::memdup" ref="0e6f2f91aee65479905f3064f5a3e097" args="(void *data, size_t len)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* memdup           </td>
          <td>(</td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Allocate memory and copy over contents. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>data,:</em>&nbsp;</td><td>what to copy over. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>len,:</em>&nbsp;</td><td>length of data. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>: NULL on malloc failure, or newly malloced data. </dd></dl>

<p>Referenced by <a class="el" href="libworker_8c_source.html#l00540">add_bg_result()</a>, <a class="el" href="context_8c_source.html#l00309">context_deserialize_answer()</a>, <a class="el" href="dns_8c_source.html#l00668">dns_cache_store()</a>, <a class="el" href="libworker_8c_source.html#l00374">fill_res()</a>, <a class="el" href="localzone_8c_source.html#l00225">get_rr_content()</a>, <a class="el" href="localzone_8c_source.html#l00264">get_rr_nameclass()</a>, <a class="el" href="infra_8c_source.html#l00348">infra_set_lame()</a>, <a class="el" href="val__kentry_8c_source.html#l00136">key_entry_copy()</a>, <a class="el" href="libworker_8c_source.html#l00439">libworker_fillup_fg()</a>, <a class="el" href="localzone_8c_source.html#l00740">lz_setup_implicit()</a>, <a class="el" href="cachedump_8c_source.html#l00458">move_into_cache()</a>, <a class="el" href="val__neg_8c_source.html#l00739">neg_insert_data()</a>, <a class="el" href="val__neg_8c_source.html#l00593">neg_setup_data_node()</a>, <a class="el" href="val__neg_8c_source.html#l00440">neg_setup_zone_node()</a>, <a class="el" href="remote_8c_source.html#l00898">parse_arg_name()</a>, <a class="el" href="localzone_8c_source.html#l00124">parse_dname()</a>, <a class="el" href="outside__network_8c_source.html#l00902">pending_udp_query()</a>, <a class="el" href="perf_8c_source.html#l00525">qlist_add_line()</a>, <a class="el" href="msgreply_8c_source.html#l00617">repinfo_copy_rrsets()</a>, <a class="el" href="outside__network_8c_source.html#l01308">serviced_callbacks()</a>, <a class="el" href="outside__network_8c_source.html#l01072">serviced_create()</a>, <a class="el" href="outside__network_8c_source.html#l00449">setup_if()</a>, <a class="el" href="delayer_8c_source.html#l00634">tcp_relay_read()</a>, <a class="el" href="worker_8c_source.html#l00944">worker_create()</a>, and <a class="el" href="streamtcp_8c_source.html#l00099">write_q()</a>.</p>

</div>
</div><p>
<a class="anchor" name="5e6c962c469d7f39c4393d0ad729e7f4"></a><!-- doxytag: member="net_help.c::log_addr" ref="5e6c962c469d7f39c4393d0ad729e7f4" args="(enum verbosity_value v, const char *str, struct sockaddr_storage *addr, socklen_t addrlen)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void log_addr           </td>
          <td>(</td>
          <td class="paramtype">enum <a class="el" href="log_8h.html#a6e4bbdddab8be2b3694da9631d23979">verbosity_value</a>&nbsp;</td>
          <td class="paramname"> <em>v</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>str</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>addr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">socklen_t&nbsp;</td>
          <td class="paramname"> <em>addrlen</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Prints the sockaddr in readable format with log_info. 
<p>
Debug helper. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>v,:</em>&nbsp;</td><td>at what verbosity level to print this. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>str,:</em>&nbsp;</td><td>descriptive string printed with it. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addr,:</em>&nbsp;</td><td>the sockaddr to print. Can be ip4 or ip6. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addrlen,:</em>&nbsp;</td><td>length of addr. </td></tr>
  </table>
</dl>

<p>References <a class="el" href="ldns-testpkts_8c.html#a557e5b23b2833d7c1ec0415a1bdd2b1">verbose()</a>, and <a class="el" href="log_8c_source.html#l00062">verbosity</a>.</p>

<p>Referenced by <a class="el" href="netevent_8c_source.html#l00594">comm_point_perform_accept()</a>, <a class="el" href="netevent_8c_source.html#l00239">comm_point_send_udp_msg()</a>, <a class="el" href="netevent_8c_source.html#l00351">comm_point_send_udp_msg_if()</a>, <a class="el" href="netevent_8c_source.html#l00721">comm_point_tcp_handle_read()</a>, <a class="el" href="netevent_8c_source.html#l00819">comm_point_tcp_handle_write()</a>, <a class="el" href="unbound-control_8c_source.html#l00136">contact_server()</a>, <a class="el" href="iter__delegpt_8c_source.html#l00226">delegpt_log()</a>, <a class="el" href="delayer_8c_source.html#l00382">do_proxy()</a>, <a class="el" href="iter__utils_8c_source.html#l00169">iter_filter_unsuitable()</a>, <a class="el" href="outside__network_8c_source.html#l00227">outnet_tcp_cb()</a>, <a class="el" href="outside__network_8c_source.html#l00132">outnet_tcp_take_into_use()</a>, <a class="el" href="outside__network_8c_source.html#l00303">outnet_udp_cb()</a>, <a class="el" href="fake__event_8c_source.html#l00184">pending_find_match()</a>, <a class="el" href="iterator_8c_source.html#l01249">processQueryTargets()</a>, <a class="el" href="remote_8c_source.html#l00372">remote_accept_callback()</a>, <a class="el" href="fake__event_8c_source.html#l00515">run_scenario()</a>, <a class="el" href="delayer_8c_source.html#l00483">service_recv()</a>, <a class="el" href="delayer_8c_source.html#l00348">service_send()</a>, <a class="el" href="delayer_8c_source.html#l00559">service_tcp_listen()</a>, <a class="el" href="delayer_8c_source.html#l00735">service_tcp_relay()</a>, <a class="el" href="outside__network_8c_source.html#l01308">serviced_callbacks()</a>, <a class="el" href="outside__network_8c_source.html#l01389">serviced_tcp_callback()</a>, <a class="el" href="outside__network_8c_source.html#l01441">serviced_udp_callback()</a>, <a class="el" href="delayer_8c_source.html#l00525">tcp_proxy_delete()</a>, and <a class="el" href="worker_8c_source.html#l00681">worker_handle_request()</a>.</p>

</div>
</div><p>
<a class="anchor" name="1f1fc522f099064b1a019b8fbe2deb90"></a><!-- doxytag: member="net_help.c::extstrtoaddr" ref="1f1fc522f099064b1a019b8fbe2deb90" args="(const char *str, struct sockaddr_storage *addr, socklen_t *addrlen)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int extstrtoaddr           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>str</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>addr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">socklen_t *&nbsp;</td>
          <td class="paramname"> <em>addrlen</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Convert address string, with "@port" appendix, to sockaddr. 
<p>
Uses DNS port by default. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>str,:</em>&nbsp;</td><td>the string </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addr,:</em>&nbsp;</td><td>where to store sockaddr. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addrlen,:</em>&nbsp;</td><td>length of stored sockaddr is returned. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on error. </dd></dl>

<p>References <a class="el" href="net__help_8c_source.html#l00203">ipstrtoaddr()</a>, and <a class="el" href="net__help_8c_source.html#l00047">MAX_ADDR_STRLEN</a>.</p>

<p>Referenced by <a class="el" href="iter__hints_8c_source.html#l00077">ah()</a>, <a class="el" href="unbound-control_8c_source.html#l00136">contact_server()</a>, <a class="el" href="perf_8c_source.html#l00575">main()</a>, <a class="el" href="streamtcp_8c_source.html#l00065">open_svr()</a>, <a class="el" href="remote_8c_source.html#l01259">parse_delegpt()</a>, <a class="el" href="iter__fwd_8c_source.html#l00202">read_fwds_addr()</a>, <a class="el" href="iter__hints_8c_source.html#l00215">read_stubs_addr()</a>, <a class="el" href="replay_8c_source.html#l00188">replay_moment_read()</a>, <a class="el" href="replay_8c_source.html#l00114">replay_range_read()</a>, <a class="el" href="delayer_8c_source.html#l00985">service()</a>, <a class="el" href="libunbound_8c_source.html#l00712">ub_ctx_set_fwd()</a>, and <a class="el" href="unbound-checkconf_8c_source.html#l00245">warn_hosts()</a>.</p>

</div>
</div><p>
<a class="anchor" name="f6edf3f0002a3c757ff5c33dedc55754"></a><!-- doxytag: member="net_help.c::ipstrtoaddr" ref="f6edf3f0002a3c757ff5c33dedc55754" args="(const char *ip, int port, struct sockaddr_storage *addr, socklen_t *addrlen)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ipstrtoaddr           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>ip</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>port</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>addr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">socklen_t *&nbsp;</td>
          <td class="paramname"> <em>addrlen</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Convert ip address string and port to sockaddr. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ip,:</em>&nbsp;</td><td>ip4 or ip6 address string. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>port,:</em>&nbsp;</td><td>port number, host format. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addr,:</em>&nbsp;</td><td>where to store sockaddr. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addrlen,:</em>&nbsp;</td><td>length of stored sockaddr is returned. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on error. </dd></dl>

<p>References <a class="el" href="net__help_8c_source.html#l00051">str_is_ip6()</a>.</p>

<p>Referenced by <a class="el" href="config__file_8c_source.html#l00999">cfg_ptr_reverse()</a>, <a class="el" href="unbound-control_8c_source.html#l00136">contact_server()</a>, <a class="el" href="net__help_8c_source.html#l00180">extstrtoaddr()</a>, <a class="el" href="unitmain_8c_source.html#l00333">infra_test()</a>, <a class="el" href="unbound-checkconf_8c_source.html#l00267">interfacechecks()</a>, <a class="el" href="unitmain_8c_source.html#l00090">net_test()</a>, <a class="el" href="net__help_8c_source.html#l00231">netblockstrtoaddr()</a>, <a class="el" href="delayer_8c_source.html#l00985">service()</a>, and <a class="el" href="outside__network_8c_source.html#l00449">setup_if()</a>.</p>

</div>
</div><p>
<a class="anchor" name="6053a2d15c7465450afc5dbbbef48f36"></a><!-- doxytag: member="net_help.c::netblockstrtoaddr" ref="6053a2d15c7465450afc5dbbbef48f36" args="(const char *str, int port, struct sockaddr_storage *addr, socklen_t *addrlen, int *net)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int netblockstrtoaddr           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>ip</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>port</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>addr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">socklen_t *&nbsp;</td>
          <td class="paramname"> <em>addrlen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&nbsp;</td>
          <td class="paramname"> <em>net</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Convert ip netblock (ip/netsize) string and port to sockaddr. 
<p>
*SLOW*, does a malloc internally to avoid writing over 'ip' string. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ip,:</em>&nbsp;</td><td>ip4 or ip6 address string. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>port,:</em>&nbsp;</td><td>port number, host format. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addr,:</em>&nbsp;</td><td>where to store sockaddr. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addrlen,:</em>&nbsp;</td><td>length of stored sockaddr is returned. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>net,:</em>&nbsp;</td><td>netblock size is returned. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on error. </dd></dl>

<p>References <a class="el" href="net__help_8c_source.html#l00410">addr_mask()</a>, <a class="el" href="net__help_8c_source.html#l00203">ipstrtoaddr()</a>, <a class="el" href="log_8c_source.html#l00241">log_err()</a>, and <a class="el" href="net__help_8c_source.html#l00051">str_is_ip6()</a>.</p>

<p>Referenced by <a class="el" href="acl__list_8c_source.html#l00093">acl_list_str_cfg()</a>, <a class="el" href="unbound-checkconf_8c_source.html#l00301">aclchecks()</a>, <a class="el" href="iter__donotq_8c_source.html#l00092">donotq_str_cfg()</a>, and <a class="el" href="iter__priv_8c_source.html#l00076">read_addrs()</a>.</p>

</div>
</div><p>
<a class="anchor" name="067c6a7fa92e847b309b013a06a35ba6"></a><!-- doxytag: member="net_help.c::log_nametypeclass" ref="067c6a7fa92e847b309b013a06a35ba6" args="(enum verbosity_value v, const char *str, uint8_t *name, uint16_t type, uint16_t dclass)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void log_nametypeclass           </td>
          <td>(</td>
          <td class="paramtype">enum <a class="el" href="log_8h.html#a6e4bbdddab8be2b3694da9631d23979">verbosity_value</a>&nbsp;</td>
          <td class="paramname"> <em>v</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>str</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint16_t&nbsp;</td>
          <td class="paramname"> <em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint16_t&nbsp;</td>
          <td class="paramname"> <em>dclass</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Print string with neat domain name, type and class. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>v,:</em>&nbsp;</td><td>at what verbosity level to print this. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>str,:</em>&nbsp;</td><td>string of message. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name,:</em>&nbsp;</td><td>domain name uncompressed wireformat. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>type,:</em>&nbsp;</td><td>host format RR type. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dclass,:</em>&nbsp;</td><td>host format RR class. </td></tr>
  </table>
</dl>

<p>References <a class="el" href="dname_8c_source.html#l00526">dname_str()</a>, <a class="el" href="log_8c_source.html#l00228">log_info()</a>, and <a class="el" href="log_8c_source.html#l00062">verbosity</a>.</p>

<p>Referenced by <a class="el" href="unitneg_8c_source.html#l00192">add_item()</a>, <a class="el" href="val__anchor_8c_source.html#l00259">anchor_store_new_rr()</a>, <a class="el" href="val__anchor_8c_source.html#l00886">anchors_assemble_rrsets()</a>, <a class="el" href="dns_8c_source.html#l00222">cache_fill_missing()</a>, <a class="el" href="unitneg_8c_source.html#l00425">check_zone_invariants()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l01373">dnskey_verify_rrset_sig()</a>, <a class="el" href="iterator_8c_source.html#l00687">generate_a_aaaa_check()</a>, <a class="el" href="iterator_8c_source.html#l00739">generate_ns_check()</a>, <a class="el" href="iterator_8c_source.html#l01125">generate_target_query()</a>, <a class="el" href="unitneg_8c_source.html#l00112">get_random_data()</a>, <a class="el" href="iter__utils_8c_source.html#l00417">iter_mark_cycle_targets()</a>, <a class="el" href="localzone_8c_source.html#l00929">local_zone_out()</a>, <a class="el" href="localzone_8c_source.html#l00942">local_zones_print()</a>, <a class="el" href="msgreply_8c_source.html#l00788">log_query_info()</a>, <a class="el" href="localzone_8c_source.html#l00740">lz_setup_implicit()</a>, <a class="el" href="mesh_8c_source.html#l00234">mesh_make_new_space()</a>, <a class="el" href="val__neg_8c_source.html#l00739">neg_insert_data()</a>, <a class="el" href="val__nsec3_8c_source.html#l01012">nsec3_do_prove_nameerror()</a>, <a class="el" href="val__nsec3_8c_source.html#l00937">nsec3_prove_closest_encloser()</a>, <a class="el" href="val__nsec3_8c_source.html#l01045">nsec3_prove_nameerror()</a>, <a class="el" href="fake__event_8c_source.html#l00861">outnet_serviced_query()</a>, <a class="el" href="iterator_8c_source.html#l00600">prime_stub()</a>, <a class="el" href="validator_8c_source.html#l02045">primeResponseToKE()</a>, <a class="el" href="validator_8c_source.html#l01837">processDLVLookup()</a>, <a class="el" href="validator_8c_source.html#l01319">processFindKey()</a>, <a class="el" href="validator_8c_source.html#l01158">processInit()</a>, <a class="el" href="iterator_8c_source.html#l01748">processPrimeResponse()</a>, <a class="el" href="validator_8c_source.html#l01442">processValidate()</a>, <a class="el" href="unitneg_8c_source.html#l00240">remove_item()</a>, <a class="el" href="iter__scrub_8c_source.html#l00062">remove_rrset()</a>, <a class="el" href="iter__scrub_8c_source.html#l00668">scrub_message()</a>, <a class="el" href="val__utils_8c_source.html#l00650">val_check_nonsecure()</a>, <a class="el" href="validator_8c_source.html#l01605">val_dlv_init()</a>, <a class="el" href="val__neg_8c_source.html#l01041">val_neg_addreferral()</a>, <a class="el" href="val__neg_8c_source.html#l00833">val_neg_addreply()</a>, <a class="el" href="val__neg_8c_source.html#l00913">val_neg_dlvlookup()</a>, <a class="el" href="val__nsec_8c_source.html#l00499">val_nsec_check_dlv()</a>, <a class="el" href="val__utils_8c_source.html#l00305">val_verify_rrset()</a>, <a class="el" href="validator_8c_source.html#l00827">validate_any_response()</a>, <a class="el" href="validator_8c_source.html#l00937">validate_cname_response()</a>, <a class="el" href="validator_8c_source.html#l00398">validate_msg_signatures()</a>, <a class="el" href="validator_8c_source.html#l00526">validate_positive_response()</a>, <a class="el" href="unitverify_8c_source.html#l00257">verifytest_file()</a>, and <a class="el" href="unitverify_8c_source.html#l00153">verifytest_rrset()</a>.</p>

</div>
</div><p>
<a class="anchor" name="f02f35984cb2c7dc08853d8091c1b3b9"></a><!-- doxytag: member="net_help.c::log_name_addr" ref="f02f35984cb2c7dc08853d8091c1b3b9" args="(enum verbosity_value v, const char *str, uint8_t *zone, struct sockaddr_storage *addr, socklen_t addrlen)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void log_name_addr           </td>
          <td>(</td>
          <td class="paramtype">enum <a class="el" href="log_8h.html#a6e4bbdddab8be2b3694da9631d23979">verbosity_value</a>&nbsp;</td>
          <td class="paramname"> <em>v</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>str</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&nbsp;</td>
          <td class="paramname"> <em>zone</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>addr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">socklen_t&nbsp;</td>
          <td class="paramname"> <em>addrlen</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Prints zone name and sockaddr in readable format with log_info. 
<p>
Debug. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>v,:</em>&nbsp;</td><td>at what verbosity level to print this. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>str,:</em>&nbsp;</td><td>descriptive string printed with it. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>zone,:</em>&nbsp;</td><td>DNS domain name, uncompressed wireformat. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addr,:</em>&nbsp;</td><td>the sockaddr to print. Can be ip4 or ip6. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addrlen,:</em>&nbsp;</td><td>length of addr. </td></tr>
  </table>
</dl>

<p>References <a class="el" href="dname_8c_source.html#l00526">dname_str()</a>, <a class="el" href="ldns-testpkts_8c.html#a557e5b23b2833d7c1ec0415a1bdd2b1">verbose()</a>, and <a class="el" href="log_8c_source.html#l00062">verbosity</a>.</p>

<p>Referenced by <a class="el" href="iterator_8c_source.html#l02011">process_response()</a>, <a class="el" href="iterator_8c_source.html#l01249">processQueryTargets()</a>, and <a class="el" href="outside__network_8c_source.html#l01441">serviced_udp_callback()</a>.</p>

</div>
</div><p>
<a class="anchor" name="705dca70af35fb9a48fab38bb4c6cc67"></a><!-- doxytag: member="net_help.c::sockaddr_cmp" ref="705dca70af35fb9a48fab38bb4c6cc67" args="(struct sockaddr_storage *addr1, socklen_t len1, struct sockaddr_storage *addr2, socklen_t len2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int sockaddr_cmp           </td>
          <td>(</td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>addr1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">socklen_t&nbsp;</td>
          <td class="paramname"> <em>len1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>addr2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">socklen_t&nbsp;</td>
          <td class="paramname"> <em>len2</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Compare two sockaddrs. 
<p>
Imposes an ordering on the addresses. Compares address and port. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>addr1,:</em>&nbsp;</td><td>address 1. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>len1,:</em>&nbsp;</td><td>lengths of addr1. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addr2,:</em>&nbsp;</td><td>address 2. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>len2,:</em>&nbsp;</td><td>lengths of addr2. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>: 0 if addr1 == addr2. -1 if addr1 is smaller, +1 if larger. </dd></dl>

<p>References <a class="el" href="net__help_8h_source.html#l00087">INET6_SIZE</a>, <a class="el" href="net__help_8h_source.html#l00085">INET_SIZE</a>, and <a class="el" href="log_8h_source.html#l00185">log_assert</a>.</p>

<p>Referenced by <a class="el" href="fake__event_8c_source.html#l00319">answer_check_it()</a>, <a class="el" href="delayer_8c_source.html#l00434">find_create_proxy()</a>, <a class="el" href="infra_8c_source.html#l00059">infra_host_compfunc()</a>, <a class="el" href="fake__event_8c_source.html#l00861">outnet_serviced_query()</a>, <a class="el" href="outside__network_8c_source.html#l00079">pending_cmp()</a>, <a class="el" href="fake__event_8c_source.html#l00184">pending_find_match()</a>, <a class="el" href="fake__event_8c_source.html#l00153">pending_matches_current()</a>, <a class="el" href="fake__event_8c_source.html#l00810">pending_tcp_query()</a>, <a class="el" href="fake__event_8c_source.html#l00758">pending_udp_query()</a>, and <a class="el" href="outside__network_8c_source.html#l00092">serviced_cmp()</a>.</p>

</div>
</div><p>
<a class="anchor" name="6be1ea828bc8a22a1ce027781c090b9d"></a><!-- doxytag: member="net_help.c::sockaddr_cmp_addr" ref="6be1ea828bc8a22a1ce027781c090b9d" args="(struct sockaddr_storage *addr1, socklen_t len1, struct sockaddr_storage *addr2, socklen_t len2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int sockaddr_cmp_addr           </td>
          <td>(</td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>addr1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">socklen_t&nbsp;</td>
          <td class="paramname"> <em>len1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>addr2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">socklen_t&nbsp;</td>
          <td class="paramname"> <em>len2</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Compare two sockaddrs. 
<p>
Compares address, not the port. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>addr1,:</em>&nbsp;</td><td>address 1. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>len1,:</em>&nbsp;</td><td>lengths of addr1. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addr2,:</em>&nbsp;</td><td>address 2. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>len2,:</em>&nbsp;</td><td>lengths of addr2. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>: 0 if addr1 == addr2. -1 if addr1 is smaller, +1 if larger. </dd></dl>

<p>References <a class="el" href="net__help_8h_source.html#l00087">INET6_SIZE</a>, <a class="el" href="net__help_8h_source.html#l00085">INET_SIZE</a>, and <a class="el" href="log_8h_source.html#l00185">log_assert</a>.</p>

<p>Referenced by <a class="el" href="dnstree_8c_source.html#l00060">addr_tree_compare()</a>, and <a class="el" href="iter__delegpt_8c_source.html#l00134">delegpt_find_addr()</a>.</p>

</div>
</div><p>
<a class="anchor" name="588bd675080585862a257150a48f6d18"></a><!-- doxytag: member="net_help.c::addr_is_ip6" ref="588bd675080585862a257150a48f6d18" args="(struct sockaddr_storage *addr, socklen_t len)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int addr_is_ip6           </td>
          <td>(</td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>addr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">socklen_t&nbsp;</td>
          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Checkout address family. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>addr,:</em>&nbsp;</td><td>the sockaddr to examine. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>len,:</em>&nbsp;</td><td>the length of addr. return: true if sockaddr is ip6. </td></tr>
  </table>
</dl>

<p>Referenced by <a class="el" href="net__help_8c_source.html#l00431">addr_in_common()</a>, <a class="el" href="net__help_8c_source.html#l00479">addr_is_ip4mapped()</a>, <a class="el" href="net__help_8c_source.html#l00410">addr_mask()</a>, <a class="el" href="net__help_8c_source.html#l00466">addr_to_str()</a>, <a class="el" href="dnstree_8c_source.html#l00203">addr_tree_lookup()</a>, <a class="el" href="config__file_8c_source.html#l00999">cfg_ptr_reverse()</a>, <a class="el" href="unbound-control_8c_source.html#l00136">contact_server()</a>, <a class="el" href="iter__delegpt_8c_source.html#l00148">delegpt_add_target()</a>, <a class="el" href="infra_8c_source.html#l00136">hash_addr()</a>, <a class="el" href="iter__utils_8c_source.html#l00169">iter_filter_unsuitable()</a>, <a class="el" href="streamtcp_8c_source.html#l00065">open_svr()</a>, <a class="el" href="outside__network_8c_source.html#l00132">outnet_tcp_take_into_use()</a>, <a class="el" href="perf_8c_source.html#l00198">perfsetup()</a>, <a class="el" href="delayer_8c_source.html#l00873">proxy_list_clear()</a>, <a class="el" href="outside__network_8c_source.html#l00864">randomize_and_send_udp()</a>, <a class="el" href="stats_8c_source.html#l00241">server_stats_insquery()</a>, <a class="el" href="delayer_8c_source.html#l00483">service_recv()</a>, <a class="el" href="delayer_8c_source.html#l00559">service_tcp_listen()</a>, <a class="el" href="outside__network_8c_source.html#l00749">udp_sockport()</a>, and <a class="el" href="unbound-checkconf_8c_source.html#l00245">warn_hosts()</a>.</p>

</div>
</div><p>
<a class="anchor" name="306dfdb4efee7f02cc54115bddbc151c"></a><!-- doxytag: member="net_help.c::addr_mask" ref="306dfdb4efee7f02cc54115bddbc151c" args="(struct sockaddr_storage *addr, socklen_t len, int net)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void addr_mask           </td>
          <td>(</td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>addr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">socklen_t&nbsp;</td>
          <td class="paramname"> <em>len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>net</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Make sure the sockaddr ends in zeroes. 
<p>
For tree insertion and subsequent comparison. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>addr,:</em>&nbsp;</td><td>the ip4 or ip6 addr. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>len,:</em>&nbsp;</td><td>length of addr. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>net,:</em>&nbsp;</td><td>number of bits to leave untouched, the rest of the netblock address is zeroed. </td></tr>
  </table>
</dl>

<p>References <a class="el" href="net__help_8c_source.html#l00401">addr_is_ip6()</a>.</p>

<p>Referenced by <a class="el" href="unitmain_8c_source.html#l00090">net_test()</a>, and <a class="el" href="net__help_8c_source.html#l00231">netblockstrtoaddr()</a>.</p>

</div>
</div><p>
<a class="anchor" name="9aecd2e29f483597862f806ffa787cff"></a><!-- doxytag: member="net_help.c::addr_in_common" ref="9aecd2e29f483597862f806ffa787cff" args="(struct sockaddr_storage *addr1, int net1, struct sockaddr_storage *addr2, int net2, socklen_t addrlen)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int addr_in_common           </td>
          <td>(</td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>addr1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>net1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>addr2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>net2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">socklen_t&nbsp;</td>
          <td class="paramname"> <em>addrlen</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
See how many bits are shared, equal, between two addrs. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>addr1,:</em>&nbsp;</td><td>first addr. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>net1,:</em>&nbsp;</td><td>netblock size of first addr. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addr2,:</em>&nbsp;</td><td>second addr. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>net2,:</em>&nbsp;</td><td>netblock size of second addr. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addrlen,:</em>&nbsp;</td><td>length of first addr and of second addr. They must be of the same length (i.e. same type IP4, IP6). </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>: number of bits the same. </dd></dl>

<p>References <a class="el" href="net__help_8c_source.html#l00401">addr_is_ip6()</a>, <a class="el" href="log_8h_source.html#l00185">log_assert</a>, and <a class="el" href="memstats_8c_source.html#l00078">match()</a>.</p>

<p>Referenced by <a class="el" href="dnstree_8c_source.html#l00107">addr_tree_init_parents()</a>, <a class="el" href="dnstree_8c_source.html#l00203">addr_tree_lookup()</a>, and <a class="el" href="unitmain_8c_source.html#l00090">net_test()</a>.</p>

</div>
</div><p>
<a class="anchor" name="3a7c0bb3cb2387a5f427450d58696d27"></a><!-- doxytag: member="net_help.c::addr_to_str" ref="3a7c0bb3cb2387a5f427450d58696d27" args="(struct sockaddr_storage *addr, socklen_t addrlen, char *buf, size_t len)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void addr_to_str           </td>
          <td>(</td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>addr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">socklen_t&nbsp;</td>
          <td class="paramname"> <em>addrlen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Put address into string, works for IPv4 and IPv6. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>addr,:</em>&nbsp;</td><td>address </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addrlen,:</em>&nbsp;</td><td>length of address </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buf,:</em>&nbsp;</td><td>result string stored here </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>len,:</em>&nbsp;</td><td>length of buf. On failure a string with "error" is stored inside. </td></tr>
  </table>
</dl>

<p>References <a class="el" href="net__help_8c_source.html#l00401">addr_is_ip6()</a>.</p>

<p>Referenced by <a class="el" href="remote_8c_source.html#l01376">get_mesh_status()</a>, and <a class="el" href="remote_8c_source.html#l01230">print_root_fwds()</a>.</p>

</div>
</div><p>
<a class="anchor" name="554b4bbd395c2170718dd8a9f197455f"></a><!-- doxytag: member="net_help.c::addr_is_ip4mapped" ref="554b4bbd395c2170718dd8a9f197455f" args="(struct sockaddr_storage *addr, socklen_t addrlen)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int addr_is_ip4mapped           </td>
          <td>(</td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>addr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">socklen_t&nbsp;</td>
          <td class="paramname"> <em>addrlen</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
See if sockaddr is an ipv6 mapped ipv4 address, ffff:0.0.0.0. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>addr,:</em>&nbsp;</td><td>address </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addrlen,:</em>&nbsp;</td><td>length of address </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>true if so </dd></dl>

<p>References <a class="el" href="net__help_8c_source.html#l00401">addr_is_ip6()</a>.</p>

<p>Referenced by <a class="el" href="netevent_8c_source.html#l00239">comm_point_send_udp_msg()</a>, and <a class="el" href="unitmain_8c_source.html#l00090">net_test()</a>.</p>

</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Tue Oct 13 06:46:32 2009 for unbound by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>