⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 apr_network.m4

📁 Apache官方在今天放出产品系列2.2的最新版本2.2.11的源码包 最流行的HTTP服务器软件之一
💻 M4
📖 第 1 页 / 共 2 页
字号:
    sa_len = sizeof sa;    connected_s = accept(listen_s, (struct sockaddr *)&sa, &sa_len);    if (connected_s < 0) {        perror("accept");        exit(1);    }    option_len = sizeof option;    rc = getsockopt(connected_s, IPPROTO_TCP, TCP_NODELAY, &option, &option_len);    if (rc < 0) {        perror("getsockopt");        exit(1);    }    if (!option) {        fprintf(stderr, "TCP_NODELAY is not set in the child.\n");        exit(1);    }    return 0;}],[    ac_cv_tcp_nodelay_inherited="yes"],[    ac_cv_tcp_nodelay_inherited="no"],[    ac_cv_tcp_nodelay_inherited="yes"])])if test "$ac_cv_tcp_nodelay_inherited" = "yes"; then    tcp_nodelay_inherited=1else    tcp_nodelay_inherited=0fi])dnldnl Determine whether TCP_NODELAY and TCP_CORK can both be setdnl on a TCP socket.dnlAC_DEFUN([APR_CHECK_TCP_NODELAY_WITH_CORK], [AC_CACHE_CHECK([whether TCP_NODELAY and TCP_CORK can both be enabled],[apr_cv_tcp_nodelay_with_cork],[AC_RUN_IFELSE([AC_LANG_PROGRAM([[#ifdef HAVE_SYS_TYPES_H#include <sys/types.h>#endif#ifdef HAVE_SYS_SOCKET_H#include <sys/socket.h>#endif#ifdef HAVE_NETINET_IN_H#include <netinet/in.h>#endif#ifdef HAVE_NETINET_TCP_H#include <netinet/tcp.h>#endif#include <stdio.h>#include <stdlib.h>]], [[    int fd, flag, rc;    fd = socket(AF_INET, SOCK_STREAM, 0);    if (fd < 0) {       exit(1);    }    flag = 1;    rc = setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &flag, sizeof flag);    if (rc < 0) {        perror("setsockopt TCP_NODELAY");        exit(2);    }    flag = 1;    rc = setsockopt(fd, IPPROTO_TCP, TCP_CORK, &flag, sizeof flag);    if (rc < 0) {        perror("setsockopt TCP_CORK");        exit(3);    }    exit(0);]])], [apr_cv_tcp_nodelay_with_cork=yes], [apr_cv_tcp_nodelay_with_cork=no])])if test "$apr_cv_tcp_nodelay_with_cork" = "yes"; then  AC_DEFINE([HAVE_TCP_NODELAY_WITH_CORK], 1,            [Define if TCP_NODELAY and TCP_CORK can be enabled at the same time])fi])dnldnl see if O_NONBLOCK setting is inherited from listening socketsdnlAC_DEFUN([APR_CHECK_O_NONBLOCK_INHERITED], [  AC_CACHE_CHECK(if O_NONBLOCK setting is inherited from listening sockets, ac_cv_o_nonblock_inherited,[  AC_TRY_RUN( [#include <stdio.h>#ifdef HAVE_SYS_TYPES_H#include <sys/types.h>#endif#ifdef HAVE_SYS_SOCKET_H#include <sys/socket.h>#endif#ifdef HAVE_NETINET_IN_H#include <netinet/in.h>#endif#ifdef HAVE_NETINET_TCP_H#include <netinet/tcp.h>#endif#ifndef HAVE_SOCKLEN_Ttypedef int socklen_t;#endif#ifdef HAVE_FCNTL_H#include <fcntl.h>#endifint main(void) {    int listen_s, connected_s, client_s;    int listen_port, rc;    struct sockaddr_in sa;    socklen_t sa_len;    listen_s = socket(AF_INET, SOCK_STREAM, 0);    if (listen_s < 0) {        perror("socket");        exit(1);    }    memset(&sa, 0, sizeof sa);    sa.sin_family = AF_INET;#ifdef BEOS    sa.sin_addr.s_addr = htonl(INADDR_LOOPBACK);#endif    /* leave port 0 to get ephemeral */    rc = bind(listen_s, (struct sockaddr *)&sa, sizeof sa);    if (rc < 0) {        perror("bind for ephemeral port");        exit(1);    }    /* find ephemeral port */    sa_len = sizeof(sa);    rc = getsockname(listen_s, (struct sockaddr *)&sa, &sa_len);    if (rc < 0) {        perror("getsockname");        exit(1);    }    listen_port = sa.sin_port;    rc = listen(listen_s, 5);    if (rc < 0) {        perror("listen");        exit(1);    }    rc = fcntl(listen_s, F_SETFL, O_NONBLOCK);    if (rc < 0) {        perror("fcntl(F_SETFL)");        exit(1);    }    client_s = socket(AF_INET, SOCK_STREAM, 0);    if (client_s < 0) {        perror("socket");        exit(1);    }    memset(&sa, 0, sizeof sa);    sa.sin_family = AF_INET;    sa.sin_port   = listen_port;#ifdef BEOS    sa.sin_addr.s_addr = htonl(INADDR_LOOPBACK);#endif    /* leave sin_addr all zeros to use loopback */    rc = connect(client_s, (struct sockaddr *)&sa, sizeof sa);    if (rc < 0) {        perror("connect");        exit(1);    }    sa_len = sizeof sa;    connected_s = accept(listen_s, (struct sockaddr *)&sa, &sa_len);    if (connected_s < 0) {        perror("accept");        exit(1);    }    rc = fcntl(connected_s, F_GETFL, 0);    if (rc < 0) {        perror("fcntl(F_GETFL)");        exit(1);    }    if (!(rc & O_NONBLOCK)) {        fprintf(stderr, "O_NONBLOCK is not set in the child.\n");        exit(1);    }    return 0;}],[    ac_cv_o_nonblock_inherited="yes"],[    ac_cv_o_nonblock_inherited="no"],[    ac_cv_o_nonblock_inherited="yes"])])if test "$ac_cv_o_nonblock_inherited" = "yes"; then    o_nonblock_inherited=1else    o_nonblock_inherited=0fi])dnl dnl check for socklen_t, fall back to unsigned intdnlAC_DEFUN([APR_CHECK_SOCKLEN_T], [AC_CACHE_CHECK(for socklen_t, ac_cv_socklen_t,[AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H#include <sys/types.h>#endif#ifdef HAVE_SYS_SOCKET_H#include <sys/socket.h>#endif],[socklen_t foo = (socklen_t) 0;],[    ac_cv_socklen_t=yes],[    ac_cv_socklen_t=no])])if test "$ac_cv_socklen_t" = "yes"; then  AC_DEFINE(HAVE_SOCKLEN_T, 1, [Whether you have socklen_t])fi])AC_DEFUN([APR_CHECK_INET_ADDR], [AC_CACHE_CHECK(for inet_addr, ac_cv_func_inet_addr,[AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H#include <sys/types.h>#endif#ifdef HAVE_ARPA_INET_H#include <arpa/inet.h>#endif],[inet_addr("127.0.0.1");],[    ac_cv_func_inet_addr=yes],[    ac_cv_func_inet_addr=no])])if test "$ac_cv_func_inet_addr" = "yes"; then  have_inet_addr=1else  have_inet_addr=0fi])AC_DEFUN([APR_CHECK_INET_NETWORK], [AC_CACHE_CHECK(for inet_network, ac_cv_func_inet_network,[AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H#include <sys/types.h>#endif#ifdef HAVE_ARPA_INET_H#include <arpa/inet.h>#endif],[inet_network("127.0.0.1");],[    ac_cv_func_inet_network=yes],[    ac_cv_func_inet_network=no])])if test "$ac_cv_func_inet_network" = "yes"; then  have_inet_network=1else  have_inet_network=0fi])dnl Check for presence of struct sockaddr_storage.AC_DEFUN([APR_CHECK_SOCKADDR_STORAGE], [AC_CACHE_CHECK(for sockaddr_storage, apr_cv_define_sockaddr_storage,[AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H#include <sys/types.h>#endif#ifdef HAVE_NETINET_IN_H#include <netinet/in.h>#endif],[struct sockaddr_storage sa;],[apr_cv_define_sockaddr_storage=yes],[apr_cv_define_sockaddr_storage=no])])if test "$apr_cv_define_sockaddr_storage" = "yes"; then  have_sa_storage=1else  have_sa_storage=0fiAC_SUBST(have_sa_storage)])dnl Check for presence of struct sockaddr_in6.AC_DEFUN([APR_CHECK_SOCKADDR_IN6], [AC_CACHE_CHECK(for sockaddr_in6, ac_cv_define_sockaddr_in6,[AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H#include <sys/types.h>#endif#ifdef HAVE_NETINET_IN_H#include <netinet/in.h>#endif],[struct sockaddr_in6 sa;],[    ac_cv_define_sockaddr_in6=yes],[    ac_cv_define_sockaddr_in6=no])])if test "$ac_cv_define_sockaddr_in6" = "yes"; then  have_sockaddr_in6=1else  have_sockaddr_in6=0fi])dnldnl APR_H_ERRNO_COMPILE_CHECKdnlAC_DEFUN([APR_H_ERRNO_COMPILE_CHECK], [  if test x$1 != x; then    CPPFLAGS="-D$1 $CPPFLAGS"  fi  AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H#include <sys/types.h>#endif#ifdef HAVE_NETDB_H#include <netdb.h>#endif],[int h_e = h_errno;],[  if test x$1 != x; then    ac_cv_h_errno_cppflags="$1"  else    ac_cv_h_errno_cppflags=yes  fi],[  ac_cv_h_errno_cppflags=no])])dnldnl APR_CHECK_SCTPdnldnl check for presence of SCTP protocol supportdnlAC_DEFUN([APR_CHECK_SCTP],[  AC_CACHE_CHECK([whether SCTP is supported], [apr_cv_sctp], [  AC_TRY_RUN([#ifdef HAVE_SYS_TYPES_H#include <sys/types.h>#endif#ifdef HAVE_SYS_SOCKET_H#include <sys/socket.h>#endif#ifdef HAVE_NETINET_IN_H#include <netinet/in.h>#endif#ifdef HAVE_NETINET_SCTP_H#include <netinet/sctp.h>#endif#ifdef HAVE_NETINET_SCTP_UIO_H#include <netinet/sctp_uio.h>#endif#include <stdlib.h>int main(void) {    int s, opt = 1;    if ((s = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP)) < 0)       exit(1);    if (setsockopt(s, IPPROTO_SCTP, SCTP_NODELAY, &opt, sizeof(int)) < 0)       exit(2);    exit(0);}], [apr_cv_sctp=yes], [apr_cv_sctp=no], [apr_cv_sctp=no])])if test "$apr_cv_sctp" = "yes"; then    have_sctp=1else    have_sctp=0fi])dnl APR_CHECK_MCAST: check for multicast interfacesAC_DEFUN([APR_CHECK_MCAST], [AC_CACHE_CHECK([for struct ip_mreq], [apr_cv_struct_ipmreq], [AC_TRY_COMPILE([#include <sys/types.h>#include <netinet/in.h>], [    struct ip_mreq mip;    mip.imr_interface.s_addr = INADDR_ANY;], [apr_cv_struct_ipmreq=yes], [apr_cv_struct_ipmreq=no], [apr_cv_struct_ipmreq=yes])])if test $apr_cv_struct_ipmreq = yes; then   AC_DEFINE([HAVE_STRUCT_IPMREQ], 1, [Define if struct impreq was found])fi])dnldnl APR_CHECK_H_ERRNO_FLAGdnldnl checks which flags are necessary for <netdb.h> to define h_errnodnlAC_DEFUN([APR_CHECK_H_ERRNO_FLAG], [  AC_MSG_CHECKING([for h_errno in netdb.h])  AC_CACHE_VAL(ac_cv_h_errno_cppflags,[    APR_H_ERRNO_COMPILE_CHECK    if test "$ac_cv_h_errno_cppflags" = "no"; then      ac_save="$CPPFLAGS"      for flag in _XOPEN_SOURCE_EXTENDED; do        APR_H_ERRNO_COMPILE_CHECK($flag)        if test "$ac_cv_h_errno_cppflags" != "no"; then          break        fi      done      CPPFLAGS="$ac_save"    fi  ])  if test "$ac_cv_h_errno_cppflags" != "no"; then    if test "$ac_cv_h_errno_cppflags" != "yes"; then      CPPFLAGS="-D$ac_cv_h_errno_cppflags $CPPFLAGS"      AC_MSG_RESULT([yes, with -D$ac_cv_h_errno_cppflags])    else      AC_MSG_RESULT([$ac_cv_h_errno_cppflags])    fi  else    AC_MSG_RESULT([$ac_cv_h_errno_cppflags])  fi])AC_DEFUN([APR_EBCDIC], [  AC_CACHE_CHECK([whether system uses EBCDIC],ac_cv_ebcdic,[  AC_TRY_RUN( [int main(void) {   return (unsigned char)'A' != (unsigned char)0xC1; } ],[  ac_cv_ebcdic="yes"],[  ac_cv_ebcdic="no"],[  ac_cv_ebcdic="no"])])  if test "$ac_cv_ebcdic" = "yes"; then    apr_charset_ebcdic=1  else    apr_charset_ebcdic=0  fi  AC_SUBST(apr_charset_ebcdic)])

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -