From: Francesco Chemolli Date: Fri, 30 Jul 2010 07:57:29 +0000 (+0200) Subject: Shuffled buffer detection tests into os-deps.m4 X-Git-Tag: take1~402^2~2^2~13 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8e0acaf57f867bc623754ece934eedec91c4d407;p=thirdparty%2Fsquid.git Shuffled buffer detection tests into os-deps.m4 --- diff --git a/acinclude/os-deps.m4 b/acinclude/os-deps.m4 index dfdfe1449d..310cd2c070 100644 --- a/acinclude/os-deps.m4 +++ b/acinclude/os-deps.m4 @@ -381,3 +381,215 @@ AC_CACHE_CHECK([for sin_len field in struct sockaddr_in], ]) SQUID_DEFINE_BOOL(HAVE_SIN_LEN_IN_SAI,$ac_cv_have_sin_len_in_struct_sai,[Define if sockaddr_in has field sin_len]) ]) + + +dnl detects default UDP buffer size +dnl not cached since people are likely to tune this +dnl defines SQUID_DETECT_UDP_SO_SNDBUF + +AC_DEFUN([SQUID_DETECT_UDP_SND_BUFSIZE],[ +AC_MSG_CHECKING(Default UDP send buffer size) +AC_RUN_IFELSE([AC_LANG_SOURCE([[ +#include +#include +#include +#if HAVE_SYS_SOCKET_H +#include +#endif +#if HAVE_NETINET_IN_H +#include +#endif +#if HAVE_WINSOCK_H +#include +#endif +#if HAVE_WINSOCK2_H +#include +#endif +int main(int argc, char **argv) +{ + FILE *fp; + int fd,val=0; +#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__)) + int len=sizeof(int); + WSADATA wsaData; + WSAStartup(2, &wsaData); +#else + socklen_t len=sizeof(socklen_t); +#endif + if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) return 1; +#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__)) + if (getsockopt(fd, SOL_SOCKET, SO_SNDBUF, (char *)&val, &len) < 0) return 1; + WSACleanup(); +#else + if (getsockopt(fd, SOL_SOCKET, SO_SNDBUF, &val, &len) < 0) return 1; +#endif + if (val<=0) return 1; + fp = fopen("conftestval", "w"); + fprintf (fp, "%d\n", val); + return 0; +} +]])],[SQUID_DETECT_UDP_SO_SNDBUF=`cat conftestval`],[SQUID_DETECT_UDP_SO_SNDBUF=16384],[SQUID_DETECT_UDP_SO_SNDBUF=16384]) +AC_MSG_RESULT($SQUID_DETECT_UDP_SO_SNDBUF) +AC_DEFINE_UNQUOTED(SQUID_DETECT_UDP_SO_SNDBUF, $SQUID_DETECT_UDP_SO_SNDBUF,[UDP send buffer size]) +]) + + +dnl detects default UDP buffer size +dnl not cached since people are likely to tune this +dnl defines SQUID_DETECT_UDP_SO_RCVBUF + +AC_DEFUN([SQUID_DETECT_UDP_RECV_BUFSIZE],[ +AC_MSG_CHECKING(Default UDP receive buffer size) +AC_RUN_IFELSE([AC_LANG_SOURCE([[ +#include +#include +#include +#if HAVE_SYS_SOCKET_H +#include +#endif +#if HAVE_NETINET_IN_H +#include +#endif +#if HAVE_WINSOCK_H +#include +#endif +#if HAVE_WINSOCK2_H +#include +#endif +int main(int argc, char **argv) +{ + FILE *fp; + int fd,val=0; +#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__)) + int len=sizeof(int); + WSADATA wsaData; + WSAStartup(2, &wsaData); +#else + socklen_t len=sizeof(socklen_t); +#endif + if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) return 1; +#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__)) + if (getsockopt(fd, SOL_SOCKET, SO_RCVBUF, (char *)&val, &len) < 0) return 1; + WSACleanup(); +#else + if (getsockopt(fd, SOL_SOCKET, SO_RCVBUF, &val, &len) < 0) return 1; +#endif + if (val <= 0) return 1; + fp = fopen("conftestval", "w"); + fprintf (fp, "%d\n", val); + return 0; +} +]])],[SQUID_DETECT_UDP_SO_RCVBUF=`cat conftestval`],[SQUID_DETECT_UDP_SO_RCVBUF=16384],[SQUID_DETECT_UDP_SO_RCVBUF=16384]) +AC_MSG_RESULT($SQUID_DETECT_UDP_SO_RCVBUF) +AC_DEFINE_UNQUOTED(SQUID_DETECT_UDP_SO_RCVBUF, $SQUID_DETECT_UDP_SO_RCVBUF,[UDP receive buffer size]) +]) + + +dnl detects default TCP buffer size +dnl not cached since people are likely to tune this +dnl defines SQUID_TCP_SO_SNDBUF + +AC_DEFUN([SQUID_DETECT_TCP_SND_BUFSIZE],[ +AC_MSG_CHECKING(Default TCP send buffer size) +AC_RUN_IFELSE([AC_LANG_SOURCE([[ +#include +#include +#include +#if HAVE_SYS_SOCKET_H +#include +#endif +#if HAVE_NETINET_IN_H +#include +#endif +#if HAVE_WINSOCK_H +#include +#endif +#if HAVE_WINSOCK2_H +#include +#endif +int main(int argc, char **argv) +{ + FILE *fp; + int fd,val=0; +#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__)) + int len=sizeof(int); + WSADATA wsaData; + WSAStartup(2, &wsaData); +#else + socklen_t len=sizeof(socklen_t); +#endif + if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) return 1; +#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__)) + if (getsockopt(fd, SOL_SOCKET, SO_SNDBUF, (char *)&val, &len) < 0) return 1; + WSACleanup(); +#else + if (getsockopt(fd, SOL_SOCKET, SO_SNDBUF, &val, &len) < 0) return 1; +#endif + if (val <= 0) return 1; + fp = fopen("conftestval", "w"); + fprintf (fp, "%d\n", val); + return 0; +} +]])],[SQUID_TCP_SO_SNDBUF=`cat conftestval`],[SQUID_TCP_SO_SNDBUF=16384],[SQUID_TCP_SO_SNDBUF=16384]) +AC_MSG_RESULT($SQUID_TCP_SO_SNDBUF) +if test $SQUID_TCP_SO_SNDBUF -gt 32768; then + AC_MSG_NOTICE([Limiting send buffer size to 32K]) + SQUID_TCP_SO_SNDBUF=32768 +fi +AC_DEFINE_UNQUOTED(SQUID_TCP_SO_SNDBUF, $SQUID_TCP_SO_SNDBUF,[TCP send buffer size]) +]) + + +dnl detects default TCP buffer size +dnl not cached since people are likely to tune this +dnl defines SQUID_TCP_SO_RECVBUF + +AC_DEFUN([SQUID_DETECT_TCP_RECV_BUFSIZE],[ +AC_MSG_CHECKING(Default TCP receive buffer size) +AC_RUN_IFELSE([AC_LANG_SOURCE([[ +#include +#include +#include +#if HAVE_SYS_SOCKET_H +#include +#endif +#if HAVE_NETINET_IN_H +#include +#endif +#if HAVE_WINSOCK_H +#include +#endif +#if HAVE_WINSOCK2_H +#include +#endif +int main(int argc, char **argv) +{ + FILE *fp; + int fd,val=0; +#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__)) + int len=sizeof(int); + WSADATA wsaData; + WSAStartup(2, &wsaData); +#else + socklen_t len=sizeof(socklen_t); +#endif + if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) return 1; +#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__)) + if (getsockopt(fd, SOL_SOCKET, SO_RCVBUF, (char *)&val, &len) < 0) return 1; + WSACleanup(); +#else + if (getsockopt(fd, SOL_SOCKET, SO_RCVBUF, &val, &len) < 0) return 1; +#endif + if (val <= 0) return 1; + fp = fopen("conftestval", "w"); + fprintf (fp, "%d\n", val); + return 0; +} +]])],[SQUID_TCP_SO_RCVBUF=`cat conftestval`],[SQUID_TCP_SO_RCVBUF=16384],[SQUID_TCP_SO_RCVBUF=16384]) +AC_MSG_RESULT($SQUID_TCP_SO_RCVBUF) +if test $SQUID_TCP_SO_RCVBUF -gt 65535; then + AC_MSG_NOTICE([Limiting receive buffer size to 64K]) + SQUID_TCP_SO_RCVBUF=65535 +fi +AC_DEFINE_UNQUOTED(SQUID_TCP_SO_RCVBUF, $SQUID_TCP_SO_RCVBUF,[TCP receive buffer size]) +]) diff --git a/configure.in b/configure.in index 11c1624760..5c9a7a106e 100644 --- a/configure.in +++ b/configure.in @@ -2968,194 +2968,11 @@ fi SQUID_DEFINE_BOOL(USE_GNUREGEX,$enable_gnuregex,[Define if we should use GNU regex]) AC_SUBST(REGEXLIB) +SQUID_DETECT_UDP_SND_BUFSIZE +SQUID_DETECT_UDP_RECV_BUFSIZE +SQUID_DETECT_TCP_SND_BUFSIZE +SQUID_DETECT_TCP_RECV_BUFSIZE -dnl Not cached since people are likely to tune this -AC_MSG_CHECKING(Default UDP send buffer size) -AC_RUN_IFELSE([AC_LANG_SOURCE([[ -#include -#include -#include -#if HAVE_SYS_SOCKET_H -#include -#endif -#if HAVE_NETINET_IN_H -#include -#endif -#if HAVE_WINSOCK_H -#include -#endif -#if HAVE_WINSOCK2_H -#include -#endif -int main(int argc, char **argv) -{ - FILE *fp; - int fd,val=0; -#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__)) - int len=sizeof(int); - WSADATA wsaData; - WSAStartup(2, &wsaData); -#else - socklen_t len=sizeof(socklen_t); -#endif - if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) return 1; -#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__)) - if (getsockopt(fd, SOL_SOCKET, SO_SNDBUF, (char *)&val, &len) < 0) return 1; - WSACleanup(); -#else - if (getsockopt(fd, SOL_SOCKET, SO_SNDBUF, &val, &len) < 0) return 1; -#endif - if (val<=0) return 1; - fp = fopen("conftestval", "w"); - fprintf (fp, "%d\n", val); - return 0; -} -]])],[SQUID_DETECT_UDP_SO_SNDBUF=`cat conftestval`],[SQUID_DETECT_UDP_SO_SNDBUF=16384],[SQUID_DETECT_UDP_SO_SNDBUF=16384]) -AC_MSG_RESULT($SQUID_DETECT_UDP_SO_SNDBUF) -AC_DEFINE_UNQUOTED(SQUID_DETECT_UDP_SO_SNDBUF, $SQUID_DETECT_UDP_SO_SNDBUF,[UDP send buffer size]) - -dnl Not cached since people are likely to tune this -AC_MSG_CHECKING(Default UDP receive buffer size) -AC_RUN_IFELSE([AC_LANG_SOURCE([[ -#include -#include -#include -#if HAVE_SYS_SOCKET_H -#include -#endif -#if HAVE_NETINET_IN_H -#include -#endif -#if HAVE_WINSOCK_H -#include -#endif -#if HAVE_WINSOCK2_H -#include -#endif -int main(int argc, char **argv) -{ - FILE *fp; - int fd,val=0; -#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__)) - int len=sizeof(int); - WSADATA wsaData; - WSAStartup(2, &wsaData); -#else - socklen_t len=sizeof(socklen_t); -#endif - if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) return 1; -#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__)) - if (getsockopt(fd, SOL_SOCKET, SO_RCVBUF, (char *)&val, &len) < 0) return 1; - WSACleanup(); -#else - if (getsockopt(fd, SOL_SOCKET, SO_RCVBUF, &val, &len) < 0) return 1; -#endif - if (val <= 0) return 1; - fp = fopen("conftestval", "w"); - fprintf (fp, "%d\n", val); - return 0; -} -]])],[SQUID_DETECT_UDP_SO_RCVBUF=`cat conftestval`],[SQUID_DETECT_UDP_SO_RCVBUF=16384],[SQUID_DETECT_UDP_SO_RCVBUF=16384]) -AC_MSG_RESULT($SQUID_DETECT_UDP_SO_RCVBUF) -AC_DEFINE_UNQUOTED(SQUID_DETECT_UDP_SO_RCVBUF, $SQUID_DETECT_UDP_SO_RCVBUF,[UDP receive buffer size]) - -dnl Not cached since people are likely to tune this -AC_MSG_CHECKING(Default TCP send buffer size) -AC_RUN_IFELSE([AC_LANG_SOURCE([[ -#include -#include -#include -#if HAVE_SYS_SOCKET_H -#include -#endif -#if HAVE_NETINET_IN_H -#include -#endif -#if HAVE_WINSOCK_H -#include -#endif -#if HAVE_WINSOCK2_H -#include -#endif -int main(int argc, char **argv) -{ - FILE *fp; - int fd,val=0; -#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__)) - int len=sizeof(int); - WSADATA wsaData; - WSAStartup(2, &wsaData); -#else - socklen_t len=sizeof(socklen_t); -#endif - if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) return 1; -#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__)) - if (getsockopt(fd, SOL_SOCKET, SO_SNDBUF, (char *)&val, &len) < 0) return 1; - WSACleanup(); -#else - if (getsockopt(fd, SOL_SOCKET, SO_SNDBUF, &val, &len) < 0) return 1; -#endif - if (val <= 0) return 1; - fp = fopen("conftestval", "w"); - fprintf (fp, "%d\n", val); - return 0; -} -]])],[SQUID_TCP_SO_SNDBUF=`cat conftestval`],[SQUID_TCP_SO_SNDBUF=16384],[SQUID_TCP_SO_SNDBUF=16384]) -AC_MSG_RESULT($SQUID_TCP_SO_SNDBUF) -if test $SQUID_TCP_SO_SNDBUF -gt 32768; then - AC_MSG_NOTICE([Limiting send buffer size to 32K]) - SQUID_TCP_SO_SNDBUF=32768 -fi -AC_DEFINE_UNQUOTED(SQUID_TCP_SO_SNDBUF, $SQUID_TCP_SO_SNDBUF,[TCP send buffer size]) - -dnl Not cached since people are likely to tune this -AC_MSG_CHECKING(Default TCP receive buffer size) -AC_RUN_IFELSE([AC_LANG_SOURCE([[ -#include -#include -#include -#if HAVE_SYS_SOCKET_H -#include -#endif -#if HAVE_NETINET_IN_H -#include -#endif -#if HAVE_WINSOCK_H -#include -#endif -#if HAVE_WINSOCK2_H -#include -#endif -int main(int argc, char **argv) -{ - FILE *fp; - int fd,val=0; -#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__)) - int len=sizeof(int); - WSADATA wsaData; - WSAStartup(2, &wsaData); -#else - socklen_t len=sizeof(socklen_t); -#endif - if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) return 1; -#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__)) - if (getsockopt(fd, SOL_SOCKET, SO_RCVBUF, (char *)&val, &len) < 0) return 1; - WSACleanup(); -#else - if (getsockopt(fd, SOL_SOCKET, SO_RCVBUF, &val, &len) < 0) return 1; -#endif - if (val <= 0) return 1; - fp = fopen("conftestval", "w"); - fprintf (fp, "%d\n", val); - return 0; -} -]])],[SQUID_TCP_SO_RCVBUF=`cat conftestval`],[SQUID_TCP_SO_RCVBUF=16384],[SQUID_TCP_SO_RCVBUF=16384]) -AC_MSG_RESULT($SQUID_TCP_SO_RCVBUF) -if test $SQUID_TCP_SO_RCVBUF -gt 65535; then - AC_MSG_NOTICE([Limiting receive buffer size to 64K]) - SQUID_TCP_SO_RCVBUF=65535 -fi -AC_DEFINE_UNQUOTED(SQUID_TCP_SO_RCVBUF, $SQUID_TCP_SO_RCVBUF,[TCP receive buffer size]) AC_CACHE_CHECK(if sys_errlist is already defined, ac_cv_needs_sys_errlist, AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[char *s = sys_errlist;]])],[ac_cv_needs_sys_errlist="no"],[ac_cv_needs_sys_errlist="yes"]) )