アットウィキロゴ

httpd-2.0.63_srclib_apr_network_io_unix_sockaddr.c_apr_sockaddr_info_get

source

sockaddr.c

line

553 - 585

function


   553 APR_DECLARE(apr_status_t) apr_sockaddr_info_get(apr_sockaddr_t **sa,
   554                                                 const char *hostname,
   555                                                 apr_int32_t family, apr_port_t port,
   556                                                 apr_int32_t flags, apr_pool_t *p)
   557 {
   558     apr_int32_t masked;
   559     *sa = NULL;
   560
   561     if ((masked = flags & (APR_IPV4_ADDR_OK | APR_IPV6_ADDR_OK))) {
   562         if (!hostname ||
   563             family != AF_UNSPEC ||
   564             masked == (APR_IPV4_ADDR_OK | APR_IPV6_ADDR_OK)) {
   565             return APR_EINVAL;
   566         }
   567 #if !APR_HAVE_IPV6
   568         if (flags & APR_IPV6_ADDR_OK) {
   569             return APR_ENOTIMPL;
   570         }
   571 #endif
   572     }
   573 #if !APR_HAVE_IPV6
   574     /* What may happen is that APR is not IPv6-enabled, but we're still
   575      * going to call getaddrinfo(), so we have to tell the OS we only
   576      * want IPv4 addresses back since we won't know what to do with
   577      * IPv6 addresses.
   578      */
   579     if (family == APR_UNSPEC) {
   580         family = APR_INET;
   581     }
   582 #endif
   583
   584     return find_addresses(sa, hostname, family, port, flags, p);
   585 }
最終更新:2009年02月08日 16:57
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。