D7net Mini Sh3LL v1
Current File : //libx32/../share/snapd/../metainfo/../doc/gpgv/../autoconf/../cryptsetup/../apt/../bzip2/../libapr1-dev/html/group__apr__network__io.html |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Apache Portable Runtime: Network Routines</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Apache Portable Runtime
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#groups">Modules</a> |
<a href="#nested-classes">Data Structures</a> |
<a href="#define-members">Macros</a> |
<a href="#typedef-members">Typedefs</a> |
<a href="#enum-members">Enumerations</a> |
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">Network Routines<div class="ingroups"><a class="el" href="group___a_p_r.html">Apache Portability Runtime library</a></div></div> </div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Collaboration diagram for Network Routines:</div>
<div class="dyncontent">
<div class="center"><img src="group__apr__network__io.png" border="0" usemap="#group____apr____network____io" alt=""/></div>
<!-- MAP 0 -->
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="groups"></a>
Modules</h2></td></tr>
<tr class="memitem:group__apr__sockopt"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__sockopt.html">Socket option definitions</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:group___i_p___proto"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___i_p___proto.html">IP Protocol Definitions for use when creating sockets</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:group__apr__mcast"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__mcast.html">IP Multicast</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structin__addr.html">in_addr</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structapr__hdtr__t.html">apr_hdtr_t</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga8311c84f6946742188a6b9a45e92ea8e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga8311c84f6946742188a6b9a45e92ea8e">APR_MAX_SECS_TO_LINGER</a>   30</td></tr>
<tr class="separator:ga8311c84f6946742188a6b9a45e92ea8e"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga7f5b3882209106bb407b1d518d6ad59d"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga7f5b3882209106bb407b1d518d6ad59d">APRMAXHOSTLEN</a>   256</td></tr>
<tr class="separator:ga7f5b3882209106bb407b1d518d6ad59d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gadce1131c46b897ec63e9e4316a4631dd"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#gadce1131c46b897ec63e9e4316a4631dd">APR_ANYADDR</a>   "0.0.0.0"</td></tr>
<tr class="separator:gadce1131c46b897ec63e9e4316a4631dd"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga58aa30a94127b4a80f27fbf2e03fdfd8"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga58aa30a94127b4a80f27fbf2e03fdfd8">APR_IPV4_ADDR_OK</a>   0x01</td></tr>
<tr class="separator:ga58aa30a94127b4a80f27fbf2e03fdfd8"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaef1f70f9b969d25832a230f429837207"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#gaef1f70f9b969d25832a230f429837207">APR_IPV6_ADDR_OK</a>   0x02</td></tr>
<tr class="separator:gaef1f70f9b969d25832a230f429837207"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga16eb7ee55ff87a5093f2114ea5351217"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga16eb7ee55ff87a5093f2114ea5351217">APR_INADDR_NONE</a>   ((unsigned int) 0xffffffff)</td></tr>
<tr class="separator:ga16eb7ee55ff87a5093f2114ea5351217"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaa96e8e8dbf92bc77643a4032017b3d67"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#gaa96e8e8dbf92bc77643a4032017b3d67">APR_INET</a>   AF_INET</td></tr>
<tr class="separator:gaa96e8e8dbf92bc77643a4032017b3d67"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaa7a33b17a7d0820b09ef489bd3328f85"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#gaa7a33b17a7d0820b09ef489bd3328f85">APR_UNSPEC</a>   0</td></tr>
<tr class="separator:gaa7a33b17a7d0820b09ef489bd3328f85"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaa4151db3f5a54d85aef5f2f882dbd13d"><td class="memItemLeft" align="right" valign="top"><a id="gaa4151db3f5a54d85aef5f2f882dbd13d"></a>
#define </td><td class="memItemRight" valign="bottom"><b>APR_UNIX</b>   1234</td></tr>
<tr class="separator:gaa4151db3f5a54d85aef5f2f882dbd13d"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ga49262b223e7434746e1f1737659aa2c3"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a></td></tr>
<tr class="separator:ga49262b223e7434746e1f1737659aa2c3"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga97887d5358a9c79c241ccafab61d8ff5"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structapr__hdtr__t.html">apr_hdtr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga97887d5358a9c79c241ccafab61d8ff5">apr_hdtr_t</a></td></tr>
<tr class="separator:ga97887d5358a9c79c241ccafab61d8ff5"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gad30d6c55a354a9a2e0a8747abb0c8176"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structin__addr.html">in_addr</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#gad30d6c55a354a9a2e0a8747abb0c8176">apr_in_addr_t</a></td></tr>
<tr class="separator:gad30d6c55a354a9a2e0a8747abb0c8176"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gac86ee04eb80f938902095d1d0a67c324"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="group__apr__network__io.html#gac86ee04eb80f938902095d1d0a67c324">apr_ipsubnet_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#gac86ee04eb80f938902095d1d0a67c324">apr_ipsubnet_t</a></td></tr>
<tr class="separator:gac86ee04eb80f938902095d1d0a67c324"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaa670a71960f6eb4fe0d0de2a1e7aba03"><td class="memItemLeft" align="right" valign="top">typedef apr_uint16_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#gaa670a71960f6eb4fe0d0de2a1e7aba03">apr_port_t</a></td></tr>
<tr class="separator:gaa670a71960f6eb4fe0d0de2a1e7aba03"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga373fb6f32d0875c5deb648b779c8a709"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga373fb6f32d0875c5deb648b779c8a709">apr_sockaddr_t</a></td></tr>
<tr class="separator:ga373fb6f32d0875c5deb648b779c8a709"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:gae2130f1fa2d0db58c5c3c9c73d9b4009"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#gae2130f1fa2d0db58c5c3c9c73d9b4009">apr_shutdown_how_e</a> { <a class="el" href="group__apr__network__io.html#ggae2130f1fa2d0db58c5c3c9c73d9b4009a88d0661d35eea5319715d6ca69265b01">APR_SHUTDOWN_READ</a>,
<a class="el" href="group__apr__network__io.html#ggae2130f1fa2d0db58c5c3c9c73d9b4009a5e335b392088e14df65d1bd5e0db7c46">APR_SHUTDOWN_WRITE</a>,
<a class="el" href="group__apr__network__io.html#ggae2130f1fa2d0db58c5c3c9c73d9b4009add172f55ff5ee7b930683a3903c99768">APR_SHUTDOWN_READWRITE</a>
}</td></tr>
<tr class="separator:gae2130f1fa2d0db58c5c3c9c73d9b4009"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga1982f44f48fdf00a8bd754bc7b773edc"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga1982f44f48fdf00a8bd754bc7b773edc">apr_interface_e</a> { <a class="el" href="group__apr__network__io.html#gga1982f44f48fdf00a8bd754bc7b773edca6c23a4bf48b8f93dff08adf827382616">APR_LOCAL</a>,
<a class="el" href="group__apr__network__io.html#gga1982f44f48fdf00a8bd754bc7b773edcaeb8be70b031f06a513ac0ebcaa5bac8a">APR_REMOTE</a>
}</td></tr>
<tr class="separator:ga1982f44f48fdf00a8bd754bc7b773edc"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga46b81e267ef80e64510d4e83880a91bd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga46b81e267ef80e64510d4e83880a91bd">apr_socket_create</a> (<a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> **new_sock, int family, int type, int protocol, <a class="el" href="group__apr__pools.html#gaf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *cont)</td></tr>
<tr class="separator:ga46b81e267ef80e64510d4e83880a91bd"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gac5aea857a50c493f840c48b930abc48e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#gac5aea857a50c493f840c48b930abc48e">apr_socket_shutdown</a> (<a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> *thesocket, <a class="el" href="group__apr__network__io.html#gae2130f1fa2d0db58c5c3c9c73d9b4009">apr_shutdown_how_e</a> how)</td></tr>
<tr class="separator:gac5aea857a50c493f840c48b930abc48e"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga88779f243ce19a2563544aee81894e6d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga88779f243ce19a2563544aee81894e6d">apr_socket_close</a> (<a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> *thesocket)</td></tr>
<tr class="separator:ga88779f243ce19a2563544aee81894e6d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga512882c9979c2b9cad7cbc2508516d65"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga512882c9979c2b9cad7cbc2508516d65">apr_socket_bind</a> (<a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> *sock, <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> *sa)</td></tr>
<tr class="separator:ga512882c9979c2b9cad7cbc2508516d65"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga154bcee918f6f01fe0373359dd74b0c4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga154bcee918f6f01fe0373359dd74b0c4">apr_socket_listen</a> (<a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> *sock, apr_int32_t backlog)</td></tr>
<tr class="separator:ga154bcee918f6f01fe0373359dd74b0c4"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga1d62711ca77ccc0f6413a298a47876da"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga1d62711ca77ccc0f6413a298a47876da">apr_socket_accept</a> (<a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> **new_sock, <a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> *sock, <a class="el" href="group__apr__pools.html#gaf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *connection_pool)</td></tr>
<tr class="separator:ga1d62711ca77ccc0f6413a298a47876da"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga8e58bd8112ed2ce5004487918cd9275e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga8e58bd8112ed2ce5004487918cd9275e">apr_socket_connect</a> (<a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> *sock, <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> *sa)</td></tr>
<tr class="separator:ga8e58bd8112ed2ce5004487918cd9275e"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gabfcb1fe4447921e5b86d395126b5d6f0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#gabfcb1fe4447921e5b86d395126b5d6f0">apr_socket_atreadeof</a> (<a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> *sock, int *atreadeof)</td></tr>
<tr class="separator:gabfcb1fe4447921e5b86d395126b5d6f0"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaa2f399ca2b60b35c0abf7630298c6c9f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#gaa2f399ca2b60b35c0abf7630298c6c9f">apr_sockaddr_info_get</a> (<a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> **sa, const char *hostname, apr_int32_t family, <a class="el" href="group__apr__network__io.html#gaa670a71960f6eb4fe0d0de2a1e7aba03">apr_port_t</a> port, apr_int32_t flags, <a class="el" href="group__apr__pools.html#gaf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *p)</td></tr>
<tr class="separator:gaa2f399ca2b60b35c0abf7630298c6c9f"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga4175809cd324a0b81951bd656fabbc83"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga4175809cd324a0b81951bd656fabbc83">apr_sockaddr_info_copy</a> (<a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> **dst, const <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> *src, <a class="el" href="group__apr__pools.html#gaf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *p)</td></tr>
<tr class="separator:ga4175809cd324a0b81951bd656fabbc83"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga7a56fd9573b942753738ec30b887c9de"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga7a56fd9573b942753738ec30b887c9de">apr_getnameinfo</a> (char **hostname, <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> *sa, apr_int32_t flags)</td></tr>
<tr class="separator:ga7a56fd9573b942753738ec30b887c9de"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga90c31b2f012c6b1e2d842a96c4431de3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga90c31b2f012c6b1e2d842a96c4431de3">apr_parse_addr_port</a> (char **addr, char **scope_id, <a class="el" href="group__apr__network__io.html#gaa670a71960f6eb4fe0d0de2a1e7aba03">apr_port_t</a> *port, const char *str, <a class="el" href="group__apr__pools.html#gaf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *p)</td></tr>
<tr class="separator:ga90c31b2f012c6b1e2d842a96c4431de3"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga6bd3d656ba935ca428075f477b8a6f8b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga6bd3d656ba935ca428075f477b8a6f8b">apr_gethostname</a> (char *buf, int len, <a class="el" href="group__apr__pools.html#gaf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *cont)</td></tr>
<tr class="separator:ga6bd3d656ba935ca428075f477b8a6f8b"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gae76b48d0224a608b4ddb8bd00582eaa7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#gae76b48d0224a608b4ddb8bd00582eaa7">apr_socket_data_get</a> (void **data, const char *key, <a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> *sock)</td></tr>
<tr class="separator:gae76b48d0224a608b4ddb8bd00582eaa7"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gafec197f3aa9a495801cdf7892ff8dcb5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#gafec197f3aa9a495801cdf7892ff8dcb5">apr_socket_data_set</a> (<a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> *sock, void *data, const char *key, <a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a>(*cleanup)(void *))</td></tr>
<tr class="separator:gafec197f3aa9a495801cdf7892ff8dcb5"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga943268245cf59f6ff8cf1458c9a9ba8d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga943268245cf59f6ff8cf1458c9a9ba8d">apr_socket_send</a> (<a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> *sock, const char *buf, apr_size_t *len)</td></tr>
<tr class="separator:ga943268245cf59f6ff8cf1458c9a9ba8d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga99ece70c34a7a332daa3941de3950c64"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga99ece70c34a7a332daa3941de3950c64">apr_socket_sendv</a> (<a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> *sock, const struct iovec *vec, apr_int32_t nvec, apr_size_t *len)</td></tr>
<tr class="separator:ga99ece70c34a7a332daa3941de3950c64"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga03ae34bc5712dac2b3fdee39e5f87be3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga03ae34bc5712dac2b3fdee39e5f87be3">apr_socket_sendto</a> (<a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> *sock, <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> *where, apr_int32_t flags, const char *buf, apr_size_t *len)</td></tr>
<tr class="separator:ga03ae34bc5712dac2b3fdee39e5f87be3"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga80880312b41e86c9c266ede1a504e2ca"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga80880312b41e86c9c266ede1a504e2ca">apr_socket_recvfrom</a> (<a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> *from, <a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> *sock, apr_int32_t flags, char *buf, apr_size_t *len)</td></tr>
<tr class="separator:ga80880312b41e86c9c266ede1a504e2ca"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga3d93e6212c4c27f2390b0057f8f4a8be"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga3d93e6212c4c27f2390b0057f8f4a8be">apr_socket_sendfile</a> (<a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> *sock, <a class="el" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t</a> *file, <a class="el" href="structapr__hdtr__t.html">apr_hdtr_t</a> *hdtr, apr_off_t *offset, apr_size_t *len, apr_int32_t flags)</td></tr>
<tr class="separator:ga3d93e6212c4c27f2390b0057f8f4a8be"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaa6ee00191f197f64b5a5409f4aff53d1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#gaa6ee00191f197f64b5a5409f4aff53d1">apr_socket_recv</a> (<a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> *sock, char *buf, apr_size_t *len)</td></tr>
<tr class="separator:gaa6ee00191f197f64b5a5409f4aff53d1"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga08f5e505fa611005f56c12783269ffa9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga08f5e505fa611005f56c12783269ffa9">apr_socket_opt_set</a> (<a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> *sock, apr_int32_t opt, apr_int32_t on)</td></tr>
<tr class="separator:ga08f5e505fa611005f56c12783269ffa9"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga945bdbe807ec5635d65a6fd9ddb78c29"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga945bdbe807ec5635d65a6fd9ddb78c29">apr_socket_timeout_set</a> (<a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> *sock, <a class="el" href="group__apr__time.html#gaae2129185a395cc393f76fabf4f43e47">apr_interval_time_t</a> t)</td></tr>
<tr class="separator:ga945bdbe807ec5635d65a6fd9ddb78c29"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga1934c2d5943efc8ce925f376f3c2e17e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga1934c2d5943efc8ce925f376f3c2e17e">apr_socket_opt_get</a> (<a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> *sock, apr_int32_t opt, apr_int32_t *on)</td></tr>
<tr class="separator:ga1934c2d5943efc8ce925f376f3c2e17e"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaa32313b54afed590367c8571075d2bc1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#gaa32313b54afed590367c8571075d2bc1">apr_socket_timeout_get</a> (<a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> *sock, <a class="el" href="group__apr__time.html#gaae2129185a395cc393f76fabf4f43e47">apr_interval_time_t</a> *t)</td></tr>
<tr class="separator:gaa32313b54afed590367c8571075d2bc1"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga2389de257444870974b5ded91cf7a10c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga2389de257444870974b5ded91cf7a10c">apr_socket_atmark</a> (<a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> *sock, int *atmark)</td></tr>
<tr class="separator:ga2389de257444870974b5ded91cf7a10c"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gacad56b59eafc6ad2459bf6493c992515"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#gacad56b59eafc6ad2459bf6493c992515">apr_socket_addr_get</a> (<a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> **sa, <a class="el" href="group__apr__network__io.html#ga1982f44f48fdf00a8bd754bc7b773edc">apr_interface_e</a> which, <a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> *sock)</td></tr>
<tr class="separator:gacad56b59eafc6ad2459bf6493c992515"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gab78fc9b9799c119f4a5517411458a660"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#gab78fc9b9799c119f4a5517411458a660">apr_sockaddr_ip_get</a> (char **addr, <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> *sockaddr)</td></tr>
<tr class="separator:gab78fc9b9799c119f4a5517411458a660"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga8c88ae154304e30d47c2696f4370dc6d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga8c88ae154304e30d47c2696f4370dc6d">apr_sockaddr_ip_getbuf</a> (char *buf, apr_size_t buflen, <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> *sockaddr)</td></tr>
<tr class="separator:ga8c88ae154304e30d47c2696f4370dc6d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga1bf65369305ae352f3280af2acc684f5"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga1bf65369305ae352f3280af2acc684f5">apr_sockaddr_equal</a> (const <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> *addr1, const <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> *addr2)</td></tr>
<tr class="separator:ga1bf65369305ae352f3280af2acc684f5"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gab9e53832f95e39cb780345c2b7783830"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#gab9e53832f95e39cb780345c2b7783830">apr_sockaddr_is_wildcard</a> (const <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> *addr)</td></tr>
<tr class="separator:gab9e53832f95e39cb780345c2b7783830"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga8d23ee2db9a84af2e6408ef460613514"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga8d23ee2db9a84af2e6408ef460613514">apr_socket_type_get</a> (<a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> *sock, int *type)</td></tr>
<tr class="separator:ga8d23ee2db9a84af2e6408ef460613514"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gad5b504c0fe4d578e72531e3ca0263654"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#gad5b504c0fe4d578e72531e3ca0263654">apr_getservbyname</a> (<a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> *sockaddr, const char *servname)</td></tr>
<tr class="separator:gad5b504c0fe4d578e72531e3ca0263654"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga34a3c7f1666427f4e381e857b9e9c298"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga34a3c7f1666427f4e381e857b9e9c298">apr_ipsubnet_create</a> (<a class="el" href="group__apr__network__io.html#gac86ee04eb80f938902095d1d0a67c324">apr_ipsubnet_t</a> **ipsub, const char *ipstr, const char *mask_or_numbits, <a class="el" href="group__apr__pools.html#gaf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *p)</td></tr>
<tr class="separator:ga34a3c7f1666427f4e381e857b9e9c298"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gab74d21b8898b7c40bf7fd07ad3eb993d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#gab74d21b8898b7c40bf7fd07ad3eb993d">apr_ipsubnet_test</a> (<a class="el" href="group__apr__network__io.html#gac86ee04eb80f938902095d1d0a67c324">apr_ipsubnet_t</a> *ipsub, <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> *sa)</td></tr>
<tr class="separator:gab74d21b8898b7c40bf7fd07ad3eb993d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga270b7c0835283fa2b85a05d295dd7ee5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga270b7c0835283fa2b85a05d295dd7ee5">apr_socket_accept_filter</a> (<a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> *sock, char *name, char *args)</td></tr>
<tr class="separator:ga270b7c0835283fa2b85a05d295dd7ee5"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gac402d9426de37b6cede18fa157020bd9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#gac402d9426de37b6cede18fa157020bd9">apr_socket_protocol_get</a> (<a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> *sock, int *protocol)</td></tr>
<tr class="separator:gac402d9426de37b6cede18fa157020bd9"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga4f109ecf176aee8fca8ecfa7f8b07d93"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__pools.html#gaf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga4f109ecf176aee8fca8ecfa7f8b07d93">apr_socket_pool_get</a> (const <a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> *thesocket)</td></tr>
<tr class="separator:ga4f109ecf176aee8fca8ecfa7f8b07d93"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga8ae81c6a7acf90112ebcfb9221ccc649"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga8ae81c6a7acf90112ebcfb9221ccc649">apr_socket_inherit_set</a> (<a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> *thesocket)</td></tr>
<tr class="separator:ga8ae81c6a7acf90112ebcfb9221ccc649"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga5afabb2cee38c141d076b9c52a3f2ce1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga5afabb2cee38c141d076b9c52a3f2ce1">apr_socket_inherit_unset</a> (<a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> *thesocket)</td></tr>
<tr class="separator:ga5afabb2cee38c141d076b9c52a3f2ce1"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga9fc01ffaed8412193d2744f1fb632d88"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga9fc01ffaed8412193d2744f1fb632d88">APR_PERMS_SET_IMPLEMENT</a> (socket)</td></tr>
<tr class="separator:ga9fc01ffaed8412193d2744f1fb632d88"><td class="memSeparator" colspan="2"> </td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a id="gadce1131c46b897ec63e9e4316a4631dd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gadce1131c46b897ec63e9e4316a4631dd">◆ </a></span>APR_ANYADDR</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define APR_ANYADDR   "0.0.0.0"</td>
</tr>
</table>
</div><div class="memdoc">
<p>Default 'any' address </p>
</div>
</div>
<a id="ga16eb7ee55ff87a5093f2114ea5351217"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga16eb7ee55ff87a5093f2114ea5351217">◆ </a></span>APR_INADDR_NONE</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define APR_INADDR_NONE   ((unsigned int) 0xffffffff)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Not all platforms have a real INADDR_NONE. This macro replaces INADDR_NONE on all platforms. </p>
</div>
</div>
<a id="gaa96e8e8dbf92bc77643a4032017b3d67"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa96e8e8dbf92bc77643a4032017b3d67">◆ </a></span>APR_INET</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define APR_INET   AF_INET</td>
</tr>
</table>
</div><div class="memdoc">
<p>Not all platforms have these defined, so we'll define them here The default values come from FreeBSD 4.1.1 </p>
</div>
</div>
<a id="ga58aa30a94127b4a80f27fbf2e03fdfd8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga58aa30a94127b4a80f27fbf2e03fdfd8">◆ </a></span>APR_IPV4_ADDR_OK</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define APR_IPV4_ADDR_OK   0x01</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__apr__network__io.html#gaa2f399ca2b60b35c0abf7630298c6c9f">apr_sockaddr_info_get()</a> </dd></dl>
</div>
</div>
<a id="gaef1f70f9b969d25832a230f429837207"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaef1f70f9b969d25832a230f429837207">◆ </a></span>APR_IPV6_ADDR_OK</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define APR_IPV6_ADDR_OK   0x02</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__apr__network__io.html#gaa2f399ca2b60b35c0abf7630298c6c9f">apr_sockaddr_info_get()</a> </dd></dl>
</div>
</div>
<a id="ga8311c84f6946742188a6b9a45e92ea8e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8311c84f6946742188a6b9a45e92ea8e">◆ </a></span>APR_MAX_SECS_TO_LINGER</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define APR_MAX_SECS_TO_LINGER   30</td>
</tr>
</table>
</div><div class="memdoc">
<p>Maximum seconds to linger </p>
</div>
</div>
<a id="gaa7a33b17a7d0820b09ef489bd3328f85"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa7a33b17a7d0820b09ef489bd3328f85">◆ </a></span>APR_UNSPEC</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define APR_UNSPEC   0</td>
</tr>
</table>
</div><div class="memdoc">
<p>Let the system decide which address family to use </p>
</div>
</div>
<a id="ga7f5b3882209106bb407b1d518d6ad59d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7f5b3882209106bb407b1d518d6ad59d">◆ </a></span>APRMAXHOSTLEN</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define APRMAXHOSTLEN   256</td>
</tr>
</table>
</div><div class="memdoc">
<p>Maximum hostname length </p>
</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a id="ga97887d5358a9c79c241ccafab61d8ff5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga97887d5358a9c79c241ccafab61d8ff5">◆ </a></span>apr_hdtr_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="structapr__hdtr__t.html">apr_hdtr_t</a> <a class="el" href="structapr__hdtr__t.html">apr_hdtr_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>A structure to encapsulate headers and trailers for apr_socket_sendfile </p>
</div>
</div>
<a id="gad30d6c55a354a9a2e0a8747abb0c8176"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad30d6c55a354a9a2e0a8747abb0c8176">◆ </a></span>apr_in_addr_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="structin__addr.html">in_addr</a> <a class="el" href="group__apr__network__io.html#gad30d6c55a354a9a2e0a8747abb0c8176">apr_in_addr_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>A structure to represent <a class="el" href="structin__addr.html">in_addr</a> </p>
</div>
</div>
<a id="gac86ee04eb80f938902095d1d0a67c324"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac86ee04eb80f938902095d1d0a67c324">◆ </a></span>apr_ipsubnet_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="group__apr__network__io.html#gac86ee04eb80f938902095d1d0a67c324">apr_ipsubnet_t</a> <a class="el" href="group__apr__network__io.html#gac86ee04eb80f938902095d1d0a67c324">apr_ipsubnet_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>A structure to represent an IP subnet </p>
</div>
</div>
<a id="gaa670a71960f6eb4fe0d0de2a1e7aba03"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa670a71960f6eb4fe0d0de2a1e7aba03">◆ </a></span>apr_port_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef apr_uint16_t <a class="el" href="group__apr__network__io.html#gaa670a71960f6eb4fe0d0de2a1e7aba03">apr_port_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section remark"><dt>Remarks</dt><dd>use apr_uint16_t just in case some system has a short that isn't 16 bits... </dd></dl>
</div>
</div>
<a id="ga373fb6f32d0875c5deb648b779c8a709"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga373fb6f32d0875c5deb648b779c8a709">◆ </a></span>apr_sockaddr_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section remark"><dt>Remarks</dt><dd>It's defined here as I think it should all be platform safe... </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> </dd></dl>
</div>
</div>
<a id="ga49262b223e7434746e1f1737659aa2c3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga49262b223e7434746e1f1737659aa2c3">◆ </a></span>apr_socket_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> <a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>The specific declaration of inet_addr's ... some platforms fall back inet_network (this is not good, but necessary) A structure to represent sockets </p>
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="ga1982f44f48fdf00a8bd754bc7b773edc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1982f44f48fdf00a8bd754bc7b773edc">◆ </a></span>apr_interface_e</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__apr__network__io.html#ga1982f44f48fdf00a8bd754bc7b773edc">apr_interface_e</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Enum used to denote either the local and remote endpoint of a connection. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga1982f44f48fdf00a8bd754bc7b773edca6c23a4bf48b8f93dff08adf827382616"></a>APR_LOCAL </td><td class="fielddoc"><p>Socket information for local end of connection </p>
</td></tr>
<tr><td class="fieldname"><a id="gga1982f44f48fdf00a8bd754bc7b773edcaeb8be70b031f06a513ac0ebcaa5bac8a"></a>APR_REMOTE </td><td class="fielddoc"><p>Socket information for remote end of connection </p>
</td></tr>
</table>
</div>
</div>
<a id="gae2130f1fa2d0db58c5c3c9c73d9b4009"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae2130f1fa2d0db58c5c3c9c73d9b4009">◆ </a></span>apr_shutdown_how_e</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__apr__network__io.html#gae2130f1fa2d0db58c5c3c9c73d9b4009">apr_shutdown_how_e</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Define what type of socket shutdown should occur. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ggae2130f1fa2d0db58c5c3c9c73d9b4009a88d0661d35eea5319715d6ca69265b01"></a>APR_SHUTDOWN_READ </td><td class="fielddoc"><p>no longer allow read request </p>
</td></tr>
<tr><td class="fieldname"><a id="ggae2130f1fa2d0db58c5c3c9c73d9b4009a5e335b392088e14df65d1bd5e0db7c46"></a>APR_SHUTDOWN_WRITE </td><td class="fielddoc"><p>no longer allow write requests </p>
</td></tr>
<tr><td class="fieldname"><a id="ggae2130f1fa2d0db58c5c3c9c73d9b4009add172f55ff5ee7b930683a3903c99768"></a>APR_SHUTDOWN_READWRITE </td><td class="fielddoc"><p>no longer allow read or write requests </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="ga6bd3d656ba935ca428075f477b8a6f8b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6bd3d656ba935ca428075f477b8a6f8b">◆ </a></span>apr_gethostname()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_gethostname </td>
<td>(</td>
<td class="paramtype">char * </td>
<td class="paramname"><em>buf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__apr__pools.html#gaf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> * </td>
<td class="paramname"><em>cont</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get name of the current machine </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">buf</td><td>A buffer to store the hostname in. </td></tr>
<tr><td class="paramname">len</td><td>The maximum length of the hostname that can be stored in the buffer provided. The suggested length is APRMAXHOSTLEN + 1. </td></tr>
<tr><td class="paramname">cont</td><td>The pool to use. </td></tr>
</table>
</dd>
</dl>
<dl class="section remark"><dt>Remarks</dt><dd>If the buffer was not large enough, an error will be returned. </dd></dl>
</div>
</div>
<a id="ga7a56fd9573b942753738ec30b887c9de"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7a56fd9573b942753738ec30b887c9de">◆ </a></span>apr_getnameinfo()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_getnameinfo </td>
<td>(</td>
<td class="paramtype">char ** </td>
<td class="paramname"><em>hostname</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> * </td>
<td class="paramname"><em>sa</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">apr_int32_t </td>
<td class="paramname"><em>flags</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Look up the host name from an <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a>. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">hostname</td><td>The hostname. </td></tr>
<tr><td class="paramname">sa</td><td>The <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a>. </td></tr>
<tr><td class="paramname">flags</td><td>Special processing flags. </td></tr>
</table>
</dd>
</dl>
<dl class="section remark"><dt>Remarks</dt><dd>Results can vary significantly between platforms when processing wildcard socket addresses. </dd></dl>
</div>
</div>
<a id="gad5b504c0fe4d578e72531e3ca0263654"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad5b504c0fe4d578e72531e3ca0263654">◆ </a></span>apr_getservbyname()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_getservbyname </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> * </td>
<td class="paramname"><em>sockaddr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>servname</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Given an <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> and a service name, set the port for the service </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sockaddr</td><td>The <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> that will have its port set </td></tr>
<tr><td class="paramname">servname</td><td>The name of the service you wish to use </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga34a3c7f1666427f4e381e857b9e9c298"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga34a3c7f1666427f4e381e857b9e9c298">◆ </a></span>apr_ipsubnet_create()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_ipsubnet_create </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#gac86ee04eb80f938902095d1d0a67c324">apr_ipsubnet_t</a> ** </td>
<td class="paramname"><em>ipsub</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>ipstr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>mask_or_numbits</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__apr__pools.html#gaf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> * </td>
<td class="paramname"><em>p</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Build an ip-subnet representation from an IP address and optional netmask or number-of-bits. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ipsub</td><td>The new ip-subnet representation </td></tr>
<tr><td class="paramname">ipstr</td><td>The input IP address string </td></tr>
<tr><td class="paramname">mask_or_numbits</td><td>The input netmask or number-of-bits string, or NULL </td></tr>
<tr><td class="paramname">p</td><td>The pool to allocate from </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gab74d21b8898b7c40bf7fd07ad3eb993d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab74d21b8898b7c40bf7fd07ad3eb993d">◆ </a></span>apr_ipsubnet_test()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int apr_ipsubnet_test </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#gac86ee04eb80f938902095d1d0a67c324">apr_ipsubnet_t</a> * </td>
<td class="paramname"><em>ipsub</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> * </td>
<td class="paramname"><em>sa</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Test the IP address in an <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> against a pre-built ip-subnet representation. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ipsub</td><td>The ip-subnet representation </td></tr>
<tr><td class="paramname">sa</td><td>The socket address to test </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>non-zero if the socket address is within the subnet, 0 otherwise </dd></dl>
</div>
</div>
<a id="ga90c31b2f012c6b1e2d842a96c4431de3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga90c31b2f012c6b1e2d842a96c4431de3">◆ </a></span>apr_parse_addr_port()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_parse_addr_port </td>
<td>(</td>
<td class="paramtype">char ** </td>
<td class="paramname"><em>addr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char ** </td>
<td class="paramname"><em>scope_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#gaa670a71960f6eb4fe0d0de2a1e7aba03">apr_port_t</a> * </td>
<td class="paramname"><em>port</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__apr__pools.html#gaf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> * </td>
<td class="paramname"><em>p</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Parse hostname/IP address with scope id and port.</p>
<p>Any of the following strings are accepted: 8080 (just the port number) www.apache.org (just the hostname) www.apache.org:8080 (hostname and port number)</p>
<p>[fe80::1eth0] (IPv6 numeric address string and scope id)</p>
<p>Invalid strings: (empty string) [abc] (not valid IPv6 numeric address string) abc:65536 (invalid port number)</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">addr</td><td>The new buffer containing just the hostname. On output, *addr will be NULL if no hostname/IP address was specfied. </td></tr>
<tr><td class="paramname">scope_id</td><td>The new buffer containing just the scope id. On output, *scope_id will be NULL if no scope id was specified. </td></tr>
<tr><td class="paramname">port</td><td>The port number. On output, *port will be 0 if no port was specified. </td></tr>
</table>
</dd>
</dl>
<h3><a class="anchor" id="autotoc_md0"></a>
FIXME: 0 is a legal port (per RFC 1700). this should</h3>
<h3><a class="anchor" id="autotoc_md1"></a>
return something besides zero if the port is missing.</h3>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">str</td><td>The input string to be parsed. </td></tr>
<tr><td class="paramname">p</td><td>The pool from which *addr and *scope_id are allocated. </td></tr>
</table>
</dd>
</dl>
<dl class="section remark"><dt>Remarks</dt><dd>If scope id shouldn't be allowed, check for scope_id != NULL in addition to checking the return code. If addr/hostname should be required, check for addr == NULL in addition to checking the return code. </dd></dl>
</div>
</div>
<a id="ga9fc01ffaed8412193d2744f1fb632d88"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9fc01ffaed8412193d2744f1fb632d88">◆ </a></span>APR_PERMS_SET_IMPLEMENT()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">APR_PERMS_SET_IMPLEMENT </td>
<td>(</td>
<td class="paramtype">socket </td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set socket permissions. </p>
</div>
</div>
<a id="ga1bf65369305ae352f3280af2acc684f5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1bf65369305ae352f3280af2acc684f5">◆ </a></span>apr_sockaddr_equal()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int apr_sockaddr_equal </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> * </td>
<td class="paramname"><em>addr1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> * </td>
<td class="paramname"><em>addr2</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>See if the IP addresses in two APR socket addresses are equivalent. Appropriate logic is present for comparing IPv4-mapped IPv6 addresses with IPv4 addresses.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">addr1</td><td>One of the APR socket addresses. </td></tr>
<tr><td class="paramname">addr2</td><td>The other APR socket address. </td></tr>
</table>
</dd>
</dl>
<dl class="section remark"><dt>Remarks</dt><dd>The return value will be non-zero if the addresses are equivalent. </dd></dl>
</div>
</div>
<a id="ga4175809cd324a0b81951bd656fabbc83"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga4175809cd324a0b81951bd656fabbc83">◆ </a></span>apr_sockaddr_info_copy()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_sockaddr_info_copy </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> ** </td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> * </td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__apr__pools.html#gaf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> * </td>
<td class="paramname"><em>p</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Copy <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> src to dst on pool p. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">dst</td><td>The destination <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a>. </td></tr>
<tr><td class="paramname">src</td><td>The source <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a>. </td></tr>
<tr><td class="paramname">p</td><td>The pool for the <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> and associated storage. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gaa2f399ca2b60b35c0abf7630298c6c9f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa2f399ca2b60b35c0abf7630298c6c9f">◆ </a></span>apr_sockaddr_info_get()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_sockaddr_info_get </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> ** </td>
<td class="paramname"><em>sa</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>hostname</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">apr_int32_t </td>
<td class="paramname"><em>family</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#gaa670a71960f6eb4fe0d0de2a1e7aba03">apr_port_t</a> </td>
<td class="paramname"><em>port</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">apr_int32_t </td>
<td class="paramname"><em>flags</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__apr__pools.html#gaf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> * </td>
<td class="paramname"><em>p</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> from hostname, address family, and port. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sa</td><td>The new <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a>. </td></tr>
<tr><td class="paramname">hostname</td><td>The hostname or numeric address string to resolve/parse, or NULL to build an address that corresponds to 0.0.0.0 or :: or in case of APR_UNIX family it is absolute socket filename. </td></tr>
<tr><td class="paramname">family</td><td>The address family to use, or APR_UNSPEC if the system should decide. </td></tr>
<tr><td class="paramname">port</td><td>The port number. </td></tr>
<tr><td class="paramname">flags</td><td>Special processing flags: <pre>
APR_IPV4_ADDR_OK first query for IPv4 addresses; only look
for IPv6 addresses if the first query failed;
only valid if family is APR_UNSPEC and hostname
isn't NULL; mutually exclusive with
APR_IPV6_ADDR_OK
APR_IPV6_ADDR_OK first query for IPv6 addresses; only look
for IPv4 addresses if the first query failed;
only valid if family is APR_UNSPEC and hostname
isn't NULL and APR_HAVE_IPV6; mutually exclusive
with APR_IPV4_ADDR_OK
</pre> </td></tr>
<tr><td class="paramname">p</td><td>The pool for the <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> and associated storage. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gab78fc9b9799c119f4a5517411458a660"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab78fc9b9799c119f4a5517411458a660">◆ </a></span>apr_sockaddr_ip_get()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_sockaddr_ip_get </td>
<td>(</td>
<td class="paramtype">char ** </td>
<td class="paramname"><em>addr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> * </td>
<td class="paramname"><em>sockaddr</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the IP address (in numeric address string format) in an APR socket address. APR will allocate storage for the IP address string from the pool of the <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a>. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">addr</td><td>The IP address. </td></tr>
<tr><td class="paramname">sockaddr</td><td>The socket address to reference. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga8c88ae154304e30d47c2696f4370dc6d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8c88ae154304e30d47c2696f4370dc6d">◆ </a></span>apr_sockaddr_ip_getbuf()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_sockaddr_ip_getbuf </td>
<td>(</td>
<td class="paramtype">char * </td>
<td class="paramname"><em>buf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">apr_size_t </td>
<td class="paramname"><em>buflen</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> * </td>
<td class="paramname"><em>sockaddr</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Write the IP address (in numeric address string format) of the APR socket address <em>sockaddr</em> into the buffer <em>buf</em> (of size <em>buflen</em>). </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sockaddr</td><td>The socket address to reference. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gab9e53832f95e39cb780345c2b7783830"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab9e53832f95e39cb780345c2b7783830">◆ </a></span>apr_sockaddr_is_wildcard()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int apr_sockaddr_is_wildcard </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> * </td>
<td class="paramname"><em>addr</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>See if the IP address in an APR socket address refers to the wildcard address for the protocol family (e.g., INADDR_ANY for IPv4).</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">addr</td><td>The APR socket address to examine. </td></tr>
</table>
</dd>
</dl>
<dl class="section remark"><dt>Remarks</dt><dd>The return value will be non-zero if the address is initialized and is the wildcard address. </dd></dl>
</div>
</div>
<a id="ga1d62711ca77ccc0f6413a298a47876da"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1d62711ca77ccc0f6413a298a47876da">◆ </a></span>apr_socket_accept()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_socket_accept </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> ** </td>
<td class="paramname"><em>new_sock</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> * </td>
<td class="paramname"><em>sock</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__apr__pools.html#gaf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> * </td>
<td class="paramname"><em>connection_pool</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Accept a new connection request </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">new_sock</td><td>A copy of the socket that is connected to the socket that made the connection request. This is the socket which should be used for all future communication. </td></tr>
<tr><td class="paramname">sock</td><td>The socket we are listening on. </td></tr>
<tr><td class="paramname">connection_pool</td><td>The pool for the new socket. </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The pool will be used by various functions that operate on the socket. The caller must ensure that it is not used by other threads at the same time. </dd></dl>
</div>
</div>
<a id="ga270b7c0835283fa2b85a05d295dd7ee5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga270b7c0835283fa2b85a05d295dd7ee5">◆ </a></span>apr_socket_accept_filter()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_socket_accept_filter </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> * </td>
<td class="paramname"><em>sock</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char * </td>
<td class="paramname"><em>name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char * </td>
<td class="paramname"><em>args</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set an OS level accept filter. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sock</td><td>The socket to put the accept filter on. </td></tr>
<tr><td class="paramname">name</td><td>The accept filter </td></tr>
<tr><td class="paramname">args</td><td>Any extra args to the accept filter. Passing NULL here removes the accept filter. </td></tr>
</table>
</dd>
</dl>
<dl class="bug"><dt><b><a class="el" href="bug.html#_bug000004">Bug:</a></b></dt><dd>name and args should have been declared as const char *, as they are in APR 2.0 </dd></dl>
</div>
</div>
<a id="gacad56b59eafc6ad2459bf6493c992515"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gacad56b59eafc6ad2459bf6493c992515">◆ </a></span>apr_socket_addr_get()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_socket_addr_get </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> ** </td>
<td class="paramname"><em>sa</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#ga1982f44f48fdf00a8bd754bc7b773edc">apr_interface_e</a> </td>
<td class="paramname"><em>which</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> * </td>
<td class="paramname"><em>sock</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return an address associated with a socket; either the address to which the socket is bound locally or the address of the peer to which the socket is connected. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sa</td><td>The returned <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a>. </td></tr>
<tr><td class="paramname">which</td><td>Whether to retrieve the local or remote address </td></tr>
<tr><td class="paramname">sock</td><td>The socket to use </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga2389de257444870974b5ded91cf7a10c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga2389de257444870974b5ded91cf7a10c">◆ </a></span>apr_socket_atmark()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_socket_atmark </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> * </td>
<td class="paramname"><em>sock</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>atmark</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Query the specified socket if at the OOB/Urgent data mark </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sock</td><td>The socket to query </td></tr>
<tr><td class="paramname">atmark</td><td>Is set to true if socket is at the OOB/urgent mark, otherwise is set to false. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gabfcb1fe4447921e5b86d395126b5d6f0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gabfcb1fe4447921e5b86d395126b5d6f0">◆ </a></span>apr_socket_atreadeof()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_socket_atreadeof </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> * </td>
<td class="paramname"><em>sock</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>atreadeof</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Determine whether the receive part of the socket has been closed by the peer (such that a subsequent call to apr_socket_read would return APR_EOF), if the socket's receive buffer is empty. This function does not block waiting for I/O.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sock</td><td>The socket to check </td></tr>
<tr><td class="paramname">atreadeof</td><td>If APR_SUCCESS is returned, *atreadeof is set to non-zero if a subsequent read would return APR_EOF </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>an error is returned if it was not possible to determine the status, in which case *atreadeof is not changed. </dd></dl>
</div>
</div>
<a id="ga512882c9979c2b9cad7cbc2508516d65"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga512882c9979c2b9cad7cbc2508516d65">◆ </a></span>apr_socket_bind()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_socket_bind </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> * </td>
<td class="paramname"><em>sock</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> * </td>
<td class="paramname"><em>sa</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Bind the socket to its associated port </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sock</td><td>The socket to bind </td></tr>
<tr><td class="paramname">sa</td><td>The socket address to bind to </td></tr>
</table>
</dd>
</dl>
<dl class="section remark"><dt>Remarks</dt><dd>This may be where we will find out if there is any other process using the selected port. </dd></dl>
</div>
</div>
<a id="ga88779f243ce19a2563544aee81894e6d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga88779f243ce19a2563544aee81894e6d">◆ </a></span>apr_socket_close()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_socket_close </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> * </td>
<td class="paramname"><em>thesocket</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Close a socket. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">thesocket</td><td>The socket to close </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga8e58bd8112ed2ce5004487918cd9275e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8e58bd8112ed2ce5004487918cd9275e">◆ </a></span>apr_socket_connect()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_socket_connect </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> * </td>
<td class="paramname"><em>sock</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> * </td>
<td class="paramname"><em>sa</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Issue a connection request to a socket either on the same machine or a different one. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sock</td><td>The socket we wish to use for our side of the connection </td></tr>
<tr><td class="paramname">sa</td><td>The address of the machine we wish to connect to. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga46b81e267ef80e64510d4e83880a91bd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga46b81e267ef80e64510d4e83880a91bd">◆ </a></span>apr_socket_create()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_socket_create </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> ** </td>
<td class="paramname"><em>new_sock</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>family</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>protocol</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__apr__pools.html#gaf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> * </td>
<td class="paramname"><em>cont</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a socket. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">new_sock</td><td>The new socket that has been set up. </td></tr>
<tr><td class="paramname">family</td><td>The address family of the socket (e.g., APR_INET). </td></tr>
<tr><td class="paramname">type</td><td>The type of the socket (e.g., SOCK_STREAM). </td></tr>
<tr><td class="paramname">protocol</td><td>The protocol of the socket (e.g., APR_PROTO_TCP). </td></tr>
<tr><td class="paramname">cont</td><td>The pool for the apr_socket_t and associated storage. </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The pool will be used by various functions that operate on the socket. The caller must ensure that it is not used by other threads at the same time. </dd></dl>
</div>
</div>
<a id="gae76b48d0224a608b4ddb8bd00582eaa7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae76b48d0224a608b4ddb8bd00582eaa7">◆ </a></span>apr_socket_data_get()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_socket_data_get </td>
<td>(</td>
<td class="paramtype">void ** </td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>key</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> * </td>
<td class="paramname"><em>sock</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the data associated with the current socket </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">data</td><td>The user data associated with the socket. </td></tr>
<tr><td class="paramname">key</td><td>The key to associate with the user data. </td></tr>
<tr><td class="paramname">sock</td><td>The currently open socket. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gafec197f3aa9a495801cdf7892ff8dcb5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gafec197f3aa9a495801cdf7892ff8dcb5">◆ </a></span>apr_socket_data_set()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_socket_data_set </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> * </td>
<td class="paramname"><em>sock</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void * </td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>key</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a>(*)(void *) </td>
<td class="paramname"><em>cleanup</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the data associated with the current socket. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sock</td><td>The currently open socket. </td></tr>
<tr><td class="paramname">data</td><td>The user data to associate with the socket. </td></tr>
<tr><td class="paramname">key</td><td>The key to associate with the data. </td></tr>
<tr><td class="paramname">cleanup</td><td>The cleanup to call when the socket is destroyed. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga8ae81c6a7acf90112ebcfb9221ccc649"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8ae81c6a7acf90112ebcfb9221ccc649">◆ </a></span>apr_socket_inherit_set()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_socket_inherit_set </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> * </td>
<td class="paramname"><em>thesocket</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set a socket to be inherited by child processes. </p>
</div>
</div>
<a id="ga5afabb2cee38c141d076b9c52a3f2ce1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga5afabb2cee38c141d076b9c52a3f2ce1">◆ </a></span>apr_socket_inherit_unset()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_socket_inherit_unset </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> * </td>
<td class="paramname"><em>thesocket</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Unset a socket from being inherited by child processes. </p>
</div>
</div>
<a id="ga154bcee918f6f01fe0373359dd74b0c4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga154bcee918f6f01fe0373359dd74b0c4">◆ </a></span>apr_socket_listen()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_socket_listen </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> * </td>
<td class="paramname"><em>sock</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">apr_int32_t </td>
<td class="paramname"><em>backlog</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Listen to a bound socket for connections. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sock</td><td>The socket to listen on </td></tr>
<tr><td class="paramname">backlog</td><td>The number of outstanding connections allowed in the sockets listen queue. If this value is less than zero, the listen queue size is set to zero. <br />
</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga1934c2d5943efc8ce925f376f3c2e17e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1934c2d5943efc8ce925f376f3c2e17e">◆ </a></span>apr_socket_opt_get()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_socket_opt_get </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> * </td>
<td class="paramname"><em>sock</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">apr_int32_t </td>
<td class="paramname"><em>opt</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">apr_int32_t * </td>
<td class="paramname"><em>on</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Query socket options for the specified socket </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sock</td><td>The socket to query </td></tr>
<tr><td class="paramname">opt</td><td>The option we would like to query. One of: <pre>
APR_SO_DEBUG -- turn on debugging information
APR_SO_KEEPALIVE -- keep connections active
APR_SO_LINGER -- lingers on close if data is present
APR_SO_NONBLOCK -- Turns blocking on/off for socket
APR_SO_REUSEADDR -- The rules used in validating addresses
supplied to bind should allow reuse
of local addresses.
APR_SO_SNDBUF -- Set the SendBufferSize
APR_SO_RCVBUF -- Set the ReceiveBufferSize
APR_SO_DISCONNECTED -- Query the disconnected state of the socket.
(Currently only used on Windows)
</pre> </td></tr>
<tr><td class="paramname">on</td><td>Socket option returned on the call. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga08f5e505fa611005f56c12783269ffa9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga08f5e505fa611005f56c12783269ffa9">◆ </a></span>apr_socket_opt_set()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_socket_opt_set </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> * </td>
<td class="paramname"><em>sock</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">apr_int32_t </td>
<td class="paramname"><em>opt</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">apr_int32_t </td>
<td class="paramname"><em>on</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Setup socket options for the specified socket </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sock</td><td>The socket to set up. </td></tr>
<tr><td class="paramname">opt</td><td>The option we would like to configure. One of: <pre>
APR_SO_DEBUG -- turn on debugging information
APR_SO_KEEPALIVE -- keep connections active
APR_SO_LINGER -- lingers on close if data is present
APR_SO_NONBLOCK -- Turns blocking on/off for socket
When this option is enabled, use
the <a class="el" href="group___a_p_r___s_t_a_t_u_s___i_s.html#ga9dd578bfcd76a2d997395608ae5b3a4e">APR_STATUS_IS_EAGAIN()</a> macro to
see if a send or receive function
could not transfer data without
blocking.
APR_SO_REUSEADDR -- The rules used in validating addresses
supplied to bind should allow reuse
of local addresses.
APR_SO_SNDBUF -- Set the SendBufferSize
APR_SO_RCVBUF -- Set the ReceiveBufferSize
APR_SO_FREEBIND -- Allow binding to non-local IP address.
</pre> </td></tr>
<tr><td class="paramname">on</td><td>Value for the option. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga4f109ecf176aee8fca8ecfa7f8b07d93"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga4f109ecf176aee8fca8ecfa7f8b07d93">◆ </a></span>apr_socket_pool_get()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__pools.html#gaf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a>* apr_socket_pool_get </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> * </td>
<td class="paramname"><em>thesocket</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the pool used by the socket. </p>
</div>
</div>
<a id="gac402d9426de37b6cede18fa157020bd9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac402d9426de37b6cede18fa157020bd9">◆ </a></span>apr_socket_protocol_get()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_socket_protocol_get </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> * </td>
<td class="paramname"><em>sock</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>protocol</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the protocol of the socket. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sock</td><td>The socket to query. </td></tr>
<tr><td class="paramname">protocol</td><td>The returned protocol (e.g., APR_PROTO_TCP). </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gaa6ee00191f197f64b5a5409f4aff53d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa6ee00191f197f64b5a5409f4aff53d1">◆ </a></span>apr_socket_recv()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_socket_recv </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> * </td>
<td class="paramname"><em>sock</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char * </td>
<td class="paramname"><em>buf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">apr_size_t * </td>
<td class="paramname"><em>len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Read data from a network. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sock</td><td>The socket to read the data from. </td></tr>
<tr><td class="paramname">buf</td><td>The buffer to store the data in. </td></tr>
<tr><td class="paramname">len</td><td>On entry, the number of bytes to receive; on exit, the number of bytes received. </td></tr>
</table>
</dd>
</dl>
<dl class="section remark"><dt>Remarks</dt><dd><pre>
This functions acts like a blocking read by default. To change
this behavior, use <a class="el" href="group__apr__network__io.html#ga945bdbe807ec5635d65a6fd9ddb78c29">apr_socket_timeout_set()</a> or the APR_SO_NONBLOCK
socket option.
The number of bytes actually received is stored in argument 3.</pre></dd></dl>
<p>It is possible for both bytes to be received and an APR_EOF or other error to be returned.</p>
<pre>APR_EINTR is never returned.
</pre>
</div>
</div>
<a id="ga80880312b41e86c9c266ede1a504e2ca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga80880312b41e86c9c266ede1a504e2ca">◆ </a></span>apr_socket_recvfrom()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_socket_recvfrom </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> * </td>
<td class="paramname"><em>from</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> * </td>
<td class="paramname"><em>sock</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">apr_int32_t </td>
<td class="paramname"><em>flags</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char * </td>
<td class="paramname"><em>buf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">apr_size_t * </td>
<td class="paramname"><em>len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Read data from a socket. On success, the address of the peer from which the data was sent is copied into the <em>from</em> parameter, and the <em>len</em> parameter is updated to give the number of bytes written to <em>buf</em>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">from</td><td>Updated with the address from which the data was received </td></tr>
<tr><td class="paramname">sock</td><td>The socket to use </td></tr>
<tr><td class="paramname">flags</td><td>The flags to use </td></tr>
<tr><td class="paramname">buf</td><td>The buffer to use </td></tr>
<tr><td class="paramname">len</td><td>The length of the available buffer </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga943268245cf59f6ff8cf1458c9a9ba8d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga943268245cf59f6ff8cf1458c9a9ba8d">◆ </a></span>apr_socket_send()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_socket_send </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> * </td>
<td class="paramname"><em>sock</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>buf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">apr_size_t * </td>
<td class="paramname"><em>len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Send data over a network. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sock</td><td>The socket to send the data over. </td></tr>
<tr><td class="paramname">buf</td><td>The buffer which contains the data to be sent. </td></tr>
<tr><td class="paramname">len</td><td>On entry, the number of bytes to send; on exit, the number of bytes sent. </td></tr>
</table>
</dd>
</dl>
<dl class="section remark"><dt>Remarks</dt><dd><pre>
This functions acts like a blocking write by default. To change
this behavior, use <a class="el" href="group__apr__network__io.html#ga945bdbe807ec5635d65a6fd9ddb78c29">apr_socket_timeout_set()</a> or the APR_SO_NONBLOCK
socket option.</pre></dd></dl>
<p>It is possible for both bytes to be sent and an error to be returned.</p>
<pre>APR_EINTR is never returned.
</pre>
</div>
</div>
<a id="ga3d93e6212c4c27f2390b0057f8f4a8be"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga3d93e6212c4c27f2390b0057f8f4a8be">◆ </a></span>apr_socket_sendfile()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_socket_sendfile </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> * </td>
<td class="paramname"><em>sock</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t</a> * </td>
<td class="paramname"><em>file</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structapr__hdtr__t.html">apr_hdtr_t</a> * </td>
<td class="paramname"><em>hdtr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">apr_off_t * </td>
<td class="paramname"><em>offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">apr_size_t * </td>
<td class="paramname"><em>len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">apr_int32_t </td>
<td class="paramname"><em>flags</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Send a file from an open file descriptor to a socket, along with optional headers and trailers </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sock</td><td>The socket to which we're writing </td></tr>
<tr><td class="paramname">file</td><td>The open file from which to read </td></tr>
<tr><td class="paramname">hdtr</td><td>A structure containing the headers and trailers to send </td></tr>
<tr><td class="paramname">offset</td><td>Offset into the file where we should begin writing </td></tr>
<tr><td class="paramname">len</td><td>(input) - Number of bytes to send from the file (output) - Number of bytes actually sent, including headers, file, and trailers </td></tr>
<tr><td class="paramname">flags</td><td>APR flags that are mapped to OS specific flags </td></tr>
</table>
</dd>
</dl>
<dl class="section remark"><dt>Remarks</dt><dd>This functions acts like a blocking write by default. To change this behavior, use <a class="el" href="group__apr__network__io.html#ga945bdbe807ec5635d65a6fd9ddb78c29">apr_socket_timeout_set()</a> or the APR_SO_NONBLOCK socket option. The number of bytes actually sent is stored in the len parameter. The offset parameter is passed by reference for no reason; its value will never be modified by the <a class="el" href="group__apr__network__io.html#ga3d93e6212c4c27f2390b0057f8f4a8be">apr_socket_sendfile()</a> function. </dd></dl>
</div>
</div>
<a id="ga03ae34bc5712dac2b3fdee39e5f87be3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga03ae34bc5712dac2b3fdee39e5f87be3">◆ </a></span>apr_socket_sendto()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_socket_sendto </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> * </td>
<td class="paramname"><em>sock</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> * </td>
<td class="paramname"><em>where</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">apr_int32_t </td>
<td class="paramname"><em>flags</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>buf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">apr_size_t * </td>
<td class="paramname"><em>len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sock</td><td>The socket to send from </td></tr>
<tr><td class="paramname">where</td><td>The <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> describing where to send the data </td></tr>
<tr><td class="paramname">flags</td><td>The flags to use </td></tr>
<tr><td class="paramname">buf</td><td>The data to send </td></tr>
<tr><td class="paramname">len</td><td>The length of the data to send </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga99ece70c34a7a332daa3941de3950c64"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga99ece70c34a7a332daa3941de3950c64">◆ </a></span>apr_socket_sendv()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_socket_sendv </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> * </td>
<td class="paramname"><em>sock</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const struct iovec * </td>
<td class="paramname"><em>vec</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">apr_int32_t </td>
<td class="paramname"><em>nvec</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">apr_size_t * </td>
<td class="paramname"><em>len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Send multiple buffers over a network. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sock</td><td>The socket to send the data over. </td></tr>
<tr><td class="paramname">vec</td><td>The array of iovec structs containing the data to send </td></tr>
<tr><td class="paramname">nvec</td><td>The number of iovec structs in the array </td></tr>
<tr><td class="paramname">len</td><td>Receives the number of bytes actually written </td></tr>
</table>
</dd>
</dl>
<dl class="section remark"><dt>Remarks</dt><dd><pre>
This functions acts like a blocking write by default. To change
this behavior, use <a class="el" href="group__apr__network__io.html#ga945bdbe807ec5635d65a6fd9ddb78c29">apr_socket_timeout_set()</a> or the APR_SO_NONBLOCK
socket option.
The number of bytes actually sent is stored in argument 4.</pre></dd></dl>
<p>It is possible for both bytes to be sent and an error to be returned.</p>
<pre>APR_EINTR is never returned.
</pre>
</div>
</div>
<a id="gac5aea857a50c493f840c48b930abc48e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac5aea857a50c493f840c48b930abc48e">◆ </a></span>apr_socket_shutdown()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_socket_shutdown </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> * </td>
<td class="paramname"><em>thesocket</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#gae2130f1fa2d0db58c5c3c9c73d9b4009">apr_shutdown_how_e</a> </td>
<td class="paramname"><em>how</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Shutdown either reading, writing, or both sides of a socket. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">thesocket</td><td>The socket to close </td></tr>
<tr><td class="paramname">how</td><td>How to shutdown the socket. One of: <pre>
APR_SHUTDOWN_READ no longer allow read requests
APR_SHUTDOWN_WRITE no longer allow write requests
APR_SHUTDOWN_READWRITE no longer allow read or write requests
</pre> </td></tr>
</table>
</dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__apr__network__io.html#gae2130f1fa2d0db58c5c3c9c73d9b4009">apr_shutdown_how_e</a> </dd></dl>
<dl class="section remark"><dt>Remarks</dt><dd>This does not actually close the socket descriptor, it just controls which calls are still valid on the socket. </dd></dl>
</div>
</div>
<a id="gaa32313b54afed590367c8571075d2bc1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa32313b54afed590367c8571075d2bc1">◆ </a></span>apr_socket_timeout_get()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_socket_timeout_get </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> * </td>
<td class="paramname"><em>sock</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__apr__time.html#gaae2129185a395cc393f76fabf4f43e47">apr_interval_time_t</a> * </td>
<td class="paramname"><em>t</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Query socket timeout for the specified socket </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sock</td><td>The socket to query </td></tr>
<tr><td class="paramname">t</td><td>Socket timeout returned from the query. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga945bdbe807ec5635d65a6fd9ddb78c29"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga945bdbe807ec5635d65a6fd9ddb78c29">◆ </a></span>apr_socket_timeout_set()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_socket_timeout_set </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> * </td>
<td class="paramname"><em>sock</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__apr__time.html#gaae2129185a395cc393f76fabf4f43e47">apr_interval_time_t</a> </td>
<td class="paramname"><em>t</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Setup socket timeout for the specified socket </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sock</td><td>The socket to set up. </td></tr>
<tr><td class="paramname">t</td><td>Value for the timeout. <pre>
t > 0 -- read and write calls return APR_TIMEUP if specified time
elapsess with no data read or written
t == 0 -- read and write calls never block
t < 0 -- read and write calls block
</pre> </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga8d23ee2db9a84af2e6408ef460613514"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8d23ee2db9a84af2e6408ef460613514">◆ </a></span>apr_socket_type_get()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_socket_type_get </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__apr__network__io.html#ga49262b223e7434746e1f1737659aa2c3">apr_socket_t</a> * </td>
<td class="paramname"><em>sock</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>type</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the type of the socket. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sock</td><td>The socket to query. </td></tr>
<tr><td class="paramname">type</td><td>The returned type (e.g., SOCK_STREAM). </td></tr>
</table>
</dd>
</dl>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by  <a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>
AnonSec - 2021 | Recode By D7net