<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>Apache Portable Runtime: Network Routines</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.3.9.1 --> <div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="annotated.html">Data Structures</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Data Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related Pages</a></div> <h1>Network Routines<br> <small> [<a class="el" href="group__APR.html">Apache Portability Runtime library</a>]</small> </h1><table border="0" cellpadding="0" cellspacing="0"> <tr><td></td></tr> <tr><td colspan="2"><br><h2>Modules</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">group </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__sockopt.html">Socket option definitions</a></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">group </td><td class="memItemRight" valign="bottom"><a class="el" href="group__IP__Proto.html">IP Protocol Definitions for use when creating sockets</a></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">group </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__mcast.html">IP Multicast</a></td></tr> <tr><td colspan="2"><br><h2>Data Structures</h2></td></tr> <tr><td class="memItemLeft" nowrap 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><td class="memItemLeft" nowrap 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><td colspan="2"><br><h2>Defines</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga41">APR_MAX_SECS_TO_LINGER</a> 30</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga42">APRMAXHOSTLEN</a> 256</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga43">APR_ANYADDR</a> "0.0.0.0"</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga44">APR_IPV4_ADDR_OK</a> 0x01</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga45">APR_IPV6_ADDR_OK</a> 0x02</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga46">APR_INADDR_NONE</a> ((unsigned int) 0xffffffff)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga47">APR_INET</a> AF_INET</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga48">APR_UNSPEC</a> 0</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga49">APR_INET6</a> AF_INET6</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga50">apr_inet_addr</a> inet_addr</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga51">APR_SENDFILE_DISCONNECT_SOCKET</a> 1</td></tr> <tr><td colspan="2"><br><h2>Typedefs</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <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#ga1">apr_hdtr_t</a></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef in_addr </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga2">apr_in_addr_t</a></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="group__apr__network__io.html#ga3">apr_ipsubnet_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga3">apr_ipsubnet_t</a></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef apr_uint16_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga4">apr_port_t</a></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <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#ga5">apr_sockaddr_t</a></td></tr> <tr><td colspan="2"><br><h2>Enumerations</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga52">apr_shutdown_how_e</a> { <a class="el" href="group__apr__network__io.html#gga52a35">APR_SHUTDOWN_READ</a>, <a class="el" href="group__apr__network__io.html#gga52a36">APR_SHUTDOWN_WRITE</a>, <a class="el" href="group__apr__network__io.html#gga52a37">APR_SHUTDOWN_READWRITE</a> }</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga53">apr_interface_e</a> { <b>APR_LOCAL</b>, <b>APR_REMOTE</b> }</td></tr> <tr><td colspan="2"><br><h2>Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga6">apr_socket_create</a> (<a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> **new_sock, int family, int type, int protocol, <a class="el" href="group__apr__pools.html#ga0">apr_pool_t</a> *cont)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga7">apr_socket_shutdown</a> (<a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> *thesocket, <a class="el" href="group__apr__network__io.html#ga52">apr_shutdown_how_e</a> how)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga8">apr_socket_close</a> (<a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> *thesocket)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga9">apr_socket_bind</a> (<a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> *sock, <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> *sa)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga10">apr_socket_listen</a> (<a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> *sock, apr_int32_t backlog)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga11">apr_socket_accept</a> (<a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> **new_sock, <a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> *sock, <a class="el" href="group__apr__pools.html#ga0">apr_pool_t</a> *connection_pool)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga12">apr_socket_connect</a> (<a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> *sock, <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> *sa)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga13">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#ga4">apr_port_t</a> port, apr_int32_t flags, <a class="el" href="group__apr__pools.html#ga0">apr_pool_t</a> *p)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga14">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><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga15">apr_parse_addr_port</a> (char **addr, char **scope_id, <a class="el" href="group__apr__network__io.html#ga4">apr_port_t</a> *port, const char *str, <a class="el" href="group__apr__pools.html#ga0">apr_pool_t</a> *p)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga16">apr_gethostname</a> (char *buf, int len, <a class="el" href="group__apr__pools.html#ga0">apr_pool_t</a> *cont)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga17">apr_socket_data_get</a> (void **data, const char *key, <a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> *sock)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga18">apr_socket_data_set</a> (<a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> *sock, void *data, const char *key, <a class="el" href="group__apr__errno.html#ga0">apr_status_t</a>(*cleanup)(void *))</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga19">apr_socket_send</a> (<a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> *sock, const char *buf, apr_size_t *len)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga20">apr_socket_sendv</a> (<a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> *sock, const struct iovec *vec, apr_int32_t nvec, apr_size_t *len)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga21">apr_socket_sendto</a> (<a class="el" href="group__apr__network__io.html#ga0">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><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga22">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#ga0">apr_socket_t</a> *sock, apr_int32_t flags, char *buf, apr_size_t *len)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga23">apr_socket_sendfile</a> (<a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> *sock, <a class="el" href="group__apr__file__io.html#ga2">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><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga24">apr_socket_recv</a> (<a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> *sock, char *buf, apr_size_t *len)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga25">apr_socket_opt_set</a> (<a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> *sock, apr_int32_t opt, apr_int32_t on)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga26">apr_socket_timeout_set</a> (<a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> *sock, <a class="el" href="group__apr__time.html#ga3">apr_interval_time_t</a> t)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga27">apr_socket_opt_get</a> (<a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> *sock, apr_int32_t opt, apr_int32_t *on)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga28">apr_socket_timeout_get</a> (<a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> *sock, <a class="el" href="group__apr__time.html#ga3">apr_interval_time_t</a> *t)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga29">apr_socket_atmark</a> (<a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> *sock, int *atmark)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga30">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#ga53">apr_interface_e</a> which, <a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> *sock)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga31">apr_sockaddr_ip_get</a> (char **addr, <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> *sockaddr)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga32">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><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga33">apr_socket_type_get</a> (<a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> *sock, int *type)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga34">apr_getservbyname</a> (<a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> *sockaddr, const char *servname)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga35">apr_ipsubnet_create</a> (<a class="el" href="group__apr__network__io.html#ga3">apr_ipsubnet_t</a> **ipsub, const char *ipstr, const char *mask_or_numbits, <a class="el" href="group__apr__pools.html#ga0">apr_pool_t</a> *p)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga36">apr_ipsubnet_test</a> (<a class="el" href="group__apr__network__io.html#ga3">apr_ipsubnet_t</a> *ipsub, <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> *sa)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga37">apr_socket_accept_filter</a> (<a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> *sock, char *name, char *args)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga38">apr_socket_protocol_get</a> (<a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> *sock, int *protocol)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga39">apr_socket_inherit_set</a> (<a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> *thesocket)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__network__io.html#ga40">apr_socket_inherit_unset</a> (<a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> *thesocket)</td></tr> </table> <hr><h2>Define Documentation</h2> <a class="anchor" name="ga43" doxytag="apr_network_io.h::APR_ANYADDR"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">#define APR_ANYADDR "0.0.0.0" </td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Default 'any' address </td> </tr> </table> <a class="anchor" name="ga46" doxytag="apr_network_io.h::APR_INADDR_NONE"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">#define APR_INADDR_NONE ((unsigned int) 0xffffffff) </td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Not all platforms have a real INADDR_NONE. This macro replaces INADDR_NONE on all platforms. </td> </tr> </table> <a class="anchor" name="ga47" doxytag="apr_network_io.h::APR_INET"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">#define APR_INET AF_INET </td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Not all platforms have these defined, so we'll define them here The default values come from FreeBSD 4.1.1 </td> </tr> </table> <a class="anchor" name="ga49" doxytag="apr_network_io.h::APR_INET6"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">#define APR_INET6 AF_INET6 </td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> IPv6 Address Family. Not all platforms may have this defined. </td> </tr> </table> <a class="anchor" name="ga50" doxytag="apr_network_io.h::apr_inet_addr"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">#define apr_inet_addr inet_addr </td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> The specific declaration of inet_addr's ... some platforms fall back inet_network (this is not good, but necessary) </td> </tr> </table> <a class="anchor" name="ga44" doxytag="apr_network_io.h::APR_IPV4_ADDR_OK"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">#define APR_IPV4_ADDR_OK 0x01 </td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__apr__network__io.html#ga13">apr_sockaddr_info_get()</a> </dd></dl> </td> </tr> </table> <a class="anchor" name="ga45" doxytag="apr_network_io.h::APR_IPV6_ADDR_OK"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">#define APR_IPV6_ADDR_OK 0x02 </td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__apr__network__io.html#ga13">apr_sockaddr_info_get()</a> </dd></dl> </td> </tr> </table> <a class="anchor" name="ga41" doxytag="apr_network_io.h::APR_MAX_SECS_TO_LINGER"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">#define APR_MAX_SECS_TO_LINGER 30 </td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Maximum seconds to linger </td> </tr> </table> <a class="anchor" name="ga51" doxytag="apr_network_io.h::APR_SENDFILE_DISCONNECT_SOCKET"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">#define APR_SENDFILE_DISCONNECT_SOCKET 1 </td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Support reusing the socket on platforms which support it (from disconnect, specifically Win32. <dl compact><dt><b>Remarks:</b></dt><dd>Optional flag passed into <a class="el" href="group__apr__network__io.html#ga23">apr_socket_sendfile()</a> </dd></dl> </td> </tr> </table> <a class="anchor" name="ga48" doxytag="apr_network_io.h::APR_UNSPEC"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">#define APR_UNSPEC 0 </td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Let the system decide which address family to use </td> </tr> </table> <a class="anchor" name="ga42" doxytag="apr_network_io.h::APRMAXHOSTLEN"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">#define APRMAXHOSTLEN 256 </td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Maximum hostname length </td> </tr> </table> <hr><h2>Typedef Documentation</h2> <a class="anchor" name="ga1" doxytag="apr_network_io.h::apr_hdtr_t"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">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> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> A structure to encapsulate headers and trailers for apr_socket_sendfile </td> </tr> </table> <a class="anchor" name="ga2" doxytag="apr_network_io.h::apr_in_addr_t"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">typedef struct in_addr <a class="el" href="group__apr__network__io.html#ga2">apr_in_addr_t</a> </td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> A structure to represent in_addr </td> </tr> </table> <a class="anchor" name="ga3" doxytag="apr_network_io.h::apr_ipsubnet_t"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">typedef struct <a class="el" href="group__apr__network__io.html#ga3">apr_ipsubnet_t</a> <a class="el" href="group__apr__network__io.html#ga3">apr_ipsubnet_t</a> </td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> A structure to represent an IP subnet </td> </tr> </table> <a class="anchor" name="ga4" doxytag="apr_network_io.h::apr_port_t"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">typedef apr_uint16_t <a class="el" href="group__apr__network__io.html#ga4">apr_port_t</a> </td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> <dl compact><dt><b>Remarks:</b></dt><dd>use apr_uint16_t just in case some system has a short that isn't 16 bits... </dd></dl> </td> </tr> </table> <a class="anchor" name="ga5" doxytag="apr_network_io.h::apr_sockaddr_t"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">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> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> <dl compact><dt><b>Remarks:</b></dt><dd>It's defined here as I think it should all be platform safe... </dd></dl> <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> </dd></dl> </td> </tr> </table> <a class="anchor" name="ga0" doxytag="apr_network_io.h::apr_socket_t"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">typedef struct <a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> <a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> </td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> A structure to represent sockets </td> </tr> </table> <hr><h2>Enumeration Type Documentation</h2> <a class="anchor" name="ga53" doxytag="apr_network_io.h::apr_interface_e"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">enum <a class="el" href="group__apr__network__io.html#ga53">apr_interface_e</a> </td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Enum to tell us if we're interested in remote or local socket </td> </tr> </table> <a class="anchor" name="ga52" doxytag="apr_network_io.h::apr_shutdown_how_e"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">enum <a class="el" href="group__apr__network__io.html#ga52">apr_shutdown_how_e</a> </td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Define what type of socket shutdown should occur. <dl compact><dt><b>Enumeration values: </b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><em><a class="anchor" name="gga52a35" doxytag="APR_SHUTDOWN_READ"></a>APR_SHUTDOWN_READ</em> </td><td> no longer allow read request </td></tr> <tr><td valign="top"><em><a class="anchor" name="gga52a36" doxytag="APR_SHUTDOWN_WRITE"></a>APR_SHUTDOWN_WRITE</em> </td><td> no longer allow write requests </td></tr> <tr><td valign="top"><em><a class="anchor" name="gga52a37" doxytag="APR_SHUTDOWN_READWRITE"></a>APR_SHUTDOWN_READWRITE</em> </td><td> no longer allow read or write requests </td></tr> </table> </dl> </td> </tr> </table> <hr><h2>Function Documentation</h2> <a class="anchor" name="ga16" doxytag="apr_network_io.h::apr_gethostname"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_gethostname </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">char * </td> <td class="mdname" nowrap> <em>buf</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>int </td> <td class="mdname" nowrap> <em>len</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap><a class="el" href="group__apr__pools.html#ga0">apr_pool_t</a> * </td> <td class="mdname" nowrap> <em>cont</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Get name of the current machine <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>A buffer to store the hostname in. </td></tr> <tr><td valign="top"></td><td valign="top"><em>len</em> </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 valign="top"></td><td valign="top"><em>cont</em> </td><td>The pool to use. </td></tr> </table> </dl> <dl compact><dt><b>Remarks:</b></dt><dd>If the buffer was not large enough, an error will be returned. </dd></dl> </td> </tr> </table> <a class="anchor" name="ga14" doxytag="apr_network_io.h::apr_getnameinfo"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_getnameinfo </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">char ** </td> <td class="mdname" nowrap> <em>hostname</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap><a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> * </td> <td class="mdname" nowrap> <em>sa</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>apr_int32_t </td> <td class="mdname" nowrap> <em>flags</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Look up the host name from an <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a>. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>hostname</em> </td><td>The hostname. </td></tr> <tr><td valign="top"></td><td valign="top"><em>sa</em> </td><td>The <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a>. </td></tr> <tr><td valign="top"></td><td valign="top"><em>flags</em> </td><td>Special processing flags. </td></tr> </table> </dl> </td> </tr> </table> <a class="anchor" name="ga34" doxytag="apr_network_io.h::apr_getservbyname"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_getservbyname </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> * </td> <td class="mdname" nowrap> <em>sockaddr</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>servname</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <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 <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>sockaddr</em> </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 valign="top"></td><td valign="top"><em>servname</em> </td><td>The name of the service you wish to use </td></tr> </table> </dl> </td> </tr> </table> <a class="anchor" name="ga35" doxytag="apr_network_io.h::apr_ipsubnet_create"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_ipsubnet_create </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="group__apr__network__io.html#ga3">apr_ipsubnet_t</a> ** </td> <td class="mdname" nowrap> <em>ipsub</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>ipstr</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>mask_or_numbits</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap><a class="el" href="group__apr__pools.html#ga0">apr_pool_t</a> * </td> <td class="mdname" nowrap> <em>p</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Build an ip-subnet representation from an IP address and optional netmask or number-of-bits. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>ipsub</em> </td><td>The new ip-subnet representation </td></tr> <tr><td valign="top"></td><td valign="top"><em>ipstr</em> </td><td>The input IP address string </td></tr> <tr><td valign="top"></td><td valign="top"><em>mask_or_numbits</em> </td><td>The input netmask or number-of-bits string, or NULL </td></tr> <tr><td valign="top"></td><td valign="top"><em>p</em> </td><td>The pool to allocate from </td></tr> </table> </dl> </td> </tr> </table> <a class="anchor" name="ga36" doxytag="apr_network_io.h::apr_ipsubnet_test"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">int apr_ipsubnet_test </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="group__apr__network__io.html#ga3">apr_ipsubnet_t</a> * </td> <td class="mdname" nowrap> <em>ipsub</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap><a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> * </td> <td class="mdname" nowrap> <em>sa</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <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. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>ipsub</em> </td><td>The ip-subnet representation </td></tr> <tr><td valign="top"></td><td valign="top"><em>sa</em> </td><td>The socket address to test </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>non-zero if the socket address is within the subnet, 0 otherwise </dd></dl> </td> </tr> </table> <a class="anchor" name="ga15" doxytag="apr_network_io.h::apr_parse_addr_port"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_parse_addr_port </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">char ** </td> <td class="mdname" nowrap> <em>addr</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>char ** </td> <td class="mdname" nowrap> <em>scope_id</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap><a class="el" href="group__apr__network__io.html#ga4">apr_port_t</a> * </td> <td class="mdname" nowrap> <em>port</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>str</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap><a class="el" href="group__apr__pools.html#ga0">apr_pool_t</a> * </td> <td class="mdname" nowrap> <em>p</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Parse hostname/IP address with scope id and port.<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) [fe80::1]:80 (IPv6 numeric address string only) [fe80::1%eth0] (IPv6 numeric address string and scope id)<p> Invalid strings: (empty string) [abc] (not valid IPv6 numeric address string) abc:65536 (invalid port number)<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>addr</em> </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 valign="top"></td><td valign="top"><em>scope_id</em> </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 valign="top"></td><td valign="top"><em>port</em> </td><td>The port number. On output, *port will be 0 if no port was specified. ### FIXME: 0 is a legal port (per RFC 1700). this should ### return something besides zero if the port is missing. </td></tr> <tr><td valign="top"></td><td valign="top"><em>str</em> </td><td>The input string to be parsed. </td></tr> <tr><td valign="top"></td><td valign="top"><em>p</em> </td><td>The pool from which *addr and *scope_id are allocated. </td></tr> </table> </dl> <dl compact><dt><b>Remarks:</b></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> </td> </tr> </table> <a class="anchor" name="ga32" doxytag="apr_network_io.h::apr_sockaddr_equal"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">int apr_sockaddr_equal </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> * </td> <td class="mdname" nowrap> <em>addr1</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>const <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> * </td> <td class="mdname" nowrap> <em>addr2</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <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 compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>addr1</em> </td><td>One of the APR socket addresses. </td></tr> <tr><td valign="top"></td><td valign="top"><em>addr2</em> </td><td>The other APR socket address. </td></tr> </table> </dl> <dl compact><dt><b>Remarks:</b></dt><dd>The return value will be non-zero if the addresses are equivalent. </dd></dl> </td> </tr> </table> <a class="anchor" name="ga13" doxytag="apr_network_io.h::apr_sockaddr_info_get"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_sockaddr_info_get </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> ** </td> <td class="mdname" nowrap> <em>sa</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>hostname</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>apr_int32_t </td> <td class="mdname" nowrap> <em>family</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap><a class="el" href="group__apr__network__io.html#ga4">apr_port_t</a> </td> <td class="mdname" nowrap> <em>port</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>apr_int32_t </td> <td class="mdname" nowrap> <em>flags</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap><a class="el" href="group__apr__pools.html#ga0">apr_pool_t</a> * </td> <td class="mdname" nowrap> <em>p</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Create <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> from hostname, address family, and port. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>sa</em> </td><td>The new <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a>. </td></tr> <tr><td valign="top"></td><td valign="top"><em>hostname</em> </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 :: </td></tr> <tr><td valign="top"></td><td valign="top"><em>family</em> </td><td>The address family to use, or APR_UNSPEC if the system should decide. </td></tr> <tr><td valign="top"></td><td valign="top"><em>port</em> </td><td>The port number. </td></tr> <tr><td valign="top"></td><td valign="top"><em>flags</em> </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 valign="top"></td><td valign="top"><em>p</em> </td><td>The pool for the <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> and associated storage. </td></tr> </table> </dl> </td> </tr> </table> <a class="anchor" name="ga31" doxytag="apr_network_io.h::apr_sockaddr_ip_get"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_sockaddr_ip_get </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">char ** </td> <td class="mdname" nowrap> <em>addr</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap><a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> * </td> <td class="mdname" nowrap> <em>sockaddr</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <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>. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>addr</em> </td><td>The IP address. </td></tr> <tr><td valign="top"></td><td valign="top"><em>sockaddr</em> </td><td>The socket address to reference. </td></tr> </table> </dl> </td> </tr> </table> <a class="anchor" name="ga11" doxytag="apr_network_io.h::apr_socket_accept"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_socket_accept </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> ** </td> <td class="mdname" nowrap> <em>new_sock</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap><a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> * </td> <td class="mdname" nowrap> <em>sock</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap><a class="el" href="group__apr__pools.html#ga0">apr_pool_t</a> * </td> <td class="mdname" nowrap> <em>connection_pool</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Accept a new connection request <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>new_sock</em> </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 valign="top"></td><td valign="top"><em>sock</em> </td><td>The socket we are listening on. </td></tr> <tr><td valign="top"></td><td valign="top"><em>connection_pool</em> </td><td>The pool for the new socket. </td></tr> </table> </dl> </td> </tr> </table> <a class="anchor" name="ga37" doxytag="apr_network_io.h::apr_socket_accept_filter"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_socket_accept_filter </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> * </td> <td class="mdname" nowrap> <em>sock</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>char * </td> <td class="mdname" nowrap> <em>name</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>char * </td> <td class="mdname" nowrap> <em>args</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Set an OS level accept filter. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>sock</em> </td><td>The socket to put the accept filter on. </td></tr> <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>The accept filter </td></tr> <tr><td valign="top"></td><td valign="top"><em>args</em> </td><td>Any extra args to the accept filter. Passing NULL here removes the accept filter. </td></tr> </table> </dl> </td> </tr> </table> <a class="anchor" name="ga30" doxytag="apr_network_io.h::apr_socket_addr_get"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_socket_addr_get </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> ** </td> <td class="mdname" nowrap> <em>sa</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap><a class="el" href="group__apr__network__io.html#ga53">apr_interface_e</a> </td> <td class="mdname" nowrap> <em>which</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap><a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> * </td> <td class="mdname" nowrap> <em>sock</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Return an <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> from an apr_socket_t <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>sa</em> </td><td>The returned <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a>. </td></tr> <tr><td valign="top"></td><td valign="top"><em>which</em> </td><td>Which interface do we want the <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> for? </td></tr> <tr><td valign="top"></td><td valign="top"><em>sock</em> </td><td>The socket to use </td></tr> </table> </dl> </td> </tr> </table> <a class="anchor" name="ga29" doxytag="apr_network_io.h::apr_socket_atmark"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_socket_atmark </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> * </td> <td class="mdname" nowrap> <em>sock</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>int * </td> <td class="mdname" nowrap> <em>atmark</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Query the specified socket if at the OOB/Urgent data mark <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>sock</em> </td><td>The socket to query </td></tr> <tr><td valign="top"></td><td valign="top"><em>atmark</em> </td><td>Is set to true if socket is at the OOB/urgent mark, otherwise is set to false. </td></tr> </table> </dl> </td> </tr> </table> <a class="anchor" name="ga9" doxytag="apr_network_io.h::apr_socket_bind"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_socket_bind </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> * </td> <td class="mdname" nowrap> <em>sock</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap><a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> * </td> <td class="mdname" nowrap> <em>sa</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Bind the socket to its associated port <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>sock</em> </td><td>The socket to bind </td></tr> <tr><td valign="top"></td><td valign="top"><em>sa</em> </td><td>The socket address to bind to </td></tr> </table> </dl> <dl compact><dt><b>Remarks:</b></dt><dd>This may be where we will find out if there is any other process using the selected port. </dd></dl> </td> </tr> </table> <a class="anchor" name="ga8" doxytag="apr_network_io.h::apr_socket_close"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_socket_close </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> * </td> <td class="mdname1" valign="top" nowrap> <em>thesocket</em> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Close a socket. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>thesocket</em> </td><td>The socket to close </td></tr> </table> </dl> </td> </tr> </table> <a class="anchor" name="ga12" doxytag="apr_network_io.h::apr_socket_connect"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_socket_connect </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> * </td> <td class="mdname" nowrap> <em>sock</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap><a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> * </td> <td class="mdname" nowrap> <em>sa</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Issue a connection request to a socket either on the same machine or a different one. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>sock</em> </td><td>The socket we wish to use for our side of the connection </td></tr> <tr><td valign="top"></td><td valign="top"><em>sa</em> </td><td>The address of the machine we wish to connect to. </td></tr> </table> </dl> </td> </tr> </table> <a class="anchor" name="ga6" doxytag="apr_network_io.h::apr_socket_create"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_socket_create </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> ** </td> <td class="mdname" nowrap> <em>new_sock</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>int </td> <td class="mdname" nowrap> <em>family</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>int </td> <td class="mdname" nowrap> <em>type</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>int </td> <td class="mdname" nowrap> <em>protocol</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap><a class="el" href="group__apr__pools.html#ga0">apr_pool_t</a> * </td> <td class="mdname" nowrap> <em>cont</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Create a socket. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>new_sock</em> </td><td>The new socket that has been set up. </td></tr> <tr><td valign="top"></td><td valign="top"><em>family</em> </td><td>The address family of the socket (e.g., APR_INET). </td></tr> <tr><td valign="top"></td><td valign="top"><em>type</em> </td><td>The type of the socket (e.g., SOCK_STREAM). </td></tr> <tr><td valign="top"></td><td valign="top"><em>protocol</em> </td><td>The protocol of the socket (e.g., APR_PROTO_TCP). </td></tr> <tr><td valign="top"></td><td valign="top"><em>cont</em> </td><td>The pool to use </td></tr> </table> </dl> </td> </tr> </table> <a class="anchor" name="ga17" doxytag="apr_network_io.h::apr_socket_data_get"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_socket_data_get </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">void ** </td> <td class="mdname" nowrap> <em>data</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>key</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap><a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> * </td> <td class="mdname" nowrap> <em>sock</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Return the data associated with the current socket <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>The user data associated with the socket. </td></tr> <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>The key to associate with the user data. </td></tr> <tr><td valign="top"></td><td valign="top"><em>sock</em> </td><td>The currently open socket. </td></tr> </table> </dl> </td> </tr> </table> <a class="anchor" name="ga18" doxytag="apr_network_io.h::apr_socket_data_set"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_socket_data_set </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> * </td> <td class="mdname" nowrap> <em>sock</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>void * </td> <td class="mdname" nowrap> <em>data</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>key</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a>(*)(void *) </td> <td class="mdname" nowrap> <em>cleanup</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Set the data associated with the current socket. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>sock</em> </td><td>The currently open socket. </td></tr> <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>The user data to associate with the socket. </td></tr> <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>The key to associate with the data. </td></tr> <tr><td valign="top"></td><td valign="top"><em>cleanup</em> </td><td>The cleanup to call when the socket is destroyed. </td></tr> </table> </dl> </td> </tr> </table> <a class="anchor" name="ga39" doxytag="apr_network_io.h::apr_socket_inherit_set"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_socket_inherit_set </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> * </td> <td class="mdname1" valign="top" nowrap> <em>thesocket</em> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Set a socket to be inherited by child processes. </td> </tr> </table> <a class="anchor" name="ga40" doxytag="apr_network_io.h::apr_socket_inherit_unset"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_socket_inherit_unset </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> * </td> <td class="mdname1" valign="top" nowrap> <em>thesocket</em> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Unset a socket from being inherited by child processes. </td> </tr> </table> <a class="anchor" name="ga10" doxytag="apr_network_io.h::apr_socket_listen"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_socket_listen </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> * </td> <td class="mdname" nowrap> <em>sock</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>apr_int32_t </td> <td class="mdname" nowrap> <em>backlog</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Listen to a bound socket for connections. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>sock</em> </td><td>The socket to listen on </td></tr> <tr><td valign="top"></td><td valign="top"><em>backlog</em> </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> </dl> </td> </tr> </table> <a class="anchor" name="ga27" doxytag="apr_network_io.h::apr_socket_opt_get"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_socket_opt_get </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> * </td> <td class="mdname" nowrap> <em>sock</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>apr_int32_t </td> <td class="mdname" nowrap> <em>opt</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>apr_int32_t * </td> <td class="mdname" nowrap> <em>on</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Query socket options for the specified socket <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>sock</em> </td><td>The socket to query </td></tr> <tr><td valign="top"></td><td valign="top"><em>opt</em> </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 valign="top"></td><td valign="top"><em>on</em> </td><td>Socket option returned on the call. </td></tr> </table> </dl> </td> </tr> </table> <a class="anchor" name="ga25" doxytag="apr_network_io.h::apr_socket_opt_set"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_socket_opt_set </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> * </td> <td class="mdname" nowrap> <em>sock</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>apr_int32_t </td> <td class="mdname" nowrap> <em>opt</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>apr_int32_t </td> <td class="mdname" nowrap> <em>on</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Setup socket options for the specified socket <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>sock</em> </td><td>The socket to set up. </td></tr> <tr><td valign="top"></td><td valign="top"><em>opt</em> </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__APR__STATUS__IS.html#ga57">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 </pre> </td></tr> <tr><td valign="top"></td><td valign="top"><em>on</em> </td><td>Value for the option. </td></tr> </table> </dl> </td> </tr> </table> <a class="anchor" name="ga38" doxytag="apr_network_io.h::apr_socket_protocol_get"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_socket_protocol_get </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> * </td> <td class="mdname" nowrap> <em>sock</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>int * </td> <td class="mdname" nowrap> <em>protocol</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Return the protocol of the socket. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>sock</em> </td><td>The socket to query. </td></tr> <tr><td valign="top"></td><td valign="top"><em>protocol</em> </td><td>The returned protocol (e.g., APR_PROTO_TCP). </td></tr> </table> </dl> </td> </tr> </table> <a class="anchor" name="ga24" doxytag="apr_network_io.h::apr_socket_recv"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_socket_recv </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> * </td> <td class="mdname" nowrap> <em>sock</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>char * </td> <td class="mdname" nowrap> <em>buf</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>apr_size_t * </td> <td class="mdname" nowrap> <em>len</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Read data from a network. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>sock</em> </td><td>The socket to read the data from. </td></tr> <tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>The buffer to store the data in. </td></tr> <tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>On entry, the number of bytes to receive; on exit, the number of bytes received. </td></tr> </table> </dl> <dl compact><dt><b>Remarks:</b></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#ga26">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> 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> </td> </tr> </table> <a class="anchor" name="ga22" doxytag="apr_network_io.h::apr_socket_recvfrom"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_socket_recvfrom </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> * </td> <td class="mdname" nowrap> <em>from</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap><a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> * </td> <td class="mdname" nowrap> <em>sock</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>apr_int32_t </td> <td class="mdname" nowrap> <em>flags</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>char * </td> <td class="mdname" nowrap> <em>buf</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>apr_size_t * </td> <td class="mdname" nowrap> <em>len</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>from</em> </td><td>The <a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> to fill in the recipient info </td></tr> <tr><td valign="top"></td><td valign="top"><em>sock</em> </td><td>The socket to use </td></tr> <tr><td valign="top"></td><td valign="top"><em>flags</em> </td><td>The flags to use </td></tr> <tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>The buffer to use </td></tr> <tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>The length of the available buffer </td></tr> </table> </dl> </td> </tr> </table> <a class="anchor" name="ga19" doxytag="apr_network_io.h::apr_socket_send"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_socket_send </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> * </td> <td class="mdname" nowrap> <em>sock</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>buf</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>apr_size_t * </td> <td class="mdname" nowrap> <em>len</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Send data over a network. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>sock</em> </td><td>The socket to send the data over. </td></tr> <tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>The buffer which contains the data to be sent. </td></tr> <tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>On entry, the number of bytes to send; on exit, the number of bytes sent. </td></tr> </table> </dl> <dl compact><dt><b>Remarks:</b></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#ga26">apr_socket_timeout_set()</a> or the APR_SO_NONBLOCK socket option.</pre></dd></dl> It is possible for both bytes to be sent and an error to be returned.<p> <pre> APR_EINTR is never returned. </pre> </td> </tr> </table> <a class="anchor" name="ga23" doxytag="apr_network_io.h::apr_socket_sendfile"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_socket_sendfile </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> * </td> <td class="mdname" nowrap> <em>sock</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap><a class="el" href="group__apr__file__io.html#ga2">apr_file_t</a> * </td> <td class="mdname" nowrap> <em>file</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap><a class="el" href="structapr__hdtr__t.html">apr_hdtr_t</a> * </td> <td class="mdname" nowrap> <em>hdtr</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>apr_off_t * </td> <td class="mdname" nowrap> <em>offset</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>apr_size_t * </td> <td class="mdname" nowrap> <em>len</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>apr_int32_t </td> <td class="mdname" nowrap> <em>flags</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Send a file from an open file descriptor to a socket, along with optional headers and trailers <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>sock</em> </td><td>The socket to which we're writing </td></tr> <tr><td valign="top"></td><td valign="top"><em>file</em> </td><td>The open file from which to read </td></tr> <tr><td valign="top"></td><td valign="top"><em>hdtr</em> </td><td>A structure containing the headers and trailers to send </td></tr> <tr><td valign="top"></td><td valign="top"><em>offset</em> </td><td>Offset into the file where we should begin writing </td></tr> <tr><td valign="top"></td><td valign="top"><em>len</em> </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 valign="top"></td><td valign="top"><em>flags</em> </td><td>APR flags that are mapped to OS specific flags </td></tr> </table> </dl> <dl compact><dt><b>Remarks:</b></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#ga26">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#ga23">apr_socket_sendfile()</a> function. </dd></dl> </td> </tr> </table> <a class="anchor" name="ga21" doxytag="apr_network_io.h::apr_socket_sendto"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_socket_sendto </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> * </td> <td class="mdname" nowrap> <em>sock</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap><a class="el" href="structapr__sockaddr__t.html">apr_sockaddr_t</a> * </td> <td class="mdname" nowrap> <em>where</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>apr_int32_t </td> <td class="mdname" nowrap> <em>flags</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>buf</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>apr_size_t * </td> <td class="mdname" nowrap> <em>len</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>sock</em> </td><td>The socket to send from </td></tr> <tr><td valign="top"></td><td valign="top"><em>where</em> </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 valign="top"></td><td valign="top"><em>flags</em> </td><td>The flags to use </td></tr> <tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>The data to send </td></tr> <tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>The length of the data to send </td></tr> </table> </dl> </td> </tr> </table> <a class="anchor" name="ga20" doxytag="apr_network_io.h::apr_socket_sendv"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_socket_sendv </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> * </td> <td class="mdname" nowrap> <em>sock</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>const struct iovec * </td> <td class="mdname" nowrap> <em>vec</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>apr_int32_t </td> <td class="mdname" nowrap> <em>nvec</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>apr_size_t * </td> <td class="mdname" nowrap> <em>len</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Send multiple packets of data over a network. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>sock</em> </td><td>The socket to send the data over. </td></tr> <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The array of iovec structs containing the data to send </td></tr> <tr><td valign="top"></td><td valign="top"><em>nvec</em> </td><td>The number of iovec structs in the array </td></tr> <tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>Receives the number of bytes actually written </td></tr> </table> </dl> <dl compact><dt><b>Remarks:</b></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#ga26">apr_socket_timeout_set()</a> or the APR_SO_NONBLOCK socket option. The number of bytes actually sent is stored in argument 3.</pre></dd></dl> It is possible for both bytes to be sent and an error to be returned.<p> <pre> APR_EINTR is never returned. </pre> </td> </tr> </table> <a class="anchor" name="ga7" doxytag="apr_network_io.h::apr_socket_shutdown"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_socket_shutdown </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> * </td> <td class="mdname" nowrap> <em>thesocket</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap><a class="el" href="group__apr__network__io.html#ga52">apr_shutdown_how_e</a> </td> <td class="mdname" nowrap> <em>how</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Shutdown either reading, writing, or both sides of a socket. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>thesocket</em> </td><td>The socket to close </td></tr> <tr><td valign="top"></td><td valign="top"><em>how</em> </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> </dl> <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__apr__network__io.html#ga52">apr_shutdown_how_e</a> </dd></dl> <dl compact><dt><b>Remarks:</b></dt><dd>This does not actually close the socket descriptor, it just controls which calls are still valid on the socket. </dd></dl> </td> </tr> </table> <a class="anchor" name="ga28" doxytag="apr_network_io.h::apr_socket_timeout_get"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_socket_timeout_get </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> * </td> <td class="mdname" nowrap> <em>sock</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap><a class="el" href="group__apr__time.html#ga3">apr_interval_time_t</a> * </td> <td class="mdname" nowrap> <em>t</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Query socket timeout for the specified socket <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>sock</em> </td><td>The socket to query </td></tr> <tr><td valign="top"></td><td valign="top"><em>t</em> </td><td>Socket timeout returned from the query. </td></tr> </table> </dl> </td> </tr> </table> <a class="anchor" name="ga26" doxytag="apr_network_io.h::apr_socket_timeout_set"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_socket_timeout_set </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> * </td> <td class="mdname" nowrap> <em>sock</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap><a class="el" href="group__apr__time.html#ga3">apr_interval_time_t</a> </td> <td class="mdname" nowrap> <em>t</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Setup socket timeout for the specified socket <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>sock</em> </td><td>The socket to set up. </td></tr> <tr><td valign="top"></td><td valign="top"><em>t</em> </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> </dl> </td> </tr> </table> <a class="anchor" name="ga33" doxytag="apr_network_io.h::apr_socket_type_get"></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__apr__errno.html#ga0">apr_status_t</a> apr_socket_type_get </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="group__apr__network__io.html#ga0">apr_socket_t</a> * </td> <td class="mdname" nowrap> <em>sock</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>int * </td> <td class="mdname" nowrap> <em>type</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Return the type of the socket. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>sock</em> </td><td>The socket to query. </td></tr> <tr><td valign="top"></td><td valign="top"><em>type</em> </td><td>The returned type (e.g., SOCK_STREAM). </td></tr> </table> </dl> </td> </tr> </table> <hr size="1"><address style="align: right;"><small>Generated on Sun Mar 20 19:52:27 2005 for Apache Portable Runtime by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> </body> </html>