/
usr
/
share
/
doc
/
libapr1-dev
/
html
/
Upload File
HOME
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.13"/> <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.13 --> <script type="text/javascript"> var searchBox = new SearchBox("searchBox", "search",false,'Search'); </script> <script type="text/javascript" src="menudata.js"></script> <script type="text/javascript" src="menu.js"></script> <script type="text/javascript"> $(function() { initMenu('',true,false,'search.php','Search'); $(document).ready(function() { init_search(); }); }); </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"> <center><table><tr><td><img src="group__apr__network__io.png" border="0" alt="" usemap="#group____apr____network____io"/> <!-- MAP 0 --> </td></tr></table></center> </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. <h3>FIXME: 0 is a legal port (per RFC 1700). this should</h3> </td></tr> </table> </dd> </dl> <h3>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. </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.13 </small></address> </body> </html>